@winspan/claude-forge 0.7.3 → 0.7.5

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 (130) hide show
  1. package/dist/ai-gateway/index.d.ts +3 -0
  2. package/dist/ai-gateway/index.d.ts.map +1 -1
  3. package/dist/ai-gateway/index.js +41 -11
  4. package/dist/ai-gateway/index.js.map +1 -1
  5. package/dist/ai-gateway/model-selector.d.ts +12 -0
  6. package/dist/ai-gateway/model-selector.d.ts.map +1 -1
  7. package/dist/ai-gateway/model-selector.js +20 -0
  8. package/dist/ai-gateway/model-selector.js.map +1 -1
  9. package/dist/ai-gateway/rate-limiter.d.ts +17 -4
  10. package/dist/ai-gateway/rate-limiter.d.ts.map +1 -1
  11. package/dist/ai-gateway/rate-limiter.js +60 -22
  12. package/dist/ai-gateway/rate-limiter.js.map +1 -1
  13. package/dist/ai-gateway/response-cache.d.ts +8 -3
  14. package/dist/ai-gateway/response-cache.d.ts.map +1 -1
  15. package/dist/ai-gateway/response-cache.js +37 -5
  16. package/dist/ai-gateway/response-cache.js.map +1 -1
  17. package/dist/autopilot/task-completion-detector.d.ts +32 -0
  18. package/dist/autopilot/task-completion-detector.d.ts.map +1 -0
  19. package/dist/autopilot/task-completion-detector.js +103 -0
  20. package/dist/autopilot/task-completion-detector.js.map +1 -0
  21. package/dist/daemon/handlers/context-builder.d.ts +8 -7
  22. package/dist/daemon/handlers/context-builder.d.ts.map +1 -1
  23. package/dist/daemon/handlers/context-builder.js +16 -20
  24. package/dist/daemon/handlers/context-builder.js.map +1 -1
  25. package/dist/daemon/handlers/orchestration-context.d.ts +6 -9
  26. package/dist/daemon/handlers/orchestration-context.d.ts.map +1 -1
  27. package/dist/daemon/handlers/stages/01-failure-signal.d.ts +1 -0
  28. package/dist/daemon/handlers/stages/01-failure-signal.d.ts.map +1 -1
  29. package/dist/daemon/handlers/stages/01-failure-signal.js +2 -2
  30. package/dist/daemon/handlers/stages/01-failure-signal.js.map +1 -1
  31. package/dist/daemon/handlers/stages/02-active-intervention.d.ts +1 -0
  32. package/dist/daemon/handlers/stages/02-active-intervention.d.ts.map +1 -1
  33. package/dist/daemon/handlers/stages/02-active-intervention.js +1 -0
  34. package/dist/daemon/handlers/stages/02-active-intervention.js.map +1 -1
  35. package/dist/daemon/handlers/stages/03-init-prompt.d.ts +1 -0
  36. package/dist/daemon/handlers/stages/03-init-prompt.d.ts.map +1 -1
  37. package/dist/daemon/handlers/stages/03-init-prompt.js +2 -2
  38. package/dist/daemon/handlers/stages/03-init-prompt.js.map +1 -1
  39. package/dist/daemon/handlers/stages/04-skill-suggestions.d.ts +1 -0
  40. package/dist/daemon/handlers/stages/04-skill-suggestions.d.ts.map +1 -1
  41. package/dist/daemon/handlers/stages/04-skill-suggestions.js +2 -1
  42. package/dist/daemon/handlers/stages/04-skill-suggestions.js.map +1 -1
  43. package/dist/daemon/handlers/stages/05-conv-config.d.ts +1 -0
  44. package/dist/daemon/handlers/stages/05-conv-config.d.ts.map +1 -1
  45. package/dist/daemon/handlers/stages/05-conv-config.js +1 -0
  46. package/dist/daemon/handlers/stages/05-conv-config.js.map +1 -1
  47. package/dist/daemon/handlers/stages/06-engine-check.d.ts +1 -0
  48. package/dist/daemon/handlers/stages/06-engine-check.d.ts.map +1 -1
  49. package/dist/daemon/handlers/stages/06-engine-check.js +1 -0
  50. package/dist/daemon/handlers/stages/06-engine-check.js.map +1 -1
  51. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts +1 -0
  52. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts.map +1 -1
  53. package/dist/daemon/handlers/stages/07-pipeline-reply.js +1 -2
  54. package/dist/daemon/handlers/stages/07-pipeline-reply.js.map +1 -1
  55. package/dist/daemon/handlers/stages/08-esc-interrupt.d.ts +1 -0
  56. package/dist/daemon/handlers/stages/08-esc-interrupt.d.ts.map +1 -1
  57. package/dist/daemon/handlers/stages/08-esc-interrupt.js +1 -0
  58. package/dist/daemon/handlers/stages/08-esc-interrupt.js.map +1 -1
  59. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts +1 -0
  60. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts.map +1 -1
  61. package/dist/daemon/handlers/stages/09-pipeline-active.js +1 -0
  62. package/dist/daemon/handlers/stages/09-pipeline-active.js.map +1 -1
  63. package/dist/daemon/handlers/stages/10-cooldown.d.ts +1 -1
  64. package/dist/daemon/handlers/stages/10-cooldown.d.ts.map +1 -1
  65. package/dist/daemon/handlers/stages/10-cooldown.js +1 -39
  66. package/dist/daemon/handlers/stages/10-cooldown.js.map +1 -1
  67. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts +1 -0
  68. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts.map +1 -1
  69. package/dist/daemon/handlers/stages/11-intent-analysis.js +4 -3
  70. package/dist/daemon/handlers/stages/11-intent-analysis.js.map +1 -1
  71. package/dist/daemon/handlers/stages/12-strategy-advice.d.ts +1 -0
  72. package/dist/daemon/handlers/stages/12-strategy-advice.d.ts.map +1 -1
  73. package/dist/daemon/handlers/stages/12-strategy-advice.js +1 -0
  74. package/dist/daemon/handlers/stages/12-strategy-advice.js.map +1 -1
  75. package/dist/daemon/handlers/stages/13-template-route.d.ts +1 -0
  76. package/dist/daemon/handlers/stages/13-template-route.d.ts.map +1 -1
  77. package/dist/daemon/handlers/stages/13-template-route.js +1 -0
  78. package/dist/daemon/handlers/stages/13-template-route.js.map +1 -1
  79. package/dist/daemon/handlers/stages/14-plan-resume.d.ts +1 -0
  80. package/dist/daemon/handlers/stages/14-plan-resume.d.ts.map +1 -1
  81. package/dist/daemon/handlers/stages/14-plan-resume.js +1 -0
  82. package/dist/daemon/handlers/stages/14-plan-resume.js.map +1 -1
  83. package/dist/daemon/handlers/stages/15-plan-enforcement.d.ts +1 -0
  84. package/dist/daemon/handlers/stages/15-plan-enforcement.d.ts.map +1 -1
  85. package/dist/daemon/handlers/stages/15-plan-enforcement.js +1 -0
  86. package/dist/daemon/handlers/stages/15-plan-enforcement.js.map +1 -1
  87. package/dist/daemon/handlers/stages/16-intervention-level.d.ts +1 -0
  88. package/dist/daemon/handlers/stages/16-intervention-level.d.ts.map +1 -1
  89. package/dist/daemon/handlers/stages/16-intervention-level.js +1 -0
  90. package/dist/daemon/handlers/stages/16-intervention-level.js.map +1 -1
  91. package/dist/daemon/handlers/stages/17-simple-task.d.ts +1 -0
  92. package/dist/daemon/handlers/stages/17-simple-task.d.ts.map +1 -1
  93. package/dist/daemon/handlers/stages/17-simple-task.js +2 -1
  94. package/dist/daemon/handlers/stages/17-simple-task.js.map +1 -1
  95. package/dist/daemon/handlers/stages/18-complex-task.d.ts +1 -0
  96. package/dist/daemon/handlers/stages/18-complex-task.d.ts.map +1 -1
  97. package/dist/daemon/handlers/stages/18-complex-task.js +4 -4
  98. package/dist/daemon/handlers/stages/18-complex-task.js.map +1 -1
  99. package/dist/daemon/handlers/stages/19-moderate-task.d.ts +1 -0
  100. package/dist/daemon/handlers/stages/19-moderate-task.d.ts.map +1 -1
  101. package/dist/daemon/handlers/stages/19-moderate-task.js +3 -2
  102. package/dist/daemon/handlers/stages/19-moderate-task.js.map +1 -1
  103. package/dist/daemon/handlers/stages/stage-interface.d.ts +3 -0
  104. package/dist/daemon/handlers/stages/stage-interface.d.ts.map +1 -1
  105. package/dist/daemon/handlers/stages/stage-scheduler.d.ts +27 -0
  106. package/dist/daemon/handlers/stages/stage-scheduler.d.ts.map +1 -0
  107. package/dist/daemon/handlers/stages/stage-scheduler.js +105 -0
  108. package/dist/daemon/handlers/stages/stage-scheduler.js.map +1 -0
  109. package/dist/daemon/handlers/user-prompt-handler.d.ts +3 -12
  110. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  111. package/dist/daemon/handlers/user-prompt-handler.js +73 -141
  112. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  113. package/dist/pipeline/analyzer.d.ts +2 -0
  114. package/dist/pipeline/analyzer.d.ts.map +1 -1
  115. package/dist/pipeline/analyzer.js +16 -2
  116. package/dist/pipeline/analyzer.js.map +1 -1
  117. package/dist/pipeline/index.d.ts +4 -5
  118. package/dist/pipeline/index.d.ts.map +1 -1
  119. package/dist/pipeline/index.js +49 -28
  120. package/dist/pipeline/index.js.map +1 -1
  121. package/dist/pipeline/phase-manager.d.ts +26 -1
  122. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  123. package/dist/pipeline/phase-manager.js +84 -4
  124. package/dist/pipeline/phase-manager.js.map +1 -1
  125. package/dist/pipeline/store.js +3 -3
  126. package/dist/pipeline/store.js.map +1 -1
  127. package/dist/utils/claude-api.d.ts.map +1 -1
  128. package/dist/utils/claude-api.js +4 -2
  129. package/dist/utils/claude-api.js.map +1 -1
  130. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"19-moderate-task.js","sourceRoot":"","sources":["../../../../src/daemon/handlers/stages/19-moderate-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"19-moderate-task.js","sourceRoot":"","sources":["../../../../src/daemon/handlers/stages/19-moderate-task.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,14 @@ export type StageResult = {
17
17
  * Stage 接口
18
18
  * 每个 Stage 负责流水线中的一个独立步骤
19
19
  * - critical=true 时,该 Stage 抛出异常将终止整个流水线(不继续后续 Stage)
20
+ * - dependencies: 依赖的 Stage name 列表,调度器据此拓扑排序并并行执行
20
21
  * - fallback() 提供降级处理,当 execute() 失败时调用
21
22
  */
22
23
  export interface Stage {
23
24
  readonly name: string;
24
25
  readonly critical?: boolean;
26
+ /** 依赖的 Stage name 列表。调度器确保依赖完成后才执行此 Stage */
27
+ readonly dependencies?: string[];
25
28
  execute(ctx: OrchestrationContext): Promise<StageResult>;
26
29
  /** 降级处理(可选),当 execute() 失败时调用 */
27
30
  fallback?(ctx: OrchestrationContext, error: unknown): Promise<StageResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"stage-interface.d.ts","sourceRoot":"","sources":["../../../../src/daemon/handlers/stages/stage-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,eAAe,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,GACxD;IAAE,eAAe,EAAE,KAAK,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,iCAAiC;IACjC,QAAQ,CAAC,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5E"}
1
+ {"version":3,"file":"stage-interface.d.ts","sourceRoot":"","sources":["../../../../src/daemon/handlers/stages/stage-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,eAAe,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,GACxD;IAAE,eAAe,EAAE,KAAK,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,iCAAiC;IACjC,QAAQ,CAAC,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5E"}
@@ -0,0 +1,27 @@
1
+ import type { Stage } from './stage-interface.js';
2
+ /**
3
+ * Stage 调度器 — 基于显式依赖声明进行拓扑排序
4
+ *
5
+ * 算法:Kahn's Algorithm
6
+ * 1. 构建依赖图(name → Stage)
7
+ * 2. 计算每个 Stage 的入度(被多少个其他 Stage 依赖)
8
+ * 3. 入度为 0 的 Stage 可立即执行(第一批)
9
+ * 4. 执行完一批后,更新入度,继续调度
10
+ * 返回:Stage[][] — 每个内层数组代表可并行执行的一批 Stage
11
+ */
12
+ export declare class StageScheduler {
13
+ private readonly stages;
14
+ private readonly stageMap;
15
+ constructor(stages: Stage[]);
16
+ /**
17
+ * 拓扑排序,返回可并行执行的 Stage 批次列表。
18
+ * 每批内的 Stage 无相互依赖,可同时执行。
19
+ * 批次之间按依赖顺序串行。
20
+ */
21
+ schedule(): Stage[][];
22
+ /**
23
+ * 检测循环依赖(DFS),返回环路 Stage name 列表,无环则返回 null。
24
+ */
25
+ detectCycle(): string[] | null;
26
+ }
27
+ //# sourceMappingURL=stage-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-scheduler.d.ts","sourceRoot":"","sources":["../../../../src/daemon/handlers/stages/stage-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;;;;GASG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAExB,MAAM,EAAE,KAAK,EAAE;IAM5C;;;;OAIG;IACH,QAAQ,IAAI,KAAK,EAAE,EAAE;IA4CrB;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE,GAAG,IAAI;CAmC/B"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Stage 调度器 — 基于显式依赖声明进行拓扑排序
3
+ *
4
+ * 算法:Kahn's Algorithm
5
+ * 1. 构建依赖图(name → Stage)
6
+ * 2. 计算每个 Stage 的入度(被多少个其他 Stage 依赖)
7
+ * 3. 入度为 0 的 Stage 可立即执行(第一批)
8
+ * 4. 执行完一批后,更新入度,继续调度
9
+ * 返回:Stage[][] — 每个内层数组代表可并行执行的一批 Stage
10
+ */
11
+ export class StageScheduler {
12
+ stages;
13
+ stageMap = new Map();
14
+ constructor(stages) {
15
+ this.stages = stages;
16
+ for (const stage of stages) {
17
+ this.stageMap.set(stage.name, stage);
18
+ }
19
+ }
20
+ /**
21
+ * 拓扑排序,返回可并行执行的 Stage 批次列表。
22
+ * 每批内的 Stage 无相互依赖,可同时执行。
23
+ * 批次之间按依赖顺序串行。
24
+ */
25
+ schedule() {
26
+ const cycle = this.detectCycle();
27
+ if (cycle) {
28
+ throw new Error(`[StageScheduler] 检测到循环依赖:${cycle.join(' → ')}`);
29
+ }
30
+ // 计算入度
31
+ const inDegree = new Map();
32
+ for (const stage of this.stages) {
33
+ if (!inDegree.has(stage.name))
34
+ inDegree.set(stage.name, 0);
35
+ }
36
+ for (const stage of this.stages) {
37
+ for (const dep of (stage.dependencies ?? [])) {
38
+ if (!this.stageMap.has(dep)) {
39
+ throw new Error(`[StageScheduler] Stage "${stage.name}" 依赖未知 Stage "${dep}"`);
40
+ }
41
+ inDegree.set(stage.name, (inDegree.get(stage.name) ?? 0) + 1);
42
+ }
43
+ }
44
+ // Kahn 算法:逐批提取入度为 0 的节点
45
+ const result = [];
46
+ const completed = new Set();
47
+ while (completed.size < this.stages.length) {
48
+ const batch = [];
49
+ for (const stage of this.stages) {
50
+ if (completed.has(stage.name))
51
+ continue;
52
+ const deps = stage.dependencies ?? [];
53
+ if (deps.every(d => completed.has(d))) {
54
+ batch.push(stage);
55
+ }
56
+ }
57
+ if (batch.length === 0) {
58
+ // 不应出现(循环已在上方检测),保险断路
59
+ throw new Error('[StageScheduler] 调度死锁,请检查依赖配置');
60
+ }
61
+ result.push(batch);
62
+ for (const s of batch)
63
+ completed.add(s.name);
64
+ }
65
+ return result;
66
+ }
67
+ /**
68
+ * 检测循环依赖(DFS),返回环路 Stage name 列表,无环则返回 null。
69
+ */
70
+ detectCycle() {
71
+ const WHITE = 0, GRAY = 1, BLACK = 2;
72
+ const color = new Map();
73
+ const path = [];
74
+ for (const stage of this.stages)
75
+ color.set(stage.name, WHITE);
76
+ const dfs = (name) => {
77
+ color.set(name, GRAY);
78
+ path.push(name);
79
+ const stage = this.stageMap.get(name);
80
+ for (const dep of (stage?.dependencies ?? [])) {
81
+ if (color.get(dep) === GRAY) {
82
+ // 找到环的起点
83
+ const cycleStart = path.indexOf(dep);
84
+ return true; // 调用方从 path 中截取环路
85
+ }
86
+ if (color.get(dep) !== BLACK) {
87
+ if (dfs(dep))
88
+ return true;
89
+ }
90
+ }
91
+ path.pop();
92
+ color.set(name, BLACK);
93
+ return false;
94
+ };
95
+ for (const stage of this.stages) {
96
+ if (color.get(stage.name) === WHITE) {
97
+ if (dfs(stage.name)) {
98
+ return [...path];
99
+ }
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ }
105
+ //# sourceMappingURL=stage-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-scheduler.js","sourceRoot":"","sources":["../../../../src/daemon/handlers/stages/stage-scheduler.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,9 @@ export declare class UserPromptHandler extends BaseHookHandler {
7
7
  private static readonly MAX_STATE_AGE_MS;
8
8
  /**
9
9
  * 上一轮是否向用户展示了 pipeline 建议(按 project_path 隔离)
10
- * 条目在 MAX_STATE_AGE_MS 后自动清理,防止长期运行内存增长。
10
+ * 使用 memoryManager 统一管理,自动 TTL 清理。
11
11
  */
12
12
  private suggestionPending;
13
- private suggestionPendingAt;
14
13
  /**
15
14
  * 意图分析冷却:记录每个项目上次分析的时间戳。
16
15
  * 同一项目 800ms 内的连续 UserPromptSubmit 跳过 AI 分析。
@@ -21,22 +20,14 @@ export declare class UserPromptHandler extends BaseHookHandler {
21
20
  * 相同 keywords / decisions 内容在同一 session 内只注入一次。
22
21
  */
23
22
  private injectionCache;
24
- private injectionCacheAt;
25
23
  /** 已处理过负向重启检测的 session(key=sessionId),避免同 session 重复触发 */
26
24
  private negativeRestartChecked;
27
- private negativeRestartCheckedAt;
25
+ /** 已提示过初始化的 session,避免每条消息都提示(key=sessionId:projectPath) */
26
+ private initPromptedSessions;
28
27
  /** Batch 4:统一编排模板注册表 + 路由器 */
29
28
  private templateRegistry;
30
29
  private templateRouter;
31
- /** 定时清理任务 */
32
- private cleanupTimer;
33
30
  constructor(ctx: HandlerContext);
34
- /** 已提示过初始化的 session,避免每条消息都提示(key=sessionId:projectPath) */
35
- private initPromptedSessions;
36
- /** initPromptedSessions 条目的写入时间,用于 TTL 清理 */
37
- private initPromptedAt;
38
- /** 清理超过 TTL 的状态缓存 */
39
- private cleanupStaleState;
40
31
  handle(event: ForgeEvent): Promise<HookResponse | void>;
41
32
  private createStages;
42
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-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;AA2BpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,oCAAoC;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAE1D;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,mBAAmB,CAA6B;IACxD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAA6B;IACnD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,gBAAgB,CAA6B;IACrD,0DAA0D;IAC1D,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,wBAAwB,CAA6B;IAE7D,8BAA8B;IAC9B,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IAErD,aAAa;IACb,OAAO,CAAC,YAAY,CAAiB;gBAEzB,GAAG,EAAE,cAAc;IAc/B,4DAA4D;IAC5D,OAAO,CAAC,oBAAoB,CAAqB;IACjD,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAA6B;IAEnD,qBAAqB;IACrB,OAAO,CAAC,iBAAiB;IAqDnB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkJ7D,OAAO,CAAC,YAAY;CAkCrB"}
1
+ {"version":3,"file":"user-prompt-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-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;AA8BpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,oCAAoC;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAE1D;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAA4B;IACrD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAA2B;IACjD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAmC;IACzD,0DAA0D;IAC1D,OAAO,CAAC,sBAAsB,CAA4B;IAC1D,4DAA4D;IAC5D,OAAO,CAAC,oBAAoB,CAA4B;IAExD,8BAA8B;IAC9B,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;gBAEzC,GAAG,EAAE,cAAc;IAiBzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAmI7D,OAAO,CAAC,YAAY;CA2BrB"}
@@ -3,6 +3,7 @@ import { logger, relPath } from '../../utils/logger.js';
3
3
  import { TemplateRegistry } from '../../pipeline/template-registry.js';
4
4
  import { TemplateRouter } from '../../pipeline/template-router.js';
5
5
  import { StageTraceLogger } from '../../utils/stage-trace.js';
6
+ import { StageScheduler } from './stages/stage-scheduler.js';
6
7
  import { FailureSignalStage } from './stages/01-failure-signal.js';
7
8
  import { ActiveInterventionStage } from './stages/02-active-intervention.js';
8
9
  import { InitPromptStage } from './stages/03-init-prompt.js';
@@ -22,34 +23,32 @@ import { InterventionLevelStage } from './stages/16-intervention-level.js';
22
23
  import { SimpleTaskStage } from './stages/17-simple-task.js';
23
24
  import { ComplexTaskStage } from './stages/18-complex-task.js';
24
25
  import { ModerateTaskStage } from './stages/19-moderate-task.js';
26
+ import { memoryManager } from '../../utils/memory-manager.js';
25
27
  export class UserPromptHandler extends BaseHookHandler {
26
28
  /** 状态缓存 TTL:1 小时后自动清理,防止长期运行内存增长 */
27
29
  static MAX_STATE_AGE_MS = 60 * 60 * 1000;
28
30
  /**
29
31
  * 上一轮是否向用户展示了 pipeline 建议(按 project_path 隔离)
30
- * 条目在 MAX_STATE_AGE_MS 后自动清理,防止长期运行内存增长。
32
+ * 使用 memoryManager 统一管理,自动 TTL 清理。
31
33
  */
32
- suggestionPending = new Map();
33
- suggestionPendingAt = new Map();
34
+ suggestionPending;
34
35
  /**
35
36
  * 意图分析冷却:记录每个项目上次分析的时间戳。
36
37
  * 同一项目 800ms 内的连续 UserPromptSubmit 跳过 AI 分析。
37
38
  */
38
- lastAnalysisAt = new Map();
39
+ lastAnalysisAt;
39
40
  /**
40
41
  * 方案 A:session 级注入去重缓存(按 projectPath 隔离)。
41
42
  * 相同 keywords / decisions 内容在同一 session 内只注入一次。
42
43
  */
43
- injectionCache = new Map();
44
- injectionCacheAt = new Map();
44
+ injectionCache;
45
45
  /** 已处理过负向重启检测的 session(key=sessionId),避免同 session 重复触发 */
46
- negativeRestartChecked = new Set();
47
- negativeRestartCheckedAt = new Map();
46
+ negativeRestartChecked;
47
+ /** 已提示过初始化的 session,避免每条消息都提示(key=sessionId:projectPath) */
48
+ initPromptedSessions;
48
49
  /** Batch 4:统一编排模板注册表 + 路由器 */
49
50
  templateRegistry = null;
50
51
  templateRouter = null;
51
- /** 定时清理任务 */
52
- cleanupTimer;
53
52
  constructor(ctx) {
54
53
  super(ctx);
55
54
  // 初始化模板路由器(仅在 sharedApi 可用时)
@@ -58,60 +57,12 @@ export class UserPromptHandler extends BaseHookHandler {
58
57
  this.templateRegistry.loadUserTemplates();
59
58
  this.templateRouter = new TemplateRouter(ctx.sharedApi);
60
59
  }
61
- // 10 分钟清理一次过期状态
62
- this.cleanupTimer = setInterval(() => this.cleanupStaleState(), 10 * 60 * 1000);
63
- this.cleanupTimer.unref();
64
- }
65
- /** 已提示过初始化的 session,避免每条消息都提示(key=sessionId:projectPath) */
66
- initPromptedSessions = new Set();
67
- /** initPromptedSessions 条目的写入时间,用于 TTL 清理 */
68
- initPromptedAt = new Map();
69
- /** 清理超过 TTL 的状态缓存 */
70
- cleanupStaleState() {
71
- const now = Date.now();
72
- const cutoff = now - UserPromptHandler.MAX_STATE_AGE_MS;
73
- // 清理 suggestionPending
74
- for (const [key, timestamp] of this.suggestionPendingAt.entries()) {
75
- if (timestamp < cutoff) {
76
- this.suggestionPending.delete(key);
77
- this.suggestionPendingAt.delete(key);
78
- }
79
- }
80
- // 清理 lastAnalysisAt(保留最近 800ms 的即可,但为了统一用 1h TTL)
81
- for (const [key, timestamp] of this.lastAnalysisAt.entries()) {
82
- if (timestamp < cutoff) {
83
- this.lastAnalysisAt.delete(key);
84
- }
85
- }
86
- // 清理 injectionCache
87
- for (const [key, timestamp] of this.injectionCacheAt.entries()) {
88
- if (timestamp < cutoff) {
89
- this.injectionCache.delete(key);
90
- this.injectionCacheAt.delete(key);
91
- }
92
- }
93
- // 清理 negativeRestartChecked
94
- for (const [key, timestamp] of this.negativeRestartCheckedAt.entries()) {
95
- if (timestamp < cutoff) {
96
- this.negativeRestartChecked.delete(key);
97
- this.negativeRestartCheckedAt.delete(key);
98
- }
99
- }
100
- // 清理 initPromptedSessions
101
- for (const [key, timestamp] of this.initPromptedAt.entries()) {
102
- if (timestamp < cutoff) {
103
- this.initPromptedSessions.delete(key);
104
- this.initPromptedAt.delete(key);
105
- }
106
- }
107
- const cleaned = {
108
- suggestionPending: this.suggestionPending.size,
109
- lastAnalysisAt: this.lastAnalysisAt.size,
110
- injectionCache: this.injectionCache.size,
111
- negativeRestartChecked: this.negativeRestartChecked.size,
112
- initPromptedSessions: this.initPromptedSessions.size,
113
- };
114
- logger.debug(`[Forge:内存] 状态清理完成,剩余条目:${JSON.stringify(cleaned)}`);
60
+ // 使用 memoryManager 统一管理所有缓存(自动 TTL 清理)
61
+ this.suggestionPending = memoryManager.register('handler:suggestion', { max: 100, ttl: UserPromptHandler.MAX_STATE_AGE_MS });
62
+ this.lastAnalysisAt = memoryManager.register('handler:analysis', { max: 100, ttl: UserPromptHandler.MAX_STATE_AGE_MS });
63
+ this.injectionCache = memoryManager.register('handler:injection', { max: 100, ttl: UserPromptHandler.MAX_STATE_AGE_MS });
64
+ this.negativeRestartChecked = memoryManager.register('handler:restart', { max: 100, ttl: UserPromptHandler.MAX_STATE_AGE_MS });
65
+ this.initPromptedSessions = memoryManager.register('handler:init', { max: 100, ttl: UserPromptHandler.MAX_STATE_AGE_MS });
115
66
  }
116
67
  async handle(event) {
117
68
  const userPrompt = event.tool_input?.user_prompt || '';
@@ -126,20 +77,17 @@ export class UserPromptHandler extends BaseHookHandler {
126
77
  userPrompt,
127
78
  handlerCtx: this.ctx,
128
79
  suggestionPending: this.suggestionPending,
129
- suggestionPendingAt: this.suggestionPendingAt,
130
80
  lastAnalysisAt: this.lastAnalysisAt,
131
81
  injectionCache: this.injectionCache,
132
- injectionCacheAt: this.injectionCacheAt,
133
82
  negativeRestartChecked: this.negativeRestartChecked,
134
- negativeRestartCheckedAt: this.negativeRestartCheckedAt,
135
83
  initPromptedSessions: this.initPromptedSessions,
136
- initPromptedAt: this.initPromptedAt,
137
84
  templateRegistry: this.templateRegistry,
138
85
  templateRouter: this.templateRouter,
139
86
  stageTracer,
140
87
  };
141
- const { sequential1, parallel, sequential2 } = this.createStages();
142
- const allStages = [...sequential1, ...parallel, ...sequential2];
88
+ const allStages = this.createStages();
89
+ const scheduler = new StageScheduler(allStages);
90
+ const batches = scheduler.schedule();
143
91
  const totalStages = allStages.length;
144
92
  const latencyTracer = this.ctx.latencyTracer;
145
93
  /** 执行单个 Stage,处理追踪、降级和关键 Stage 语义 */
@@ -200,84 +148,68 @@ export class UserPromptHandler extends BaseHookHandler {
200
148
  return { terminated: false };
201
149
  }
202
150
  };
203
- // 阶段一:Stage 1-11 串行执行
204
- for (let i = 0; i < sequential1.length; i++) {
205
- const outcome = await runStage(sequential1[i], i + 1);
206
- if (outcome.terminated) {
207
- logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
208
- return outcome.response ?? undefined;
209
- }
210
- if (outcome.skip) {
211
- logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
212
- break;
213
- }
214
- }
215
- // 阶段二:Stage 12-16 并行执行(互相独立,均依赖 Stage 11 的 ctx.analysis)
216
- const parallelStart = sequential1.length + 1;
217
- const parallelResults = await Promise.allSettled(parallel.map((stage, i) => runStage(stage, parallelStart + i)));
218
- // 按优先级顺序检查终止:13→14→15→12→16(terminate 优先级)
219
- const priorityOrder = [1, 2, 3, 0, 4]; // indices within parallel array
220
- for (const idx of priorityOrder) {
221
- const settled = parallelResults[idx];
222
- if (settled?.status === 'fulfilled' && settled.value.terminated) {
223
- logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
224
- return settled.value.response ?? undefined;
225
- }
226
- }
227
- // 检查 skip(跳过剩余)
228
- for (const settled of parallelResults) {
229
- if (settled.status === 'fulfilled' && !settled.value.terminated && settled.value.skip) {
230
- logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
231
- return undefined;
232
- }
233
- }
234
- // 阶段三:Stage 17-19 串行执行
235
- const seq2Start = sequential1.length + parallel.length + 1;
236
- for (let i = 0; i < sequential2.length; i++) {
237
- const outcome = await runStage(sequential2[i], seq2Start + i);
238
- if (outcome.terminated) {
239
- logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
240
- return outcome.response ?? undefined;
151
+ // 按调度器生成的批次执行:批次内并行,批次间串行
152
+ let globalIdx = 0;
153
+ for (const batch of batches) {
154
+ if (batch.length === 1) {
155
+ // 单 Stage 批次:直接串行执行
156
+ const outcome = await runStage(batch[0], ++globalIdx);
157
+ if (outcome.terminated) {
158
+ logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
159
+ return outcome.response ?? undefined;
160
+ }
161
+ if (outcome.skip) {
162
+ logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
163
+ return undefined;
164
+ }
241
165
  }
242
- if (outcome.skip) {
243
- logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
244
- break;
166
+ else {
167
+ // 多 Stage 批次:并行执行,按 Stage 顺序检查终止优先级
168
+ const batchStart = globalIdx + 1;
169
+ globalIdx += batch.length;
170
+ const results = await Promise.allSettled(batch.map((stage, i) => runStage(stage, batchStart + i)));
171
+ // 按 Stage 在批次中的顺序检查终止(保持确定性)
172
+ for (const settled of results) {
173
+ if (settled.status === 'fulfilled' && settled.value.terminated) {
174
+ logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
175
+ return settled.value.response ?? undefined;
176
+ }
177
+ }
178
+ for (const settled of results) {
179
+ if (settled.status === 'fulfilled' && !settled.value.terminated && settled.value.skip) {
180
+ logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
181
+ return undefined;
182
+ }
183
+ }
245
184
  }
246
185
  }
247
186
  logger.info(`[Forge:编排] 完成 | 项目=${proj} | 所有 Stage 通过,无响应`);
248
187
  logger.info(`[Forge:编排] 执行摘要:\n${stageTracer.getSummary()}`);
249
188
  }
250
189
  createStages() {
251
- return {
252
- // Stage 1-11:串行(有依赖链)
253
- sequential1: [
254
- new FailureSignalStage(),
255
- new ActiveInterventionStage(),
256
- new InitPromptStage(),
257
- new SkillSuggestionsStage(),
258
- new ConversationalConfigStage(this.ctx),
259
- new EngineCheckStage(),
260
- new PipelineReplyStage(),
261
- new EscInterruptStage(),
262
- new PipelineActiveStage(),
263
- new CooldownStage(),
264
- new IntentAnalysisStage(),
265
- ],
266
- // Stage 12-16:并行(均依赖 ctx.analysis,互相独立)
267
- parallel: [
268
- new StrategyAdviceStage(), // 12
269
- new TemplateRouteStage(), // 13
270
- new PlanResumeStage(), // 14
271
- new PlanEnforcementStage(), // 15
272
- new InterventionLevelStage(), // 16
273
- ],
274
- // Stage 17-19:串行(依赖并行组输出)
275
- sequential2: [
276
- new SimpleTaskStage(),
277
- new ComplexTaskStage(),
278
- new ModerateTaskStage(),
279
- ],
280
- };
190
+ return [
191
+ new FailureSignalStage(),
192
+ new ActiveInterventionStage(),
193
+ new InitPromptStage(),
194
+ new SkillSuggestionsStage(),
195
+ new ConversationalConfigStage(this.ctx),
196
+ new EngineCheckStage(),
197
+ new PipelineReplyStage(),
198
+ new EscInterruptStage(),
199
+ new PipelineActiveStage(),
200
+ new CooldownStage(),
201
+ new IntentAnalysisStage(),
202
+ // Stage 12-16:依赖 ctx.analysis,互相独立(调度器自动并行)
203
+ new StrategyAdviceStage(),
204
+ new TemplateRouteStage(),
205
+ new PlanResumeStage(),
206
+ new PlanEnforcementStage(),
207
+ new InterventionLevelStage(),
208
+ // Stage 17-19:依赖并行组输出(调度器自动串行)
209
+ new SimpleTaskStage(),
210
+ new ComplexTaskStage(),
211
+ new ModerateTaskStage(),
212
+ ];
281
213
  }
282
214
  }
283
215
  //# sourceMappingURL=user-prompt-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-prompt-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-handler.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export declare class PipelineAnalyzer {
20
20
  * 构建 AI 智能编排 prompt
21
21
  */
22
22
  private buildIntelligentPrompt;
23
+ /** 将 AI 可能返回的中文/别名 phase 名称规范化为英文 PipelinePhase */
24
+ private normalizePhase;
23
25
  /**
24
26
  * 解析 AI 智能编排响应
25
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU9D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAoB;gBAExB,GAAG,EAAE,UAAU;IAK3B;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QAC9C,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;QACtE,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA6BF;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkF9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuDhC;;OAEG;IACH,OAAO,CAAC,YAAY;CAuDrB"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU9D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAoB;gBAExB,GAAG,EAAE,UAAU;IAK3B;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QAC9C,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;QACtE,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA6BF;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkF9B,mDAAmD;IACnD,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyDhC;;OAEG;IACH,OAAO,CAAC,YAAY;CAuDrB"}
@@ -118,6 +118,18 @@ ${profile.testFramework ? `测试框架: ${profile.testFramework}` : ''}
118
118
  }
119
119
  \`\`\``;
120
120
  }
121
+ /** 将 AI 可能返回的中文/别名 phase 名称规范化为英文 PipelinePhase */
122
+ normalizePhase(raw) {
123
+ const map = {
124
+ '需求分析': 'analyze', '分析': 'analyze', 'analysis': 'analyze',
125
+ '设计': 'design', '架构设计': 'design', '方案设计': 'design',
126
+ '性能分析': 'profile', '性能优化': 'profile', 'profiling': 'profile',
127
+ '编码': 'code', '实现': 'code', '开发': 'code', 'coding': 'code', 'implementation': 'code',
128
+ '测试': 'test', '验证': 'test', 'testing': 'test',
129
+ '审查': 'review', '代码审查': 'review', '复审': 'review', 'code review': 'review',
130
+ };
131
+ return map[raw] ?? raw;
132
+ }
121
133
  /**
122
134
  * 解析 AI 智能编排响应
123
135
  */
@@ -139,7 +151,9 @@ ${profile.testFramework ? `测试框架: ${profile.testFramework}` : ''}
139
151
  }
140
152
  // 验证 phases 有效性
141
153
  const validPhases = ['analyze', 'design', 'profile', 'code', 'test', 'review'];
142
- const phases = raw.phases.filter((p) => validPhases.includes(p));
154
+ const phases = raw.phases
155
+ .map((p) => this.normalizePhase(p))
156
+ .filter((p) => validPhases.includes(p));
143
157
  if (phases.length === 0) {
144
158
  logger.warn('[Pipeline] AI 输出的 phases 无效');
145
159
  return null;
@@ -152,7 +166,7 @@ ${profile.testFramework ? `测试框架: ${profile.testFramework}` : ''}
152
166
  reasoning: raw.reasoning || '',
153
167
  tasks: raw.tasks.map((t) => ({
154
168
  title: t.title,
155
- phase: t.phase,
169
+ phase: this.normalizePhase(t.phase),
156
170
  status: 'pending',
157
171
  description: t.description,
158
172
  dependencies: t.dependencies || [],