@winspan/claude-forge 1.40.0 → 1.44.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.
Files changed (91) hide show
  1. package/README.md +4 -4
  2. package/dist/cli/commands/pipeline.js +3 -3
  3. package/dist/cli/commands/pipeline.js.map +1 -1
  4. package/dist/config/defaults.d.ts.map +1 -1
  5. package/dist/config/defaults.js +1 -0
  6. package/dist/config/defaults.js.map +1 -1
  7. package/dist/config/schema.d.ts +4 -0
  8. package/dist/config/schema.d.ts.map +1 -1
  9. package/dist/config/schema.js +3 -0
  10. package/dist/config/schema.js.map +1 -1
  11. package/dist/convention/convention-loader.d.ts.map +1 -1
  12. package/dist/convention/convention-loader.js +34 -0
  13. package/dist/convention/convention-loader.js.map +1 -1
  14. package/dist/convention/convention-manager.d.ts +5 -0
  15. package/dist/convention/convention-manager.d.ts.map +1 -1
  16. package/dist/convention/convention-manager.js +17 -0
  17. package/dist/convention/convention-manager.js.map +1 -1
  18. package/dist/convention/types.d.ts +56 -0
  19. package/dist/convention/types.d.ts.map +1 -1
  20. package/dist/daemon/index.d.ts.map +1 -1
  21. package/dist/daemon/index.js +1 -0
  22. package/dist/daemon/index.js.map +1 -1
  23. package/dist/pipeline/aggregator.d.ts +32 -0
  24. package/dist/pipeline/aggregator.d.ts.map +1 -1
  25. package/dist/pipeline/aggregator.js +9 -0
  26. package/dist/pipeline/aggregator.js.map +1 -1
  27. package/dist/pipeline/dynamic-aggregator.d.ts +59 -0
  28. package/dist/pipeline/dynamic-aggregator.d.ts.map +1 -0
  29. package/dist/pipeline/dynamic-aggregator.js +192 -0
  30. package/dist/pipeline/dynamic-aggregator.js.map +1 -0
  31. package/dist/pipeline/dynamic-node-executor.d.ts +76 -0
  32. package/dist/pipeline/dynamic-node-executor.d.ts.map +1 -0
  33. package/dist/pipeline/dynamic-node-executor.js +268 -0
  34. package/dist/pipeline/dynamic-node-executor.js.map +1 -0
  35. package/dist/pipeline/dynamic-node-types.d.ts +92 -0
  36. package/dist/pipeline/dynamic-node-types.d.ts.map +1 -0
  37. package/dist/pipeline/dynamic-node-types.js +8 -0
  38. package/dist/pipeline/dynamic-node-types.js.map +1 -0
  39. package/dist/pipeline/events.d.ts +67 -2
  40. package/dist/pipeline/events.d.ts.map +1 -1
  41. package/dist/pipeline/events.js +9 -0
  42. package/dist/pipeline/events.js.map +1 -1
  43. package/dist/pipeline/i-node-executor.d.ts +74 -0
  44. package/dist/pipeline/i-node-executor.d.ts.map +1 -0
  45. package/dist/pipeline/i-node-executor.js +8 -0
  46. package/dist/pipeline/i-node-executor.js.map +1 -0
  47. package/dist/pipeline/index.d.ts +28 -0
  48. package/dist/pipeline/index.d.ts.map +1 -1
  49. package/dist/pipeline/index.js +296 -8
  50. package/dist/pipeline/index.js.map +1 -1
  51. package/dist/pipeline/node-type-registry.d.ts +41 -0
  52. package/dist/pipeline/node-type-registry.d.ts.map +1 -0
  53. package/dist/pipeline/node-type-registry.js +178 -0
  54. package/dist/pipeline/node-type-registry.js.map +1 -0
  55. package/dist/pipeline/phase-manager.d.ts +14 -1
  56. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  57. package/dist/pipeline/phase-manager.js +19 -0
  58. package/dist/pipeline/phase-manager.js.map +1 -1
  59. package/dist/pipeline/store.d.ts +20 -1
  60. package/dist/pipeline/store.d.ts.map +1 -1
  61. package/dist/pipeline/store.js +146 -3
  62. package/dist/pipeline/store.js.map +1 -1
  63. package/dist/pipeline/template-registry.d.ts +12 -0
  64. package/dist/pipeline/template-registry.d.ts.map +1 -1
  65. package/dist/pipeline/template-registry.js +28 -0
  66. package/dist/pipeline/template-registry.js.map +1 -1
  67. package/dist/storage/repositories/dynamic-pipeline-repository.d.ts +71 -0
  68. package/dist/storage/repositories/dynamic-pipeline-repository.d.ts.map +1 -0
  69. package/dist/storage/repositories/dynamic-pipeline-repository.js +295 -0
  70. package/dist/storage/repositories/dynamic-pipeline-repository.js.map +1 -0
  71. package/dist/storage/repositories/maintenance-repository.d.ts.map +1 -1
  72. package/dist/storage/repositories/maintenance-repository.js +2 -1
  73. package/dist/storage/repositories/maintenance-repository.js.map +1 -1
  74. package/dist/storage/sqlite.d.ts +2 -0
  75. package/dist/storage/sqlite.d.ts.map +1 -1
  76. package/dist/storage/sqlite.js +59 -1
  77. package/dist/storage/sqlite.js.map +1 -1
  78. package/dist/web/routes/pipelines.d.ts +2 -1
  79. package/dist/web/routes/pipelines.d.ts.map +1 -1
  80. package/dist/web/routes/pipelines.js +221 -51
  81. package/dist/web/routes/pipelines.js.map +1 -1
  82. package/dist/web/server.d.ts +1 -0
  83. package/dist/web/server.d.ts.map +1 -1
  84. package/dist/web/server.js +2 -2
  85. package/dist/web/server.js.map +1 -1
  86. package/dist/web-static/assets/index-Bq1M5lgD.js +73 -0
  87. package/dist/web-static/assets/index-D6CPgkKv.css +1 -0
  88. package/dist/web-static/index.html +2 -2
  89. package/package.json +1 -1
  90. package/dist/web-static/assets/index-D2I0iZub.css +0 -1
  91. package/dist/web-static/assets/index-_YmOoQ_d.js +0 -73
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Pipeline 动态节点类型定义
3
+ *
4
+ * 动态节点系统允许 Convention 定义自定义节点类型,
5
+ * 替代硬编码的 PipelinePhase 枚举,实现 Pipeline 的动态扩展。
6
+ */
7
+ /** 动态节点实例状态 */
8
+ export type DynamicNodeStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped';
9
+ /** 动态节点实例(Pipeline 运行时的节点) */
10
+ export interface DynamicNode {
11
+ /** 节点实例 UUID */
12
+ id: string;
13
+ /** 引用的节点类型 ID(来自 NodeTypeRegistry) */
14
+ nodeTypeId: string;
15
+ /** 节点状态 */
16
+ status: DynamicNodeStatus;
17
+ /** 依赖的节点实例 ID 列表(DAG 边) */
18
+ dependencies: string[];
19
+ /** 运行时绑定的 Skill 名称(覆盖节点类型的 default_skills) */
20
+ boundSkillName?: string;
21
+ /** 节点级别的配置覆盖 */
22
+ configOverride?: {
23
+ /** 覆盖活动阈值 */
24
+ activityThreshold?: number;
25
+ /** 额外的执行指令(追加到节点类型指令之后) */
26
+ extraInstructions?: string;
27
+ };
28
+ /** 节点产出摘要(完成后填充) */
29
+ output?: string;
30
+ /** 节点开始时间 */
31
+ startedAt?: string;
32
+ /** 节点完成时间 */
33
+ completedAt?: string;
34
+ createdAt: string;
35
+ updatedAt: string;
36
+ }
37
+ /** 动态 Pipeline 实例 */
38
+ export interface DynamicPipeline {
39
+ /** Pipeline ID */
40
+ id: string;
41
+ /** 原始需求 */
42
+ requirement: string;
43
+ /** 项目路径 */
44
+ projectPath: string;
45
+ /** 会话 ID */
46
+ sessionId: string;
47
+ /** 节点列表(DAG) */
48
+ nodes: DynamicNode[];
49
+ /** 当前正在执行的节点 ID */
50
+ currentNodeId?: string;
51
+ /** 来源模板 ID */
52
+ templateId?: string;
53
+ /** 来源 Convention ID */
54
+ conventionId?: string;
55
+ /** 复杂度 */
56
+ complexity?: 'simple' | 'moderate' | 'complex';
57
+ /** AI 规划推理 */
58
+ reasoning?: string;
59
+ /** Pipeline 状态 */
60
+ status: 'in_progress' | 'completed' | 'failed';
61
+ createdAt: string;
62
+ updatedAt: string;
63
+ }
64
+ /** 模板中的节点定义(引用节点类型,而非实例) */
65
+ export interface DynamicNodeTemplate {
66
+ /** 节点类型 ID(必须在 NodeTypeRegistry 中已注册) */
67
+ nodeTypeId: string;
68
+ /** 依赖的其他节点的 nodeTypeId(模板内相对引用,实例化时转为 UUID) */
69
+ dependencies?: string[];
70
+ /** 固定绑定的 Skill(可选,覆盖节点类型的 default_skills) */
71
+ boundSkillName?: string;
72
+ /** 节点级别的配置覆盖 */
73
+ configOverride?: DynamicNode['configOverride'];
74
+ }
75
+ /** 动态 Pipeline 模板 */
76
+ export interface DynamicPipelineTemplate {
77
+ id: string;
78
+ name: string;
79
+ description: string;
80
+ source: 'builtin' | 'convention' | 'user';
81
+ conventionId?: string;
82
+ conventionName?: string;
83
+ trigger: {
84
+ intent_patterns: string[];
85
+ complexity: Array<'simple' | 'moderate' | 'complex'>;
86
+ keywords: string[];
87
+ };
88
+ nodes: DynamicNodeTemplate[];
89
+ quality_standards?: string[];
90
+ version?: string;
91
+ }
92
+ //# sourceMappingURL=dynamic-node-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-node-types.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/F,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,2BAA2B;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB;IAChB,cAAc,CAAC,EAAE;QACf,aAAa;QACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,2BAA2B;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAqB;AACrB,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU;IACV,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/C,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB;IAChB,cAAc,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED,qBAAqB;AACrB,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;QACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Pipeline 动态节点类型定义
3
+ *
4
+ * 动态节点系统允许 Convention 定义自定义节点类型,
5
+ * 替代硬编码的 PipelinePhase 枚举,实现 Pipeline 的动态扩展。
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=dynamic-node-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-node-types.js","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -17,7 +17,14 @@ export declare enum PipelineEventType {
17
17
  TOOL_TRACKED = "activity.tool_tracked",
18
18
  ACTIVITY_THRESHOLD_TRIGGERED = "activity.threshold_triggered",
19
19
  EMPTY_PHASE_DETECTED = "phase.empty_detected",
20
- EMPTY_PHASE_ADVANCED = "phase.empty_advanced"
20
+ EMPTY_PHASE_ADVANCED = "phase.empty_advanced",
21
+ DYNAMIC_NODE_CREATED = "dynamic_node.created",
22
+ DYNAMIC_NODE_STARTED = "dynamic_node.started",
23
+ DYNAMIC_NODE_COMPLETED = "dynamic_node.completed",
24
+ DYNAMIC_NODE_FAILED = "dynamic_node.failed",
25
+ DYNAMIC_NODE_ADVANCED = "dynamic_node.advanced",
26
+ DYNAMIC_PIPELINE_CREATED = "dynamic_pipeline.created",
27
+ DYNAMIC_PIPELINE_COMPLETED = "dynamic_pipeline.completed"
21
28
  }
