@hongmaple0820/scale-engine 0.21.1 → 0.23.0
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.
- package/README.en.md +39 -13
- package/README.md +61 -31
- package/dist/api/cli.js +291 -4
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.d.ts +1 -0
- package/dist/api/doctor.js +83 -0
- package/dist/api/doctor.js.map +1 -1
- package/dist/artifact/types.d.ts +1 -1
- package/dist/artifact/types.js.map +1 -1
- package/dist/cli/phaseCommands.js +25 -6
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/cli/runCommand.d.ts +39 -0
- package/dist/cli/runCommand.js +113 -0
- package/dist/cli/runCommand.js.map +1 -0
- package/dist/config/profiles.d.ts +52 -0
- package/dist/config/profiles.js +162 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/context/ContextBudget.d.ts +25 -1
- package/dist/context/ContextBudget.js +72 -7
- package/dist/context/ContextBudget.js.map +1 -1
- package/dist/context/ProjectAnatomy.d.ts +18 -0
- package/dist/context/ProjectAnatomy.js +287 -0
- package/dist/context/ProjectAnatomy.js.map +1 -0
- package/dist/dashboard/DashboardServer.d.ts +3 -0
- package/dist/dashboard/DashboardServer.js +114 -0
- package/dist/dashboard/DashboardServer.js.map +1 -1
- package/dist/hooks/BugPatternDetector.d.ts +36 -0
- package/dist/hooks/BugPatternDetector.js +207 -0
- package/dist/hooks/BugPatternDetector.js.map +1 -0
- package/dist/hooks/HookGeneratorEnhanced.js +301 -5
- package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
- package/dist/hooks/WorkflowHooksManager.js +24 -0
- package/dist/hooks/WorkflowHooksManager.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge/CerebrumManager.d.ts +25 -0
- package/dist/knowledge/CerebrumManager.js +127 -0
- package/dist/knowledge/CerebrumManager.js.map +1 -0
- package/dist/knowledge/SQLiteKnowledgeBase.d.ts +1 -0
- package/dist/knowledge/SQLiteKnowledgeBase.js +31 -3
- package/dist/knowledge/SQLiteKnowledgeBase.js.map +1 -1
- package/dist/knowledge/TfidfIndex.d.ts +50 -0
- package/dist/knowledge/TfidfIndex.js +177 -0
- package/dist/knowledge/TfidfIndex.js.map +1 -0
- package/dist/skills/SkillDiscovery.js +1 -1
- package/dist/skills/SkillDiscovery.js.map +1 -1
- package/dist/tools/CommandOutputCompressor.d.ts +28 -0
- package/dist/tools/CommandOutputCompressor.js +242 -0
- package/dist/tools/CommandOutputCompressor.js.map +1 -0
- package/dist/tools/CommandRunLedger.d.ts +77 -0
- package/dist/tools/CommandRunLedger.js +111 -0
- package/dist/tools/CommandRunLedger.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/workflow/EngineeringStandards.js +91 -2
- package/dist/workflow/EngineeringStandards.js.map +1 -1
- package/dist/workflow/GovernanceTemplatePacks.js +2 -2
- package/dist/workflow/GovernanceTemplates.js +90 -89
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/TaskLevelDetector.d.ts +41 -0
- package/dist/workflow/TaskLevelDetector.js +219 -0
- package/dist/workflow/TaskLevelDetector.js.map +1 -0
- package/dist/workflow/WorkflowOrchestrator.d.ts +59 -0
- package/dist/workflow/WorkflowOrchestrator.js +326 -0
- package/dist/workflow/WorkflowOrchestrator.js.map +1 -0
- package/dist/workflow/WorkspaceLifecycle.d.ts +19 -1
- package/dist/workflow/WorkspaceLifecycle.js +119 -3
- package/dist/workflow/WorkspaceLifecycle.js.map +1 -1
- package/dist/workflow/WorkspaceTopology.d.ts +6 -0
- package/dist/workflow/WorkspaceTopology.js +17 -6
- package/dist/workflow/WorkspaceTopology.js.map +1 -1
- package/dist/workflow/gates/GateSystem.d.ts +23 -6
- package/dist/workflow/gates/GateSystem.js +114 -25
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/dist/workflow/gates/MetaGovernanceGates.d.ts +70 -0
- package/dist/workflow/gates/MetaGovernanceGates.js +617 -0
- package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -0
- package/dist/workflow/types.d.ts +6 -1
- package/docs/GITLAB_FLOW.md +125 -0
- package/docs/README.md +3 -0
- package/docs/start/README.md +29 -3
- package/docs/start/artifact-lifecycle.md +326 -0
- package/docs/start/workflow-upgrade.md +150 -0
- package/image/wechat-public.jpg +0 -0
- package/image/wxPay.jpg +0 -0
- package/image/zfb.jpg +0 -0
- package/package.json +10 -8
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
// SCALE Engine 鈥?Project Anatomy
|
|
2
|
+
// Scans project directory and generates a file map with descriptions and token estimates.
|
|
3
|
+
// Inspired by OpenWolf's anatomy system.
|
|
4
|
+
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
5
|
+
import { join, relative, extname, basename, dirname } from 'node:path';
|
|
6
|
+
import { estimateTokens } from './ContextBudget.js';
|
|
7
|
+
const BINARY_EXTENSIONS = new Set([
|
|
8
|
+
'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ico', '.svg',
|
|
9
|
+
'.woff', '.woff2', '.ttf', '.eot', '.otf',
|
|
10
|
+
'.zip', '.tar', '.gz', '.bz2', '.7z', '.rar',
|
|
11
|
+
'.exe', '.dll', '.so', '.dylib', '.bin',
|
|
12
|
+
'.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx',
|
|
13
|
+
'.mp3', '.mp4', '.avi', '.mov', '.webm', '.ogg',
|
|
14
|
+
'.sqlite', '.db', '.wasm', '.lock',
|
|
15
|
+
]);
|
|
16
|
+
const DEFAULT_EXCLUDE = ['node_modules', '.git', 'dist', 'build', '.scale', '.wolf', 'coverage', '.next', '__pycache__'];
|
|
17
|
+
const ALWAYS_EXCLUDE_FILES = new Set(['.env', '.env.local', '.env.production', '.env.staging', '.env.development']);
|
|
18
|
+
export class ProjectAnatomy {
|
|
19
|
+
scan(projectDir, opts) {
|
|
20
|
+
const maxFiles = opts?.maxFiles ?? 500;
|
|
21
|
+
const excludePatterns = opts?.excludePatterns ?? DEFAULT_EXCLUDE;
|
|
22
|
+
const entries = new Map();
|
|
23
|
+
this.walkDir(projectDir, projectDir, excludePatterns, maxFiles, entries);
|
|
24
|
+
return entries;
|
|
25
|
+
}
|
|
26
|
+
serialize(sections) {
|
|
27
|
+
const lines = [
|
|
28
|
+
'# anatomy.md',
|
|
29
|
+
'',
|
|
30
|
+
`> Auto-maintained by SCALE Engine. Last scanned: ${new Date().toISOString()}`,
|
|
31
|
+
'',
|
|
32
|
+
];
|
|
33
|
+
let fileCount = 0;
|
|
34
|
+
let totalTokens = 0;
|
|
35
|
+
for (const [, list] of sections) {
|
|
36
|
+
fileCount += list.length;
|
|
37
|
+
totalTokens += list.reduce((s, e) => s + e.tokens, 0);
|
|
38
|
+
}
|
|
39
|
+
lines.push(`> Files: ${fileCount} | Total: ~${totalTokens} tokens`);
|
|
40
|
+
lines.push('');
|
|
41
|
+
const sortedKeys = [...sections.keys()].sort();
|
|
42
|
+
for (const key of sortedKeys) {
|
|
43
|
+
lines.push(`## ${key}`);
|
|
44
|
+
lines.push('');
|
|
45
|
+
const entries = sections.get(key);
|
|
46
|
+
entries.sort((a, b) => a.file.localeCompare(b.file));
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
const desc = entry.description ? ` - ${entry.description}` : '';
|
|
49
|
+
lines.push(`- \`${entry.file}\`${desc} (~${entry.tokens} tok)`);
|
|
50
|
+
}
|
|
51
|
+
lines.push('');
|
|
52
|
+
}
|
|
53
|
+
return lines.join('\n');
|
|
54
|
+
}
|
|
55
|
+
parse(content) {
|
|
56
|
+
const sections = new Map();
|
|
57
|
+
let currentSection = '';
|
|
58
|
+
for (const line of content.split('\n')) {
|
|
59
|
+
const sectionMatch = line.match(/^## (.+)/);
|
|
60
|
+
if (sectionMatch) {
|
|
61
|
+
currentSection = sectionMatch[1].trim();
|
|
62
|
+
if (!sections.has(currentSection))
|
|
63
|
+
sections.set(currentSection, []);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (!currentSection)
|
|
67
|
+
continue;
|
|
68
|
+
const entryMatch = line.match(/^- `([^`]+)`(?:\s+-\s+(.+?))?\s*\(~(\d+)\s+tok\)$/);
|
|
69
|
+
if (entryMatch) {
|
|
70
|
+
sections.get(currentSection).push({
|
|
71
|
+
file: entryMatch[1],
|
|
72
|
+
description: entryMatch[2] || '',
|
|
73
|
+
tokens: parseInt(entryMatch[3], 10),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return sections;
|
|
78
|
+
}
|
|
79
|
+
updateEntry(sections, relPath, fileContent, action) {
|
|
80
|
+
const dir = dirname(relPath);
|
|
81
|
+
const fileName = basename(relPath);
|
|
82
|
+
const sectionKey = dir === '.' ? './' : dir + '/';
|
|
83
|
+
if (action === 'delete') {
|
|
84
|
+
const entries = sections.get(sectionKey);
|
|
85
|
+
if (entries) {
|
|
86
|
+
const idx = entries.findIndex(e => e.file === fileName);
|
|
87
|
+
if (idx !== -1)
|
|
88
|
+
entries.splice(idx, 1);
|
|
89
|
+
if (entries.length === 0)
|
|
90
|
+
sections.delete(sectionKey);
|
|
91
|
+
}
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const ext = extname(relPath).toLowerCase();
|
|
95
|
+
const desc = this.extractDescriptionFromContent(fileContent, relPath);
|
|
96
|
+
const tokens = estimateTokens(fileContent);
|
|
97
|
+
if (!sections.has(sectionKey))
|
|
98
|
+
sections.set(sectionKey, []);
|
|
99
|
+
const entries = sections.get(sectionKey);
|
|
100
|
+
const idx = entries.findIndex(e => e.file === fileName);
|
|
101
|
+
const entry = { file: fileName, description: desc, tokens };
|
|
102
|
+
if (idx !== -1) {
|
|
103
|
+
entries[idx] = entry;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
entries.push(entry);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
extractDescription(filePath) {
|
|
110
|
+
let content;
|
|
111
|
+
try {
|
|
112
|
+
const fd = filePath;
|
|
113
|
+
content = readFileSync(fd, 'utf-8');
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return '';
|
|
117
|
+
}
|
|
118
|
+
return this.extractDescriptionFromContent(content, filePath);
|
|
119
|
+
}
|
|
120
|
+
extractDescriptionFromContent(content, filePath) {
|
|
121
|
+
const MAX_DESC = 120;
|
|
122
|
+
const name = basename(filePath);
|
|
123
|
+
const ext = extname(name).toLowerCase();
|
|
124
|
+
if (!content.trim())
|
|
125
|
+
return '';
|
|
126
|
+
const cap = (s) => s.length <= MAX_DESC ? s : s.slice(0, MAX_DESC - 3) + '...';
|
|
127
|
+
// Known config files
|
|
128
|
+
const known = {
|
|
129
|
+
'package.json': 'Node.js package manifest',
|
|
130
|
+
'tsconfig.json': 'TypeScript configuration',
|
|
131
|
+
'.gitignore': 'Git ignore rules',
|
|
132
|
+
'README.md': 'Project documentation',
|
|
133
|
+
'Dockerfile': 'Docker container definition',
|
|
134
|
+
'docker-compose.yml': 'Docker Compose services',
|
|
135
|
+
'Cargo.toml': 'Rust package manifest',
|
|
136
|
+
'go.mod': 'Go module definition',
|
|
137
|
+
};
|
|
138
|
+
if (known[name])
|
|
139
|
+
return known[name];
|
|
140
|
+
// Markdown heading
|
|
141
|
+
if (ext === '.md' || ext === '.mdx') {
|
|
142
|
+
const m = content.match(/^#{1,2}\s+(.+)$/m);
|
|
143
|
+
if (m)
|
|
144
|
+
return cap(m[1].trim());
|
|
145
|
+
}
|
|
146
|
+
// JSDoc / PHPDoc / Javadoc
|
|
147
|
+
const jm = content.match(/\/\*\*\s*\n?\s*\*?\s*(.+)/);
|
|
148
|
+
if (jm) {
|
|
149
|
+
const l = jm[1].replace(/\*\/$/, '').trim();
|
|
150
|
+
if (l && !l.startsWith('@') && l.length > 5)
|
|
151
|
+
return cap(l);
|
|
152
|
+
}
|
|
153
|
+
// Python docstring
|
|
154
|
+
if (ext === '.py') {
|
|
155
|
+
const dm = content.match(/^(?:#[^\n]*\n)*\s*(?:"""(.+?)"""|'''(.+?)''')/s);
|
|
156
|
+
if (dm) {
|
|
157
|
+
const first = (dm[1] || dm[2]).split('\n')[0].trim();
|
|
158
|
+
if (first && first.length > 3)
|
|
159
|
+
return cap(first);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Rust doc comments
|
|
163
|
+
if (ext === '.rs') {
|
|
164
|
+
const lines = content.split('\n');
|
|
165
|
+
for (const line of lines.slice(0, 20)) {
|
|
166
|
+
const m = line.match(/^\s*(?:\/\/\/|\/\/!)\s*(.+)/);
|
|
167
|
+
if (m && m[1].length > 5)
|
|
168
|
+
return cap(m[1].trim());
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Go package comment
|
|
172
|
+
if (ext === '.go') {
|
|
173
|
+
const m = content.match(/\/\/\s*Package\s+\w+\s+(.*)/);
|
|
174
|
+
if (m)
|
|
175
|
+
return cap(m[1].trim());
|
|
176
|
+
}
|
|
177
|
+
// TS/JS 鈥?exports summary
|
|
178
|
+
if (['.ts', '.tsx', '.js', '.jsx', '.mjs'].includes(ext)) {
|
|
179
|
+
const exports = (content.match(/export\s+(?:async\s+)?(?:function|class|const|interface|type|enum)\s+(\w+)/g) || [])
|
|
180
|
+
.map(e => e.match(/(\w+)$/)?.[1]).filter(Boolean);
|
|
181
|
+
if (exports.length > 0 && exports.length <= 4)
|
|
182
|
+
return cap(`Exports ${exports.join(', ')}`);
|
|
183
|
+
if (exports.length > 4)
|
|
184
|
+
return cap(`Exports ${exports.slice(0, 3).join(', ')} + ${exports.length - 3} more`);
|
|
185
|
+
}
|
|
186
|
+
// Python 鈥?class + functions
|
|
187
|
+
if (ext === '.py') {
|
|
188
|
+
const cls = content.match(/class\s+(\w+)/);
|
|
189
|
+
const funcs = (content.match(/def\s+(\w+)/g) || []).map(f => f.match(/def\s+(\w+)/)?.[1]).filter(n => n && !n.startsWith('_'));
|
|
190
|
+
if (cls && funcs.length > 0)
|
|
191
|
+
return cap(`${cls[1]}: ${funcs.slice(0, 4).join(', ')}`);
|
|
192
|
+
if (funcs.length > 0)
|
|
193
|
+
return cap(funcs.slice(0, 4).join(', '));
|
|
194
|
+
}
|
|
195
|
+
// Header comment fallback
|
|
196
|
+
const hdrLines = content.split('\n');
|
|
197
|
+
for (const line of hdrLines.slice(0, 10)) {
|
|
198
|
+
const t = line.trim();
|
|
199
|
+
if (!t || t.startsWith('#!') || t.startsWith('namespace') || t.startsWith('use ') || t.startsWith('import ') || t.startsWith('from ') || t.startsWith('require') || t.startsWith('module '))
|
|
200
|
+
continue;
|
|
201
|
+
const cm = t.match(/^(?:\/\/|#|--)\s*(.+)/);
|
|
202
|
+
if (cm) {
|
|
203
|
+
const text = cm[1].trim();
|
|
204
|
+
const lower = text.toLowerCase();
|
|
205
|
+
if (text.length > 5 && !lower.startsWith('copyright') && !lower.startsWith('license') && !lower.startsWith('@')) {
|
|
206
|
+
return cap(text);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (!t.startsWith('//') && !t.startsWith('#') && !t.startsWith('/*') && !t.startsWith('*') && !t.startsWith('--'))
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
// Last resort 鈥?first declaration
|
|
213
|
+
const declM = content.match(/(?:function|class|const|interface|type|enum)\s+(\w+)/);
|
|
214
|
+
if (declM)
|
|
215
|
+
return `Declares ${declM[1]}`;
|
|
216
|
+
return '';
|
|
217
|
+
}
|
|
218
|
+
walkDir(dir, rootDir, excludePatterns, maxFiles, entries) {
|
|
219
|
+
let totalFiles = 0;
|
|
220
|
+
for (const [, list] of entries)
|
|
221
|
+
totalFiles += list.length;
|
|
222
|
+
if (totalFiles >= maxFiles)
|
|
223
|
+
return;
|
|
224
|
+
let items;
|
|
225
|
+
try {
|
|
226
|
+
items = readdirSync(dir);
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
items.sort();
|
|
232
|
+
for (const item of items) {
|
|
233
|
+
const fullPath = join(dir, item);
|
|
234
|
+
const relPath = relative(rootDir, fullPath).replace(/\\/g, '/');
|
|
235
|
+
if (this.shouldExclude(relPath, item, excludePatterns))
|
|
236
|
+
continue;
|
|
237
|
+
let stat;
|
|
238
|
+
try {
|
|
239
|
+
stat = statSync(fullPath);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
if (stat.isDirectory()) {
|
|
245
|
+
this.walkDir(fullPath, rootDir, excludePatterns, maxFiles, entries);
|
|
246
|
+
}
|
|
247
|
+
else if (stat.isFile()) {
|
|
248
|
+
const ext = extname(item).toLowerCase();
|
|
249
|
+
if (BINARY_EXTENSIONS.has(ext))
|
|
250
|
+
continue;
|
|
251
|
+
if (stat.size > 1024 * 1024)
|
|
252
|
+
continue; // skip > 1MB
|
|
253
|
+
let content;
|
|
254
|
+
try {
|
|
255
|
+
content = readFileSync(fullPath, 'utf-8');
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
const desc = this.extractDescriptionFromContent(content, fullPath);
|
|
261
|
+
const tokens = estimateTokens(content);
|
|
262
|
+
const section = relative(rootDir, dir).replace(/\\/g, '/') || '.';
|
|
263
|
+
const sectionKey = section === '.' ? './' : section + '/';
|
|
264
|
+
if (!entries.has(sectionKey))
|
|
265
|
+
entries.set(sectionKey, []);
|
|
266
|
+
entries.get(sectionKey).push({ file: item, description: desc, tokens });
|
|
267
|
+
totalFiles++;
|
|
268
|
+
if (totalFiles >= maxFiles)
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
shouldExclude(relPath, name, excludePatterns) {
|
|
274
|
+
// Always exclude sensitive files
|
|
275
|
+
if (ALWAYS_EXCLUDE_FILES.has(name))
|
|
276
|
+
return true;
|
|
277
|
+
if (name.startsWith('.env.'))
|
|
278
|
+
return true;
|
|
279
|
+
const parts = relPath.split('/');
|
|
280
|
+
for (const pattern of excludePatterns) {
|
|
281
|
+
if (parts.includes(pattern))
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=ProjectAnatomy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectAnatomy.js","sourceRoot":"","sources":["../../src/context/ProjectAnatomy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { EventBus } from '../core/eventBus.js';
|
|
2
2
|
import type { IArtifactStore } from '../artifact/store.js';
|
|
3
|
+
import type { IFSM } from '../artifact/fsm.js';
|
|
3
4
|
import type { IEvolutionEvaluator, EvolutionMetrics } from '../evolution/EvolutionEvaluator.js';
|
|
4
5
|
import type { DetectorStatisticsTracker } from '../guardrails/DetectorEnhanced.js';
|
|
5
6
|
export interface DashboardState {
|
|
@@ -58,12 +59,14 @@ export declare class DashboardServer {
|
|
|
58
59
|
private app;
|
|
59
60
|
private bus;
|
|
60
61
|
private store;
|
|
62
|
+
private fsm;
|
|
61
63
|
private evaluator;
|
|
62
64
|
private detectorTracker;
|
|
63
65
|
private port;
|
|
64
66
|
constructor(bus: EventBus, options?: {
|
|
65
67
|
port?: number;
|
|
66
68
|
store?: IArtifactStore;
|
|
69
|
+
fsm?: IFSM;
|
|
67
70
|
evaluator?: IEvolutionEvaluator;
|
|
68
71
|
detectorTracker?: DetectorStatisticsTracker;
|
|
69
72
|
});
|
|
@@ -15,11 +15,13 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
15
15
|
export class DashboardServer {
|
|
16
16
|
constructor(bus, options = {}) {
|
|
17
17
|
this.store = null;
|
|
18
|
+
this.fsm = null;
|
|
18
19
|
this.evaluator = null;
|
|
19
20
|
this.detectorTracker = null;
|
|
20
21
|
this.app = new Hono();
|
|
21
22
|
this.bus = bus;
|
|
22
23
|
this.store = options.store ?? null;
|
|
24
|
+
this.fsm = options.fsm ?? null;
|
|
23
25
|
this.evaluator = options.evaluator ?? null;
|
|
24
26
|
this.detectorTracker = options.detectorTracker ?? null;
|
|
25
27
|
this.port = options.port ?? 3000;
|
|
@@ -63,6 +65,118 @@ export class DashboardServer {
|
|
|
63
65
|
const stats = await this.getAutoDefectStats();
|
|
64
66
|
return c.json(stats);
|
|
65
67
|
});
|
|
68
|
+
// ── Write Operations ──────────────────────────────────────────────
|
|
69
|
+
// Artifact transition
|
|
70
|
+
this.app.post('/api/artifacts/:id/transition', async (c) => {
|
|
71
|
+
if (!this.fsm || !this.store) {
|
|
72
|
+
return c.json({ error: 'FSM or store not available' }, 503);
|
|
73
|
+
}
|
|
74
|
+
const id = c.req.param('id');
|
|
75
|
+
const body = await c.req.json();
|
|
76
|
+
if (!body.action) {
|
|
77
|
+
return c.json({ error: 'Missing required field: action' }, 400);
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const artifact = await this.store.get(id);
|
|
81
|
+
if (!artifact)
|
|
82
|
+
return c.json({ error: `Artifact not found: ${id}` }, 404);
|
|
83
|
+
// Check available actions first
|
|
84
|
+
const available = await this.fsm.availableActions(id);
|
|
85
|
+
if (!available.includes(body.action)) {
|
|
86
|
+
return c.json({
|
|
87
|
+
error: `Action "${body.action}" not available for ${artifact.type} in state "${artifact.status}"`,
|
|
88
|
+
availableActions: available,
|
|
89
|
+
}, 400);
|
|
90
|
+
}
|
|
91
|
+
const result = await this.fsm.transition(id, body.action, {
|
|
92
|
+
actor: { kind: 'system', component: 'dashboard' },
|
|
93
|
+
reason: body.reason ?? `Dashboard transition: ${body.action}`,
|
|
94
|
+
});
|
|
95
|
+
if (!result.success) {
|
|
96
|
+
return c.json({
|
|
97
|
+
error: 'Transition blocked by guards',
|
|
98
|
+
blockedBy: result.blockedBy,
|
|
99
|
+
}, 422);
|
|
100
|
+
}
|
|
101
|
+
return c.json({
|
|
102
|
+
success: true,
|
|
103
|
+
artifact: result.artifact,
|
|
104
|
+
effectsExecuted: result.effectsExecuted,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
return c.json({ error: e instanceof Error ? e.message : String(e) }, 500);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
// Get available transitions for an artifact
|
|
112
|
+
this.app.get('/api/artifacts/:id/actions', async (c) => {
|
|
113
|
+
if (!this.fsm)
|
|
114
|
+
return c.json({ error: 'FSM not available' }, 503);
|
|
115
|
+
const id = c.req.param('id');
|
|
116
|
+
try {
|
|
117
|
+
const actions = await this.fsm.availableActions(id);
|
|
118
|
+
return c.json({ id, actions });
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
return c.json({ error: e instanceof Error ? e.message : String(e) }, 500);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
// Lesson approve (PROPOSED → APPROVED)
|
|
125
|
+
this.app.post('/api/lessons/:id/approve', async (c) => {
|
|
126
|
+
if (!this.fsm || !this.store) {
|
|
127
|
+
return c.json({ error: 'FSM or store not available' }, 503);
|
|
128
|
+
}
|
|
129
|
+
const id = c.req.param('id');
|
|
130
|
+
try {
|
|
131
|
+
const artifact = await this.store.get(id);
|
|
132
|
+
if (!artifact || artifact.type !== 'Lesson') {
|
|
133
|
+
return c.json({ error: `Lesson not found: ${id}` }, 404);
|
|
134
|
+
}
|
|
135
|
+
if (artifact.status !== 'PROPOSED') {
|
|
136
|
+
return c.json({ error: `Lesson is "${artifact.status}", can only approve from PROPOSED` }, 400);
|
|
137
|
+
}
|
|
138
|
+
const body = await c.req.json().catch(() => ({}));
|
|
139
|
+
const result = await this.fsm.transition(id, 'review', {
|
|
140
|
+
actor: { kind: 'system', component: 'dashboard' },
|
|
141
|
+
reason: body.reason ?? 'Approved via dashboard',
|
|
142
|
+
});
|
|
143
|
+
if (!result.success) {
|
|
144
|
+
return c.json({ error: 'Transition blocked', blockedBy: result.blockedBy }, 422);
|
|
145
|
+
}
|
|
146
|
+
return c.json({ success: true, artifact: result.artifact });
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
return c.json({ error: e instanceof Error ? e.message : String(e) }, 500);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
// Lesson reject (PROPOSED → REJECTED)
|
|
153
|
+
this.app.post('/api/lessons/:id/reject', async (c) => {
|
|
154
|
+
if (!this.fsm || !this.store) {
|
|
155
|
+
return c.json({ error: 'FSM or store not available' }, 503);
|
|
156
|
+
}
|
|
157
|
+
const id = c.req.param('id');
|
|
158
|
+
try {
|
|
159
|
+
const artifact = await this.store.get(id);
|
|
160
|
+
if (!artifact || artifact.type !== 'Lesson') {
|
|
161
|
+
return c.json({ error: `Lesson not found: ${id}` }, 404);
|
|
162
|
+
}
|
|
163
|
+
if (artifact.status !== 'PROPOSED') {
|
|
164
|
+
return c.json({ error: `Lesson is "${artifact.status}", can only reject from PROPOSED` }, 400);
|
|
165
|
+
}
|
|
166
|
+
const body = await c.req.json().catch(() => ({}));
|
|
167
|
+
const result = await this.fsm.transition(id, 'reject', {
|
|
168
|
+
actor: { kind: 'system', component: 'dashboard' },
|
|
169
|
+
reason: body.reason ?? 'Rejected via dashboard',
|
|
170
|
+
});
|
|
171
|
+
if (!result.success) {
|
|
172
|
+
return c.json({ error: 'Transition blocked', blockedBy: result.blockedBy }, 422);
|
|
173
|
+
}
|
|
174
|
+
return c.json({ success: true, artifact: result.artifact });
|
|
175
|
+
}
|
|
176
|
+
catch (e) {
|
|
177
|
+
return c.json({ error: e instanceof Error ? e.message : String(e) }, 500);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
66
180
|
// Index page - serve static HTML
|
|
67
181
|
this.app.get('/', (c) => c.html(this.getIndexHtml()));
|
|
68
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardServer.js","sourceRoot":"","sources":["../../src/dashboard/DashboardServer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DashboardServer.js","sourceRoot":"","sources":["../../src/dashboard/DashboardServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type FixPattern = 'error-handling' | 'null-safety' | 'guard-clause' | 'wrong-value' | 'wrong-reference' | 'logic-fix' | 'operator-fix' | 'missing-import' | 'async-fix' | 'type-fix' | 'return-value' | 'refactor';
|
|
2
|
+
export interface BugDetection {
|
|
3
|
+
pattern: FixPattern;
|
|
4
|
+
confidence: number;
|
|
5
|
+
summary: string;
|
|
6
|
+
file: string;
|
|
7
|
+
oldSnippet: string;
|
|
8
|
+
newSnippet: string;
|
|
9
|
+
detectedAt: string;
|
|
10
|
+
}
|
|
11
|
+
export interface BugRecord {
|
|
12
|
+
id: string;
|
|
13
|
+
timestamp: string;
|
|
14
|
+
file: string;
|
|
15
|
+
pattern: FixPattern;
|
|
16
|
+
summary: string;
|
|
17
|
+
oldSnippet: string;
|
|
18
|
+
newSnippet: string;
|
|
19
|
+
occurrences: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class BugPatternDetector {
|
|
22
|
+
detect(oldString: string, newString: string, filePath: string): BugDetection | null;
|
|
23
|
+
private checkErrorHandling;
|
|
24
|
+
private checkNullSafety;
|
|
25
|
+
private checkGuardClause;
|
|
26
|
+
private checkMissingImport;
|
|
27
|
+
private checkAsyncFix;
|
|
28
|
+
private checkTypeFix;
|
|
29
|
+
private checkOperatorFix;
|
|
30
|
+
private checkLogicFix;
|
|
31
|
+
private checkReturnValue;
|
|
32
|
+
private checkWrongValue;
|
|
33
|
+
private checkWrongReference;
|
|
34
|
+
private checkRefactor;
|
|
35
|
+
private summarize;
|
|
36
|
+
}
|