55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
/**
|
|
* 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
|
|
}
|