/** * resign-tasks CLI 命令 — 密钥轮换后的存量任务信任链恢复入口。 * * 场景:签名密钥丢失/被轮换后,TaskContextManager.load 对全部存量任务 fail-closed * (HMAC 无效),项目被旧任务永久阻塞(doctor/sf_task 全拒)。 * 本命令 = 用户显式背书的重签通道(信任锚=--confirm,非自动重签——否则验签防线可被静默绕过)。 * * 职责边界: * - 负责:扫描 tasks 目录、逐个验签分类(valid/invalid/no-secret)、--confirm 时调 manager.resignTask * - 不负责:重签逻辑与 shape 校验(在 manager.resignTask)、密钥管理(provenance) * * 被谁调用:src/index.ts argv 分发(soloforge resign-tasks) * 调用谁:TaskContextManager.resignTask * * 数据流:argv → 任务文件验签分类 → dry-run 报告 或 --confirm 重签(审计 task_resign) * 持久化:--confirm 时重写任务文件 hmac + signature_audit.jsonl 追加 */ import { TaskContextManager } from "../core/task_context.js"; interface TaskVerifyStatus { taskId: string; status: "valid" | "invalid" | "unparsable"; } /** 解析 resign-tasks 命令参数。 */ export declare function parseResignArgs(argv: string[]): { confirm: boolean; all: boolean; }; /** 扫描任务文件并按验签结果分类(不重签、不修改任何文件)。 */ export declare function scanTaskSignatureStatus(manager: TaskContextManager): Promise; export declare function runResignTasks(argv: string[]): Promise; /** * 全 store 重签(E1.1 根本解药):密钥轮换后除 tasks 外全部记录永久判死、历史证据链在消费层消失—— * 本通道遍历 .soloforge 全部含签记录目录,逐记录「schema 校验→验签(幂等跳过已可信)→重签→覆盖写回」。 * * 安全契约(任务书安全红线,禁止自动重签): * - 禁止自动重签——必须 --confirm(对齐 reset/cancel 契约;改内容+自动重签=完美伪造通道); * - 旧 hmac 留痕——verifyRecord 失败自动进审计状态表(file+旧 hmac 指纹,见 signature_audit.recordVerifyFailure), * 重签完成再写 resign_all 汇总事件行(回溯链完整); * - 记录形态校验(JSON 可解析+对象+含非空 hmac 字段)失败的跳过并显式列出——per-store schema 校验不在 CLI 层 * 重复实现(各 store 读端 assert 校验兜底:schema 脏的记录重签后仍会在读端被排除/报错);伪记录的洗白面由 * confirm 门约束(用户确认「本人合法数据」是唯一信任锚,与任务书安全红线同源); * - CLI 层直接文件级读写 + SignatureProvider,不改各 store 的 save 语义(append-only 防篡改设计保持—— * resign 是用户确认的显式恢复操作)。 * 幂等:已验签通过的记录跳过;中断后可重跑(重签过的记录下次验签通过即跳过)。 */ export declare function runResignAll(confirm: boolean): Promise; export {};