From 21eba5f987482b4e2e75ab1c564815bd7b0613f4 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Sat, 27 Dec 2025 05:16:39 -0600 Subject: feat(desktop): permissions --- packages/ui/src/context/data.tsx | 14 ++++++++++++-- packages/ui/src/context/dialog.tsx | 4 ---- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'packages/ui/src/context') 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[] } + 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) { -- cgit v1.2.3