MCPcopy Create free account
hub / github.com/TanStack/ai / resolveInteractivePermission

Function resolveInteractivePermission

packages/ai-opencode/src/process/permissions.ts:93–119  ·  view source on GitHub ↗
(
  request: OpencodePermissionRequest,
  mode: OpencodePermissionMode,
  bridgedToolNames: ReadonlySet<string> | undefined,
  approvals: ReadonlyMap<string, boolean> | undefined,
)

Source from the content-addressed store, hash-verified

91 * should surface via an `approval-requested` event.
92 */
93export function resolveInteractivePermission(
94 request: OpencodePermissionRequest,
95 mode: OpencodePermissionMode,
96 bridgedToolNames: ReadonlySet<string> | undefined,
97 approvals: ReadonlyMap<string, boolean> | undefined,
98): {
99 response: OpencodePermissionResponse
100 approvalId?: string
101 title?: string
102} {
103 if (matchBridgedToolName(request, bridgedToolNames))
104 return { response: 'once' }
105 if (mode === 'bypassPermissions') return { response: 'once' }
106 if (mode === 'acceptEdits' && EDIT_TYPES.has(request.type)) {
107 return { response: 'once' }
108 }
109
110 const id = approvalId({
111 provider: 'opencode',
112 kind: 'tool',
113 target: request.type || request.title,
114 })
115 const granted = approvals?.get(id)
116 if (granted === true) return { response: 'once' }
117 if (granted === false) return { response: 'reject' }
118 return { response: 'reject', approvalId: id, title: request.title }
119}

Callers 1

chatStreamMethod · 0.90

Calls 4

approvalIdFunction · 0.90
hasMethod · 0.80
matchBridgedToolNameFunction · 0.70
getMethod · 0.65

Tested by

no test coverage detected