mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-06 16:59:01 +00:00
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import type { Message, Session, Part, FileDiff, SessionStatus, ProviderListResponse } from "@opencode-ai/sdk/v2"
|
|
import { createSimpleContext } from "./helper"
|
|
import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
|
|
|
|
type Data = {
|
|
provider?: ProviderListResponse
|
|
session: Session[]
|
|
session_status: {
|
|
[sessionID: string]: SessionStatus
|
|
}
|
|
session_diff: {
|
|
[sessionID: string]: FileDiff[]
|
|
}
|
|
session_diff_preload?: {
|
|
[sessionID: string]: PreloadMultiFileDiffResult<any>[]
|
|
}
|
|
message: {
|
|
[sessionID: string]: Message[]
|
|
}
|
|
part: {
|
|
[messageID: string]: Part[]
|
|
}
|
|
}
|
|
|
|
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
|
|
onNavigateToSession?: NavigateToSessionFn
|
|
onSessionHref?: SessionHrefFn
|
|
}) => {
|
|
return {
|
|
get store() {
|
|
return props.data
|
|
},
|
|
get directory() {
|
|
return props.directory
|
|
},
|
|
navigateToSession: props.onNavigateToSession,
|
|
sessionHref: props.onSessionHref,
|
|
}
|
|
},
|
|
})
|