/** * Upgrade Reconcile — bypass 判定。 * * 升级未确认时仍允许调用的工具(bypass 清单)的单一真相源。 * middleware 使用该判定识别升级期间仍允许的操作。 * 都从此导入,保证两层 bypass 语义对齐——Agent policy 与 middleware 认可同一 bypass 清单。 * * 职责边界: * - 负责:判定某 (tool, action) 在升级未确认时是否仍允许调用(sf_task action=query 或 start 且状态=planned 绕过) * - 不负责:实际阻断/放行执行(由 middleware/policy 决定)、不读用户业务文件;本模块在 core 层,不反向依赖 server/tools(ToolRequestArgs),调用方传 tool 名 + action 字符串避免 core→server 耦合 * * 被谁调用:server/tools/middleware.ts(performToolCall 阻断前判 bypass)、 * core/tool_invocation_policy.ts(upgrade_state check 判 bypass 不阻断) * 调用谁:core/upgrade_reconcile/state_io(readUpgradeState) * * 数据流:(tool, action, projectRoot) → 规则匹配 + 读升级状态(status=planned?) → boolean * 持久化:无持久化(纯内存判定;planned 状态经 state_io 读 .soloforge/upgrade/state.json) */ /** * 判断某 (tool, action) 在升级未确认时是否仍允许调用(bypass)。 * * 语义与 upgrade-trigger-protocol.md「绕过工具」一节对齐: * - sf_task action=query:绕过(允许读现状) * - sf_task action=start 且 status=planned:绕过(允许 plan 后 start 新任务衔接) * - 其他工具:不绕过(升级未确认时 middleware 阻断推进类工具) * * @param tool 工具名 * @param action action 名(无 action 概念的工具传 undefined) * @param projectRoot 项目根(用于读升级状态判定 planned 时的 sf_task start) */ export declare function isUpgradeBypassTool(tool: string, action: string | undefined, projectRoot: string): Promise;