| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import type { Message, Session, Part, SnapshotFileDiff, SessionStatus, Provider } from "@opencode-ai/sdk/v2"
- import type { FileDiffInfo } from "@opencode-ai/client/promise"
- import { createSimpleContext } from "@opencode-ai/ui/context"
- import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
- export type NormalizedProviderListResponse = {
- all: Map<string, Provider>
- default: {
- [key: string]: string
- }
- connected: Array<string>
- }
- type Data = {
- agent?: {
- name: string
- color?: string
- }[]
- provider?: NormalizedProviderListResponse
- session: Session[]
- session_status: {
- [sessionID: string]: SessionStatus
- }
- session_diff: {
- [sessionID: string]: (SnapshotFileDiff | FileDiffInfo)[]
- }
- session_diff_preload?: {
- [sessionID: string]: PreloadMultiFileDiffResult<any>[]
- }
- message: {
- [sessionID: string]: Message[]
- }
- part: {
- [messageID: string]: Part[]
- }
- part_text_accum_delta?: {
- [partID: string]: string
- }
- }
- export type NavigateToSessionFn = (sessionID: string) => void
- export type SessionHrefFn = (sessionID: string) => string
- export const { use: useData, provider: DataProvider } = createSimpleContext({
- name: "Data",
- init: (props: {
- data: Data
- directory: string
- sessionID?: string
- onNavigateToSession?: NavigateToSessionFn
- onSessionHref?: SessionHrefFn
- }) => {
- return {
- get store() {
- return props.data
- },
- get directory() {
- return props.directory
- },
- get sessionID() {
- return props.sessionID
- },
- navigateToSession: props.onNavigateToSession,
- sessionHref: props.onSessionHref,
- }
- },
- })
|