feat(desktop): permissions

This commit is contained in:
Adam 2025-12-27 05:16:39 -06:00
commit 21eba5f987
No known key found for this signature in database
GPG key ID: 9CB48779AF150E75
17 changed files with 586 additions and 60 deletions

View file

@ -1,4 +1,4 @@
import type { Message, Session, Part, FileDiff, SessionStatus } from "@opencode-ai/sdk/v2"
import type { Message, Session, Part, FileDiff, SessionStatus, Permission } from "@opencode-ai/sdk/v2"
import { createSimpleContext } from "./helper"
import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
@ -13,6 +13,9 @@ type Data = {
session_diff_preload?: {
[sessionID: string]: PreloadMultiFileDiffResult<any>[]
}
permission?: {
[sessionID: string]: Permission[]
}
message: {
[sessionID: string]: Message[]
}
@ -21,9 +24,15 @@ type Data = {
}
}
export type PermissionRespondFn = (input: {
sessionID: string
permissionID: string
response: "once" | "always" | "reject"
}) => void
export const { use: useData, provider: DataProvider } = createSimpleContext({
name: "Data",
init: (props: { data: Data; directory: string }) => {
init: (props: { data: Data; directory: string; onPermissionRespond?: PermissionRespondFn }) => {
return {
get store() {
return props.data
@ -31,6 +40,7 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
get directory() {
return props.directory
},
respondToPermission: props.onPermissionRespond,
}
},
})