@winspan/claude-forge 0.7.2 → 0.7.4

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 (194) hide show
  1. package/dist/ai-gateway/index.d.ts.map +1 -1
  2. package/dist/ai-gateway/index.js +30 -9
  3. package/dist/ai-gateway/index.js.map +1 -1
  4. package/dist/ai-gateway/model-selector.d.ts +12 -0
  5. package/dist/ai-gateway/model-selector.d.ts.map +1 -1
  6. package/dist/ai-gateway/model-selector.js +20 -0
  7. package/dist/ai-gateway/model-selector.js.map +1 -1
  8. package/dist/autopilot/intent-engine.d.ts +0 -4
  9. package/dist/autopilot/intent-engine.d.ts.map +1 -1
  10. package/dist/autopilot/intent-engine.js +32 -102
  11. package/dist/autopilot/intent-engine.js.map +1 -1
  12. package/dist/autopilot/issue-tracker.d.ts +48 -0
  13. package/dist/autopilot/issue-tracker.d.ts.map +1 -0
  14. package/dist/autopilot/issue-tracker.js +94 -0
  15. package/dist/autopilot/issue-tracker.js.map +1 -0
  16. package/dist/autopilot/phase-gap-detector.d.ts +25 -0
  17. package/dist/autopilot/phase-gap-detector.d.ts.map +1 -0
  18. package/dist/autopilot/phase-gap-detector.js +80 -0
  19. package/dist/autopilot/phase-gap-detector.js.map +1 -0
  20. package/dist/autopilot/quality-gate.d.ts +22 -0
  21. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  22. package/dist/autopilot/quality-gate.js +108 -25
  23. package/dist/autopilot/quality-gate.js.map +1 -1
  24. package/dist/autopilot/task-completion-detector.d.ts +32 -0
  25. package/dist/autopilot/task-completion-detector.d.ts.map +1 -0
  26. package/dist/autopilot/task-completion-detector.js +103 -0
  27. package/dist/autopilot/task-completion-detector.js.map +1 -0
  28. package/dist/cli/commands/pattern.d.ts.map +1 -1
  29. package/dist/cli/commands/pattern.js +44 -38
  30. package/dist/cli/commands/pattern.js.map +1 -1
  31. package/dist/daemon/engine-registry.js +1 -1
  32. package/dist/daemon/handlers/context-builder.d.ts +8 -7
  33. package/dist/daemon/handlers/context-builder.d.ts.map +1 -1
  34. package/dist/daemon/handlers/context-builder.js +16 -20
  35. package/dist/daemon/handlers/context-builder.js.map +1 -1
  36. package/dist/daemon/handlers/orchestration-context.d.ts +6 -9
  37. package/dist/daemon/handlers/orchestration-context.d.ts.map +1 -1
  38. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  39. package/dist/daemon/handlers/post-tool-use-handler.js +12 -0
  40. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  41. package/dist/daemon/handlers/stages/01-failure-signal.d.ts +1 -0
  42. package/dist/daemon/handlers/stages/01-failure-signal.d.ts.map +1 -1
  43. package/dist/daemon/handlers/stages/01-failure-signal.js +2 -2
  44. package/dist/daemon/handlers/stages/01-failure-signal.js.map +1 -1
  45. package/dist/daemon/handlers/stages/02-active-intervention.d.ts +1 -0
  46. package/dist/daemon/handlers/stages/02-active-intervention.d.ts.map +1 -1
  47. package/dist/daemon/handlers/stages/02-active-intervention.js +1 -0
  48. package/dist/daemon/handlers/stages/02-active-intervention.js.map +1 -1
  49. package/dist/daemon/handlers/stages/03-init-prompt.d.ts +1 -0
  50. package/dist/daemon/handlers/stages/03-init-prompt.d.ts.map +1 -1
  51. package/dist/daemon/handlers/stages/03-init-prompt.js +2 -2
  52. package/dist/daemon/handlers/stages/03-init-prompt.js.map +1 -1
  53. package/dist/daemon/handlers/stages/04-skill-suggestions.d.ts +1 -0
  54. package/dist/daemon/handlers/stages/04-skill-suggestions.d.ts.map +1 -1
  55. package/dist/daemon/handlers/stages/04-skill-suggestions.js +2 -1
  56. package/dist/daemon/handlers/stages/04-skill-suggestions.js.map +1 -1
  57. package/dist/daemon/handlers/stages/05-conv-config.d.ts +1 -0
  58. package/dist/daemon/handlers/stages/05-conv-config.d.ts.map +1 -1
  59. package/dist/daemon/handlers/stages/05-conv-config.js +1 -0
  60. package/dist/daemon/handlers/stages/05-conv-config.js.map +1 -1
  61. package/dist/daemon/handlers/stages/06-engine-check.d.ts +1 -0
  62. package/dist/daemon/handlers/stages/06-engine-check.d.ts.map +1 -1
  63. package/dist/daemon/handlers/stages/06-engine-check.js +1 -0
  64. package/dist/daemon/handlers/stages/06-engine-check.js.map +1 -1
  65. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts +1 -0
  66. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts.map +1 -1
  67. package/dist/daemon/handlers/stages/07-pipeline-reply.js +1 -2
  68. package/dist/daemon/handlers/stages/07-pipeline-reply.js.map +1 -1
  69. package/dist/daemon/handlers/stages/08-esc-interrupt.d.ts +1 -0
  70. package/dist/daemon/handlers/stages/08-esc-interrupt.d.ts.map +1 -1
  71. package/dist/daemon/handlers/stages/08-esc-interrupt.js +1 -0
  72. package/dist/daemon/handlers/stages/08-esc-interrupt.js.map +1 -1
  73. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts +1 -0
  74. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts.map +1 -1
  75. package/dist/daemon/handlers/stages/09-pipeline-active.js +1 -0
  76. package/dist/daemon/handlers/stages/09-pipeline-active.js.map +1 -1
  77. package/dist/daemon/handlers/stages/10-cooldown.d.ts +1 -1
  78. package/dist/daemon/handlers/stages/10-cooldown.d.ts.map +1 -1
  79. package/dist/daemon/handlers/stages/10-cooldown.js +1 -39
  80. package/dist/daemon/handlers/stages/10-cooldown.js.map +1 -1
  81. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts +1 -0
  82. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts.map +1 -1
  83. package/dist/daemon/handlers/stages/11-intent-analysis.js +4 -3
  84. package/dist/daemon/handlers/stages/11-intent-analysis.js.map +1 -1
  85. package/dist/daemon/handlers/stages/12-strategy-advice.d.ts +1 -0
  86. package/dist/daemon/handlers/stages/12-strategy-advice.d.ts.map +1 -1
  87. package/dist/daemon/handlers/stages/12-strategy-advice.js +1 -0
  88. package/dist/daemon/handlers/stages/12-strategy-advice.js.map +1 -1
  89. package/dist/daemon/handlers/stages/13-template-route.d.ts +1 -0
  90. package/dist/daemon/handlers/stages/13-template-route.d.ts.map +1 -1
  91. package/dist/daemon/handlers/stages/13-template-route.js +1 -0
  92. package/dist/daemon/handlers/stages/13-template-route.js.map +1 -1
  93. package/dist/daemon/handlers/stages/14-plan-resume.d.ts +1 -0
  94. package/dist/daemon/handlers/stages/14-plan-resume.d.ts.map +1 -1
  95. package/dist/daemon/handlers/stages/14-plan-resume.js +1 -0
  96. package/dist/daemon/handlers/stages/14-plan-resume.js.map +1 -1
  97. package/dist/daemon/handlers/stages/15-plan-enforcement.d.ts +1 -0
  98. package/dist/daemon/handlers/stages/15-plan-enforcement.d.ts.map +1 -1
  99. package/dist/daemon/handlers/stages/15-plan-enforcement.js +1 -0
  100. package/dist/daemon/handlers/stages/15-plan-enforcement.js.map +1 -1
  101. package/dist/daemon/handlers/stages/16-intervention-level.d.ts +1 -0
  102. package/dist/daemon/handlers/stages/16-intervention-level.d.ts.map +1 -1
  103. package/dist/daemon/handlers/stages/16-intervention-level.js +1 -0
  104. package/dist/daemon/handlers/stages/16-intervention-level.js.map +1 -1
  105. package/dist/daemon/handlers/stages/17-simple-task.d.ts +1 -0
  106. package/dist/daemon/handlers/stages/17-simple-task.d.ts.map +1 -1
  107. package/dist/daemon/handlers/stages/17-simple-task.js +2 -1
  108. package/dist/daemon/handlers/stages/17-simple-task.js.map +1 -1
  109. package/dist/daemon/handlers/stages/18-complex-task.d.ts +1 -0
  110. package/dist/daemon/handlers/stages/18-complex-task.d.ts.map +1 -1
  111. package/dist/daemon/handlers/stages/18-complex-task.js +4 -4
  112. package/dist/daemon/handlers/stages/18-complex-task.js.map +1 -1
  113. package/dist/daemon/handlers/stages/19-moderate-task.d.ts +1 -0
  114. package/dist/daemon/handlers/stages/19-moderate-task.d.ts.map +1 -1
  115. package/dist/daemon/handlers/stages/19-moderate-task.js +3 -2
  116. package/dist/daemon/handlers/stages/19-moderate-task.js.map +1 -1
  117. package/dist/daemon/handlers/stages/stage-interface.d.ts +3 -0
  118. package/dist/daemon/handlers/stages/stage-interface.d.ts.map +1 -1
  119. package/dist/daemon/handlers/stages/stage-scheduler.d.ts +27 -0
  120. package/dist/daemon/handlers/stages/stage-scheduler.d.ts.map +1 -0
  121. package/dist/daemon/handlers/stages/stage-scheduler.js +105 -0
  122. package/dist/daemon/handlers/stages/stage-scheduler.js.map +1 -0
  123. package/dist/daemon/handlers/user-prompt-handler.d.ts +3 -12
  124. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  125. package/dist/daemon/handlers/user-prompt-handler.js +73 -94
  126. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  127. package/dist/pipeline/index.d.ts +1 -5
  128. package/dist/pipeline/index.d.ts.map +1 -1
  129. package/dist/pipeline/index.js +29 -25
  130. package/dist/pipeline/index.js.map +1 -1
  131. package/dist/{pattern-engine/types.d.ts → pipeline/pattern-types.d.ts} +1 -1
  132. package/dist/pipeline/pattern-types.d.ts.map +1 -0
  133. package/dist/{pattern-engine/types.js → pipeline/pattern-types.js} +1 -1
  134. package/dist/pipeline/pattern-types.js.map +1 -0
  135. package/dist/pipeline/phase-manager.d.ts +6 -1
  136. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  137. package/dist/pipeline/phase-manager.js +68 -38
  138. package/dist/pipeline/phase-manager.js.map +1 -1
  139. package/dist/pipeline/report-generator.d.ts +20 -0
  140. package/dist/pipeline/report-generator.d.ts.map +1 -0
  141. package/dist/pipeline/report-generator.js +123 -0
  142. package/dist/pipeline/report-generator.js.map +1 -0
  143. package/dist/prompts/intent-analysis.md +62 -0
  144. package/dist/prompts/registry.d.ts +17 -0
  145. package/dist/prompts/registry.d.ts.map +1 -0
  146. package/dist/prompts/registry.js +40 -0
  147. package/dist/prompts/registry.js.map +1 -0
  148. package/dist/skill-registry/evolver/index.d.ts +1 -1
  149. package/dist/skill-registry/evolver/index.d.ts.map +1 -1
  150. package/dist/{pattern-engine → skill-registry}/pattern-evolver.d.ts +6 -2
  151. package/dist/skill-registry/pattern-evolver.d.ts.map +1 -0
  152. package/dist/{pattern-engine → skill-registry}/pattern-evolver.js +30 -6
  153. package/dist/skill-registry/pattern-evolver.js.map +1 -0
  154. package/dist/storage/repositories/distill-repository.d.ts +2 -1
  155. package/dist/storage/repositories/distill-repository.d.ts.map +1 -1
  156. package/dist/storage/repositories/distill-repository.js +6 -0
  157. package/dist/storage/repositories/distill-repository.js.map +1 -1
  158. package/dist/storage/sqlite.d.ts +96 -157
  159. package/dist/storage/sqlite.d.ts.map +1 -1
  160. package/dist/storage/sqlite.js +123 -896
  161. package/dist/storage/sqlite.js.map +1 -1
  162. package/package.json +2 -2
  163. package/dist/daemon/engine-registry/init-pattern-engine.d.ts +0 -9
  164. package/dist/daemon/engine-registry/init-pattern-engine.d.ts.map +0 -1
  165. package/dist/daemon/engine-registry/init-pattern-engine.js +0 -22
  166. package/dist/daemon/engine-registry/init-pattern-engine.js.map +0 -1
  167. package/dist/pattern-engine/convention-pattern-generator.d.ts +0 -14
  168. package/dist/pattern-engine/convention-pattern-generator.d.ts.map +0 -1
  169. package/dist/pattern-engine/convention-pattern-generator.js +0 -120
  170. package/dist/pattern-engine/convention-pattern-generator.js.map +0 -1
  171. package/dist/pattern-engine/execution-tracker.d.ts +0 -45
  172. package/dist/pattern-engine/execution-tracker.d.ts.map +0 -1
  173. package/dist/pattern-engine/execution-tracker.js +0 -136
  174. package/dist/pattern-engine/execution-tracker.js.map +0 -1
  175. package/dist/pattern-engine/index.d.ts +0 -75
  176. package/dist/pattern-engine/index.d.ts.map +0 -1
  177. package/dist/pattern-engine/index.js +0 -247
  178. package/dist/pattern-engine/index.js.map +0 -1
  179. package/dist/pattern-engine/pattern-evolver.d.ts.map +0 -1
  180. package/dist/pattern-engine/pattern-evolver.js.map +0 -1
  181. package/dist/pattern-engine/pattern-executor.d.ts +0 -43
  182. package/dist/pattern-engine/pattern-executor.d.ts.map +0 -1
  183. package/dist/pattern-engine/pattern-executor.js +0 -228
  184. package/dist/pattern-engine/pattern-executor.js.map +0 -1
  185. package/dist/pattern-engine/pattern-loader.d.ts +0 -14
  186. package/dist/pattern-engine/pattern-loader.d.ts.map +0 -1
  187. package/dist/pattern-engine/pattern-loader.js +0 -111
  188. package/dist/pattern-engine/pattern-loader.js.map +0 -1
  189. package/dist/pattern-engine/pattern-router.d.ts +0 -31
  190. package/dist/pattern-engine/pattern-router.d.ts.map +0 -1
  191. package/dist/pattern-engine/pattern-router.js +0 -160
  192. package/dist/pattern-engine/pattern-router.js.map +0 -1
  193. package/dist/pattern-engine/types.d.ts.map +0 -1
  194. package/dist/pattern-engine/types.js.map +0 -1
