@hongmaple0820/scale-engine 0.21.2 → 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.
Files changed (82) hide show
  1. package/README.en.md +35 -11
  2. package/README.md +54 -23
  3. package/dist/api/cli.js +284 -4
  4. package/dist/api/cli.js.map +1 -1
  5. package/dist/api/doctor.d.ts +1 -0
  6. package/dist/api/doctor.js +83 -0
  7. package/dist/api/doctor.js.map +1 -1
  8. package/dist/artifact/types.d.ts +1 -1
  9. package/dist/artifact/types.js.map +1 -1
  10. package/dist/cli/phaseCommands.js +22 -6
  11. package/dist/cli/phaseCommands.js.map +1 -1
  12. package/dist/cli/runCommand.d.ts +39 -0
  13. package/dist/cli/runCommand.js +113 -0
  14. package/dist/cli/runCommand.js.map +1 -0
  15. package/dist/config/profiles.d.ts +52 -0
  16. package/dist/config/profiles.js +162 -0
  17. package/dist/config/profiles.js.map +1 -0
  18. package/dist/context/ContextBudget.d.ts +25 -1
  19. package/dist/context/ContextBudget.js +72 -7
  20. package/dist/context/ContextBudget.js.map +1 -1
  21. package/dist/context/ProjectAnatomy.d.ts +18 -0
  22. package/dist/context/ProjectAnatomy.js +287 -0
  23. package/dist/context/ProjectAnatomy.js.map +1 -0
  24. package/dist/dashboard/DashboardServer.d.ts +3 -0
  25. package/dist/dashboard/DashboardServer.js +114 -0
  26. package/dist/dashboard/DashboardServer.js.map +1 -1
  27. package/dist/hooks/BugPatternDetector.d.ts +36 -0
  28. package/dist/hooks/BugPatternDetector.js +207 -0
  29. package/dist/hooks/BugPatternDetector.js.map +1 -0
  30. package/dist/hooks/HookGeneratorEnhanced.js +301 -5
  31. package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
  32. package/dist/hooks/WorkflowHooksManager.js +24 -0
  33. package/dist/hooks/WorkflowHooksManager.js.map +1 -1
  34. package/dist/index.d.ts +4 -0
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/knowledge/CerebrumManager.d.ts +25 -0
  38. package/dist/knowledge/CerebrumManager.js +127 -0
  39. package/dist/knowledge/CerebrumManager.js.map +1 -0
  40. package/dist/knowledge/SQLiteKnowledgeBase.d.ts +1 -0
  41. package/dist/knowledge/SQLiteKnowledgeBase.js +31 -3
  42. package/dist/knowledge/SQLiteKnowledgeBase.js.map +1 -1
  43. package/dist/knowledge/TfidfIndex.d.ts +50 -0
  44. package/dist/knowledge/TfidfIndex.js +177 -0
  45. package/dist/knowledge/TfidfIndex.js.map +1 -0
  46. package/dist/skills/SkillDiscovery.js +1 -1
  47. package/dist/skills/SkillDiscovery.js.map +1 -1
  48. package/dist/tools/CommandOutputCompressor.d.ts +28 -0
  49. package/dist/tools/CommandOutputCompressor.js +242 -0
  50. package/dist/tools/CommandOutputCompressor.js.map +1 -0
  51. package/dist/tools/CommandRunLedger.d.ts +77 -0
  52. package/dist/tools/CommandRunLedger.js +111 -0
  53. package/dist/tools/CommandRunLedger.js.map +1 -0
  54. package/dist/tools/index.d.ts +2 -0
  55. package/dist/tools/index.js +2 -0
  56. package/dist/tools/index.js.map +1 -1
  57. package/dist/workflow/EngineeringStandards.js +91 -2
  58. package/dist/workflow/EngineeringStandards.js.map +1 -1
  59. package/dist/workflow/GovernanceTemplatePacks.js +2 -2
  60. package/dist/workflow/GovernanceTemplates.js +93 -92
  61. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  62. package/dist/workflow/TaskLevelDetector.d.ts +41 -0
  63. package/dist/workflow/TaskLevelDetector.js +219 -0
  64. package/dist/workflow/TaskLevelDetector.js.map +1 -0
  65. package/dist/workflow/WorkflowOrchestrator.d.ts +59 -0
  66. package/dist/workflow/WorkflowOrchestrator.js +326 -0
  67. package/dist/workflow/WorkflowOrchestrator.js.map +1 -0
  68. package/dist/workflow/gates/GateSystem.d.ts +23 -6
  69. package/dist/workflow/gates/GateSystem.js +114 -25
  70. package/dist/workflow/gates/GateSystem.js.map +1 -1
  71. package/dist/workflow/gates/MetaGovernanceGates.d.ts +70 -0
  72. package/dist/workflow/gates/MetaGovernanceGates.js +617 -0
  73. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -0
  74. package/dist/workflow/types.d.ts +6 -1
  75. package/docs/README.md +2 -0
  76. package/docs/start/README.md +29 -3
  77. package/docs/start/artifact-lifecycle.md +326 -0
  78. package/docs/start/workflow-upgrade.md +150 -0
  79. package/image/wechat-public.jpg +0 -0
  80. package/image/wxPay.jpg +0 -0
  81. package/image/zfb.jpg +0 -0
  82. package/package.json +10 -9
@@ -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
+ }