@winspan/claude-forge 0.7.2 → 0.7.3

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 (94) hide show
  1. package/dist/autopilot/intent-engine.d.ts +0 -4
  2. package/dist/autopilot/intent-engine.d.ts.map +1 -1
  3. package/dist/autopilot/intent-engine.js +32 -102
  4. package/dist/autopilot/intent-engine.js.map +1 -1
  5. package/dist/autopilot/issue-tracker.d.ts +48 -0
  6. package/dist/autopilot/issue-tracker.d.ts.map +1 -0
  7. package/dist/autopilot/issue-tracker.js +94 -0
  8. package/dist/autopilot/issue-tracker.js.map +1 -0
  9. package/dist/autopilot/phase-gap-detector.d.ts +25 -0
  10. package/dist/autopilot/phase-gap-detector.d.ts.map +1 -0
  11. package/dist/autopilot/phase-gap-detector.js +80 -0
  12. package/dist/autopilot/phase-gap-detector.js.map +1 -0
  13. package/dist/autopilot/quality-gate.d.ts +22 -0
  14. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  15. package/dist/autopilot/quality-gate.js +108 -25
  16. package/dist/autopilot/quality-gate.js.map +1 -1
  17. package/dist/cli/commands/pattern.d.ts.map +1 -1
  18. package/dist/cli/commands/pattern.js +44 -38
  19. package/dist/cli/commands/pattern.js.map +1 -1
  20. package/dist/daemon/engine-registry.js +1 -1
  21. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  22. package/dist/daemon/handlers/post-tool-use-handler.js +12 -0
  23. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  24. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  25. package/dist/daemon/handlers/user-prompt-handler.js +95 -48
  26. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  27. package/dist/pipeline/index.d.ts +1 -0
  28. package/dist/pipeline/index.d.ts.map +1 -1
  29. package/dist/pipeline/index.js +16 -2
  30. package/dist/pipeline/index.js.map +1 -1
  31. package/dist/{pattern-engine/types.d.ts → pipeline/pattern-types.d.ts} +1 -1
  32. package/dist/pipeline/pattern-types.d.ts.map +1 -0
  33. package/dist/{pattern-engine/types.js → pipeline/pattern-types.js} +1 -1
  34. package/dist/pipeline/pattern-types.js.map +1 -0
  35. package/dist/pipeline/phase-manager.d.ts +1 -0
  36. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  37. package/dist/pipeline/phase-manager.js +32 -37
  38. package/dist/pipeline/phase-manager.js.map +1 -1
  39. package/dist/pipeline/report-generator.d.ts +20 -0
  40. package/dist/pipeline/report-generator.d.ts.map +1 -0
  41. package/dist/pipeline/report-generator.js +123 -0
  42. package/dist/pipeline/report-generator.js.map +1 -0
  43. package/dist/prompts/intent-analysis.md +62 -0
  44. package/dist/prompts/registry.d.ts +17 -0
  45. package/dist/prompts/registry.d.ts.map +1 -0
  46. package/dist/prompts/registry.js +40 -0
  47. package/dist/prompts/registry.js.map +1 -0
  48. package/dist/skill-registry/evolver/index.d.ts +1 -1
  49. package/dist/skill-registry/evolver/index.d.ts.map +1 -1
  50. package/dist/{pattern-engine → skill-registry}/pattern-evolver.d.ts +6 -2
  51. package/dist/skill-registry/pattern-evolver.d.ts.map +1 -0
  52. package/dist/{pattern-engine → skill-registry}/pattern-evolver.js +30 -6
  53. package/dist/skill-registry/pattern-evolver.js.map +1 -0
  54. package/dist/storage/repositories/distill-repository.d.ts +2 -1
  55. package/dist/storage/repositories/distill-repository.d.ts.map +1 -1
  56. package/dist/storage/repositories/distill-repository.js +6 -0
  57. package/dist/storage/repositories/distill-repository.js.map +1 -1
  58. package/dist/storage/sqlite.d.ts +96 -157
  59. package/dist/storage/sqlite.d.ts.map +1 -1
  60. package/dist/storage/sqlite.js +123 -896
  61. package/dist/storage/sqlite.js.map +1 -1
  62. package/package.json +2 -2
  63. package/dist/daemon/engine-registry/init-pattern-engine.d.ts +0 -9
  64. package/dist/daemon/engine-registry/init-pattern-engine.d.ts.map +0 -1
  65. package/dist/daemon/engine-registry/init-pattern-engine.js +0 -22
  66. package/dist/daemon/engine-registry/init-pattern-engine.js.map +0 -1
  67. package/dist/pattern-engine/convention-pattern-generator.d.ts +0 -14
  68. package/dist/pattern-engine/convention-pattern-generator.d.ts.map +0 -1
  69. package/dist/pattern-engine/convention-pattern-generator.js +0 -120
  70. package/dist/pattern-engine/convention-pattern-generator.js.map +0 -1
  71. package/dist/pattern-engine/execution-tracker.d.ts +0 -45
  72. package/dist/pattern-engine/execution-tracker.d.ts.map +0 -1
  73. package/dist/pattern-engine/execution-tracker.js +0 -136
  74. package/dist/pattern-engine/execution-tracker.js.map +0 -1
  75. package/dist/pattern-engine/index.d.ts +0 -75
  76. package/dist/pattern-engine/index.d.ts.map +0 -1
  77. package/dist/pattern-engine/index.js +0 -247
  78. package/dist/pattern-engine/index.js.map +0 -1
  79. package/dist/pattern-engine/pattern-evolver.d.ts.map +0 -1
  80. package/dist/pattern-engine/pattern-evolver.js.map +0 -1
  81. package/dist/pattern-engine/pattern-executor.d.ts +0 -43
  82. package/dist/pattern-engine/pattern-executor.d.ts.map +0 -1
  83. package/dist/pattern-engine/pattern-executor.js +0 -228
  84. package/dist/pattern-engine/pattern-executor.js.map +0 -1
  85. package/dist/pattern-engine/pattern-loader.d.ts +0 -14
  86. package/dist/pattern-engine/pattern-loader.d.ts.map +0 -1
  87. package/dist/pattern-engine/pattern-loader.js +0 -111
  88. package/dist/pattern-engine/pattern-loader.js.map +0 -1
  89. package/dist/pattern-engine/pattern-router.d.ts +0 -31
  90. package/dist/pattern-engine/pattern-router.d.ts.map +0 -1
  91. package/dist/pattern-engine/pattern-router.js +0 -160
  92. package/dist/pattern-engine/pattern-router.js.map +0 -1
  93. package/dist/pattern-engine/types.d.ts.map +0 -1
  94. 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"}