diff options
Diffstat (limited to 'packages/app')
| -rw-r--r-- | packages/app/src/context/global-sync.tsx | 10 | ||||
| -rw-r--r-- | packages/app/src/context/permission.tsx | 14 | ||||
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 2 |
3 files changed, 12 insertions, 14 deletions
diff --git a/packages/app/src/context/global-sync.tsx b/packages/app/src/context/global-sync.tsx index dd040d8d5..92de0a636 100644 --- a/packages/app/src/context/global-sync.tsx +++ b/packages/app/src/context/global-sync.tsx @@ -15,7 +15,7 @@ import { type McpStatus, type LspStatus, type VcsInfo, - type Permission, + type PermissionRequest, createOpencodeClient, } from "@opencode-ai/sdk/v2/client" import { createStore, produce, reconcile } from "solid-js/store" @@ -46,7 +46,7 @@ type State = { [sessionID: string]: Todo[] } permission: { - [sessionID: string]: Permission[] + [sessionID: string]: PermissionRequest[] } mcp: { [name: string]: McpStatus @@ -168,7 +168,7 @@ function createGlobalSync() { vcs: () => sdk.vcs.get().then((x) => setStore("vcs", x.data)), permission: () => sdk.permission.list().then((x) => { - const grouped: Record<string, Permission[]> = {} + const grouped: Record<string, PermissionRequest[]> = {} for (const perm of x.data ?? []) { if (!perm?.id || !perm.sessionID) continue const existing = grouped[perm.sessionID] @@ -349,7 +349,7 @@ function createGlobalSync() { setStore("vcs", { branch: event.properties.branch }) break } - case "permission.updated": { + case "permission.asked": { const sessionID = event.properties.sessionID const permissions = store.permission[sessionID] if (!permissions) { @@ -375,7 +375,7 @@ function createGlobalSync() { case "permission.replied": { const permissions = store.permission[event.properties.sessionID] if (!permissions) break - const result = Binary.search(permissions, event.properties.permissionID, (p) => p.id) + const result = Binary.search(permissions, event.properties.requestID, (p) => p.id) if (!result.found) break setStore( "permission", diff --git a/packages/app/src/context/permission.tsx b/packages/app/src/context/permission.tsx index a0ad1ee05..061470361 100644 --- a/packages/app/src/context/permission.tsx +++ b/packages/app/src/context/permission.tsx @@ -1,7 +1,7 @@ import { createMemo, onCleanup } from "solid-js" import { createStore } from "solid-js/store" import { createSimpleContext } from "@opencode-ai/ui/context" -import type { Permission } from "@opencode-ai/sdk/v2/client" +import type { PermissionRequest } from "@opencode-ai/sdk/v2/client" import { persisted } from "@/utils/persist" import { useGlobalSDK } from "@/context/global-sdk" import { useGlobalSync } from "./global-sync" @@ -14,10 +14,8 @@ type PermissionRespondFn = (input: { directory?: string }) => void -const AUTO_ACCEPT_TYPES = new Set(["edit", "write"]) - -function shouldAutoAccept(perm: Permission) { - return AUTO_ACCEPT_TYPES.has(perm.type) +function shouldAutoAccept(perm: PermissionRequest) { + return perm.permission === "edit" } export const { use: usePermission, provider: PermissionProvider } = createSimpleContext({ @@ -48,7 +46,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple }) } - function respondOnce(permission: Permission, directory?: string) { + function respondOnce(permission: PermissionRequest, directory?: string) { if (responded.has(permission.id)) return responded.add(permission.id) respond({ @@ -65,7 +63,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple const unsubscribe = globalSDK.event.listen((e) => { const event = e.details - if (event?.type !== "permission.updated") return + if (event?.type !== "permission.asked") return const perm = event.properties if (!isAutoAccepting(perm.sessionID)) return @@ -98,7 +96,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple return { ready, respond, - autoResponds(permission: Permission) { + autoResponds(permission: PermissionRequest) { return isAutoAccepting(permission.sessionID) && shouldAutoAccept(permission) }, isAutoAccepting, diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 0bcf0f7a2..7aa1e2448 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -175,7 +175,7 @@ export default function Layout(props: ParentProps) { const permissionAlertCooldownMs = 5000 const unsub = globalSDK.event.listen((e) => { - if (e.details?.type !== "permission.updated") return + if (e.details?.type !== "permission.asked") return const directory = e.name const perm = e.details.properties if (permission.autoResponds(perm)) return |
