Download packages/app/src/context/permission-auto-respond.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.92 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/context/permission-auto-respond.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/app/src/context/permission-auto-respond.ts
-
curl -L -o permission-auto-respond.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/context/permission-auto-respond.ts
1.92 kB
| import { base64Encode } from "@opencode-ai/core/util/encode" | |
| export function acceptKey(sessionID: string, directory?: string) { | |
| if (!directory) return sessionID | |
| return `${base64Encode(directory)}/${sessionID}` | |
| } | |
| export function directoryAcceptKey(directory: string) { | |
| return `${base64Encode(directory)}/*` | |
| } | |
| function accepted(autoAccept: Record<string, boolean>, sessionID: string, directory?: string) { | |
| const key = acceptKey(sessionID, directory) | |
| return autoAccept[key] ?? autoAccept[sessionID] | |
| } | |
| export function isDirectoryAutoAccepting(autoAccept: Record<string, boolean>, directory: string) { | |
| const key = directoryAcceptKey(directory) | |
| return autoAccept[key] ?? false | |
| } | |
| function sessionLineage(session: { id: string; parentID?: string }[], sessionID: string) { | |
| const parent = session.reduce((acc, item) => { | |
| if (item.parentID) acc.set(item.id, item.parentID) | |
| return acc | |
| }, new Map<string, string>()) | |
| const seen = new Set([sessionID]) | |
| const ids = [sessionID] | |
| for (const id of ids) { | |
| const parentID = parent.get(id) | |
| if (!parentID || seen.has(parentID)) continue | |
| seen.add(parentID) | |
| ids.push(parentID) | |
| } | |
| return ids | |
| } | |
| export function autoRespondsPermission( | |
| autoAccept: Record<string, boolean>, | |
| session: { id: string; parentID?: string }[], | |
| permission: { sessionID: string }, | |
| directory?: string, | |
| ) { | |
| const value = sessionAutoAccept(autoAccept, session, permission, directory) | |
| if (value !== undefined) return value | |
| return directory ? isDirectoryAutoAccepting(autoAccept, directory) : false | |
| } | |
| export function sessionAutoAccept( | |
| autoAccept: Record<string, boolean>, | |
| session: { id: string; parentID?: string }[], | |
| permission: { sessionID: string }, | |
| directory?: string, | |
| ) { | |
| return sessionLineage(session, permission.sessionID) | |
| .map((id) => accepted(autoAccept, id, directory)) | |
| .find((item): item is boolean => item !== undefined) | |
| } | |