@winspan/claude-forge 0.4.2 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +1 -1
  2. package/dist/autopilot/intent-engine.d.ts +2 -2
  3. package/dist/autopilot/intent-engine.d.ts.map +1 -1
  4. package/dist/autopilot/intent-engine.js +16 -4
  5. package/dist/autopilot/intent-engine.js.map +1 -1
  6. package/dist/autopilot/quality-gate.d.ts +17 -1
  7. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  8. package/dist/autopilot/quality-gate.js +89 -5
  9. package/dist/autopilot/quality-gate.js.map +1 -1
  10. package/dist/daemon/engine-registry/init-autopilot.d.ts +2 -1
  11. package/dist/daemon/engine-registry/init-autopilot.d.ts.map +1 -1
  12. package/dist/daemon/engine-registry/init-autopilot.js +3 -2
  13. package/dist/daemon/engine-registry/init-autopilot.js.map +1 -1
  14. package/dist/daemon/engine-registry.js +1 -1
  15. package/dist/daemon/engine-registry.js.map +1 -1
  16. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  17. package/dist/daemon/handlers/post-tool-use-handler.js +2 -0
  18. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  19. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  20. package/dist/daemon/handlers/pre-tool-use-handler.js +9 -0
  21. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  22. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  23. package/dist/daemon/handlers/session-cleanup.js +4 -5
  24. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  25. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  26. package/dist/daemon/handlers/user-prompt-handler.js +20 -4
  27. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  28. package/dist/daemon/lifecycle.d.ts +7 -0
  29. package/dist/daemon/lifecycle.d.ts.map +1 -1
  30. package/dist/daemon/lifecycle.js +15 -0
  31. package/dist/daemon/lifecycle.js.map +1 -1
  32. package/dist/pattern-engine/execution-tracker.d.ts +1 -1
  33. package/dist/pattern-engine/execution-tracker.d.ts.map +1 -1
  34. package/dist/pattern-engine/execution-tracker.js +5 -1
  35. package/dist/pattern-engine/execution-tracker.js.map +1 -1
  36. package/dist/pattern-engine/index.d.ts.map +1 -1
  37. package/dist/pattern-engine/index.js +1 -0
  38. package/dist/pattern-engine/index.js.map +1 -1
  39. package/dist/pattern-engine/pattern-evolver.d.ts.map +1 -1
  40. package/dist/pattern-engine/pattern-evolver.js +31 -12
  41. package/dist/pattern-engine/pattern-evolver.js.map +1 -1
  42. package/dist/pattern-engine/types.d.ts +2 -0
  43. package/dist/pattern-engine/types.d.ts.map +1 -1
  44. package/dist/pipeline/analyzer.d.ts +19 -4
  45. package/dist/pipeline/analyzer.d.ts.map +1 -1
  46. package/dist/pipeline/analyzer.js +172 -59
  47. package/dist/pipeline/analyzer.js.map +1 -1
  48. package/dist/pipeline/artifact-generator.d.ts +6 -9
  49. package/dist/pipeline/artifact-generator.d.ts.map +1 -1
  50. package/dist/pipeline/artifact-generator.js +68 -29
  51. package/dist/pipeline/artifact-generator.js.map +1 -1
  52. package/dist/pipeline/index.d.ts +0 -19
  53. package/dist/pipeline/index.d.ts.map +1 -1
  54. package/dist/pipeline/index.js +7 -30
  55. package/dist/pipeline/index.js.map +1 -1
  56. package/dist/pipeline/phase-manager.d.ts +1 -1
  57. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  58. package/dist/pipeline/phase-manager.js +23 -13
  59. package/dist/pipeline/phase-manager.js.map +1 -1
  60. package/dist/pipeline/store.d.ts +1 -1
  61. package/dist/pipeline/store.d.ts.map +1 -1
  62. package/dist/pipeline/store.js +15 -5
  63. package/dist/pipeline/store.js.map +1 -1
  64. package/dist/pipeline/types.d.ts +7 -2
  65. package/dist/pipeline/types.d.ts.map +1 -1
  66. package/dist/pipeline/types.js +6 -4
  67. package/dist/pipeline/types.js.map +1 -1
  68. package/dist/retrospective/index.d.ts.map +1 -1
  69. package/dist/retrospective/index.js +23 -13
  70. package/dist/retrospective/index.js.map +1 -1
  71. package/dist/retrospective/report-writer.d.ts +6 -7
  72. package/dist/retrospective/report-writer.d.ts.map +1 -1
  73. package/dist/retrospective/report-writer.js +47 -103
  74. package/dist/retrospective/report-writer.js.map +1 -1
  75. package/dist/storage/index.d.ts +37 -0
  76. package/dist/storage/index.d.ts.map +1 -1
  77. package/dist/storage/sqlite.d.ts +61 -0
  78. package/dist/storage/sqlite.d.ts.map +1 -1
  79. package/dist/storage/sqlite.js +251 -1
  80. package/dist/storage/sqlite.js.map +1 -1
  81. package/dist/strategy/bandit.d.ts +12 -0
  82. package/dist/strategy/bandit.d.ts.map +1 -1
  83. package/dist/strategy/bandit.js +38 -2
  84. package/dist/strategy/bandit.js.map +1 -1
  85. package/dist/utils/artifact-manager.d.ts +57 -0
  86. package/dist/utils/artifact-manager.d.ts.map +1 -0
  87. package/dist/utils/artifact-manager.js +164 -0
  88. package/dist/utils/artifact-manager.js.map +1 -0
  89. package/package.json +1 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * 统一产物管理器
