mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-24 23:04:55 +00:00
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { base64Encode } from "@opencode-ai/util/encode"
|
|
|
|
export function acceptKey(sessionID: string, directory?: string) {
|
|
if (!directory) return sessionID
|
|
return `${base64Encode(directory)}/${sessionID}`
|
|
}
|
|
|
|
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,
|
|
) {
|
|
return sessionLineage(session, permission.sessionID).some((id) => {
|
|
const key = acceptKey(id, directory)
|
|
return autoAccept[key] ?? autoAccept[id] ?? false
|
|
})
|
|
}
|