/** * 工具授权检查 — 从 middleware.ts 抽出的独立关切。 * * 职责边界: * - 负责:根据合同 + args + 任务上下文判定工具授权结果 * - 不负责:副作用计算、合同查找、状态预检 * * 被谁调用:middleware.performToolCall * 调用谁:SideEffect / ToolCategory / TaskContext 类型 * * 数据流:(toolName, args, contract, tCtx, effectiveCategory) → ToolAuthorization * 持久化:无 * * 授权决策顺序(优先级从高到低): * 1. 显式确认(confirm/authorized/authorization_token) * 2. sf_task 写入型动作必须显式确认 * 3. 动态写入升级(cancel/job_cancel 等) * 4. 破坏性副作用(git_commit/git_push/pr_create/external_write) * 5. strict_controlled 的独立工具 / workflow 合同门控 / 状态回退 * 6. 非 strict_controlled 自动授权(除非 requires_authorization) */ import type { TaskContext } from "../../../types/index.js"; import type { ToolAuthorization, ToolCategory, SideEffect } from "../../../gate/index.js"; import type { ToolRequestArgs } from "../types.js"; /** * 授权模型:explicit > dynamic write gate > destructive gate > workflow gate > category default * * @param toolName 工具名 * @param args 工具调用参数(含 confirm/authorized/authorization_token) * @param contract 工具合同(category/side_effects/requires_workflow/requires_authorization) * @param tCtx 任务上下文(可选,用于 workflow 合同门控与状态回退) * @param effectiveCategory 计算后的有效 category(如 cancel 动态升级为 normal_controlled) */ export declare function checkAuth(toolName: string, args: ToolRequestArgs, contract: { category: ToolCategory; side_effects: SideEffect[]; requires_workflow: boolean; requires_authorization: boolean; }, tCtx?: TaskContext, effectiveCategory?: ToolCategory): ToolAuthorization;