@@ -1,247 +0,0 @@
1
- import { PatternLoader } from './pattern-loader.js';
2
- import { PatternRouter } from './pattern-router.js';
3
- import { PatternExecutor } from './pattern-executor.js';
4
- import { ExecutionTracer } from './execution-tracker.js';
5
- import { generatePatternsFromConventions } from './convention-pattern-generator.js';
6
- import { ThompsonSampler } from '../strategy/bandit.js';
7
- import { logger } from '../utils/logger.js';
8
- import { memoryManager } from '../utils/memory-manager.js';
9
- import fs from 'fs';
10
- import path from 'path';
11
- import crypto from 'crypto';
12
- /**
13
- * PatternEngine 门面类:统一入口,供 daemon handler 调用。
14
- *
15
- * @deprecated Batch 4:PatternEngine 已被 TemplateRegistry + TemplateRouter 替代。
16
- * 现有 Pattern YAML 文件会被 TemplateRegistry 自动加载并转换为 PipelineTemplate。
17
- * 此类将在 3 个版本后移除(给用户升级时间)。
18
- *
19
- * Pattern 来源:
20
- * 1. 全局用户自定义:~/.claude-forge/patterns/*.yaml(用户手动创建/进化器产出)
21
- * 2. 项目级持久化:.claude-forge/patterns/*.yaml(从 Convention 首次生成后保存,可被进化器优化)
22
- *
23
- * 路由优先级:项目级 Pattern 优先于全局 Pattern(更贴合项目规范)
24
- */
25
- export class PatternEngine {
26
- loader;
27
- router;
28
- executor;
29
- tracer;
30
- storage;
31
- bandit = new ThompsonSampler();
32
- /** 全局 Pattern(用户自定义 + yaml 文件) */
33
- globalPatterns = [];
34
- /** 项目级 Pattern 内存缓存(LRU,max=50,TTL=1h) */
35
- projectPatternsCache = memoryManager.register('pattern:projectCache', { max: 50, ttl: 3600_000 });
36
- constructor(api, storage) {
37
- this.loader = new PatternLoader();
38
- this.router = new PatternRouter(api);
39
- this.executor = new PatternExecutor();
40
- this.tracer = new ExecutionTracer(storage, this.executor);
41
- this.storage = storage;
42
- }
43
- /** 初始化:加载全局 Pattern 文件 */
44
- initialize() {
45
- this.globalPatterns = this.loader.loadAll();
46
- logger.info(`工作流引擎已初始化 | 全局模板=${this.globalPatterns.length} 个`);
47
- }
48
- /** 重新加载全局 Pattern 文件(热更新) */
49
- reload() {
50
- this.globalPatterns = this.loader.loadAll();
51
- this.projectPatternsCache.clear();
52
- logger.info(`工作流引擎已重新加载 | 全局模板=${this.globalPatterns.length} 个`);
53
- }
54
- /**
55
- * 获取项目可用的所有 Pattern(全局 + 项目级持久化)。
56
- *
57
- * 策略:
58
- * 1. 内存缓存命中 → 直接返回
59
- * 2. 项目 .claude-forge/patterns/ 目录存在且指纹匹配 → 从文件加载
60
- * 3. 否则从 Convention 生成 → 保存到项目文件 → 写入内存缓存
61
- */
62
- getPatternsForProject(projectPath, conventions) {
63
- // 1. 内存缓存
64
- const cached = this.projectPatternsCache.get(projectPath);
65
- if (cached) {
66
- return [...cached, ...this.globalPatterns];
67
- }
68
- const projectPatternsDir = path.join(projectPath, '.claude-forge', 'patterns');
69
- const fingerprintPath = path.join(projectPatternsDir, '.fingerprint.json');
70
- // 2. 尝试从项目文件加载
71
- if (fs.existsSync(projectPatternsDir) && fs.existsSync(fingerprintPath)) {
72
- const currentHash = conventions ? this.computeConventionHash(conventions) : '';
73
- try {
74
- const fp = JSON.parse(fs.readFileSync(fingerprintPath, 'utf-8'));
75
- // 指纹匹配 → 直接从文件加载
76
- if (fp.hash === currentHash || !conventions) {
77
- const projectLoader = new PatternLoader(projectPatternsDir);
78
- const projectPatterns = projectLoader.loadAll();
79
- if (projectPatterns.length > 0) {
80
- this.projectPatternsCache.set(projectPath, projectPatterns);
81
- logger.info(`已加载项目工作流模板 ${projectPatterns.length} 个(从文件读取)`);
82
- return [...projectPatterns, ...this.globalPatterns];
83
- }
84
- }
85
- else {
86
- logger.info('项目规范已变更,重新生成工作流模板');
87
- }
88
- }
89
- catch {
90
- // 指纹文件损坏,重新生成
91
- }
92
- }
93
- // 3. 从 Convention 生成并持久化
94
- const projectPatterns = conventions ? generatePatternsFromConventions(conventions) : [];
95
- if (projectPatterns.length > 0) {
96
- this.saveProjectPatterns(projectPath, projectPatterns, conventions ?? []);
97
- logger.info(`首次生成项目工作流模板:${projectPatterns.map(p => p.name).join('、')}(已保存到 .claude-forge/patterns/)`);
98
- }
99
- this.projectPatternsCache.set(projectPath, projectPatterns);
100
- return [...projectPatterns, ...this.globalPatterns];
101
- }
102
- /**
103
- * 路由并启动执行计划。
104
- * 先从项目绑定的 Convention 生成项目级 Pattern,合并全局 Pattern 后路由。
105
- */
106
- async routeAndStart(userInput, sessionId, projectPath, complexity, conventions) {
107
- const patterns = this.getPatternsForProject(projectPath, conventions);
108
- if (patterns.length === 0) {
109
- logger.info('无可用工作流模板(项目无绑定规范且无全局模板)');
110
- return null;
111
- }
112
- // simple 复杂度快速过滤:检查是否有任何 Pattern 支持 simple
113
- if (complexity === 'simple') {
114
- const hasSimplePattern = patterns.some(p => !p.trigger.complexity ||
115
- p.trigger.complexity.length === 0 ||
116
- p.trigger.complexity.includes('simple'));
117
- if (!hasSimplePattern) {
118
- logger.info('简单任务跳过工作流路由(所有模板仅支持中等/复杂任务)');
119
- return null;
120
- }
121
- }
122
- // 将合并后的 Pattern 列表设置到路由器
123
- this.router.setPatterns(patterns);
124
- const result = await this.router.route(userInput, complexity);
125
- if (!result.pattern)
126
- return null;
127
- // 多臂老虎机:当关键词匹配有 2+ 个候选时,用 Thompson Sampling 选择
128
- let pattern = result.pattern;
129
- if (result.method === 'keyword') {
130
- const candidates = this.router.routeAllCandidates(userInput, complexity);
131
- if (candidates.length >= 2) {
132
- const arms = candidates.map(c => {
133
- const rows = this.storage.getTopPatterns(c.pattern.id, 1);
134
- const row = rows[0];
135
- return {
136
- id: c.pattern.id,
137
- adoptionCount: Number(row?.['adoption_count'] ?? 0),
138
- effectivenessScore: Number(row?.['effectiveness_score'] ?? 0.5),
139
- lastUsed: row?.['last_used'] ? String(row['last_used']) : null, // v5 新增:时间衰减
140
- };
141
- });
142
- const selectedId = this.bandit.sample(arms);
143
- const selected = candidates.find(c => c.pattern.id === selectedId);
144
- if (selected?.pattern) {
145
- pattern = selected.pattern;
146
- logger.info(`[Forge:多臂老虎机] Thompson Sampling 选择:${pattern.id}(候选数=${candidates.length})`);
147
- // 记录采用次数
148
- try {
149
- this.storage.incrementPatternAdoption(pattern.id);
150
- }
151
- catch { /* 静默 */ }
152
- }
153
- }
154
- }
155
- logger.info(`工作流路由命中:${pattern.id}(匹配方式=${result.method}, 置信度=${result.confidence.toFixed(2)})`);
156
- const plan = this.executor.startPlan(pattern, sessionId, projectPath);
157
- // 记录第一个阶段的开始时间
158
- if (plan.currentPhaseId) {
159
- this.tracer.recordPhaseStart(plan.id, plan.currentPhaseId, pattern.id, sessionId, projectPath);
160
- }
161
- return this.executor.execute(pattern, plan, userInput);
162
- }
163
- /** 从当前活跃计划生成 additionalContext 字符串(供 UserPromptHandler 注入) */
164
- buildAdditionalContext(patternCtx, patternId, convention) {
165
- // 在全局和所有缓存的项目 Pattern 中查找
166
- const allPatterns = this.getAllKnownPatterns();
167
- const pattern = allPatterns.find((p) => p.id === patternId) ?? null;
168
- if (!pattern)
169
- return null;
170
- return this.executor.buildAdditionalContext(patternCtx, pattern, convention);
171
- }
172
- /**
173
- * 处理 PostToolUse 事件:检测 completion_signal → 推进状态机 → 记录轨迹。
174
- * 返回下一阶段 ID(null 表示未推进或 Pattern 已完成)。
175
- */
176
- async onPostToolUse(event) {
177
- const plan = this.executor.getActivePlan(event.project_path);
178
- if (!plan)
179
- return null;
180
- const allPatterns = this.getAllKnownPatterns();
181
- const pattern = allPatterns.find((p) => p.id === plan.patternId) ?? null;
182
- if (!pattern)
183
- return null;
184
- const nextPhaseId = await this.tracer.onPostToolUse(event, pattern);
185
- // 若推进到下一阶段,记录其开始时间
186
- if (nextPhaseId) {
187
- this.tracer.recordPhaseStart(plan.id, nextPhaseId, pattern.id, plan.sessionId, event.project_path);
188
- }
189
- return nextPhaseId;
190
- }
191
- /** 获取当前活跃计划(供外部判断是否有活跃 Pattern) */
192
- getActivePlan(projectPath) {
193
- return this.executor.getActivePlan(projectPath);
194
- }
195
- /** 返回所有已加载的全局 Pattern(只读) */
196
- listPatterns() {
197
- return this.globalPatterns;
198
- }
199
- /** 按 ID 查找 Pattern(全局 + 缓存的项目级) */
200
- getPattern(id) {
201
- return this.getAllKnownPatterns().find((p) => p.id === id) ?? null;
202
- }
203
- /** 获取 PatternLoader(供 PatternEvolver 调用 savePattern) */
204
- getLoader() {
205
- return this.loader;
206
- }
207
- /** 获取 ExecutionTracer(供外部更新满意度) */
208
- getTracer() {
209
- return this.tracer;
210
- }
211
- /** 合并所有已知 Pattern(全局 + 所有项目缓存) */
212
- getAllKnownPatterns() {
213
- const all = [...this.globalPatterns];
214
- for (const patterns of this.projectPatternsCache.values()) {
215
- all.push(...patterns);
216
- }
217
- return all;
218
- }
219
- /** 将项目 Pattern 持久化到 .claude-forge/patterns/ 目录 */
220
- saveProjectPatterns(projectPath, patterns, conventions) {
221
- const projectPatternsDir = path.join(projectPath, '.claude-forge', 'patterns');
222
- if (!fs.existsSync(projectPatternsDir)) {
223
- fs.mkdirSync(projectPatternsDir, { recursive: true });
224
- }
225
- const projectLoader = new PatternLoader(projectPatternsDir);
226
- for (const pattern of patterns) {
227
- pattern.filePath = path.join(projectPatternsDir, `${pattern.id}.yaml`);
228
- projectLoader.savePattern(pattern);
229
- }
230
- // 写入指纹文件
231
- const fingerprint = {
232
- hash: this.computeConventionHash(conventions),
233
- generatedAt: new Date().toISOString(),
234
- conventionIds: conventions.map(c => `${c.id}@${c.version}`),
235
- };
236
- fs.writeFileSync(path.join(projectPatternsDir, '.fingerprint.json'), JSON.stringify(fingerprint, null, 2), 'utf-8');
237
- }
238
- /** 计算 Convention 列表的内容指纹(id+version+roles hash) */
239
- computeConventionHash(conventions) {
240
- const content = conventions
241
- .map(c => `${c.id}:${c.version}:${JSON.stringify(c.roles ?? {})}`)
242
- .sort()
243
- .join('|');
244
- return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
245
- }
246
- }
247
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pattern-engine/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-evolver.d.ts","sourceRoot":"","sources":["../../src/pattern-engine/pattern-evolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWzD,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,oBAAoB,SAAK;IAO9E;;;;OAIG;IACG,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB7F;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,SAAK,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqCvH,OAAO,CAAC,cAAc;YAuBR,cAAc;IAkE5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;CAuClB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-evolver.js","sourceRoot":"","sources":["../../src/pattern-engine/pattern-evolver.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import type { Pattern, ExecutionPlan, PatternContext } from './types.js';
2
- import type { Convention } from '../convention/types.js';
3
- /**
4
- * PatternExecutor:将匹配到的 Pattern 展开为 ExecutionPlan,
5
- * 渲染当前阶段的 prompt_template,生成注入给 Claude 的 additionalContext。
6
- *
7
- * 职责边界:
8
- * - 创建和管理内存中的 ExecutionPlan(持久化由 ExecutionTracer 负责)
9
- * - 模板渲染
10
- * - 生成 PatternContext 供 UserPromptHandler 注入
11
- *
12
- * 不负责:AI 调用、SQLite 写入、状态机推进
13
- */
14
- export declare class PatternExecutor {
15
- /** 按 projectPath 存储当前活跃的执行计划(每个项目同时只有一个) */
16
- private activePlans;
17
- /**
18
- * 为指定项目启动一个新的执行计划。
19
- * 若该项目已有活跃计划,先清除(不支持并发 Pattern 执行)。
20
- */
21
- startPlan(pattern: Pattern, sessionId: string, projectPath: string): ExecutionPlan;
22
- /**
23
- * 生成当前活跃阶段的 PatternContext(含渲染后的 prompt)。
24
- * 返回 null 表示无活跃计划或当前阶段已执行完毕。
25
- */
26
- execute(pattern: Pattern, plan: ExecutionPlan, requirement: string): PatternContext | null;
27
- /**
28
- * 将指定阶段标记为已完成,并推进到下一个可执行阶段。
29
- * 供 ExecutionTracer 在检测到 completion_signal 时调用。
30
- *
31
- * @returns 下一个阶段 ID,null 表示整个 Pattern 已执行完毕
32
- */
33
- advancePhase(projectPath: string, completedPhaseId: string, phaseOutput: string, pattern: Pattern): string | null;
34
- /** 获取项目当前活跃计划(不存在则返回 null) */
35
- getActivePlan(projectPath: string): ExecutionPlan | null;
36
- /** 清除项目的活跃计划(Pattern 完成或被中断时调用) */
37
- clearPlan(projectPath: string): void;
38
- /** 构建注入给 Claude 的 additionalContext 字符串,可选传入 Convention 以注入角色约束 */
39
- buildAdditionalContext(patternCtx: PatternContext, pattern: Pattern, convention?: Convention | null): string;
40
- /** 检测 PostToolUse 事件是否触发了当前阶段的 completion_signal */
41
- checkCompletionSignal(projectPath: string, toolName: string, toolInput: Record<string, unknown>, pattern: Pattern): boolean;
42
- }
43
- //# sourceMappingURL=pattern-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-executor.d.ts","sourceRoot":"","sources":["../../src/pattern-engine/pattern-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgB,aAAa,EAAE,cAAc,EAAoB,MAAM,YAAY,CAAC;AACzG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAqEzD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,4CAA4C;IAC5C,OAAO,CAAC,WAAW,CAAoC;IAEvD;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAkClF;;;OAGG;IACH,OAAO,CACL,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,GAClB,cAAc,GAAG,IAAI;IAwBxB;;;;;OAKG;IACH,YAAY,CACV,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,IAAI;IA2BhB,8BAA8B;IAC9B,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIxD,mCAAmC;IACnC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKpC,mEAAmE;IACnE,sBAAsB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM;IAkC5G,oDAAoD;IACpD,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,OAAO,GACf,OAAO;CAqBX"}
@@ -1,228 +0,0 @@
1
- import { randomUUID } from 'crypto';
2
- import { logger } from '../utils/logger.js';
3
- /**
4
- * 将 Mustache 风格的 {{key}} 占位符替换为 context 中的对应值。
5
- * 未找到的 key 保留原始占位符。
6
- */
7
- function renderTemplate(template, context) {
8
- return template.replace(/\{\{(\w+)\}\}/g, (_, key) => {
9
- return context[key] ?? `{{${key}}}`;
10
- });
11
- }
12
- /**
13
- * 按 depends_on 拓扑排序,返回无依赖冲突的执行顺序。
14
- * 找到的第一个可执行阶段(所有依赖均已 completed)视为 currentPhaseId。
15
- */
16
- function findNextPhase(plan, pattern) {
17
- for (const phase of pattern.phases) {
18
- if (plan.phases[phase.id] !== 'pending')
19
- continue;
20
- const allDepsCompleted = phase.depends_on.every((dep) => plan.phases[dep] === 'completed');
21
- if (allDepsCompleted)
22
- return phase.id;
23
- }
24
- return null;
25
- }
26
- /**
27
- * 检测 Pattern 的 depends_on 是否存在循环依赖(DAG 验证)。
28
- * 使用 DFS + visited/inStack 双色标记法。
29
- * @returns 检测到的环路径(如 "A → B → A"),无环返回 null
30
- */
31
- function detectCyclicDependency(pattern) {
32
- const visited = new Set();
33
- const inStack = new Set();
34
- const phaseMap = new Map(pattern.phases.map(p => [p.id, p]));
35
- function dfs(id, path) {
36
- if (inStack.has(id)) {
37
- const cycleStart = path.indexOf(id);
38
- return [...path.slice(cycleStart), id].join(' → ');
39
- }
40
- if (visited.has(id))
41
- return null;
42
- visited.add(id);
43
- inStack.add(id);
44
- path.push(id);
45
- const phase = phaseMap.get(id);
46
- if (phase) {
47
- for (const dep of phase.depends_on) {
48
- const cycle = dfs(dep, path);
49
- if (cycle)
50
- return cycle;
51
- }
52
- }
53
- path.pop();
54
- inStack.delete(id);
55
- return null;
56
- }
57
- for (const phase of pattern.phases) {
58
- const cycle = dfs(phase.id, []);
59
- if (cycle)
60
- return cycle;
61
- }
62
- return null;
63
- }
64
- /**
65
- * PatternExecutor:将匹配到的 Pattern 展开为 ExecutionPlan,
66
- * 渲染当前阶段的 prompt_template,生成注入给 Claude 的 additionalContext。
67
- *
68
- * 职责边界:
69
- * - 创建和管理内存中的 ExecutionPlan(持久化由 ExecutionTracer 负责)
70
- * - 模板渲染
71
- * - 生成 PatternContext 供 UserPromptHandler 注入
72
- *
73
- * 不负责:AI 调用、SQLite 写入、状态机推进
74
- */
75
- export class PatternExecutor {
76
- /** 按 projectPath 存储当前活跃的执行计划(每个项目同时只有一个) */
77
- activePlans = new Map();
78
- /**
79
- * 为指定项目启动一个新的执行计划。
80
- * 若该项目已有活跃计划,先清除(不支持并发 Pattern 执行)。
81
- */
82
- startPlan(pattern, sessionId, projectPath) {
83
- // DAG 验证:检测循环依赖
84
- const cycle = detectCyclicDependency(pattern);
85
- if (cycle) {
86
- throw new Error(`Pattern "${pattern.id}" 存在循环依赖:${cycle}`);
87
- }
88
- const phases = {};
89
- for (const phase of pattern.phases) {
90
- phases[phase.id] = 'pending';
91
- }
92
- const plan = {
93
- id: randomUUID(),
94
- patternId: pattern.id,
95
- sessionId,
96
- projectPath,
97
- phases,
98
- currentPhaseId: null,
99
- context: { requirement: '' }, // 将在 execute() 中填充
100
- startedAt: new Date().toISOString(),
101
- };
102
- // 找到第一个可以执行的阶段
103
- plan.currentPhaseId = findNextPhase(plan, pattern);
104
- if (plan.currentPhaseId) {
105
- plan.phases[plan.currentPhaseId] = 'running';
106
- }
107
- this.activePlans.set(projectPath, plan);
108
- logger.info(`[Forge:执行器] 新计划 id=${plan.id} | pattern=${pattern.id} | 当前阶段=${plan.currentPhaseId ?? '无'}`);
109
- return plan;
110
- }
111
- /**
112
- * 生成当前活跃阶段的 PatternContext(含渲染后的 prompt)。
113
- * 返回 null 表示无活跃计划或当前阶段已执行完毕。
114
- */
115
- execute(pattern, plan, requirement) {
116
- if (!plan.currentPhaseId) {
117
- logger.info(`[Forge:执行器] 计划 ${plan.id} 无可执行阶段`);
118
- return null;
119
- }
120
- const phase = pattern.phases.find((p) => p.id === plan.currentPhaseId);
121
- if (!phase) {
122
- logger.warn(`[Forge:执行器] 找不到阶段 ${plan.currentPhaseId}`);
123
- return null;
124
- }
125
- // 将 requirement 注入上下文后渲染模板
126
- const context = { ...plan.context, requirement };
127
- const phasePrompt = renderTemplate(phase.prompt_template, context);
128
- return {
129
- phasePrompt,
130
- planId: plan.id,
131
- currentPhaseId: plan.currentPhaseId,
132
- patternName: pattern.name,
133
- };
134
- }
135
- /**
136
- * 将指定阶段标记为已完成,并推进到下一个可执行阶段。
137
- * 供 ExecutionTracer 在检测到 completion_signal 时调用。
138
- *
139
- * @returns 下一个阶段 ID,null 表示整个 Pattern 已执行完毕
140
- */
141
- advancePhase(projectPath, completedPhaseId, phaseOutput, pattern) {
142
- const plan = this.activePlans.get(projectPath);
143
- if (!plan)
144
- return null;
145
- // 标记阶段完成
146
- plan.phases[completedPhaseId] = 'completed';
147
- // 如果该阶段有 output_key,写入执行上下文供后续阶段模板使用
148
- const phase = pattern.phases.find((p) => p.id === completedPhaseId);
149
- if (phase?.output_key) {
150
- plan.context[phase.output_key] = phaseOutput;
151
- }
152
- // 找下一个可执行阶段
153
- const nextPhaseId = findNextPhase(plan, pattern);
154
- plan.currentPhaseId = nextPhaseId;
155
- if (nextPhaseId) {
156
- plan.phases[nextPhaseId] = 'running';
157
- logger.info(`[Forge:执行器] 阶段推进:${completedPhaseId} → ${nextPhaseId}`);
158
- }
159
- else {
160
- plan.completedAt = new Date().toISOString();
161
- logger.info(`[Forge:执行器] Pattern ${plan.patternId} 全部阶段完成`);
162
- }
163
- return nextPhaseId;
164
- }
165
- /** 获取项目当前活跃计划(不存在则返回 null) */
166
- getActivePlan(projectPath) {
167
- return this.activePlans.get(projectPath) ?? null;
168
- }
169
- /** 清除项目的活跃计划(Pattern 完成或被中断时调用) */
170
- clearPlan(projectPath) {
171
- this.activePlans.delete(projectPath);
172
- logger.info(`[Forge:执行器] 清除项目 ${projectPath} 的执行计划`);
173
- }
174
- /** 构建注入给 Claude 的 additionalContext 字符串,可选传入 Convention 以注入角色约束 */
175
- buildAdditionalContext(patternCtx, pattern, convention) {
176
- const currentPhase = pattern.phases.find((p) => p.id === patternCtx.currentPhaseId);
177
- if (!currentPhase)
178
- return patternCtx.phasePrompt;
179
- const phaseIndex = pattern.phases.indexOf(currentPhase) + 1;
180
- const totalPhases = pattern.phases.length;
181
- const toolsHint = currentPhase.tools_allowed.length > 0
182
- ? `\n可用工具:${currentPhase.tools_allowed.join('、')}`
183
- : '';
184
- // 从 Convention 查找当前角色的约束定义
185
- let roleConstraint = '';
186
- if (convention?.roles) {
187
- const roleDef = convention.roles[currentPhase.agent_role];
188
- if (roleDef) {
189
- roleConstraint = [
190
- '',
191
- `## 角色规范约束(来自 ${convention.name} v${convention.version})`,
192
- `职责:${roleDef.responsibilities.trim()}`,
193
- `约束:${roleDef.constraints.trim()}`,
194
- ].join('\n');
195
- }
196
- }
197
- return [
198
- `【Pattern 编排】${patternCtx.patternName} — 第 ${phaseIndex}/${totalPhases} 阶段:${currentPhase.name}`,
199
- `角色:${currentPhase.agent_role}${toolsHint}`,
200
- '',
201
- patternCtx.phasePrompt,
202
- roleConstraint,
203
- ].join('\n');
204
- }
205
- /** 检测 PostToolUse 事件是否触发了当前阶段的 completion_signal */
206
- checkCompletionSignal(projectPath, toolName, toolInput, pattern) {
207
- const plan = this.activePlans.get(projectPath);
208
- if (!plan?.currentPhaseId)
209
- return false;
210
- const phase = pattern.phases.find((p) => p.id === plan.currentPhaseId);
211
- if (!phase?.completion_signal)
212
- return false;
213
- const signal = phase.completion_signal;
214
- if (signal.tool_used && toolName !== signal.tool_used)
215
- return false;
216
- if (signal.file_pattern) {
217
- const filePath = String(toolInput['file_path'] ?? toolInput['path'] ?? '');
218
- if (!filePath)
219
- return false;
220
- // 简单 glob 匹配(仅支持 * 通配符)
221
- const regex = new RegExp('^' + signal.file_pattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
222
- if (!regex.test(filePath.split('/').pop() ?? filePath))
223
- return false;
224
- }
225
- return true;
226
- }
227
- }
228
- //# sourceMappingURL=pattern-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-executor.js","sourceRoot":"","sources":["../../src/pattern-engine/pattern-executor.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { Pattern } from './types.js';
2
- export declare class PatternLoader {
3
- private patternsDir;
4
- constructor(patternsDir?: string);
5
- /** 加载目录下所有 .yaml/.yml Pattern 文件 */
6
- loadAll(): Pattern[];
7
- /** 加载并验证单个 Pattern 文件 */
8
- loadFile(filePath: string): Pattern | null;
9
- /** 将 Pattern 写回 YAML 文件(供 PatternEvolver 调用) */
10
- savePattern(pattern: Pattern): void;
11
- /** 返回 patterns 目录路径 */
12
- getPatternsDir(): string;
13
- }
14
- //# sourceMappingURL=pattern-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-loader.d.ts","sourceRoot":"","sources":["../../src/pattern-engine/pattern-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAsD1C,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAqB;IAI9C,oCAAoC;IACpC,OAAO,IAAI,OAAO,EAAE;IAuBpB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAuB1C,gDAAgD;IAChD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAanC,uBAAuB;IACvB,cAAc,IAAI,MAAM;CAGzB"}