3
+ *
4
+ * 负责将所有产物(复盘报告、阶段产物、计划文档、质量报告)
5
+ * 统一输出到 docs/YYYY-MM-DD_HH-MM-SS/ 目录,并维护 docs/INDEX.md 索引
6
+ */
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import { logger } from './logger.js';
10
+ export class ArtifactManager {
11
+ projectPath;
12
+ docsDir;
13
+ indexPath;
14
+ currentSessionDir = null;
15
+ constructor(projectPath) {
16
+ this.projectPath = projectPath;
17
+ this.docsDir = path.join(projectPath, 'docs');
18
+ this.indexPath = path.join(this.docsDir, 'INDEX.md');
19
+ // 确保 docs 目录存在
20
+ if (!fs.existsSync(this.docsDir)) {
21
+ fs.mkdirSync(this.docsDir, { recursive: true });
22
+ }
23
+ }
24
+ /**
25
+ * 创建新的产物会话目录
26
+ * 格式:docs/YYYY-MM-DD_HH-MM-SS/
27
+ */
28
+ createSession() {
29
+ const now = new Date();
30
+ const timestamp = this.formatTimestamp(now);
31
+ const sessionDir = path.join(this.docsDir, timestamp);
32
+ if (!fs.existsSync(sessionDir)) {
33
+ fs.mkdirSync(sessionDir, { recursive: true });
34
+ logger.debug(`[Forge:产物管理] 创建会话目录: ${timestamp}`);
35
+ }
36
+ this.currentSessionDir = sessionDir;
37
+ return sessionDir;
38
+ }
39
+ /**
40
+ * 获取当前会话目录(若不存在则创建)
41
+ */
42
+ getCurrentSessionDir() {
43
+ if (!this.currentSessionDir) {
44
+ return this.createSession();
45
+ }
46
+ return this.currentSessionDir;
47
+ }
48
+ /**
49
+ * 写入产物文件
50
+ */
51
+ writeArtifact(type, filename, content, description) {
52
+ const sessionDir = this.getCurrentSessionDir();
53
+ const filePath = path.join(sessionDir, filename);
54
+ fs.writeFileSync(filePath, content, 'utf-8');
55
+ logger.info(`[Forge:产物管理] 写入 ${type} 产物: ${filename}`);
56
+ // 更新索引
57
+ this.updateIndex(type, filename, description);
58
+ return filePath;
59
+ }
60
+ /**
61
+ * 更新 docs/INDEX.md 索引文件
62
+ */
63
+ updateIndex(type, filename, description) {
64
+ const sessionTimestamp = path.basename(this.getCurrentSessionDir());
65
+ let indexContent = '';
66
+ if (fs.existsSync(this.indexPath)) {
67
+ indexContent = fs.readFileSync(this.indexPath, 'utf-8');
68
+ }
69
+ else {
70
+ indexContent = '# 产物索引\n\n本文件记录所有生成的产物会话。\n\n';
71
+ }
72
+ // 查找当前会话的条目
73
+ const sessionHeader = `## ${sessionTimestamp}`;
74
+ const sessionIndex = indexContent.indexOf(sessionHeader);
75
+ if (sessionIndex === -1) {
76
+ // 新会话,追加到文件末尾
77
+ indexContent += `\n${sessionHeader}\n\n`;
78
+ indexContent += `- [${this.getTypeLabel(type)}] [${filename}](./${sessionTimestamp}/${filename}) — ${description}\n`;
79
+ }
80
+ else {
81
+ // 已有会话,追加产物条目
82
+ const lines = indexContent.split('\n');
83
+ const headerLineIndex = lines.findIndex(l => l === sessionHeader);
84
+ // 找到下一个会话标题或文件末尾
85
+ let insertIndex = headerLineIndex + 1;
86
+ while (insertIndex < lines.length && !lines[insertIndex].startsWith('## ')) {
87
+ insertIndex++;
88
+ }
89
+ // 在会话块末尾插入新条目
90
+ const newEntry = `- [${this.getTypeLabel(type)}] [${filename}](./${sessionTimestamp}/${filename}) — ${description}`;
91
+ lines.splice(insertIndex, 0, newEntry);
92
+ indexContent = lines.join('\n');
93
+ }
94
+ fs.writeFileSync(this.indexPath, indexContent, 'utf-8');
95
+ }
96
+ /**
97
+ * 格式化时间戳为 YYYY-MM-DD_HH-MM-SS
98
+ */
99
+ formatTimestamp(date) {
100
+ const year = date.getFullYear();
101
+ const month = String(date.getMonth() + 1).padStart(2, '0');
102
+ const day = String(date.getDate()).padStart(2, '0');
103
+ const hour = String(date.getHours()).padStart(2, '0');
104
+ const minute = String(date.getMinutes()).padStart(2, '0');
105
+ const second = String(date.getSeconds()).padStart(2, '0');
106
+ return `${year}-${month}-${day}_${hour}-${minute}-${second}`;
107
+ }
108
+ /**
109
+ * 获取产物类型的中文标签
110
+ */
111
+ getTypeLabel(type) {
112
+ const labels = {
113
+ 'retrospective': '复盘报告',
114
+ 'phase-artifact': '阶段产物',
115
+ 'plan': '计划文档',
116
+ 'quality-report': '质量报告',
117
+ };
118
+ return labels[type];
119
+ }
120
+ /**
121
+ * 列出所有产物会话
122
+ */
123
+ listSessions() {
124
+ if (!fs.existsSync(this.docsDir)) {
125
+ return [];
126
+ }
127
+ const entries = fs.readdirSync(this.docsDir, { withFileTypes: true });
128
+ const sessions = [];
129
+ for (const entry of entries) {
130
+ if (!entry.isDirectory())
131
+ continue;
132
+ if (entry.name === 'design')
133
+ continue; // 跳过设计文档目录
134
+ const sessionDir = path.join(this.docsDir, entry.name);
135
+ const files = fs.readdirSync(sessionDir);
136
+ const artifacts = files.map(filename => ({
137
+ type: this.inferType(filename),
138
+ filename,
139
+ description: '',
140
+ }));
141
+ sessions.push({
142
+ timestamp: entry.name,
143
+ directory: sessionDir,
144
+ artifacts,
145
+ });
146
+ }
147
+ return sessions.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
148
+ }
149
+ /**
150
+ * 根据文件名推断产物类型
151
+ */
152
+ inferType(filename) {
153
+ if (filename.includes('retrospective'))
154
+ return 'retrospective';
155
+ if (filename.includes('phase-'))
156
+ return 'phase-artifact';
157
+ if (filename.includes('plan'))
158
+ return 'plan';
159
+ if (filename.includes('quality'))
160
+ return 'quality-report';
161
+ return 'phase-artifact';
162
+ }
163
+ }
164
+ //# sourceMappingURL=artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-manager.js","sourceRoot":"","sources":["../../src/utils/artifact-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winspan/claude-forge",
3
- "version": "0.4.2",
3
+ "version": "0.4.5",
4
4
  "description": "SDLC intelligent orchestration engine for Claude Code",
5
5
  "main": "dist/cli/index.js",
6
6
  "type": "module",