22
29
  /**
23
30
  * 事件基类
@@ -163,8 +170,66 @@ export interface PipelineClosedPayload {
163
170
  completedTasks: number;
164
171
  failedTasks: number;
165
172
  }
173
+ /**
174
+ * 动态 Pipeline 创建事件载荷
175
+ */
176
+ export interface DynamicPipelineCreatedPayload {
177
+ requirement: string;
178
+ projectPath: string;
179
+ sessionId: string;
180
+ nodes: Array<{
181
+ id: string;
182
+ nodeTypeId: string;
183
+ boundSkillName?: string;
184
+ dependencies: string[];
185
+ }>;
186
+ templateId?: string;
187
+ conventionId?: string;
188
+ complexity?: string;
189
+ reasoning?: string;
190
+ }
191
+ /**
192
+ * 动态节点创建事件载荷
193
+ */
194
+ export interface DynamicNodeCreatedPayload {
195
+ nodeId: string;
196
+ nodeTypeId: string;
197
+ nodeTypeName: string;
198
+ conventionId?: string;
199
+ boundSkillName?: string;
200
+ dependencies: string[];
201
+ }
202
+ /**
203
+ * 动态节点推进事件载荷
204
+ */
205
+ export interface DynamicNodeAdvancedPayload {
206
+ fromNodeId: string;
207
+ fromNodeTypeId: string;
208
+ toNodeId?: string;
209
+ toNodeTypeId?: string;
210
+ reason: 'explicit_signal' | 'heuristic' | 'activity_threshold' | 'forced';
211
+ qualityLevel?: 'pass' | 'warn' | 'fail';
212
+ allNodesCompleted?: boolean;
213
+ }
214
+ /**
215
+ * 动态节点完成事件载荷
216
+ */
217
+ export interface DynamicNodeCompletedPayload {
218
+ nodeId: string;
219
+ nodeTypeId: string;
220
+ reason: 'explicit_signal' | 'heuristic' | 'activity_threshold';
221
+ output?: string;
222
+ }
223
+ /**
224
+ * 动态节点失败事件载荷
225
+ */
226
+ export interface DynamicNodeFailedPayload {
227
+ nodeId: string;
228
+ nodeTypeId: string;
229
+ reason: string;
230
+ }
166
231
  /**
167
232
  * 所有事件载荷的联合类型
168
233
  */
