data.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import type { Message, Session, Part, SnapshotFileDiff, SessionStatus, ProviderListResponse } from "@opencode-ai/sdk/v2"
  2. import { createSimpleContext } from "./helper"
  3. import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
  4. type Data = {
  5. agent?: {
  6. name: string
  7. color?: string
  8. }[]
  9. provider?: ProviderListResponse
  10. session: Session[]
  11. session_status: {
  12. [sessionID: string]: SessionStatus
  13. }
  14. session_diff: {
  15. [sessionID: string]: SnapshotFileDiff[]
  16. }
  17. session_diff_preload?: {
  18. [sessionID: string]: PreloadMultiFileDiffResult<any>[]
  19. }
  20. message: {
  21. [sessionID: string]: Message[]
  22. }
  23. part: {
  24. [messageID: string]: Part[]
  25. }
  26. }
  27. export type NavigateToSessionFn = (sessionID: string) => void
  28. export type SessionHrefFn = (sessionID: string) => string
  29. export const { use: useData, provider: DataProvider } = createSimpleContext({
  30. name: "Data",
  31. init: (props: {
  32. data: Data
  33. directory: string
  34. onNavigateToSession?: NavigateToSessionFn
  35. onSessionHref?: SessionHrefFn
  36. }) => {
  37. return {
  38. get store() {
  39. return props.data
  40. },
  41. get directory() {
  42. return props.directory
  43. },
  44. navigateToSession: props.onNavigateToSession,
  45. sessionHref: props.onSessionHref,
  46. }
  47. },
  48. })