@winspan/claude-forge 2.6.4 → 2.7.2

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 (97) hide show
  1. package/README.md +2 -2
  2. package/dist/backup/index.d.ts +2 -2
  3. package/dist/backup/index.d.ts.map +1 -1
  4. package/dist/backup/index.js +5 -7
  5. package/dist/backup/index.js.map +1 -1
  6. package/dist/claudemd/writer.d.ts +1 -0
  7. package/dist/claudemd/writer.d.ts.map +1 -1
  8. package/dist/claudemd/writer.js +12 -0
  9. package/dist/claudemd/writer.js.map +1 -1
  10. package/dist/convention/convention-manager.d.ts +2 -4
  11. package/dist/convention/convention-manager.d.ts.map +1 -1
  12. package/dist/convention/convention-manager.js +6 -25
  13. package/dist/convention/convention-manager.js.map +1 -1
  14. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  15. package/dist/daemon/handlers/post-tool-use-handler.js +2 -1
  16. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  17. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  18. package/dist/daemon/handlers/pre-tool-use-handler.js +18 -48
  19. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  20. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts.map +1 -1
  21. package/dist/daemon/handlers/stages/09-pipeline-active.js +7 -0
  22. package/dist/daemon/handlers/stages/09-pipeline-active.js.map +1 -1
  23. package/dist/daemon/handlers/stages/13-template-route.js +2 -2
  24. package/dist/daemon/handlers/stages/13-template-route.js.map +1 -1
  25. package/dist/daemon/handlers/stages/18-complex-task.d.ts.map +1 -1
  26. package/dist/daemon/handlers/stages/18-complex-task.js +11 -3
  27. package/dist/daemon/handlers/stages/18-complex-task.js.map +1 -1
  28. package/dist/pipeline/artifact-enforcement.d.ts +74 -0
  29. package/dist/pipeline/artifact-enforcement.d.ts.map +1 -0
  30. package/dist/pipeline/artifact-enforcement.js +187 -0
  31. package/dist/pipeline/artifact-enforcement.js.map +1 -0
  32. package/dist/pipeline/artifact-generator.d.ts +5 -1
  33. package/dist/pipeline/artifact-generator.d.ts.map +1 -1
  34. package/dist/pipeline/artifact-generator.js +5 -1
  35. package/dist/pipeline/artifact-generator.js.map +1 -1
  36. package/dist/pipeline/artifact-rules.d.ts +39 -0
  37. package/dist/pipeline/artifact-rules.d.ts.map +1 -0
  38. package/dist/pipeline/artifact-rules.js +104 -0
  39. package/dist/pipeline/artifact-rules.js.map +1 -0
  40. package/dist/pipeline/artifact-validator.d.ts.map +1 -1
  41. package/dist/pipeline/artifact-validator.js +9 -0
  42. package/dist/pipeline/artifact-validator.js.map +1 -1
  43. package/dist/pipeline/completion-detector.d.ts.map +1 -1
  44. package/dist/pipeline/completion-detector.js +10 -0
  45. package/dist/pipeline/completion-detector.js.map +1 -1
  46. package/dist/pipeline/completion-gate.d.ts +56 -0
  47. package/dist/pipeline/completion-gate.d.ts.map +1 -0
  48. package/dist/pipeline/completion-gate.js +165 -0
  49. package/dist/pipeline/completion-gate.js.map +1 -0
  50. package/dist/pipeline/dynamic-node-executor.d.ts +7 -6
  51. package/dist/pipeline/dynamic-node-executor.d.ts.map +1 -1
  52. package/dist/pipeline/dynamic-node-executor.js +116 -185
  53. package/dist/pipeline/dynamic-node-executor.js.map +1 -1
  54. package/dist/pipeline/dynamic-node-types.d.ts +2 -0
  55. package/dist/pipeline/dynamic-node-types.d.ts.map +1 -1
  56. package/dist/pipeline/events.d.ts +3 -0
  57. package/dist/pipeline/events.d.ts.map +1 -1
  58. package/dist/pipeline/events.js +4 -0
  59. package/dist/pipeline/events.js.map +1 -1
  60. package/dist/pipeline/execution-plan-builder.d.ts +20 -0
  61. package/dist/pipeline/execution-plan-builder.d.ts.map +1 -0
  62. package/dist/pipeline/execution-plan-builder.js +100 -0
  63. package/dist/pipeline/execution-plan-builder.js.map +1 -0
  64. package/dist/pipeline/execution-plan.d.ts +64 -0
  65. package/dist/pipeline/execution-plan.d.ts.map +1 -0
  66. package/dist/pipeline/execution-plan.js +57 -0
  67. package/dist/pipeline/execution-plan.js.map +1 -0
  68. package/dist/pipeline/i-node-executor.d.ts +2 -0
  69. package/dist/pipeline/i-node-executor.d.ts.map +1 -1
  70. package/dist/pipeline/index.d.ts +25 -8
  71. package/dist/pipeline/index.d.ts.map +1 -1
  72. package/dist/pipeline/index.js +137 -149
  73. package/dist/pipeline/index.js.map +1 -1
  74. package/dist/pipeline/optimized-aggregator.d.ts.map +1 -1
  75. package/dist/pipeline/optimized-aggregator.js +1 -1
  76. package/dist/pipeline/optimized-aggregator.js.map +1 -1
  77. package/dist/pipeline/phase-manager.d.ts +13 -0
  78. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  79. package/dist/pipeline/phase-manager.js +178 -18
  80. package/dist/pipeline/phase-manager.js.map +1 -1
  81. package/dist/pipeline/types.d.ts +1 -0
  82. package/dist/pipeline/types.d.ts.map +1 -1
  83. package/dist/pipeline/types.js.map +1 -1
  84. package/dist/storage/repositories/dynamic-pipeline-repository.d.ts.map +1 -1
  85. package/dist/storage/repositories/dynamic-pipeline-repository.js +11 -23
  86. package/dist/storage/repositories/dynamic-pipeline-repository.js.map +1 -1
  87. package/dist/utils/forge-resume-block.d.ts +2 -1
  88. package/dist/utils/forge-resume-block.d.ts.map +1 -1
  89. package/dist/utils/forge-resume-block.js +16 -2
  90. package/dist/utils/forge-resume-block.js.map +1 -1
  91. package/dist/utils/mutex-lock.d.ts +1 -0
  92. package/dist/utils/mutex-lock.d.ts.map +1 -1
  93. package/dist/utils/mutex-lock.js +13 -0
  94. package/dist/utils/mutex-lock.js.map +1 -1
  95. package/dist/web-static/assets/{index-C3zW2cbT.js → index-C9F94O8p.js} +1 -1
  96. package/dist/web-static/index.html +1 -1
  97. package/package.json +1 -1