169
- export type PipelineEventPayload = PipelineCreatedPayload | PhaseAdvancedPayload | TaskCreatedPayload | TaskCompletedPayload | QualityCheckStartedPayload | QualityCheckPassedPayload | QualityCheckFailedPayload | QualityForcedPassPayload | ToolTrackedPayload | ActivityThresholdTriggeredPayload | EmptyPhaseDetectedPayload | PipelineClosedPayload | Record<string, unknown>;
234
+ export type PipelineEventPayload = PipelineCreatedPayload | PhaseAdvancedPayload | TaskCreatedPayload | TaskCompletedPayload | QualityCheckStartedPayload | QualityCheckPassedPayload | QualityCheckFailedPayload | QualityForcedPassPayload | ToolTrackedPayload | ActivityThresholdTriggeredPayload | EmptyPhaseDetectedPayload | PipelineClosedPayload | DynamicPipelineCreatedPayload | DynamicNodeCreatedPayload | DynamicNodeAdvancedPayload | DynamicNodeCompletedPayload | DynamicNodeFailedPayload | Record<string, unknown>;
170
235
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"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"}
@@ -25,5 +25,14 @@ export var PipelineEventType;
25
25
  // 空阶段自愈
26
26
  PipelineEventType["EMPTY_PHASE_DETECTED"] = "phase.empty_detected";
