refactor: remove legacy tools format, use permission only
BREAKING: Requires OpenCode 1.1.1+ - Remove supportsNewPermissionSystem/usesLegacyToolsSystem checks - Simplify permission-compat.ts to permission format only - Unify explore/librarian deny lists: write, edit, task, sisyphus_task, call_omo_agent - Add sisyphus_task to oracle deny list - Update agent-tool-restrictions.ts with correct per-agent restrictions - Clean config-handler.ts conditional version checks - Update tests for simplified API
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import type { PermissionValue } from "./permission-compat"
|
||||
|
||||
/**
|
||||
* Agent tool restrictions for session.prompt calls.
|
||||
* OpenCode SDK's session.prompt `tools` parameter OVERRIDES agent-level permissions.
|
||||
* This provides complete restriction sets so session.prompt calls include all necessary restrictions.
|
||||
*/
|
||||
|
||||
const EXPLORATION_AGENT_DENYLIST: Record<string, PermissionValue> = {
|
||||
write: "deny",
|
||||
edit: "deny",
|
||||
task: "deny",
|
||||
sisyphus_task: "deny",
|
||||
call_omo_agent: "deny",
|
||||
}
|
||||
|
||||
const AGENT_RESTRICTIONS: Record<string, Record<string, PermissionValue>> = {
|
||||
explore: EXPLORATION_AGENT_DENYLIST,
|
||||
|
||||
librarian: EXPLORATION_AGENT_DENYLIST,
|
||||
|
||||
oracle: {
|
||||
write: "deny",
|
||||
edit: "deny",
|
||||
task: "deny",
|
||||
sisyphus_task: "deny",
|
||||
},
|
||||
|
||||
"multimodal-looker": {
|
||||
"*": "deny",
|
||||
read: "allow",
|
||||
},
|
||||
|
||||
"document-writer": {
|
||||
task: "deny",
|
||||
sisyphus_task: "deny",
|
||||
call_omo_agent: "deny",
|
||||
},
|
||||
|
||||
"frontend-ui-ux-engineer": {
|
||||
task: "deny",
|
||||
sisyphus_task: "deny",
|
||||
call_omo_agent: "deny",
|
||||
},
|
||||
|
||||
"Sisyphus-Junior": {
|
||||
task: "deny",
|
||||
sisyphus_task: "deny",
|
||||
},
|
||||
}
|
||||
|
||||
export function getAgentToolRestrictions(agentName: string): Record<string, PermissionValue> {
|
||||
return AGENT_RESTRICTIONS[agentName] ?? {}
|
||||
}
|
||||
|
||||
export function hasAgentToolRestrictions(agentName: string): boolean {
|
||||
const restrictions = AGENT_RESTRICTIONS[agentName]
|
||||
return restrictions !== undefined && Object.keys(restrictions).length > 0
|
||||
}
|
||||
Reference in New Issue
Block a user