summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/context
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-27 05:16:39 -0600
committerAdam <[email protected]>2025-12-27 14:43:42 -0600
commit21eba5f987482b4e2e75ab1c564815bd7b0613f4 (patch)
tree2d8cad03e54baa29d83e1e835a7ef2e64d3897e4 /packages/ui/src/context
parentc523ca412747d66e0236865a4fa2481f7d50f64e (diff)
downloadopencode-21eba5f987482b4e2e75ab1c564815bd7b0613f4.tar.gz
opencode-21eba5f987482b4e2e75ab1c564815bd7b0613f4.zip
feat(desktop): permissions
Diffstat (limited to 'packages/ui/src/context')
-rw-r--r--packages/ui/src/context/data.tsx14
-rw-r--r--packages/ui/src/context/dialog.tsx4
2 files changed, 12 insertions, 6 deletions
diff --git a/packages/ui/src/context/data.tsx b/packages/ui/src/context/data.tsx
index f53253418..3292ba579 100644
--- a/packages/ui/src/context/data.tsx
+++ b/packages/ui/src/context/data.tsx
@@ -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,
}
},
})
diff --git a/packages/ui/src/context/dialog.tsx b/packages/ui/src/context/dialog.tsx
index 56be9ee47..8e1a6aad8 100644
--- a/packages/ui/src/context/dialog.tsx
+++ b/packages/ui/src/context/dialog.tsx
@@ -33,10 +33,6 @@ function init() {
},
close() {
active()?.onClose?.()
- if (!active()?.onClose) {
- const promptInput = document.querySelector("[data-component=prompt-input]") as HTMLElement
- promptInput?.focus()
- }
setActive(undefined)
},
show(element: DialogElement, owner: Owner, onClose?: () => void) {