27
27
  PipelineEventType["EMPTY_PHASE_ADVANCED"] = "phase.empty_advanced";
28
+ // 动态节点生命周期
29
+ PipelineEventType["DYNAMIC_NODE_CREATED"] = "dynamic_node.created";
30
+ PipelineEventType["DYNAMIC_NODE_STARTED"] = "dynamic_node.started";
31
+ PipelineEventType["DYNAMIC_NODE_COMPLETED"] = "dynamic_node.completed";
32
+ PipelineEventType["DYNAMIC_NODE_FAILED"] = "dynamic_node.failed";
33
+ PipelineEventType["DYNAMIC_NODE_ADVANCED"] = "dynamic_node.advanced";
34
+ // 动态 Pipeline 生命周期
35
+ PipelineEventType["DYNAMIC_PIPELINE_CREATED"] = "dynamic_pipeline.created";
36
+ PipelineEventType["DYNAMIC_PIPELINE_COMPLETED"] = "dynamic_pipeline.completed";
28
37
  })(PipelineEventType || (PipelineEventType = {}));
29
38
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAN,IAAY,iBA4BX;AA5BD,WAAY,iBAAiB;IAC3B,gBAAgB;IAChB,0DAAqC,CAAA;IACrC,wDAAmC,CAAA;IAEnC,OAAO;IACP,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IAEjC,OAAO;IACP,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,gDAA2B,CAAA;IAE3B,OAAO;IACP,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAE3C,OAAO;IACP,2DAAsC,CAAA;IACtC,kFAA6D,CAAA;IAE7D,QAAQ;IACR,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;AAC/C,CAAC,EA5BW,iBAAiB,KAAjB,iBAAiB,QA4B5B"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAN,IAAY,iBAuCX;AAvCD,WAAY,iBAAiB;IAC3B,gBAAgB;IAChB,0DAAqC,CAAA;IACrC,wDAAmC,CAAA;IAEnC,OAAO;IACP,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IAEjC,OAAO;IACP,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,gDAA2B,CAAA;IAE3B,OAAO;IACP,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAE3C,OAAO;IACP,2DAAsC,CAAA;IACtC,kFAA6D,CAAA;IAE7D,QAAQ;IACR,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAE7C,WAAW;IACX,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAC7C,sEAAiD,CAAA;IACjD,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAE/C,mBAAmB;IACnB,0EAAqD,CAAA;IACrD,8EAAyD,CAAA;AAC3D,CAAC,EAvCW,iBAAiB,KAAjB,iBAAiB,QAuC5B"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * INodeExecutor — 节点执行器接口
3
+ *
4
+ * PhaseManager 和 DynamicNodeExecutor 的公共接口,
5
+ * 确保两者可以在 PipelineEngine 中互换使用。
6
+ */
7
+ import type { ForgeEvent } from '../types/index.js';
8
+ import type { Pipeline, PipelinePhase } from './types.js';
9
+ import type { DynamicPipeline } from './dynamic-node-types.js';
10
+ import type { QualityGateEngine } from '../autopilot/quality-gate.js';
11
+ import type { PhaseSnapshot } from '../retrospective/types.js';
12
+ /** 节点执行器状态(用于 ESC 恢复) */
13
+ export interface NodeExecutorState {
14
+ toolsSeen: string[];
15
+ eventCount: number;
16
+ fixAttempts: number;
17
+ writeEditCount: number;
18
+ recentTools: string[];
19
+ }
20
+ /** 阶段推进结果 */
21
+ export interface AdvanceResult {
22
+ advanced: boolean;
23
+ newPhase?: PipelinePhase | string;
24
+ qualityBlocked?: boolean;
25
+ qualityIssues?: string[];
26
+ systemMessage?: string;
27
+ gapMessage?: string;
28
+ qualityLevel?: 'pass' | 'warn' | 'fail';
29
+ fixAttempts?: number;
30
+ advanceReason?: 'task_complete' | 'activity_threshold' | 'empty_phase';
31
+ }
32
+ /**
33
+ * 节点执行器接口
34
+ *
35
+ * PhaseManager(Legacy 模式)和 DynamicNodeExecutor(Dynamic 模式)都实现此接口。
36
+ */
37
+ export interface INodeExecutor {
38
+ /**
39
+ * 生成当前节点/阶段的执行指令
40
+ */
41
+ getInstruction(pipeline: Pipeline | DynamicPipeline): string;
42
+ /**
43
+ * 检查并推进节点/阶段
44
+ * @returns 推进结果(是否推进、新节点/阶段、质量门禁状态等)
45
+ */
46
+ checkAndAdvance(pipeline: Pipeline | DynamicPipeline, event: ForgeEvent, qualityGate?: QualityGateEngine): Promise<AdvanceResult>;
47
+ /**
48
+ * 清理 Pipeline 相关的所有缓存(Pipeline 关闭时调用)
49
+ */
50
+ cleanup(pipelineId: string): void;
51
+ /**
52
+ * 重置质量门禁修复计数(新 Pipeline 启动或用户手动重试时调用)
53
+ */
54
+ resetFixAttempts(pipelineId: string): void;
55
+ /**
56
+ * 恢复节点/阶段状态(ESC 会话恢复时调用)
57
+ * @param key 状态键(格式:`${pipelineId}:${phase}` 或 `${pipelineId}:${nodeId}`)
58
+ * @param state 状态数据
59
+ */
60
+ restoreState(key: string, state: NodeExecutorState): void;
61
+ /**
62
+ * 导出节点/阶段状态(用于持久化到 daemon_state)
63
+ * @param key 状态键
64
+ * @returns 状态数据
65
+ */
66
+ exportState(key: string): NodeExecutorState;
67
+ /**
68
+ * 获取会话快照(用于 retrospective 分析)
69
+ * @param pipelineId Pipeline ID
70
+ * @returns 阶段/节点快照列表
71
+ */
72
+ getSessionSnapshot(pipelineId: string): PhaseSnapshot[];
73
+ }
74
+ //# sourceMappingURL=i-node-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/i-node-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,yBAAyB;AACzB,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,eAAe,GAAG,oBAAoB,GAAG,aAAa,CAAC;CACxE;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,MAAM,CAAC;IAE7D;;;OAGG;IACH,eAAe,CACb,QAAQ,EAAE,QAAQ,GAAG,eAAe,EACpC,KAAK,EAAE,UAAU,EACjB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE1D;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAE5C;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;CACzD"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * INodeExecutor — 节点执行器接口
3
+ *
4
+ * PhaseManager 和 DynamicNodeExecutor 的公共接口,
5
+ * 确保两者可以在 PipelineEngine 中互换使用。
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=i-node-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-node-executor.js","sourceRoot":"","sources":["../../src/pipeline/i-node-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -2,6 +2,7 @@ import type { ForgeEvent } from '../types/index.js';
2
2
  import type { AIProvider } from '../ai-provider/types.js';
