|
|
@@ -6,8 +6,8 @@ import { Persist, persisted } from "@/utils/persist"
|
|
|
import { useGlobalSDK } from "@/context/global-sdk"
|
|
|
import { useGlobalSync } from "./global-sync"
|
|
|
import { useParams } from "@solidjs/router"
|
|
|
-import { base64Encode } from "@opencode-ai/util/encode"
|
|
|
import { decode64 } from "@/utils/base64"
|
|
|
+import { acceptKey, autoRespondsPermission } from "./permission-auto-respond"
|
|
|
|
|
|
type PermissionRespondFn = (input: {
|
|
|
sessionID: string
|
|
|
@@ -114,16 +114,16 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- function acceptKey(sessionID: string, directory?: string) {
|
|
|
- if (!directory) return sessionID
|
|
|
- return `${base64Encode(directory)}/${sessionID}`
|
|
|
- }
|
|
|
-
|
|
|
function isAutoAccepting(sessionID: string, directory?: string) {
|
|
|
const key = acceptKey(sessionID, directory)
|
|
|
return store.autoAccept[key] ?? store.autoAccept[sessionID] ?? false
|
|
|
}
|
|
|
|
|
|
+ function shouldAutoRespond(permission: PermissionRequest, directory?: string) {
|
|
|
+ const session = directory ? globalSync.child(directory, { bootstrap: false })[0].session : []
|
|
|
+ return autoRespondsPermission(store.autoAccept, session, permission, directory)
|
|
|
+ }
|
|
|
+
|
|
|
function bumpEnableVersion(sessionID: string, directory?: string) {
|
|
|
const key = acceptKey(sessionID, directory)
|
|
|
const next = (enableVersion.get(key) ?? 0) + 1
|
|
|
@@ -136,7 +136,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple
|
|
|
if (event?.type !== "permission.asked") return
|
|
|
|
|
|
const perm = event.properties
|
|
|
- if (!isAutoAccepting(perm.sessionID, e.name)) return
|
|
|
+ if (!shouldAutoRespond(perm, e.name)) return
|
|
|
|
|
|
respondOnce(perm, e.name)
|
|
|
})
|
|
|
@@ -159,7 +159,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple
|
|
|
if (!isAutoAccepting(sessionID, directory)) return
|
|
|
for (const perm of x.data ?? []) {
|
|
|
if (!perm?.id) continue
|
|
|
- if (perm.sessionID !== sessionID) continue
|
|
|
+ if (!shouldAutoRespond(perm, directory)) continue
|
|
|
respondOnce(perm, directory)
|
|
|
}
|
|
|
})
|
|
|
@@ -181,7 +181,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple
|
|
|
ready,
|
|
|
respond,
|
|
|
autoResponds(permission: PermissionRequest, directory?: string) {
|
|
|
- return isAutoAccepting(permission.sessionID, directory)
|
|
|
+ return shouldAutoRespond(permission, directory)
|
|
|
},
|
|
|
isAutoAccepting,
|
|
|
toggleAutoAccept(sessionID: string, directory: string) {
|