import { type PermissionManager } from '../permission-manager'; import type { GlobalExecutionLocker, ExecutionLocker } from '../execution-locker'; import type { ManagedReActAgentInterceptor } from '../managed-interceptor'; /** * 内置工具上下文注入拦截器配置。 */ export type BuiltinToolContextInterceptorOptions = { /** Agent 拦截器侧的权限管理器(可选),默认 PermitAllPermissionManager */ permissionManager?: PermissionManager; /** Agent 拦截器侧的执行锁(可选),默认 NoopExecutionLocker */ executionLocker?: ExecutionLocker; /** 框架层全局执行锁(可选),默认 PerToolSerialLocker(同名工具串行) */ globalExecutionLocker?: GlobalExecutionLocker; }; /** * 创建内置工具上下文注入拦截器(Agent 层)。 * * 核心职责:在 `doExecuteTool` 阶段将 `PermissionManager` 和 `ExecutionLocker` 注入到 `toolContext`, * 使工具执行时可通过 `context.permissionManager` 和 `context.executionLocker` 访问这些能力。 * * ## 两层接口适配设计 * * - **Agent 拦截器侧**:`PermissionManager.request(urn, metadata, message)` 携带工具元信息 * - **工具侧**:`ToolPermissionManager.request(urn)` 只需传资源标识 * * 本拦截器通过闭包自动绑定 `metadata` 和 `message`,实现接口适配。 * * ## 与 Tool 拦截器的分工 * * - **本拦截器(Agent 层)**:负责注入需要工具元信息(`metadata`、`message`)的能力 * - **`createContextInjectInterceptor`(Tool 层)**:负责注入不需要工具元信息的扩展字段 * * ## 默认行为 * * - `permissionManager` 未传入时,使用 `PermitAllPermissionManager`(全部允许) * - `executionLocker` 未传入时,使用 `NoopExecutionLocker`(无锁) * - `globalExecutionLocker` 未传入时,使用 `PerToolSerialLocker`(同名工具串行) * * @param options 配置项 * @returns Agent 拦截器 */ export declare const createBuiltinToolContextInterceptor: ({ permissionManager, executionLocker, globalExecutionLocker, }: BuiltinToolContextInterceptorOptions) => ManagedReActAgentInterceptor;