source dump of claude code
at main 54 lines 1.7 kB view raw
1/** 2 * Leader Permission Bridge 3 * 4 * Module-level bridge that allows the REPL to register its setToolUseConfirmQueue 5 * and setToolPermissionContext functions for in-process teammates to use. 6 * 7 * When an in-process teammate requests permissions, it uses the standard 8 * ToolUseConfirm dialog rather than the worker permission badge. This bridge 9 * makes the REPL's queue setter and permission context setter accessible 10 * from non-React code in the in-process runner. 11 */ 12 13import type { ToolUseConfirm } from '../../components/permissions/PermissionRequest.js' 14import type { ToolPermissionContext } from '../../Tool.js' 15 16export type SetToolUseConfirmQueueFn = ( 17 updater: (prev: ToolUseConfirm[]) => ToolUseConfirm[], 18) => void 19 20export type SetToolPermissionContextFn = ( 21 context: ToolPermissionContext, 22 options?: { preserveMode?: boolean }, 23) => void 24 25let registeredSetter: SetToolUseConfirmQueueFn | null = null 26let registeredPermissionContextSetter: SetToolPermissionContextFn | null = null 27 28export function registerLeaderToolUseConfirmQueue( 29 setter: SetToolUseConfirmQueueFn, 30): void { 31 registeredSetter = setter 32} 33 34export function getLeaderToolUseConfirmQueue(): SetToolUseConfirmQueueFn | null { 35 return registeredSetter 36} 37 38export function unregisterLeaderToolUseConfirmQueue(): void { 39 registeredSetter = null 40} 41 42export function registerLeaderSetToolPermissionContext( 43 setter: SetToolPermissionContextFn, 44): void { 45 registeredPermissionContextSetter = setter 46} 47 48export function getLeaderSetToolPermissionContext(): SetToolPermissionContextFn | null { 49 return registeredPermissionContextSetter 50} 51 52export function unregisterLeaderSetToolPermissionContext(): void { 53 registeredPermissionContextSetter = null 54}