/** * Leader Permission Bridge * * Module-level bridge that allows the REPL to register its setToolUseConfirmQueue * and setToolPermissionContext functions for in-process teammates to use. * * When an in-process teammate requests permissions, it uses the standard * ToolUseConfirm dialog rather than the worker permission badge. This bridge * makes the REPL's queue setter and permission context setter accessible * from non-React code in the in-process runner. */ import type { ToolUseConfirm } from '../../components/permissions/PermissionRequest.js' import type { ToolPermissionContext } from '../../Tool.js' export type SetToolUseConfirmQueueFn = ( updater: (prev: ToolUseConfirm[]) => ToolUseConfirm[], ) => void export type SetToolPermissionContextFn = ( context: ToolPermissionContext, options?: { preserveMode?: boolean }, ) => void let registeredSetter: SetToolUseConfirmQueueFn | null = null let registeredPermissionContextSetter: SetToolPermissionContextFn | null = null export function registerLeaderToolUseConfirmQueue( setter: SetToolUseConfirmQueueFn, ): void { registeredSetter = setter } export function getLeaderToolUseConfirmQueue(): SetToolUseConfirmQueueFn | null { return registeredSetter } export function unregisterLeaderToolUseConfirmQueue(): void { registeredSetter = null } export function registerLeaderSetToolPermissionContext( setter: SetToolPermissionContextFn, ): void { registeredPermissionContextSetter = setter } export function getLeaderSetToolPermissionContext(): SetToolPermissionContextFn | null { return registeredPermissionContextSetter } export function unregisterLeaderSetToolPermissionContext(): void { registeredPermissionContextSetter = null }