@@ -0,0 +1,104 @@
1
+ /**
2
+ * 产物规则定义:每个阶段必须产出的产物类型
3
+ *
4
+ * 这是三层防护机制的配置基础,驱动:
5
+ * 1. 阶段指令引导(第一层)
6
+ * 2. 实时产物追踪(第二层)
7
+ * 3. 阶段推进门禁(第三层)
8
+ */
9
+ export const ARTIFACT_RULES = {
10
+ analyze: {
11
+ label: '需求分析',
12
+ required: ['document'],
13
+ extensions: ['.md'],
14
+ pathKeywords: ['需求', '分析', 'analysis', 'requirement', 'spec', 'docs/'],
15
+ exemptComplexity: ['simple'],
16
+ },
17
+ design: {
18
+ label: '架构设计',
19
+ required: ['document'],
20
+ extensions: ['.md', '.drawio', '.mermaid'],
21
+ pathKeywords: ['设计', '架构', 'design', 'architecture', 'spec', 'docs/'],
22
+ exemptTaskType: ['bugfix'],
23
+ },
24
+ profile: {
25
+ label: '性能分析',
26
+ required: ['document'],
27
+ extensions: ['.md'],
28
+ pathKeywords: ['性能', 'profile', 'benchmark', 'performance', 'docs/'],
29
+ exemptComplexity: ['simple'],
30
+ exemptTaskType: ['bugfix'],
31
+ },
32
+ code: {
33
+ label: '编码实现',
34
+ required: ['code'],
35
+ extensions: [
36
+ '.ts', '.tsx', '.js', '.jsx', '.mjs',
37
+ '.py', '.go', '.java', '.rs', '.rb',
38
+ '.vue', '.svelte',
39
+ '.css', '.scss',
40
+ '.sh', '.sql',
41
+ ],
42
+ pathKeywords: ['src/', 'lib/', 'app/', 'pkg/'],
43
+ // 编码阶段不允许豁免
44
+ },
45
+ test: {
46
+ label: '测试验证',
47
+ required: ['test'],
48
+ extensions: ['.test.ts', '.spec.ts', '.test.js', '.spec.py', '_test.go'],
49
+ pathKeywords: ['test', 'spec', '__tests__'],
50
+ mustRunBash: true,
51
+ // 测试阶段不允许豁免
52
+ },
53
+ review: {
54
+ label: '代码审查',
55
+ required: ['document'],
56
+ extensions: ['.md'],
57
+ pathKeywords: ['审查', '审核', 'review', 'docs/'],
58
+ exemptComplexity: ['simple'],
59
+ },
60
+ done: {
61
+ label: '完成',
62
+ required: [],
63
+ extensions: [],
64
+ pathKeywords: [],
65
+ },
66
+ };
67
+ /**
68
+ * 判断当前阶段是否可以豁免产物检查
69
+ */
70
+ export function isArtifactExempted(phase, taskType, complexity) {
71
+ const rule = ARTIFACT_RULES[phase];
72
+ if (rule.required.length === 0)
73
+ return true;
74
+ if (rule.exemptComplexity?.includes(complexity)) {
75
+ return true;
76
+ }
77
+ if (rule.exemptTaskType?.includes(taskType || '')) {
78
+ return true;
79
+ }
80
+ return false;
81
+ }
82
+ /**
83
+ * 根据文件路径推断产物类型
84
+ */
85
+ export function inferArtifactType(filePath) {
86
+ if (filePath.match(/\.(test|spec)\./))
87
+ return 'test';
88
+ if (filePath.endsWith('.md'))
89
+ return 'document';
90
+ if (filePath.match(/\.(json|yaml|yml|toml|env)$/))
91
+ return 'config';
92
+ if (filePath.match(/\.(ts|tsx|js|jsx|py|go|java|rs|rb|vue|svelte|css|scss|sh|sql)$/))
93
+ return 'code';
94
+ return 'other';
95
+ }
96
+ /**
97
+ * 检查产物是否匹配阶段规则的路径关键词
98
+ */
99
+ export function matchesPhaseKeywords(filePath, phase) {
100
+ const rule = ARTIFACT_RULES[phase];
101
+ const lower = filePath.toLowerCase();
102
+ return rule.pathKeywords.some(kw => lower.includes(kw.toLowerCase()));
103
+ }
104
+ //# sourceMappingURL=artifact-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-rules.js","sourceRoot":"","sources":["../../src/pipeline/artifact-rules.ts"],"names":[],"mappings":"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"}
@@ -1 +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;;;;OAIG;IACH,QAAQ,CACN,SAAS,EAAE,QAAQ,EAAE,EACrB,WAAW,CAAC,EAAE,kBAAkB,EAAE,EAClC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,EAC9C,MAAM,UAAQ,GACb,UAAU,CAAC,YAAY,CAAC;IAsE3B;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAoBrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAepB"}
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;;;;OAIG;IACH,QAAQ,CACN,SAAS,EAAE,QAAQ,EAAE,EACrB,WAAW,CAAC,EAAE,kBAAkB,EAAE,EAClC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,EAC9C,MAAM,UAAQ,GACb,UAAU,CAAC,YAAY,CAAC;IAsE3B;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAoBrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAwBpB"}
@@ -136,10 +136,19 @@ export class ArtifactValidator {
136
136
  globToRegex(pattern) {
137
137
  // 先用占位符保护 **,避免被后续 * 替换误伤
138
138
  const DOUBLE_STAR = '\x00DOUBLESTAR\x00';
139
+ const BRACE_GROUP = '\x00BRACEGROUP\x00';
140
+ const braceGroups = [];
139
141
  let regex = pattern
142
+ .replace(/\{([^}]+)\}/g, (_match, inner) => {
143
+ const options = inner.split(',').map((part) => part.trim()).filter(Boolean);
144
+ const group = `(?:${options.map(option => option.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|')})`;
145
+ braceGroups.push(group);
146
+ return `${BRACE_GROUP}${braceGroups.length - 1}\x00`;
147
+ })
140
148
  .replace(/\*\*/g, DOUBLE_STAR)
141
149
  // 转义正则特殊字符(不含已替换的占位符)
142
150
  .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
151
+ .replace(new RegExp(`${BRACE_GROUP}(\\d+)\\x00`, 'g'), (_match, index) => braceGroups[Number(index)] ?? '')
143
152
  // * 匹配单层路径(不含 /)
144
153
  .replace(/\*/g, '[^/]*')
145
154
  // 还原 ** 为匹配任意路径(含零层,即可直接匹配文件名)
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-validator.js","sourceRoot":"","sources":["../../src/pipeline/artifact-validator.ts"],"names":[],"mappings":"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"}
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":"completion-detector.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAsBhE;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO;IAgB9D;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO;IAgClE;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAkBpD;;;OAGG;IACH,uBAAuB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO;IAgB5D;;;OAGG;IACH,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO;IAezE;;;OAGG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO;IAcpF;;;OAGG;IACH,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO;IAc5F;;OAEG;IACH,OAAO,CAAC,SAAS;CAWlB"}
1
+ {"version":3,"file":"completion-detector.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAkChE;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO;IAgB9D;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO;IAgClE;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAkBpD;;;OAGG;IACH,uBAAuB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO;IAgB5D;;;OAGG;IACH,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO;IAezE;;;OAGG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO;IAcpF;;;OAGG;IACH,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO;IAc5F;;OAEG;IACH,OAAO,CAAC,SAAS;CAWlB"}
@@ -20,6 +20,16 @@ export class CompletionDetector {
20
20
  logger.info(`[CompletionDetector] 🔔 检测到 user_prompt 中的完成信号:${signal}`);
21
21
  return true;
22
22
  }
23
+ const toolInputSignal = JSON.stringify(event.tool_input || {}).toLowerCase();
24
+ if (toolInputSignal.includes(signalLower)) {
25
+ logger.info(`[CompletionDetector] 🔔 检测到 tool_input 中的完成信号:${signal}`);
26
+ return true;
27
+ }
28
+ const structuredSignal = String(event.tool_input?.forge_signal ?? '').toLowerCase();
29
+ if (structuredSignal === signalLower) {
30
+ logger.info(`[CompletionDetector] 🔔 检测到结构化完成信号:${signal}`);
31
+ return true;
32
+ }
23
33
  // 检查 Bash 输出(AI 通过 echo 发出信号时)
24
34
  if (event.tool_name === 'Bash') {
25
35
  const toolOutput = JSON.stringify(event.tool_output || '').toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"completion-detector.js","sourceRoot":"","sources":["../../src/pipeline/completion-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion-detector.js","sourceRoot":"","sources":["../../src/pipeline/completion-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { ForgeEvent } from '../types/index.js';
2
+ import type { DynamicNode, DynamicPipeline, NodeStepExecution } from './dynamic-node-types.js';
3
+ import type { ConventionNodeType, Artifact } from '../convention/types.js';
4
+ import type { AdvanceResult } from './i-node-executor.js';
5
+ import type { StepDefinition } from './step-types.js';
6
+ import type { StepGateKeeper } from './step-gate-keeper.js';
7
+ import type { SemanticValidator } from './semantic-validator.js';
8
+ import type { StepValidator } from './step-validator.js';
9
+ interface TraditionalCompletionContext {
10
+ pipeline: DynamicPipeline;
11
+ currentNode: DynamicNode;
12
+ nodeType: ConventionNodeType;
13
+ event: ForgeEvent;
14
+ artifacts: Artifact[];
15
+ eventCount: number;
16
+ recentEvents: ForgeEvent[];
17
+ lastActivityAt?: number;
18
+ lastArtifactAt?: number;
19
+ consecutiveNonWriteCount: number;
20
+ retryCount: number;
21
+ maxArtifactRetries: number;
22
+ formatPathRequirement: (pathPattern?: string) => string;
23
+ }
24
+ interface StepCompletionContext {
25
+ pipeline: DynamicPipeline;
26
+ currentNode: DynamicNode;
27
+ currentStep: NodeStepExecution;
28
+ stepDef: StepDefinition;
29
+ event: ForgeEvent;
30
+ stepValidator: StepValidator;
31
+ }
32
+ interface PreToolGateContext {
33
+ event: ForgeEvent;
34
+ isInArtifactRetry: boolean;
35
+ artifactStage: 'uninitialized' | 'bootstrapped' | 'enriching' | 'ready';
36
+ stepGateKeeper?: StepGateKeeper;
37
+ currentStep?: NodeStepExecution;
38
+ stepDef?: StepDefinition;
39
+ }
40
+ export declare class CompletionGate {
41
+ private semanticValidator;
42
+ private readonly artifactValidator;
43
+ private readonly completionEngine;
44
+ private readonly detector;
45
+ constructor(semanticValidator?: SemanticValidator | null);
46
+ evaluateTraditionalNode(context: TraditionalCompletionContext): Promise<AdvanceResult>;
47
+ evaluateStep(context: StepCompletionContext): Promise<AdvanceResult>;
48
+ evaluatePreToolGate(context: PreToolGateContext): {
49
+ allowed: boolean;
50
+ reason?: string;
51
+ } | null;
52
+ private detectStepCompletion;
53
+ private getNextNodeId;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=completion-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-gate.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,UAAU,4BAA4B;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,eAAe,GAAG,cAAc,GAAG,WAAW,GAAG,OAAO,CAAC;IACxE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,cAAc;IAKb,OAAO,CAAC,iBAAiB;IAJrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAEjC,iBAAiB,GAAE,iBAAiB,GAAG,IAAW;IAEhE,uBAAuB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,aAAa,CAAC;IAyGtF,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkC1E,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA4B9F,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,aAAa;CAkBtB"}
@@ -0,0 +1,165 @@
1
+ import { ArtifactValidator } from './artifact-validator.js';
2
+ import { CompletionDetector } from './completion-detector.js';
3
+ import { CompletionEngine } from './completion-engine.js';
4
+ import { logger } from '../utils/logger.js';
5
+ export class CompletionGate {
6
+ semanticValidator;
7
+ artifactValidator = new ArtifactValidator();
8
+ completionEngine = new CompletionEngine();
9
+ detector = new CompletionDetector();
10
+ constructor(semanticValidator = null) {
11
+ this.semanticValidator = semanticValidator;
12
+ }
13
+ async evaluateTraditionalNode(context) {
14
+ const hasExplicitSignal = context.nodeType.completion.explicit_signal
15
+ ? this.detector.detectExplicitSignal(context.event, context.nodeType.completion.explicit_signal)
16
+ : false;
17
+ const decision = this.completionEngine.decide(context.currentNode, context.nodeType, context.event, context.recentEvents, context.artifacts, context.eventCount, context.lastActivityAt, context.lastArtifactAt, context.pipeline.complexity);
18
+ if (!decision.shouldAdvance && !hasExplicitSignal) {
19
+ return { advanced: false };
20
+ }
21
+ if (context.consecutiveNonWriteCount >= 20) {
22
+ const requiredArtifacts = context.nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
23
+ const artifactList = requiredArtifacts.map(c => {
24
+ const pathHint = context.formatPathRequirement(c.path_pattern);
25
+ return `- ${c.description}${pathHint}`;
26
+ }).join('\n');
27
+ return {
28
+ advanced: false,
29
+ blocking: true,
30
+ systemMessage: `[Pipeline 已阻断] 检测到连续 ${context.consecutiveNonWriteCount} 次非写入工具调用,流程已熔断。\n\n必需产物:\n${artifactList}\n\n请立即使用 Write 工具创建产物文件并写入实质内容,然后执行 echo "FORGE_NODE_DONE"。`,
31
+ };
32
+ }
33
+ const validation = this.artifactValidator.validate(context.artifacts, context.nodeType.expected_artifacts, context.pipeline.complexity);
34
+ if (!validation.passed && context.pipeline.complexity !== 'simple') {
35
+ const missing = validation.missing_required?.join('、') || validation.errors?.join(';') || '必需产物';
36
+ const requiredArtifacts = context.nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
37
+ const artifactList = requiredArtifacts.map(c => {
38
+ const pathHint = context.formatPathRequirement(c.path_pattern);
39
+ return `- ${c.description}(${c.type} 文件${pathHint})`;
40
+ }).join('\n');
41
+ if (context.retryCount < context.maxArtifactRetries) {
42
+ return {
43
+ advanced: false,
44
+ systemMessage: `[Forge:产物强制要求] 当前节点「${context.nodeType.name}」尚未完成,缺少必需产物:${missing}。\n\n这是第 ${context.retryCount + 1}/${context.maxArtifactRetries} 次重试。\n\n你必须立即使用 Write 工具生成以下文件后才能继续:\n${artifactList || missing}\n\n生成完成后执行 echo "FORGE_NODE_DONE"。`,
45
+ };
46
+ }
47
+ return {
48
+ advanced: false,
49
+ blocking: true,
50
+ systemMessage: `[Pipeline 已阻断] 产物验证失败 ${context.maxArtifactRetries} 次。\n\n缺少必需产物:\n${missing}\n\n必需产物清单:\n${artifactList}\n\nPipeline 已被阻断,无法继续执行。请检查:\n1. 产物路径是否正确?\n2. 产物内容是否符合要求?\n3. 是否需要调整产物约束配置?\n\n如需继续,请手动修复问题后重启 Pipeline。`,
51
+ };
52
+ }
53
+ if (this.semanticValidator && validation.passed) {
54
+ const documentArtifacts = context.artifacts.filter(artifact => artifact.type === 'document');
55
+ if (documentArtifacts.length > 0) {
56
+ const semanticConfig = context.nodeType.semantic_validation;
57
+ if (semanticConfig?.enabled !== false) {
58
+ try {
59
+ const artifact = documentArtifacts[0];
60
+ const minCoverage = semanticConfig?.min_coverage;
61
+ const semanticResult = await this.semanticValidator.validate(artifact, context.recentEvents, context.nodeType.name, context.event.project_path, minCoverage);
62
+ if (!semanticResult.consistent) {
63
+ const missingList = semanticResult.missing_points.map(point => `- ${point}`).join('\n');
64
+ const threshold = minCoverage ?? 70;
65
+ return {
66
+ advanced: false,
67
+ systemMessage: `[Forge:语义一致性] 当前节点「${context.nodeType.name}」产物文档内容不完整。\n\n覆盖率:${semanticResult.coverage}%(需要 >= ${threshold}%)\n\n缺失的关键要点:\n${missingList}\n\n请使用 Edit 工具补充以上缺失内容到文档中,确保文档完整覆盖本轮调研的关键发现。`,
68
+ };
69
+ }
70
+ }
71
+ catch (err) {
72
+ logger.warn(`[CompletionGate] 语义校验失败,跳过:${err}`);
73
+ }
74
+ }
75
+ }
76
+ }
77
+ const nextNodeId = this.getNextNodeId(context.pipeline, context.currentNode.id);
78
+ return {
79
+ advanced: true,
80
+ newPhase: nextNodeId,
81
+ advanceReason: 'task_complete',
82
+ nodeOutput: JSON.stringify({
83
+ artifacts: context.artifacts,
84
+ validation,
85
+ summary: `完成节点:${context.nodeType.name},产出 ${context.artifacts.length} 个产物(${decision.method},置信度 ${decision.confidence}%)`,
86
+ }),
87
+ };
88
+ }
89
+ async evaluateStep(context) {
90
+ if (!this.detectStepCompletion(context.stepDef, context.event)) {
91
+ return { advanced: false };
92
+ }
93
+ const validationResult = await context.stepValidator.validate(context.stepDef, context.currentStep, context.pipeline.projectPath, context.pipeline.complexity);
94
+ if (!validationResult.passed) {
95
+ const maxRetries = context.stepDef.max_retries ?? 3;
96
+ if (context.currentStep.attempts < maxRetries) {
97
+ return {
98
+ advanced: false,
99
+ systemMessage: `[Forge:Step验证] 当前步骤「${context.stepDef.name}」未通过验证。\n\n${validationResult.summary}\n\n请根据失败信息继续修复后再次发送完成信号。`,
100
+ };
101
+ }
102
+ return {
103
+ advanced: false,
104
+ blocking: true,
105
+ systemMessage: `[Pipeline 已阻断] 当前步骤「${context.stepDef.name}」连续 ${maxRetries} 次验证失败。\n\n${validationResult.summary}\n\n请检查步骤定义或手动介入。`,
106
+ };
107
+ }
108
+ return {
109
+ advanced: true,
110
+ advanceReason: 'task_complete',
111
+ };
112
+ }
113
+ evaluatePreToolGate(context) {
114
+ if (context.isInArtifactRetry && context.artifactStage === 'enriching') {
115
+ const tool = context.event.tool_name;
116
+ const isWriteOrEdit = tool === 'Write' || tool === 'Edit';
117
+ const isDoneSignalBash = tool === 'Bash'
118
+ && this.detector.detectExplicitSignal({
119
+ ...context.event,
120
+ user_prompt: context.event.user_prompt ?? '',
121
+ }, 'FORGE_NODE_DONE');
122
+ if (!isWriteOrEdit && !isDoneSignalBash) {
123
+ return {
124
+ allowed: false,
125
+ reason: `[Forge 产物门禁] 当前节点处于产物修复阶段(enriching)。只允许使用 Write/Edit 修复产物;Bash 仅允许发送完成信号(FORGE_NODE_DONE)。请立即编辑已生成的文档产物文件。`,
126
+ };
127
+ }
128
+ }
129
+ if (context.stepGateKeeper && context.currentStep && context.stepDef) {
130
+ return context.stepGateKeeper.checkTool(context.event, context.currentStep, context.stepDef);
131
+ }
132
+ return null;
133
+ }
134
+ detectStepCompletion(stepDef, event) {
135
+ const signal = stepDef.done_definition.signal || 'FORGE_STEP_DONE';
136
+ if (this.detector.detectExplicitSignal(event, signal)) {
137
+ return true;
138
+ }
139
+ const requiredArtifacts = stepDef.done_definition.required_artifacts ?? [];
140
+ if (requiredArtifacts.length > 0) {
141
+ return this.detector.detectFilePatterns(event, requiredArtifacts);
142
+ }
143
+ return false;
144
+ }
145
+ getNextNodeId(pipeline, completingNodeId) {
146
+ const currentIndex = pipeline.nodes.findIndex(node => node.id === completingNodeId);
147
+ if (currentIndex === -1 || currentIndex === pipeline.nodes.length - 1) {
148
+ return undefined;
149
+ }
150
+ for (let index = currentIndex + 1; index < pipeline.nodes.length; index++) {
151
+ const node = pipeline.nodes[index];
152
+ if (node.status !== 'pending')
153
+ continue;
154
+ const dependenciesMet = (node.dependencies ?? []).every(depId => {
155
+ if (depId === completingNodeId)
156
+ return true;
157
+ return pipeline.nodes.find(candidate => candidate.id === depId)?.status === 'completed';
158
+ });
159
+ if (dependenciesMet)
160
+ return node.id;
161
+ }
162
+ return undefined;
163
+ }
164
+ }
165
+ //# sourceMappingURL=completion-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-gate.js","sourceRoot":"","sources":["../../src/pipeline/completion-gate.ts"],"names":[],"mappings":"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"}
@@ -41,9 +41,8 @@ export declare class DynamicNodeExecutor implements INodeExecutor {
41
41
  /** 连续非写入工具调用超过此阈值时触发强制门禁 */
42
42
  private static readonly CONSECUTIVE_NON_WRITE_BLOCK;
43
43
  private artifactCollector;
44
- private artifactValidator;
45
- private completionEngine;
46
44
  private semanticValidator;
45
+ private completionGate;
47
46
  private stepOrchestrator;
48
47
  private stepPromptBuilder;
49
48
  private stepValidator;
@@ -55,6 +54,10 @@ export declare class DynamicNodeExecutor implements INodeExecutor {
55
54
  getStepOrchestrator(): StepOrchestrator;
56
55
  /** 获取 StepGateKeeper(供 PipelineEngine 使用) */
57
56
  getStepGateKeeper(): import('./step-gate-keeper.js').StepGateKeeper;
57
+ evaluatePreToolGate(pipeline: DynamicPipeline, event: ForgeEvent): {
58
+ allowed: boolean;
59
+ reason?: string;
60
+ } | null;
58
61
  /**
59
62
  * 获取当前节点的指令
60
63
  */
@@ -75,14 +78,12 @@ export declare class DynamicNodeExecutor implements INodeExecutor {
75
78
  * 传统模式的推进逻辑(原有逻辑)
76
79
  */
77
80
  private checkAndAdvanceTraditional;
78
- /**
79
- * 检测 Step 是否完成(检查完成信号)
80
- */
81
- private detectStepCompletion;
82
81
  /**
83
82
  * 收集 Step 的输出产物
84
83
  */
85
84
  private collectStepOutputs;
85
+ private findMatchingArtifactPath;
86
+ private createGlobMatcher;
86
87
  /**
87
88
  * 清理节点执行器缓存
88
89
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-executor.ts"],"names":[],"mappings":"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"}