Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
1.7 kB · 70 lines
TSX
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import type { FileDiffInfo, SessionInfo, SessionStatus, ShellOutputInput, ShellOutputOutput,} from "@opencode/client/promise"import { createSimpleContext } from "@opencode/ui/context"import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
export type SessionSummary = Pick<SessionInfo, "id" | "parentID" | "title" | "time">
type ProviderCatalog = { all: Map<string, { models: Record<string, { name: string }> }> default: { [key: string]: string } connected: Array<string>}
type Data = { agent?: { name: string color?: string }[] provider?: ProviderCatalog session: SessionSummary[] session_status: { [sessionID: string]: SessionStatus } session_diff: { [sessionID: string]: FileDiffInfo[] } session_diff_preload?: { [sessionID: string]: PreloadMultiFileDiffResult<unknown>[] }}
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 shellRunning?: (id: string) => boolean shellOutput?: (input: ShellOutputInput) => Promise<ShellOutputOutput> 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, shellRunning: props.shellRunning, shellOutput: props.shellOutput, } },})