3
3
  import type { SQLiteStorage } from '../storage/sqlite.js';
4
4
  import { PhaseManager } from './phase-manager.js';
5
+ import { DynamicNodeExecutor } from './dynamic-node-executor.js';
5
6
  import type { Pipeline, PipelineTemplate } from './types.js';
6
7
  import type { QualityGateEngine } from '../autopilot/quality-gate.js';
7
8
  import type { ConventionManager } from '../convention/convention-manager.js';
@@ -13,6 +14,7 @@ export declare class PipelineEngine {
13
14
  private store;
14
15
  private analyzer;
15
16
  private phaseManager;
17
+ private dynamicNodeExecutor;
16
18
  private api;
17
19
  private storage;
18
20
  /** 内存缓存:最多保留 50 个最近访问的项目 pipeline,防止无界增长 */
@@ -47,6 +49,11 @@ export declare class PipelineEngine {
47
49
  advanceReason?: string;
48
50
  }>;
49
51
  private _handlePostToolUse;
52
+ /**
53
+ * 动态流水线 PostToolUse 处理
54
+ * 路由到 DynamicNodeExecutor,处理节点推进和状态更新
55
+ */
56
+ private _handlePostToolUseDynamic;
50
57
  /**
51
58
  * 将当前 Pipeline 状态写入项目根目录 CLAUDE.md(上次工作续接章节)
52
59
  * 每次阶段推进时调用,确保跨会话后 Claude 能快速恢复上下文
@@ -56,6 +63,18 @@ export declare class PipelineEngine {
56
63
  * 启动新 Pipeline
57
64
  */
58
65
  startPipeline(requirement: string, projectPath: string, sessionId: string): Promise<Pipeline>;
66
+ /**
67
+ * 启动动态节点 Pipeline(Dynamic 模式)
68
+ *
69
+ * 使用 DynamicPipelineRepository 创建流水线记录,
70
+ * 通过 analyzer.decompose 分析需求,生成顺序依赖的 DynamicNode 列表,
71
+ * 并以 Bridge Pattern 返回兼容 Pipeline 接口的对象。
72
+ */
73
+ private startDynamicPipeline;
74
+ /**
75
+ * 将 DynamicPipeline 转换为 Pipeline 兼容对象(冷缓存恢复时使用)
76
+ */
77
+ private dynamicPipelineToBridge;
59
78
  /**
60
79
  * 从 PipelineTemplate 启动 Pipeline(Batch 4:模板驱动,跳过 AI 分解)
61
80
  */
@@ -82,6 +101,15 @@ export declare class PipelineEngine {
82
101
  * 获取 PhaseManager 引用(用于注入知识上下文)
83
102
  */
84
103
  getPhaseManager(): PhaseManager;
104
+ /**
105
+ * 获取当前 Pipeline 模式(legacy | dynamic)
106
+ * 读取 ConfigManager 中的 autopilot.pipeline_mode 配置
107
+ */
108
+ getActiveMode(): 'legacy' | 'dynamic';
109
+ /**
110
+ * 获取 DynamicNodeExecutor 引用
111
+ */
112
+ getDynamicNodeExecutor(): DynamicNodeExecutor;
85
113
  /**
86
114
  * 获取活跃 Pipeline 对象
87
115
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"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"}