@winspan/claude-forge 1.60.0 → 1.66.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 +4 -4
- package/dist/convention/convention-manager.d.ts +3 -1
- package/dist/convention/convention-manager.d.ts.map +1 -1
- package/dist/convention/convention-manager.js +27 -5
- package/dist/convention/convention-manager.js.map +1 -1
- package/dist/convention/types.d.ts +57 -0
- package/dist/convention/types.d.ts.map +1 -1
- package/dist/pipeline/artifact-collector.d.ts +31 -0
- package/dist/pipeline/artifact-collector.d.ts.map +1 -0
- package/dist/pipeline/artifact-collector.js +105 -0
- package/dist/pipeline/artifact-collector.js.map +1 -0
- package/dist/pipeline/artifact-validator.d.ts +26 -0
- package/dist/pipeline/artifact-validator.d.ts.map +1 -0
- package/dist/pipeline/artifact-validator.js +108 -0
- package/dist/pipeline/artifact-validator.js.map +1 -0
- package/dist/pipeline/dynamic-node-executor.d.ts +2 -0
- package/dist/pipeline/dynamic-node-executor.d.ts.map +1 -1
- package/dist/pipeline/dynamic-node-executor.js +35 -3
- package/dist/pipeline/dynamic-node-executor.js.map +1 -1
- package/dist/pipeline/i-node-executor.d.ts +2 -0
- package/dist/pipeline/i-node-executor.d.ts.map +1 -1
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +3 -2
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/node-type-registry.d.ts.map +1 -1
- package/dist/pipeline/node-type-registry.js +53 -1
- package/dist/pipeline/node-type-registry.js.map +1 -1
- package/dist/pipeline/node-type-sync.d.ts.map +1 -1
- package/dist/pipeline/node-type-sync.js +20 -9
- package/dist/pipeline/node-type-sync.js.map +1 -1
- package/dist/pipeline/template-registry.d.ts +1 -1
- package/dist/pipeline/template-registry.d.ts.map +1 -1
- package/dist/pipeline/template-registry.js +54 -3
- package/dist/pipeline/template-registry.js.map +1 -1
- package/dist/web-static/assets/index-80GT9jgH.js +76 -0
- package/dist/web-static/assets/{index-Bv6kBfyq.css → index-CqOaxWJz.css} +1 -1
- package/dist/web-static/index.html +2 -2
- package/package.json +1 -1
- package/dist/web-static/assets/index-9R7Nz_BV.js +0 -76
package/README.md
CHANGED
|
@@ -10,9 +10,9 @@ Claude Forge 是一个为 Claude Code 设计的智能编排引擎,通过透明
|
|
|
10
10
|
## ✨ 核心特性
|
|
11
11
|
|
|
12
12
|
- 🎯 **智能意图识别** - 自动分析任务复杂度,决定执行策略(支持规则库匹配和 AI 推理) [x] 2025-01-18
|
|
13
|
-
- 🔄 **Pipeline 编排** - 复杂任务自动拆分为多阶段流程(分析→设计→编码→测试→审查),支持纯事件溯源架构和状态机约束,确保状态一致性,daemon 启动时自动迁移历史数据,阶段产物统一输出到 docs/时间戳/ 目录,支持动态节点系统(Convention 定义节点类型,Skill 作为执行策略,NodeTypeRegistry 聚合节点类型,DynamicNodeExecutor 驱动执行,INodeExecutor 接口统一 PhaseManager 和 DynamicNodeExecutor,DynamicAggregator 支持动态节点事件聚合,启发式完成检测增强支持 file_patterns 和 keywords,Web API 支持动态流水线创建和手动推进),管理后台深度审查与修复完成(9个核心页面4750行代码,发现28个问题,修复13个P1/P2问题,新增质量问题上下文查询接口,优化事件展开性能和UX体验),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 迁移脚本已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API
|
|
13
|
+
- 🔄 **Pipeline 编排** - 复杂任务自动拆分为多阶段流程(分析→设计→编码→测试→审查),支持纯事件溯源架构和状态机约束,确保状态一致性,daemon 启动时自动迁移历史数据,阶段产物统一输出到 docs/时间戳/ 目录,支持动态节点系统(Convention 定义节点类型,Skill 作为执行策略,NodeTypeRegistry 聚合节点类型,DynamicNodeExecutor 驱动执行,INodeExecutor 接口统一 PhaseManager 和 DynamicNodeExecutor,DynamicAggregator 支持动态节点事件聚合,启发式完成检测增强支持 file_patterns 和 keywords,Web API 支持动态流水线创建和手动推进),管理后台深度审查与修复完成(9个核心页面4750行代码,发现28个问题,修复13个P1/P2问题,新增质量问题上下文查询接口,优化事件展开性能和UX体验),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 迁移脚本已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化到数据库(node_types表),启动时自动恢复到内存注册表,Convention加载时同步节点类型定义,流水线节点产物约束设计与实现完成(ArtifactType定义、ArtifactConstraint约束、ArtifactCollector收集器、ArtifactValidator验证器、NodeOutput结构化输出、启发式完成检测集成产物验证、Web前端展示产物列表和验证状态) [x] 2026-04-23
|
|
14
14
|
- 🛡️ **质量门禁** - 每个阶段自动 AI 审查,支持需求规格、安全性、代码质量、测试覆盖、性能等多维度检查,问题追踪和解决状态管理,支持上下文查询 [x] 2025-01-18
|
|
15
|
-
- 📊 **Web 管理后台** - 实时监控会话、Pipeline、质量问题(支持上下文查询和批量解决)、知识图谱、项目管理、自定义规范管理、技能管理、CLAUDE.md 管理(支持模块化查看和蒸馏压缩)、项目规范绑定管理、项目元数据管理(标签/备注/归档)、全局规范管理(同步/安装/删除/进化/YAML编辑/使用统计/进化历史)、阶段产物统一管理(docs/时间戳/目录结构+INDEX.md索引)、动态节点类型管理(NodeTypeRegistry 可视化)、TemplateRegistry 支持三种来源(builtin/user/convention)、动态流水线创建和手动推进操作、事件日志管理(查看/搜索/导出/清理)、数据库维护功能(备份/恢复/历史记录/诊断修复),深度代码审查完成(9个核心页面28个问题,修复13个P1/P2问题,包括运行时错误、性能优化、竞态条件、UX改进),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 数据迁移支持已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API
|
|
15
|
+
- 📊 **Web 管理后台** - 实时监控会话、Pipeline、质量问题(支持上下文查询和批量解决)、知识图谱、项目管理、自定义规范管理、技能管理、CLAUDE.md 管理(支持模块化查看和蒸馏压缩)、项目规范绑定管理、项目元数据管理(标签/备注/归档)、全局规范管理(同步/安装/删除/进化/YAML编辑/使用统计/进化历史)、阶段产物统一管理(docs/时间戳/目录结构+INDEX.md索引)、动态节点类型管理(NodeTypeRegistry 可视化)、TemplateRegistry 支持三种来源(builtin/user/convention)、动态流水线创建和手动推进操作、事件日志管理(查看/搜索/导出/清理)、数据库维护功能(备份/恢复/历史记录/诊断修复),深度代码审查完成(9个核心页面28个问题,修复13个P1/P2问题,包括运行时错误、性能优化、竞态条件、UX改进),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 数据迁移支持已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化和恢复机制已实现,DynamicPipelineNodes组件支持产物展示(artifacts列表、验证状态、类型图标、路径链接) [x] 2026-04-23
|
|
16
16
|
- 🧠 **知识积累** - 自动提炼决策日志、时间线、项目规范,支持树索引和语义检索 [x] 2025-01-18
|
|
17
17
|
- 🎨 **技能编排** - 根据意图自动匹配并注入最佳实践(TDD、重构、调试等),支持关键词映射和命中率统计 [x] 2025-01-18
|
|
18
18
|
- 📈 **数据分析** - 成本统计、满意度趋势、ROI 分析,支持延迟追踪和 SLA 告警 [x] 2025-01-18
|
|
@@ -25,14 +25,14 @@ Claude Forge 是一个为 Claude Code 设计的智能编排引擎,通过透明
|
|
|
25
25
|
| 功能 | 说明 |
|
|
26
26
|
|------|------|
|
|
27
27
|
| 意图识别 | 自动分析任务复杂度(simple/moderate/complex),决定执行策略,支持规则库和 AI 推理 [x] 2025-01-18 |
|
|
28
|
-
| Pipeline 编排 | 复杂任务自动拆分为多阶段流程,支持纯事件溯源、状态机约束、质量门禁、阶段产物生成(统一输出到 docs/时间戳/ 目录+INDEX.md索引)、daemon 启动时自动迁移历史数据、动态节点系统(Convention 定义节点类型,NodeTypeRegistry 聚合,DynamicNodeExecutor 驱动,Skill 作为执行策略,INodeExecutor 接口统一,TemplateRegistry 支持三种来源,启发式完成检测增强,Web API 操作端点),管理后台深度审查与修复完成(修复运行时错误、性能问题、竞态条件、UX体验等13个P1/P2问题),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 迁移脚本已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API
|
|
28
|
+
| Pipeline 编排 | 复杂任务自动拆分为多阶段流程,支持纯事件溯源、状态机约束、质量门禁、阶段产物生成(统一输出到 docs/时间戳/ 目录+INDEX.md索引)、daemon 启动时自动迁移历史数据、动态节点系统(Convention 定义节点类型,NodeTypeRegistry 聚合,DynamicNodeExecutor 驱动,Skill 作为执行策略,INodeExecutor 接口统一,TemplateRegistry 支持三种来源,启发式完成检测增强,Web API 操作端点),管理后台深度审查与修复完成(修复运行时错误、性能问题、竞态条件、UX体验等13个P1/P2问题),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 迁移脚本已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化到数据库(node_types表+NodeTypeRepository),启动时自动恢复到内存注册表,Convention加载时同步节点类型定义,流水线节点产物约束系统完成(ArtifactCollector追踪Write/Edit工具调用、ArtifactValidator验证产物约束、NodeOutput结构化输出、DynamicPipelineNodes组件展示产物列表和验证状态) [x] 2026-04-23 |
|
|
29
29
|
| 质量门禁 | 每个阶段自动 AI 审查(需求规格、安全性、代码质量、测试、性能),不合格则阻止推进 [x] 2025-01-18 |
|
|
30
30
|
| 技能编排 | 根据意图自动匹配并注入最佳实践,支持关键词映射和命中率统计 [x] 2025-01-18 |
|
|
31
31
|
| 知识蒸馏 | 自动提炼决策日志、时间线、项目规范,支持树索引和语义检索 [x] 2025-01-18 |
|
|
32
32
|
| 会话续接 | 中断后自动恢复上次工作状态 [x] 2025-01-18 |
|
|
33
33
|
| 用户画像 | 根据行为自适应调整干预深度 [x] 2025-01-18 |
|
|
34
34
|
| 多 AI 提供商 | 支持 Claude、OpenAI、Ollama,统一网关层 [x] 2025-01-18 |
|
|
35
|
-
| Web 管理后台 | 实时监控、项目管理、Pipeline 控制、质量追踪(支持上下文查询和批量解决)、自定义规范管理、技能管理、CLAUDE.md 管理、项目规范绑定管理、项目元数据管理(标签/备注/归档)、全局规范管理(同步/安装/删除/进化/YAML编辑/使用统计/进化历史)、阶段产物索引管理、动态节点类型管理(NodeTypeRegistry 可视化)、TemplateRegistry 可视化、动态流水线创建和手动推进、事件日志管理、数据库维护功能(备份/恢复/历史记录/诊断修复),深度代码审查完成(9个核心页面4750行代码,发现28个问题,修复13个P1/P2问题,包括运行时错误修复、性能优化、竞态条件处理、UX体验改进),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 数据迁移支持已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API
|
|
35
|
+
| Web 管理后台 | 实时监控、项目管理、Pipeline 控制、质量追踪(支持上下文查询和批量解决)、自定义规范管理、技能管理、CLAUDE.md 管理、项目规范绑定管理、项目元数据管理(标签/备注/归档)、全局规范管理(同步/安装/删除/进化/YAML编辑/使用统计/进化历史)、阶段产物索引管理、动态节点类型管理(NodeTypeRegistry 可视化)、TemplateRegistry 可视化、动态流水线创建和手动推进、事件日志管理、数据库维护功能(备份/恢复/历史记录/诊断修复),深度代码审查完成(9个核心页面4750行代码,发现28个问题,修复13个P1/P2问题,包括运行时错误修复、性能优化、竞态条件处理、UX体验改进),节点类型管理页面和动态流水线节点展示组件已实现,NodeTypes 页面和 PipelineDetail 动态节点展示已集成,Legacy Pipeline 数据迁移支持已完成,节点类型 API 路由已注册,动态节点系统全栈集成完成,全栈集成验证通过(NodeTypes页面正常展示节点类型,PipelineDetail页面正常展示动态节点,API路由正常响应),节点类型持久化和恢复机制已实现,DynamicPipelineNodes组件支持产物可视化(类型图标、路径链接、验证状态徽章) [x] 2026-04-23 |
|
|
36
36
|
| 阶段产物 | 每个阶段自动生成结构化文档 [x] 2025-01-18 |
|
|
37
37
|
| 模式学习 | 从历史失败中提炼预防建议,支持 Thompson Sampling 策略选择 [x] 2025-01-18 |
|
|
38
38
|
| 项目规范 | 根据技术栈自动蒸馏项目级规范,支持自动初始化和 AI 自进化 [x] 2025-01-18 |
|
|
@@ -8,6 +8,8 @@ export declare class ConventionManager {
|
|
|
8
8
|
private writerPromise;
|
|
9
9
|
/** 可选的 storage 注入,用于节点类型持久化 */
|
|
10
10
|
private static storage;
|
|
11
|
+
/** 节点类型注册缓存:projectPath → 绑定 ID 列表的哈希 */
|
|
12
|
+
private nodeTypeRegistryCache;
|
|
11
13
|
/** 注入 storage(daemon 启动时调用一次) */
|
|
12
14
|
static setStorage(storage: SQLiteStorage): void;
|
|
13
15
|
constructor(loader?: ConventionLoader, claudeMdWriter?: ClaudeMdWriter);
|
|
@@ -32,7 +34,7 @@ export declare class ConventionManager {
|
|
|
32
34
|
getActiveConventions(projectPath: string): Convention[];
|
|
33
35
|
/**
|
|
34
36
|
* 将 Convention 的 node_types 注册到 NodeTypeRegistry
|
|
35
|
-
*
|
|
37
|
+
* 使用缓存机制,只有绑定变化时才重新注册
|
|
36
38
|
*/
|
|
37
39
|
private registerNodeTypes;
|
|
38
40
|
/** 加载项目本地的自定义蒸馏规范(若存在) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convention-manager.d.ts","sourceRoot":"","sources":["../../src/convention/convention-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAA4B,MAAM,YAAY,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAwC;IAE7D,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAA8B;IAEpD,iCAAiC;IACjC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;gBAInC,MAAM,CAAC,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,cAAc;YAcxD,SAAS;IAMvB,qDAAqD;IACrD,SAAS,IAAI,gBAAgB;IAM7B;;;;;OAKG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"convention-manager.d.ts","sourceRoot":"","sources":["../../src/convention/convention-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAA4B,MAAM,YAAY,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAwC;IAE7D,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAA8B;IAEpD,yCAAyC;IACzC,OAAO,CAAC,qBAAqB,CAA6B;IAE1D,iCAAiC;IACjC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;gBAInC,MAAM,CAAC,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,cAAc;YAcxD,SAAS;IAMvB,qDAAqD;IACrD,SAAS,IAAI,gBAAgB;IAM7B;;;;;OAKG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU;IA0B3D;;;;;OAKG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBxD,2DAA2D;IAC3D,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBvD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAkCzB,0BAA0B;IAC1B,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAMnE;;;;OAIG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IA2BvE;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAenD;;;;OAIG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpF,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;YAOP,kBAAkB;CAcjC"}
|
|
@@ -15,6 +15,8 @@ export class ConventionManager {
|
|
|
15
15
|
writerPromise = null;
|
|
16
16
|
/** 可选的 storage 注入,用于节点类型持久化 */
|
|
17
17
|
static storage = null;
|
|
18
|
+
/** 节点类型注册缓存:projectPath → 绑定 ID 列表的哈希 */
|
|
19
|
+
nodeTypeRegistryCache = new Map();
|
|
18
20
|
/** 注入 storage(daemon 启动时调用一次) */
|
|
19
21
|
static setStorage(storage) {
|
|
20
22
|
ConventionManager.storage = storage;
|
|
@@ -69,6 +71,8 @@ export class ConventionManager {
|
|
|
69
71
|
this.writeBindings(projectPath, bindings);
|
|
70
72
|
this.injectIntoClaudeMd(projectPath, convention);
|
|
71
73
|
logger.info(`[规范管理器] 已绑定 ${conventionId} 到 ${projectPath}`);
|
|
74
|
+
// 清除节点类型注册缓存,下次 getActiveConventions 时重新注册
|
|
75
|
+
this.nodeTypeRegistryCache.delete(projectPath);
|
|
72
76
|
return convention;
|
|
73
77
|
}
|
|
74
78
|
/**
|
|
@@ -90,6 +94,8 @@ export class ConventionManager {
|
|
|
90
94
|
this.writeBindings(projectPath, []);
|
|
91
95
|
logger.info(`[规范管理器] 已解绑全部规范 from ${projectPath}`);
|
|
92
96
|
}
|
|
97
|
+
// 清除节点类型注册缓存
|
|
98
|
+
this.nodeTypeRegistryCache.delete(projectPath);
|
|
93
99
|
}
|
|
94
100
|
/** 获取项目绑定的所有 Convention(已加载完整对象)。custom- 前缀的 ID 从项目本地加载 */
|
|
95
101
|
getActiveConventions(projectPath) {
|
|
@@ -107,17 +113,28 @@ export class ConventionManager {
|
|
|
107
113
|
logger.warn(`[规范管理器] 绑定的 Convention "${binding.convention_id}" 文件不存在,跳过`);
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
|
-
// 注册所有 Convention 的节点类型到 NodeTypeRegistry
|
|
111
|
-
this.registerNodeTypes(result);
|
|
116
|
+
// 注册所有 Convention 的节点类型到 NodeTypeRegistry(带缓存)
|
|
117
|
+
this.registerNodeTypes(projectPath, result);
|
|
112
118
|
return result;
|
|
113
119
|
}
|
|
114
120
|
/**
|
|
115
121
|
* 将 Convention 的 node_types 注册到 NodeTypeRegistry
|
|
116
|
-
*
|
|
122
|
+
* 使用缓存机制,只有绑定变化时才重新注册
|
|
117
123
|
*/
|
|
118
|
-
registerNodeTypes(conventions) {
|
|
124
|
+
registerNodeTypes(projectPath, conventions) {
|
|
125
|
+
// 计算绑定哈希(Convention ID + version)
|
|
126
|
+
const bindingHash = conventions
|
|
127
|
+
.map(c => `${c.id}:${c.version}`)
|
|
128
|
+
.sort()
|
|
129
|
+
.join('|');
|
|
130
|
+
// 检查缓存,如果哈希未变化则跳过
|
|
131
|
+
const cached = this.nodeTypeRegistryCache.get(projectPath);
|
|
132
|
+
if (cached === bindingHash) {
|
|
133
|
+
return; // 绑定未变化,跳过注册
|
|
134
|
+
}
|
|
135
|
+
// 绑定变化,重新注册
|
|
119
136
|
const registry = NodeTypeRegistry.getInstance();
|
|
120
|
-
registry.clearExternal(); //
|
|
137
|
+
registry.clearExternal(); // 清空外部节点类型
|
|
121
138
|
for (const convention of conventions) {
|
|
122
139
|
if (convention.node_types && convention.node_types.length > 0) {
|
|
123
140
|
registry.registerFromConvention(convention);
|
|
@@ -128,6 +145,9 @@ export class ConventionManager {
|
|
|
128
145
|
if (ConventionManager.storage) {
|
|
129
146
|
syncConventionNodeTypes(ConventionManager.storage, conventions);
|
|
130
147
|
}
|
|
148
|
+
// 更新缓存
|
|
149
|
+
this.nodeTypeRegistryCache.set(projectPath, bindingHash);
|
|
150
|
+
logger.debug(`[规范管理器] 节点类型注册缓存已更新:${projectPath}`);
|
|
131
151
|
}
|
|
132
152
|
/** 加载项目本地的自定义蒸馏规范(若存在) */
|
|
133
153
|
loadProjectCustomConvention(projectPath) {
|
|
@@ -160,6 +180,8 @@ export class ConventionManager {
|
|
|
160
180
|
this.writeBindings(projectPath, filtered);
|
|
161
181
|
this.injectIntoClaudeMd(projectPath, convention);
|
|
162
182
|
logger.info(`[规范管理器] 已绑定自定义规范 ${convention.id} 到 ${projectPath},源规范已解绑`);
|
|
183
|
+
// 清除节点类型注册缓存
|
|
184
|
+
this.nodeTypeRegistryCache.delete(projectPath);
|
|
163
185
|
}
|
|
164
186
|
/**
|
|
165
187
|
* 返回所有绑定规范的 active_prompt 拼接(供每条消息注入,priority=0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convention-manager.js","sourceRoot":"","sources":["../../src/convention/convention-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"convention-manager.js","sourceRoot":"","sources":["../../src/convention/convention-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,61 @@ export interface ConventionDistillResult {
|
|
|
100
100
|
sourcesUsed: string[];
|
|
101
101
|
changes: string[];
|
|
102
102
|
}
|
|
103
|
+
/** 产物类型 */
|
|
104
|
+
export type ArtifactType = 'document' | 'code' | 'test' | 'config' | 'diagram' | 'data' | 'other';
|
|
105
|
+
/** 产物约束规格 */
|
|
106
|
+
export interface ArtifactConstraint {
|
|
107
|
+
/** 产物类型 */
|
|
108
|
+
type: ArtifactType;
|
|
109
|
+
/** 产物描述 */
|
|
110
|
+
description: string;
|
|
111
|
+
/** 文件路径模式(glob 或正则) */
|
|
112
|
+
path_pattern?: string;
|
|
113
|
+
/** 是否必需(默认 true) */
|
|
114
|
+
required?: boolean;
|
|
115
|
+
/** 最小数量(默认 1) */
|
|
116
|
+
min_count?: number;
|
|
117
|
+
/** 最大数量(默认不限) */
|
|
118
|
+
max_count?: number;
|
|
119
|
+
/** 内容约束(关键词、结构) */
|
|
120
|
+
content_constraints?: {
|
|
121
|
+
/** 必须包含的关键词 */
|
|
122
|
+
required_keywords?: string[];
|
|
123
|
+
/** 最小字符数 */
|
|
124
|
+
min_length?: number;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** 实际产物记录 */
|
|
128
|
+
export interface Artifact {
|
|
129
|
+
/** 产物类型 */
|
|
130
|
+
type: ArtifactType;
|
|
131
|
+
/** 文件路径 */
|
|
132
|
+
path: string;
|
|
133
|
+
/** 产物描述 */
|
|
134
|
+
description?: string;
|
|
135
|
+
/** 创建时间 */
|
|
136
|
+
created_at: string;
|
|
137
|
+
/** 文件大小(字节) */
|
|
138
|
+
size_bytes?: number;
|
|
139
|
+
/** 内容摘要(前 200 字符) */
|
|
140
|
+
content_preview?: string;
|
|
141
|
+
}
|
|
142
|
+
/** 节点产物输出(结构化) */
|
|
143
|
+
export interface NodeOutput {
|
|
144
|
+
/** 产物列表 */
|
|
145
|
+
artifacts: Artifact[];
|
|
146
|
+
/** 产物验证结果 */
|
|
147
|
+
validation: {
|
|
148
|
+
/** 是否通过验证 */
|
|
149
|
+
passed: boolean;
|
|
150
|
+
/** 缺失的必需产物 */
|
|
151
|
+
missing_required?: string[];
|
|
152
|
+
/** 验证错误信息 */
|
|
153
|
+
errors?: string[];
|
|
154
|
+
};
|
|
155
|
+
/** 节点执行摘要 */
|
|
156
|
+
summary?: string;
|
|
157
|
+
}
|
|
103
158
|
/** 节点完成规格 */
|
|
104
159
|
export interface NodeCompletionSpec {
|
|
105
160
|
/** 显式信号(最高优先级):Claude 输出此字符串时立即完成节点 */
|
|
@@ -150,5 +205,7 @@ export interface ConventionNodeType {
|
|
|
150
205
|
default_skills?: string[];
|
|
151
206
|
/** 节点执行时注入的额外提示(可选) */
|
|
152
207
|
instruction_suffix?: string;
|
|
208
|
+
/** 预期产物约束(可选):定义节点完成时应产出的产物 */
|
|
209
|
+
expected_artifacts?: ArtifactConstraint[];
|
|
153
210
|
}
|
|
154
211
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/convention/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,wBAAwB;AACxB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAwB;AACxB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,QAAQ,EAAE,eAAe,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,sBAAsB;AACtB,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IAEzB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEtC;;;OAGG;IACH,iBAAiB,EAAE,eAAe,EAAE,CAAC;IAErC,eAAe;IACf,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAEhC;;;OAGG;IACH,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAElC,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAwB;AACxB,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/convention/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactCollector — 产物收集器
|
|
3
|
+
*
|
|
4
|
+
* 负责在节点执行过程中追踪和收集产物(Write/Edit 工具调用)
|
|
5
|
+
*/
|
|
6
|
+
import type { ForgeEvent } from '../types/index.js';
|
|
7
|
+
import type { Artifact } from '../convention/types.js';
|
|
8
|
+
export declare class ArtifactCollector {
|
|
9
|
+
private artifacts;
|
|
10
|
+
/**
|
|
11
|
+
* 追踪工具调用,收集产物
|
|
12
|
+
*/
|
|
13
|
+
track(nodeKey: string, event: ForgeEvent): void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取节点的产物列表
|
|
16
|
+
*/
|
|
17
|
+
getArtifacts(nodeKey: string): Artifact[];
|
|
18
|
+
/**
|
|
19
|
+
* 清除节点的产物记录
|
|
20
|
+
*/
|
|
21
|
+
clear(nodeKey: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* 清除所有产物记录
|
|
24
|
+
*/
|
|
25
|
+
clearAll(): void;
|
|
26
|
+
/**
|
|
27
|
+
* 推断产物类型(基于文件扩展名和路径)
|
|
28
|
+
*/
|
|
29
|
+
private inferArtifactType;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=artifact-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-collector.d.ts","sourceRoot":"","sources":["../../src/pipeline/artifact-collector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,wBAAwB,CAAC;AAKrE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAsC;IAEvD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IA6C/C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE;IAIzC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAoC1B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactCollector — 产物收集器
|
|
3
|
+
*
|
|
4
|
+
* 负责在节点执行过程中追踪和收集产物(Write/Edit 工具调用)
|
|
5
|
+
*/
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
import fs from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
export class ArtifactCollector {
|
|
10
|
+
artifacts = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* 追踪工具调用,收集产物
|
|
13
|
+
*/
|
|
14
|
+
track(nodeKey, event) {
|
|
15
|
+
// 只追踪 Write/Edit 工具调用
|
|
16
|
+
if (event.tool_name !== 'Write' && event.tool_name !== 'Edit') {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const filePath = event.tool_input?.file_path;
|
|
20
|
+
if (!filePath || typeof filePath !== 'string') {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// 推断产物类型
|
|
24
|
+
const artifactType = this.inferArtifactType(filePath);
|
|
25
|
+
// 读取文件内容摘要(前 200 字符)
|
|
26
|
+
let contentPreview;
|
|
27
|
+
let sizeBytes;
|
|
28
|
+
try {
|
|
29
|
+
if (fs.existsSync(filePath)) {
|
|
30
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
31
|
+
contentPreview = content.slice(0, 200);
|
|
32
|
+
sizeBytes = Buffer.byteLength(content, 'utf-8');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
logger.debug(`[ArtifactCollector] 无法读取文件内容:${filePath}`);
|
|
37
|
+
}
|
|
38
|
+
const artifact = {
|
|
39
|
+
type: artifactType,
|
|
40
|
+
path: filePath,
|
|
41
|
+
created_at: new Date().toISOString(),
|
|
42
|
+
size_bytes: sizeBytes,
|
|
43
|
+
content_preview: contentPreview,
|
|
44
|
+
};
|
|
45
|
+
// 添加到产物列表(去重)
|
|
46
|
+
const existing = this.artifacts.get(nodeKey) || [];
|
|
47
|
+
const isDuplicate = existing.some(a => a.path === filePath);
|
|
48
|
+
if (!isDuplicate) {
|
|
49
|
+
existing.push(artifact);
|
|
50
|
+
this.artifacts.set(nodeKey, existing);
|
|
51
|
+
logger.debug(`[ArtifactCollector] 收集产物:${filePath} (${artifactType})`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 获取节点的产物列表
|
|
56
|
+
*/
|
|
57
|
+
getArtifacts(nodeKey) {
|
|
58
|
+
return this.artifacts.get(nodeKey) || [];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 清除节点的产物记录
|
|
62
|
+
*/
|
|
63
|
+
clear(nodeKey) {
|
|
64
|
+
this.artifacts.delete(nodeKey);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 清除所有产物记录
|
|
68
|
+
*/
|
|
69
|
+
clearAll() {
|
|
70
|
+
this.artifacts.clear();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 推断产物类型(基于文件扩展名和路径)
|
|
74
|
+
*/
|
|
75
|
+
inferArtifactType(filePath) {
|
|
76
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
77
|
+
const basename = path.basename(filePath).toLowerCase();
|
|
78
|
+
// 测试文件
|
|
79
|
+
if (basename.includes('.test.') || basename.includes('.spec.')) {
|
|
80
|
+
return 'test';
|
|
81
|
+
}
|
|
82
|
+
// 配置文件
|
|
83
|
+
if (['.json', '.yaml', '.yml', '.toml', '.ini', '.env'].includes(ext)) {
|
|
84
|
+
return 'config';
|
|
85
|
+
}
|
|
86
|
+
// 代码文件
|
|
87
|
+
if (['.ts', '.js', '.tsx', '.jsx', '.py', '.go', '.rs', '.java', '.c', '.cpp', '.h'].includes(ext)) {
|
|
88
|
+
return 'code';
|
|
89
|
+
}
|
|
90
|
+
// 文档文件
|
|
91
|
+
if (['.md', '.txt', '.doc', '.docx', '.pdf'].includes(ext)) {
|
|
92
|
+
return 'document';
|
|
93
|
+
}
|
|
94
|
+
// 图表文件
|
|
95
|
+
if (['.png', '.jpg', '.jpeg', '.svg', '.mmd', '.drawio'].includes(ext)) {
|
|
96
|
+
return 'diagram';
|
|
97
|
+
}
|
|
98
|
+
// 数据文件
|
|
99
|
+
if (['.csv', '.xml', '.sql'].includes(ext)) {
|
|
100
|
+
return 'data';
|
|
101
|
+
}
|
|
102
|
+
return 'other';
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=artifact-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-collector.js","sourceRoot":"","sources":["../../src/pipeline/artifact-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactValidator — 产物验证器
|
|
3
|
+
*
|
|
4
|
+
* 负责验证节点产物是否满足约束条件
|
|
5
|
+
*/
|
|
6
|
+
import type { Artifact, ArtifactConstraint, NodeOutput } from '../convention/types.js';
|
|
7
|
+
export declare class ArtifactValidator {
|
|
8
|
+
/**
|
|
9
|
+
* 验证产物是否满足约束
|
|
10
|
+
*/
|
|
11
|
+
validate(artifacts: Artifact[], constraints?: ArtifactConstraint[]): NodeOutput['validation'];
|
|
12
|
+
/**
|
|
13
|
+
* 筛选匹配约束的产物
|
|
14
|
+
*/
|
|
15
|
+
private filterMatchingArtifacts;
|
|
16
|
+
/**
|
|
17
|
+
* 验证产物内容
|
|
18
|
+
*/
|
|
19
|
+
private validateContent;
|
|
20
|
+
/**
|
|
21
|
+
* 将 glob 模式转换为正则表达式
|
|
22
|
+
* 支持 * 和 ** 通配符
|
|
23
|
+
*/
|
|
24
|
+
private globToRegex;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=artifact-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-validator.d.ts","sourceRoot":"","sources":["../../src/pipeline/artifact-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGvF,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,QAAQ,CACN,SAAS,EAAE,QAAQ,EAAE,EACrB,WAAW,CAAC,EAAE,kBAAkB,EAAE,GACjC,UAAU,CAAC,YAAY,CAAC;IAoD3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;;OAGG;IACH,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactValidator — 产物验证器
|
|
3
|
+
*
|
|
4
|
+
* 负责验证节点产物是否满足约束条件
|
|
5
|
+
*/
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
export class ArtifactValidator {
|
|
8
|
+
/**
|
|
9
|
+
* 验证产物是否满足约束
|
|
10
|
+
*/
|
|
11
|
+
validate(artifacts, constraints) {
|
|
12
|
+
// 如果没有约束,默认通过
|
|
13
|
+
if (!constraints || constraints.length === 0) {
|
|
14
|
+
return { passed: true };
|
|
15
|
+
}
|
|
16
|
+
const missingRequired = [];
|
|
17
|
+
const errors = [];
|
|
18
|
+
for (const constraint of constraints) {
|
|
19
|
+
// 筛选匹配此约束的产物
|
|
20
|
+
const matchingArtifacts = this.filterMatchingArtifacts(artifacts, constraint);
|
|
21
|
+
// 检查必需产物
|
|
22
|
+
const required = constraint.required !== false; // 默认为 true
|
|
23
|
+
if (required && matchingArtifacts.length === 0) {
|
|
24
|
+
missingRequired.push(constraint.description);
|
|
25
|
+
errors.push(`缺少必需产物:${constraint.description}`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
// 检查最小数量
|
|
29
|
+
const minCount = constraint.min_count ?? 1;
|
|
30
|
+
if (matchingArtifacts.length < minCount) {
|
|
31
|
+
errors.push(`产物数量不足:${constraint.description}(需要 ${minCount},实际 ${matchingArtifacts.length})`);
|
|
32
|
+
}
|
|
33
|
+
// 检查最大数量
|
|
34
|
+
if (constraint.max_count && matchingArtifacts.length > constraint.max_count) {
|
|
35
|
+
errors.push(`产物数量超限:${constraint.description}(最多 ${constraint.max_count},实际 ${matchingArtifacts.length})`);
|
|
36
|
+
}
|
|
37
|
+
// 检查内容约束
|
|
38
|
+
if (constraint.content_constraints) {
|
|
39
|
+
for (const artifact of matchingArtifacts) {
|
|
40
|
+
this.validateContent(artifact, constraint, errors);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const passed = errors.length === 0;
|
|
45
|
+
if (!passed) {
|
|
46
|
+
logger.warn(`[ArtifactValidator] 产物验证失败:${errors.join('; ')}`);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
passed,
|
|
50
|
+
missing_required: missingRequired.length > 0 ? missingRequired : undefined,
|
|
51
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 筛选匹配约束的产物
|
|
56
|
+
*/
|
|
57
|
+
filterMatchingArtifacts(artifacts, constraint) {
|
|
58
|
+
return artifacts.filter(artifact => {
|
|
59
|
+
// 类型匹配
|
|
60
|
+
if (artifact.type !== constraint.type) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
// 路径模式匹配(如果指定)
|
|
64
|
+
if (constraint.path_pattern) {
|
|
65
|
+
const regex = this.globToRegex(constraint.path_pattern);
|
|
66
|
+
if (!regex.test(artifact.path)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 验证产物内容
|
|
75
|
+
*/
|
|
76
|
+
validateContent(artifact, constraint, errors) {
|
|
77
|
+
const contentConstraints = constraint.content_constraints;
|
|
78
|
+
if (!contentConstraints)
|
|
79
|
+
return;
|
|
80
|
+
const content = artifact.content_preview || '';
|
|
81
|
+
// 检查最小长度
|
|
82
|
+
if (contentConstraints.min_length && content.length < contentConstraints.min_length) {
|
|
83
|
+
errors.push(`产物内容过短:${artifact.path}(需要 ${contentConstraints.min_length} 字符,实际 ${content.length})`);
|
|
84
|
+
}
|
|
85
|
+
// 检查必需关键词
|
|
86
|
+
if (contentConstraints.required_keywords) {
|
|
87
|
+
const missingKeywords = contentConstraints.required_keywords.filter(keyword => !content.toLowerCase().includes(keyword.toLowerCase()));
|
|
88
|
+
if (missingKeywords.length > 0) {
|
|
89
|
+
errors.push(`产物缺少关键词:${artifact.path}(缺少:${missingKeywords.join(', ')})`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 将 glob 模式转换为正则表达式
|
|
95
|
+
* 支持 * 和 ** 通配符
|
|
96
|
+
*/
|
|
97
|
+
globToRegex(pattern) {
|
|
98
|
+
// 转义特殊字符
|
|
99
|
+
let regex = pattern
|
|
100
|
+
.replace(/[.+?^${}()|[\]\\]/g, '\\$&')
|
|
101
|
+
// ** 匹配任意路径
|
|
102
|
+
.replace(/\*\*/g, '.*')
|
|
103
|
+
// * 匹配单层路径
|
|
104
|
+
.replace(/\*/g, '[^/]*');
|
|
105
|
+
return new RegExp('^' + regex + '$');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=artifact-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-validator.js","sourceRoot":"","sources":["../../src/pipeline/artifact-validator.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;
|
|
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;AAS/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;IAE3I,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAqBjD;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,UAAU,EACjB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC;IA+DzB;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAejC;;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;IA0BrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAU3B"}
|