@winspan/claude-forge 1.94.0 → 1.96.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +14 -1
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use-handler.js +5 -0
- package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
- package/dist/daemon/handlers/pre-tool-use-handler.js +19 -1
- package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
- package/dist/hooks/post-tool-use.sh +14 -0
- package/dist/pipeline/checkpoint.d.ts +38 -0
- package/dist/pipeline/checkpoint.d.ts.map +1 -0
- package/dist/pipeline/checkpoint.js +132 -0
- package/dist/pipeline/checkpoint.js.map +1 -0
- package/dist/pipeline/completion-engine.d.ts.map +1 -1
- package/dist/pipeline/completion-engine.js +9 -13
- package/dist/pipeline/completion-engine.js.map +1 -1
- package/dist/pipeline/dynamic-node-executor.d.ts.map +1 -1
- package/dist/pipeline/dynamic-node-executor.js +54 -2
- package/dist/pipeline/dynamic-node-executor.js.map +1 -1
- package/dist/pipeline/phase-manager.d.ts +1 -0
- package/dist/pipeline/phase-manager.d.ts.map +1 -1
- package/dist/pipeline/phase-manager.js +26 -0
- package/dist/pipeline/phase-manager.js.map +1 -1
- package/dist/pipeline/phase-tool-policy.d.ts +20 -0
- package/dist/pipeline/phase-tool-policy.d.ts.map +1 -0
- package/dist/pipeline/phase-tool-policy.js +75 -0
- package/dist/pipeline/phase-tool-policy.js.map +1 -0
- package/dist/web-static/assets/{index-BIPofwYQ.js → index-V_Ny_gHO.js} +1 -1
- package/dist/web-static/index.html +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Claude Forge 是一个为 Claude Code 设计的智能编排引擎,通过透明
|
|
|
11
11
|
|
|
12
12
|
- 🎯 **智能意图识别** - 自动分析任务复杂度,决定执行策略(三层架构:Ground Truth 规则 + 学习规则 + AI 降级层,支持上下文感知和活跃计划检测) [x] 2026-04-24
|
|
13
13
|
- 🔄 **Pipeline 编排** - 复杂任务自动拆分为多阶段流程(分析→设计→编码→测试→审查),支持纯事件溯源架构和状态机约束,确保状态一致性,daemon 启动时自动迁移历史数据,阶段产物统一输出到 docs/时间戳/ 目录,支持动态节点系统(Convention 定义节点类型,Skill 作为执行策略,NodeTypeRegistry 聚合节点类型,DynamicNodeExecutor 驱动执行,INodeExecutor 接口统一 PhaseManager 和 DynamicNodeExecutor,DynamicAggregator 支持动态节点事件聚合,启发式完成检测增强支持 file_patterns 和 keywords,Web API 支持动态流水线创建和手动推进),管理后台深度审查与修复完成(9个核心页面4750行代码,发现28个问题,修复20个P0/P1/P2/P3问题,新增质量问题上下文查询接口,优化事件展开性能和UX体验,完成P0级数据正确性和稳定性修复),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 迁移脚本已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化到数据库(node_types表),启动时自动恢复到内存注册表,Convention加载时同步节点类型定义,流水线节点产物约束设计与实现完成(ArtifactType定义、ArtifactConstraint约束、ArtifactCollector收集器、ArtifactValidator验证器支持复杂度驱动约束、NodeOutput结构化输出、启发式完成检测集成产物验证、Web前端展示产物列表和验证状态),DynamicPipelineRepository 支持动态流水线和节点的完整 CRUD 操作,Web 管理后台集成动态流水线 API 路由和前端展示,产物约束验证支持复杂度驱动(simple/moderate/complex 动态调整约束严格度),git 操作强制归类为 simple 复杂度,Analyzer 集成 Convention 上下文到 pipeline-decompose 提示词,产物验证器支持复杂度驱动约束动态调整,流程可控能力分析与实施方案文档已完成(审计范围覆盖 src/pipeline/*, src/autopilot/*, src/convention/*, src/daemon/handlers/*,当前满足度60%,提供MVP方案和严格模式实施路径),INodeExecutor 接口统一 PhaseManager 和 DynamicNodeExecutor 实现完成,流程可控硬阻断实现完成(产物验证失败10次重试后硬阻断、质量门禁must级别问题硬阻断、PhaseManager和DynamicNodeExecutor统一阻断传播链、post-tool-use-handler集成阻断检测和强制中断) [x] 2026-04-25
|
|
14
|
-
- 🛡️ **质量门禁** - 每个阶段自动 AI 审查,支持需求规格、安全性、代码质量、测试覆盖、性能等多维度检查,问题追踪和解决状态管理,支持上下文查询,支持 must/should 分级硬阻断(产物验证硬阻断 +
|
|
14
|
+
- 🛡️ **质量门禁** - 每个阶段自动 AI 审查,支持需求规格、安全性、代码质量、测试覆盖、性能等多维度检查,问题追踪和解决状态管理,支持上下文查询,支持 must/should 分级硬阻断(产物验证硬阻断 + 质量门禁分级阻断实现完成,代码审查通过,流程可控硬阻断实现审查文档已完成) [x] 2026-04-25
|
|
15
15
|
- 📊 **Web 管理后台** - 实时监控会话、Pipeline、质量问题(支持上下文查询和批量解决)、知识图谱、项目管理、自定义规范管理、技能管理、CLAUDE.md 管理(支持模块化查看和蒸馏压缩)、项目规范绑定管理、项目元数据管理(标签/备注/归档)、全局规范管理(同步/安装/删除/进化/YAML编辑/使用统计/进化历史)、阶段产物统一管理(docs/时间戳/目录结构+INDEX.md索引)、动态节点类型管理(NodeTypeRegistry 可视化)、TemplateRegistry 支持三种来源(builtin/user/convention)、动态流水线创建和手动推进操作、事件日志管理(查看/搜索/导出/清理)、数据库维护功能(备份/恢复/历史记录/诊断修复)、数据分析页面(会话统计、事件统计、API使用统计、成本分析、趋势图表),深度代码审查完成(9个核心页面28个问题,修复20个P0/P1/P2/P3问题,包括运行时错误、性能优化、竞态条件、UX改进、数据正确性和稳定性修复),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 数据迁移支持已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化和恢复机制已实现,DynamicPipelineNodes组件支持产物展示(artifacts列表、验证状态、类型图标、路径链接),知识图谱页面集成完成(搜索/概览/邻居/图谱可视化/CRUD操作),Analytics 页面支持会话统计、事件统计、API使用统计和成本分析,动态流水线 API 路由完整集成(创建/查询/更新/删除/手动推进) [x] 2026-04-24
|
|
16
16
|
- 🧠 **知识积累** - 自动提炼决策日志、时间线、项目规范,支持树索引和语义检索,Web管理后台集成知识图谱页面(搜索/概览/邻居/图谱可视化/CRUD操作) [x] 2026-04-23
|
|
17
17
|
- 🎨 **技能编排** - 根据意图自动匹配并注入最佳实践(TDD、重构、调试等),支持关键词映射和命中率统计 [x] 2025-01-18
|
|
@@ -26,11 +26,11 @@ Claude Forge 是一个为 Claude Code 设计的智能编排引擎,通过透明
|
|
|
26
26
|
|------|------|
|
|
27
27
|
| 意图识别 | 自动分析任务复杂度(simple/moderate/complex),决定执行策略,三层架构(Ground Truth 规则 + 学习规则 + AI 降级层),支持上下文感知和活跃计划检测 [x] 2026-04-24 |
|
|
28
28
|
| Pipeline 编排 | 复杂任务自动拆分为多阶段流程,支持纯事件溯源、状态机约束、质量门禁、阶段产物生成(统一输出到 docs/时间戳/ 目录+INDEX.md索引)、daemon 启动时自动迁移历史数据、动态节点系统(Convention 定义节点类型,NodeTypeRegistry 聚合,DynamicNodeExecutor 驱动,Skill 作为执行策略,INodeExecutor 接口统一,TemplateRegistry 支持三种来源,启发式完成检测增强,Web API 操作端点),管理后台深度审查与修复完成(修复运行时错误、性能问题、竞态条件、UX体验、数据正确性和稳定性等20个P0/P1/P2/P3问题),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 迁移脚本已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化到数据库(node_types表+NodeTypeRepository),启动时自动恢复到内存注册表,Convention加载时同步节点类型定义,流水线节点产物约束系统完成(ArtifactCollector追踪Write/Edit工具调用、ArtifactValidator验证产物约束支持复杂度驱动、NodeOutput结构化输出、DynamicPipelineNodes组件展示产物列表和验证状态),DynamicPipelineRepository 支持动态流水线和节点的完整 CRUD 操作,Web 管理后台动态流水线 API 路由完整注册,产物约束验证支持复杂度驱动(simple/moderate/complex 动态调整约束严格度),git 操作强制归类为 simple 复杂度,Analyzer 集成 Convention 上下文到 pipeline-decompose 提示词,产物验证器支持复杂度驱动约束动态调整,流程可控能力分析与实施方案文档已完成(审计范围覆盖 src/pipeline/*, src/autopilot/*, src/convention/*, src/daemon/handlers/*,当前满足度60%,提供MVP方案和严格模式实施路径),INodeExecutor 接口统一 PhaseManager 和 DynamicNodeExecutor 实现完成,流程可控硬阻断实现完成(产物验证失败10次重试后硬阻断、质量门禁must级别问题硬阻断、统一阻断传播链、post-tool-use-handler集成阻断检测和强制中断) [x] 2026-04-25 |
|
|
29
|
-
| 质量门禁 | 每个阶段自动 AI 审查(需求规格、安全性、代码质量、测试、性能),不合格则阻止推进,支持 must/should 分级硬阻断(产物验证失败10次重试后硬阻断、质量门禁must级别问题硬阻断、统一阻断传播链、post-tool-use-handler
|
|
29
|
+
| 质量门禁 | 每个阶段自动 AI 审查(需求规格、安全性、代码质量、测试、性能),不合格则阻止推进,支持 must/should 分级硬阻断(产物验证失败10次重试后硬阻断、质量门禁must级别问题硬阻断、统一阻断传播链、post-tool-use-handler集成阻断检测和强制中断,流程可控硬阻断实现审查文档已完成) [x] 2026-04-25 |
|
|
30
30
|
| 技能编排 | 根据意图自动匹配并注入最佳实践,支持关键词映射和命中率统计 [x] 2025-01-18 |
|
|
31
31
|
| 知识蒸馏 | 自动提炼决策日志、时间线、项目规范,支持树索引和语义检索,Web管理后台集成知识图谱页面(搜索/概览/邻居/图谱可视化/CRUD操作) [x] 2026-04-23 |
|
|
32
32
|
| 会话续接 | 中断后自动恢复上次工作状态 [x] 2025-01-18 |
|
|
33
|
-
| 用户画像 | 根据行为自适应调整干预深度(已废弃,移除完整方案文档已创建至 docs/2026-04-25/架构设计/移除UserProfile完整方案.md) [x]
|
|
33
|
+
| 用户画像 | 根据行为自适应调整干预深度(已废弃,移除完整方案文档已创建至 docs/2026-04-25/架构设计/移除UserProfile完整方案.md) [x] 2026-04-25(已废弃) |
|
|
34
34
|
| 多 AI 提供商 | 支持 Claude、OpenAI、Ollama,统一网关层 [x] 2025-01-18 |
|
|
35
35
|
| Web 管理后台 | 实时监控、项目管理、Pipeline 控制、质量追踪(支持上下文查询和批量解决)、自定义规范管理、技能管理、CLAUDE.md 管理、项目规范绑定管理、项目元数据管理(标签/备注/归档)、全局规范管理(同步/安装/删除/进化/YAML编辑/使用统计/进化历史)、阶段产物索引管理、动态节点类型管理(NodeTypeRegistry 可视化)、TemplateRegistry 可视化、动态流水线创建和手动推进、事件日志管理、数据库维护功能(备份/恢复/历史记录/诊断修复)、数据分析页面(会话统计、事件统计、API使用统计、成本分析、趋势图表),深度代码审查完成(9个核心页面4750行代码,发现28个问题,修复20个P0/P1/P2/P3问题,包括运行时错误修复、性能优化、竞态条件处理、UX体验改进、数据正确性和稳定性修复),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 数据迁移支持已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化和恢复机制已实现,DynamicPipelineNodes组件支持产物可视化(类型图标、路径链接、验证状态徽章、复杂度驱动约束验证),知识图谱页面集成完成(搜索/概览/邻居/图谱可视化/CRUD操作),Analytics 页面支持会话统计、事件统计、API使用统计和成本分析,动态流水线 API 路由完整集成(/api/pipelines/dynamic 端点支持创建/查询/更新/删除/手动推进),产物约束验证支持复杂度驱动(simple/moderate/complex 动态调整约束严格度),Knowledge 页面集成知识图谱可视化和 CRUD 操作,产物验证器支持复杂度驱动约束动态调整,流程可控能力分析文档已集成到 docs/2026-04-25/架构设计/ 目录,流程可控硬阻断实现审查文档已集成到 docs/2026-04-25/代码审查/ 目录 [x] 2026-04-25 |
|
|
36
36
|
| 阶段产物 | 每个阶段自动生成结构化文档 [x] 2025-01-18 |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6GpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkQ5D"}
|
|
@@ -10,10 +10,23 @@ import { detectBestModels } from '../../utils/claude-api.js';
|
|
|
10
10
|
function findAllDaemonPids() {
|
|
11
11
|
try {
|
|
12
12
|
const output = execSync('ps aux | grep -E "node.*daemon.*claude-forge|node.*claude-forge.*daemon" | grep -v grep', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
|
|
13
|
+
const currentPid = process.pid;
|
|
13
14
|
return output
|
|
14
15
|
.split('\n')
|
|
15
16
|
.filter(line => line.trim())
|
|
16
|
-
.map(line =>
|
|
17
|
+
.map(line => {
|
|
18
|
+
const pid = parseInt(line.trim().split(/\s+/)[1]);
|
|
19
|
+
const cmd = line.trim().split(/\s+/).slice(10).join(' ');
|
|
20
|
+
// 排除当前 CLI 进程(如 daemon start/stop/restart 命令本身)
|
|
21
|
+
// 以及非守护进程的 CLI 子命令(start/stop/restart/status/install)
|
|
22
|
+
if (pid === currentPid)
|
|
23
|
+
return NaN;
|
|
24
|
+
if (cmd.includes(' daemon start') || cmd.includes(' daemon stop') ||
|
|
25
|
+
cmd.includes(' daemon restart') || cmd.includes(' daemon status') ||
|
|
26
|
+
cmd.includes(' daemon install'))
|
|
27
|
+
return NaN;
|
|
28
|
+
return pid;
|
|
29
|
+
})
|
|
17
30
|
.filter(pid => !isNaN(pid));
|
|
18
31
|
}
|
|
19
32
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,yCAAyC;AACzC,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,yFAAyF,EACzF,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CACzD,CAAC;QACF,OAAO,MAAM;aACV,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-tool-use-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,0DAA0D;IAC1D,OAAO,CAAC,iBAAiB,CAGtB;gBAES,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"post-tool-use-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,0DAA0D;IAC1D,OAAO,CAAC,iBAAiB,CAGtB;gBAES,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAwP9D"}
|
|
@@ -81,6 +81,11 @@ export class PostToolUseHandler extends BaseHookHandler {
|
|
|
81
81
|
return {
|
|
82
82
|
allow: false,
|
|
83
83
|
reason: blockReason,
|
|
84
|
+
hookSpecificOutput: {
|
|
85
|
+
hookEventName: 'PostToolUse',
|
|
86
|
+
permissionDecision: 'deny',
|
|
87
|
+
permissionDecisionReason: blockReason,
|
|
88
|
+
},
|
|
84
89
|
};
|
|
85
90
|
}
|
|
86
91
|
// 质量门禁拦截:注入修复指令
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use-handler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"post-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pre-tool-use-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AASpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;gBAE3C,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA2H7D,OAAO,CAAC,mBAAmB;CAsB5B"}
|
|
@@ -5,6 +5,7 @@ import { logger } from '../../utils/logger.js';
|
|
|
5
5
|
import { ForgeFormatter } from '../../utils/formatter.js';
|
|
6
6
|
import { isForgeManaged } from '../lifecycle.js';
|
|
7
7
|
import { pendingPromptsManager } from '../pending-prompts.js';
|
|
8
|
+
import { evaluatePhaseToolPolicy } from '../../pipeline/phase-tool-policy.js';
|
|
8
9
|
export class PreToolUseHandler extends BaseHookHandler {
|
|
9
10
|
promptInjector = new PromptInjector();
|
|
10
11
|
constructor(ctx) {
|
|
@@ -58,7 +59,24 @@ export class PreToolUseHandler extends BaseHookHandler {
|
|
|
58
59
|
decision = this.appendContext(decision, ForgeFormatter.formatModuleNotification('knowledge', `[Forge 记忆]\n${warning}`));
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
|
-
// 3.5
|
|
62
|
+
// 3.5 阶段级工具白名单(有活跃 Pipeline 时生效)
|
|
63
|
+
const activePipeline = pipelineEngine?.getActivePipelineForProject(event.project_path);
|
|
64
|
+
if (activePipeline && event.tool_name) {
|
|
65
|
+
const phaseDecision = evaluatePhaseToolPolicy(activePipeline.phase, event.tool_name);
|
|
66
|
+
if (!phaseDecision.allow) {
|
|
67
|
+
logger.warn(`[Forge:阶段约束] 工具已拦截:phase=${activePipeline.phase} tool=${event.tool_name}`);
|
|
68
|
+
return {
|
|
69
|
+
allow: false,
|
|
70
|
+
reason: phaseDecision.reason,
|
|
71
|
+
hookSpecificOutput: {
|
|
72
|
+
hookEventName: 'PreToolUse',
|
|
73
|
+
permissionDecision: 'deny',
|
|
74
|
+
permissionDecisionReason: phaseDecision.reason,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// 3.6 Forge 管理项目:Write/Edit 无活跃 Pipeline 时硬阻断
|
|
62
80
|
// 豁免:claude-forge 自身开发(FORGE_DEV=1 或项目路径包含 claude-forge 源码目录)
|
|
63
81
|
const toolName = event.tool_name || '';
|
|
64
82
|
const isSelfDev = process.env.FORGE_DEV === '1' ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"pre-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,20 @@ EVENT=$(jq -n \
|
|
|
35
35
|
# 发送到 daemon(PostToolUse 也需要等待响应以支持通知注入)
|
|
36
36
|
RESPONSE=$(echo "$EVENT" | nc -U -w 5 "$SOCKET_PATH" 2>/dev/null || true)
|
|
37
37
|
if [ -n "$RESPONSE" ]; then
|
|
38
|
+
# 硬阻断:优先使用 hookSpecificOutput(Claude Code 官方格式)
|
|
39
|
+
ALLOW=$(echo "$RESPONSE" | jq -r '.allow // true')
|
|
40
|
+
if [ "$ALLOW" = "false" ]; then
|
|
41
|
+
HAS_HOOK_OUTPUT=$(echo "$RESPONSE" | jq -r 'if .hookSpecificOutput then "yes" else "no" end')
|
|
42
|
+
if [ "$HAS_HOOK_OUTPUT" = "yes" ]; then
|
|
43
|
+
echo "$RESPONSE" | jq '{hookSpecificOutput: .hookSpecificOutput}'
|
|
44
|
+
exit 0
|
|
45
|
+
else
|
|
46
|
+
REASON=$(echo "$RESPONSE" | jq -r '.reason // "Pipeline 已阻断"')
|
|
47
|
+
echo "$REASON" >&2
|
|
48
|
+
exit 2
|
|
49
|
+
fi
|
|
50
|
+
fi
|
|
51
|
+
|
|
38
52
|
HAS_CONTEXT=$(echo "$RESPONSE" | jq -r 'if .additionalContext and (.additionalContext != "") then "yes" else "no" end')
|
|
39
53
|
if [ "$HAS_CONTEXT" = "yes" ]; then
|
|
40
54
|
echo "$RESPONSE"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { PipelinePhase } from '../pipeline/types.js';
|
|
2
|
+
export interface Checkpoint {
|
|
3
|
+
pipelineId: string;
|
|
4
|
+
phase: PipelinePhase;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
worktreePath: string;
|
|
7
|
+
branchName: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class CheckpointManager {
|
|
10
|
+
private checkpoints;
|
|
11
|
+
private readonly worktreeRoot;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* 创建 checkpoint(Git Worktree)
|
|
15
|
+
*/
|
|
16
|
+
create(pipelineId: string, phase: PipelinePhase, projectRoot: string): Promise<Checkpoint>;
|
|
17
|
+
/**
|
|
18
|
+
* 回滚到 checkpoint
|
|
19
|
+
*/
|
|
20
|
+
rollback(pipelineId: string, phase: PipelinePhase, projectRoot: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 清理 checkpoint(阶段成功完成后)
|
|
23
|
+
*/
|
|
24
|
+
cleanup(pipelineId: string, phase: PipelinePhase): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* 清理所有 checkpoint
|
|
27
|
+
*/
|
|
28
|
+
cleanupAll(pipelineId: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* 获取 checkpoint
|
|
31
|
+
*/
|
|
32
|
+
get(pipelineId: string, phase: PipelinePhase): Checkpoint | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* 检查是否存在 checkpoint
|
|
35
|
+
*/
|
|
36
|
+
has(pipelineId: string, phase: PipelinePhase): boolean;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/pipeline/checkpoint.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;;IAMtC;;OAEG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC;IA+CtB;;OAEG;IACG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BtE;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS;IAIrE;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO;CAGvD"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import fs from 'fs/promises';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
export class CheckpointManager {
|
|
9
|
+
checkpoints = new Map();
|
|
10
|
+
worktreeRoot;
|
|
11
|
+
constructor() {
|
|
12
|
+
this.worktreeRoot = path.join(os.homedir(), '.claude-forge', 'worktrees');
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 创建 checkpoint(Git Worktree)
|
|
16
|
+
*/
|
|
17
|
+
async create(pipelineId, phase, projectRoot) {
|
|
18
|
+
const key = `${pipelineId}-${phase}`;
|
|
19
|
+
// 检查是否已存在
|
|
20
|
+
if (this.checkpoints.has(key)) {
|
|
21
|
+
logger.debug(`[Checkpoint] ${key} 已存在,跳过创建`);
|
|
22
|
+
return this.checkpoints.get(key);
|
|
23
|
+
}
|
|
24
|
+
// 检查是否为 Git 仓库
|
|
25
|
+
try {
|
|
26
|
+
await execAsync('git rev-parse --git-dir', { cwd: projectRoot });
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
logger.warn(`[Checkpoint] ${projectRoot} 不是 Git 仓库,跳过 checkpoint 创建`);
|
|
30
|
+
throw new Error('Not a git repository');
|
|
31
|
+
}
|
|
32
|
+
const branchName = `checkpoint/${pipelineId}/${phase}`;
|
|
33
|
+
const worktreePath = path.join(this.worktreeRoot, `${pipelineId}-${phase}`);
|
|
34
|
+
try {
|
|
35
|
+
// 确保 worktree 根目录存在
|
|
36
|
+
await fs.mkdir(this.worktreeRoot, { recursive: true });
|
|
37
|
+
// 创建 Git Worktree
|
|
38
|
+
await execAsync(`git worktree add "${worktreePath}" -b "${branchName}"`, {
|
|
39
|
+
cwd: projectRoot,
|
|
40
|
+
});
|
|
41
|
+
const checkpoint = {
|
|
42
|
+
pipelineId,
|
|
43
|
+
phase,
|
|
44
|
+
timestamp: Date.now(),
|
|
45
|
+
worktreePath,
|
|
46
|
+
branchName,
|
|
47
|
+
};
|
|
48
|
+
this.checkpoints.set(key, checkpoint);
|
|
49
|
+
logger.info(`[Checkpoint] 已创建:${branchName} → ${worktreePath}`);
|
|
50
|
+
return checkpoint;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
logger.error(`[Checkpoint] 创建失败:${error}`);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 回滚到 checkpoint
|
|
59
|
+
*/
|
|
60
|
+
async rollback(pipelineId, phase, projectRoot) {
|
|
61
|
+
const key = `${pipelineId}-${phase}`;
|
|
62
|
+
const checkpoint = this.checkpoints.get(key);
|
|
63
|
+
if (!checkpoint) {
|
|
64
|
+
throw new Error(`Checkpoint 不存在: ${key}`);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
// 恢复文件状态
|
|
68
|
+
await execAsync(`git reset --hard "${checkpoint.branchName}"`, {
|
|
69
|
+
cwd: projectRoot,
|
|
70
|
+
});
|
|
71
|
+
logger.info(`[Checkpoint] 已回滚到 ${phase} 阶段开始时的状态`);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
logger.error(`[Checkpoint] 回滚失败:${error}`);
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 清理 checkpoint(阶段成功完成后)
|
|
80
|
+
*/
|
|
81
|
+
async cleanup(pipelineId, phase) {
|
|
82
|
+
const key = `${pipelineId}-${phase}`;
|
|
83
|
+
const checkpoint = this.checkpoints.get(key);
|
|
84
|
+
if (!checkpoint) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
// 清理 worktree
|
|
89
|
+
try {
|
|
90
|
+
await execAsync(`git worktree remove "${checkpoint.worktreePath}" --force`);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// worktree 可能已被手动删除
|
|
94
|
+
}
|
|
95
|
+
// 删除分支
|
|
96
|
+
try {
|
|
97
|
+
await execAsync(`git branch -D "${checkpoint.branchName}"`);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// 分支可能已被删除
|
|
101
|
+
}
|
|
102
|
+
this.checkpoints.delete(key);
|
|
103
|
+
logger.debug(`[Checkpoint] 已清理:${checkpoint.branchName}`);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
logger.warn(`[Checkpoint] 清理失败:${error}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 清理所有 checkpoint
|
|
111
|
+
*/
|
|
112
|
+
async cleanupAll(pipelineId) {
|
|
113
|
+
const keys = Array.from(this.checkpoints.keys()).filter(k => k.startsWith(`${pipelineId}-`));
|
|
114
|
+
for (const key of keys) {
|
|
115
|
+
const [, phase] = key.split('-');
|
|
116
|
+
await this.cleanup(pipelineId, phase);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 获取 checkpoint
|
|
121
|
+
*/
|
|
122
|
+
get(pipelineId, phase) {
|
|
123
|
+
return this.checkpoints.get(`${pipelineId}-${phase}`);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 检查是否存在 checkpoint
|
|
127
|
+
*/
|
|
128
|
+
has(pipelineId, phase) {
|
|
129
|
+
return this.checkpoints.has(`${pipelineId}-${phase}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/pipeline/checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-engine.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAK3E,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC3C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,UAAU,EAAE,EAC1B,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAC7C,kBAAkB;
|
|
1
|
+
{"version":3,"file":"completion-engine.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAK3E,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC3C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,UAAU,EAAE,EAC1B,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAC7C,kBAAkB;IAuGrB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -85,20 +85,16 @@ export class CompletionEngine {
|
|
|
85
85
|
reasons.push(`活动阈值(${eventCount}/${threshold})`);
|
|
86
86
|
confidence += 40;
|
|
87
87
|
}
|
|
88
|
-
//
|
|
89
|
-
//
|
|
88
|
+
// 产物门禁:有必需产物但验证失败时,硬阻断推进(无绕过后门)
|
|
89
|
+
// 移除显式信号和绝对超时的绕过逻辑,确保产物验证是硬约束
|
|
90
90
|
if (hasRequiredArtifacts && !artifactValidationPassed) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
reasons: [...reasons, '产物门禁(必需产物未生成)'],
|
|
99
|
-
method: 'precise',
|
|
100
|
-
};
|
|
101
|
-
}
|
|
91
|
+
logger.debug(`[CompletionEngine] 🔒 产物门禁:必需产物未生成,阻断推进(当前置信度 ${confidence}%)`);
|
|
92
|
+
return {
|
|
93
|
+
shouldAdvance: false,
|
|
94
|
+
confidence: Math.min(confidence, 59),
|
|
95
|
+
reasons: [...reasons, '产物门禁(必需产物未生成)'],
|
|
96
|
+
method: 'precise',
|
|
97
|
+
};
|
|
102
98
|
}
|
|
103
99
|
// 决策:confidence >= 60 即推进
|
|
104
100
|
const shouldAdvance = confidence >= 60;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-engine.js","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"completion-engine.js","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAU/D,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,aAAa,CAAoH;IACzI,OAAO,CAAC,eAAe,CAAsH;IAC7I,OAAO,CAAC,eAAe,CAAsH;IAC7I,OAAO,CAAC,mBAAmB,CAA0H;IACrJ,OAAO,CAAC,WAAW,CAAwH;IAC3I,sCAAsC;IACtC,OAAO,CAAC,kBAAkB,CAAwH;IAClJ,uCAAuC;IACvC,OAAO,CAAC,cAAc,CAAuH;IAC7I,yCAAyC;IACzC,OAAO,CAAC,cAAc,CAAuH;IAC7I,gDAAgD;IAChD,OAAO,CAAC,YAAY,CAA6H;IACjJ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IAE/C,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,gBAAgB,CAA0B;IAElD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAmCjD;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,UAAU,EACjB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dynamic-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAU/D,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,aAAa,CAAoH;IACzI,OAAO,CAAC,eAAe,CAAsH;IAC7I,OAAO,CAAC,eAAe,CAAsH;IAC7I,OAAO,CAAC,mBAAmB,CAA0H;IACrJ,OAAO,CAAC,WAAW,CAAwH;IAC3I,sCAAsC;IACtC,OAAO,CAAC,kBAAkB,CAAwH;IAClJ,uCAAuC;IACvC,OAAO,CAAC,cAAc,CAAuH;IAC7I,yCAAyC;IACzC,OAAO,CAAC,cAAc,CAAuH;IAC7I,gDAAgD;IAChD,OAAO,CAAC,YAAY,CAA6H;IACjJ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IAE/C,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,gBAAgB,CAA0B;IAElD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAmCjD;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,UAAU,EACjB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC;IAmLzB;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBjC;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ1C;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAkBzD;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAW3C;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE;IAoBvD;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAkBrB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAW3B"}
|
|
@@ -89,11 +89,63 @@ export class DynamicNodeExecutor {
|
|
|
89
89
|
const lastActivity = this.lastActivityAt.get(key);
|
|
90
90
|
const lastArtifact = this.lastArtifactAt.get(key);
|
|
91
91
|
const decision = this.completionEngine.decide(currentNode, nodeType, event, recentEventsList, artifacts, eventCount, lastActivity, lastArtifact, pipeline.complexity);
|
|
92
|
+
// 即使不推进,也要检查产物验证和重试计数(防止无限循环)
|
|
93
|
+
const validation = this.artifactValidator.validate(artifacts, nodeType.expected_artifacts, pipeline.complexity);
|
|
92
94
|
if (!decision.shouldAdvance) {
|
|
95
|
+
// 产物验证失败且达到最大重试次数 → 硬阻断
|
|
96
|
+
if (!validation.passed && pipeline.complexity !== 'simple') {
|
|
97
|
+
const retryKey = `${pipeline.id}:${currentNode.id}`;
|
|
98
|
+
const retries = this.artifactRetryCount.get(retryKey) ?? 0;
|
|
99
|
+
if (retries >= DynamicNodeExecutor.MAX_ARTIFACT_RETRIES) {
|
|
100
|
+
const missing = validation.missing_required?.join('、') || validation.errors?.join(';') || '必需产物';
|
|
101
|
+
const requiredArtifacts = nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
|
|
102
|
+
const artifactList = requiredArtifacts.map(c => {
|
|
103
|
+
const pathHint = c.path_pattern ? `,路径匹配 ${c.path_pattern}` : '';
|
|
104
|
+
return `- ${c.description}(${c.type} 文件${pathHint})`;
|
|
105
|
+
}).join('\n');
|
|
106
|
+
logger.error(`[Pipeline:Dynamic:Node] ❌ 节点 ${currentNode.nodeTypeId} 产物验证失败 ${DynamicNodeExecutor.MAX_ARTIFACT_RETRIES} 次,Pipeline 已阻断`);
|
|
107
|
+
return {
|
|
108
|
+
advanced: false,
|
|
109
|
+
blocking: true,
|
|
110
|
+
systemMessage: `[Pipeline 已阻断] 产物验证失败 ${DynamicNodeExecutor.MAX_ARTIFACT_RETRIES} 次。
|
|
111
|
+
|
|
112
|
+
缺少必需产物:
|
|
113
|
+
${missing}
|
|
114
|
+
|
|
115
|
+
必需产物清单:
|
|
116
|
+
${artifactList}
|
|
117
|
+
|
|
118
|
+
Pipeline 已被阻断,无法继续执行。请检查:
|
|
119
|
+
1. 产物路径是否正确?
|
|
120
|
+
2. 产物内容是否符合要求?
|
|
121
|
+
3. 是否需要调整产物约束配置?
|
|
122
|
+
|
|
123
|
+
如需继续,请手动修复问题后重启 Pipeline。`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// 未达到最大重试次数 → 递增计数并下发重试指令
|
|
127
|
+
this.artifactRetryCount.set(retryKey, retries + 1);
|
|
128
|
+
const missing = validation.missing_required?.join('、') || validation.errors?.join(';') || '必需产物';
|
|
129
|
+
const requiredArtifacts = nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
|
|
130
|
+
const artifactList = requiredArtifacts.map(c => {
|
|
131
|
+
const pathHint = c.path_pattern ? `,路径匹配 ${c.path_pattern}` : '';
|
|
132
|
+
return `- ${c.description}(${c.type} 文件${pathHint})`;
|
|
133
|
+
}).join('\n');
|
|
134
|
+
logger.warn(`[Pipeline:Dynamic:Node] ⚠️ 节点 ${currentNode.nodeTypeId} 产物缺失,强制重新生成(第 ${retries + 1}/${DynamicNodeExecutor.MAX_ARTIFACT_RETRIES} 次)`);
|
|
135
|
+
return {
|
|
136
|
+
advanced: false,
|
|
137
|
+
systemMessage: `[Forge:产物强制要求] 当前节点「${nodeType.name}」尚未完成,缺少必需产物:${missing}。
|
|
138
|
+
|
|
139
|
+
这是第 ${retries + 1}/${DynamicNodeExecutor.MAX_ARTIFACT_RETRIES} 次重试。
|
|
140
|
+
|
|
141
|
+
你必须立即使用 Write 工具生成以下文件后才能继续:
|
|
142
|
+
${artifactList || missing}
|
|
143
|
+
|
|
144
|
+
生成完成后执行 echo "FORGE_NODE_DONE"。`,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
93
147
|
return { advanced: false };
|
|
94
148
|
}
|
|
95
|
-
// 节点完成,验证产物
|
|
96
|
-
const validation = this.artifactValidator.validate(artifacts, nodeType.expected_artifacts, pipeline.complexity);
|
|
97
149
|
// 构建节点产物输出
|
|
98
150
|
const nodeOutput = {
|
|
99
151
|
artifacts,
|