@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,207 @@
1
+ // SCALE Engine — Bug Pattern Detector
2
+ // Analyzes Edit operations to auto-detect bug fix patterns.
3
+ // Inspired by OpenWolf's detectFixPattern().
4
+ export class BugPatternDetector {
5
+ detect(oldString, newString, filePath) {
6
+ if (!oldString || !newString)
7
+ return null;
8
+ if (oldString === newString)
9
+ return null;
10
+ // Order matters: more specific patterns first. On tie, first match wins.
11
+ const patterns = [
12
+ { pattern: 'missing-import', check: () => this.checkMissingImport(oldString, newString) },
13
+ { pattern: 'error-handling', check: () => this.checkErrorHandling(oldString, newString) },
14
+ { pattern: 'async-fix', check: () => this.checkAsyncFix(oldString, newString) },
15
+ { pattern: 'operator-fix', check: () => this.checkOperatorFix(oldString, newString) },
16
+ { pattern: 'null-safety', check: () => this.checkNullSafety(oldString, newString) },
17
+ { pattern: 'guard-clause', check: () => this.checkGuardClause(oldString, newString) },
18
+ { pattern: 'type-fix', check: () => this.checkTypeFix(oldString, newString, filePath) },
19
+ { pattern: 'logic-fix', check: () => this.checkLogicFix(oldString, newString) },
20
+ { pattern: 'return-value', check: () => this.checkReturnValue(oldString, newString) },
21
+ { pattern: 'wrong-value', check: () => this.checkWrongValue(oldString, newString) },
22
+ { pattern: 'refactor', check: () => this.checkRefactor(oldString, newString) },
23
+ // wrong-reference is the most generic — checked last
24
+ { pattern: 'wrong-reference', check: () => this.checkWrongReference(oldString, newString) },
25
+ ];
26
+ let best = null;
27
+ for (const p of patterns) {
28
+ const confidence = p.check();
29
+ if (confidence > 0 && (!best || confidence > best.confidence)) {
30
+ best = { pattern: p.pattern, confidence };
31
+ }
32
+ }
33
+ if (!best || best.confidence < 0.3)
34
+ return null;
35
+ return {
36
+ pattern: best.pattern,
37
+ confidence: best.confidence,
38
+ summary: this.summarize(best.pattern, oldString, newString),
39
+ file: filePath,
40
+ oldSnippet: oldString.slice(0, 200),
41
+ newSnippet: newString.slice(0, 200),
42
+ detectedAt: new Date().toISOString(),
43
+ };
44
+ }
45
+ checkErrorHandling(oldStr, newStr) {
46
+ const oldHasCatch = /catch\s*\(/.test(oldStr) || /try\s*\{/.test(oldStr);
47
+ const newHasCatch = /catch\s*\(/.test(newStr) || /try\s*\{/.test(newStr);
48
+ if (!oldHasCatch && newHasCatch)
49
+ return 0.9;
50
+ const oldHasThrow = /throw\s+/.test(oldStr);
51
+ const newHasThrow = /throw\s+/.test(newStr);
52
+ if (!oldHasThrow && newHasThrow)
53
+ return 0.8;
54
+ return 0;
55
+ }
56
+ checkNullSafety(oldStr, newStr) {
57
+ const newHasOptional = /\?\./.test(newStr) && !/\?\./.test(oldStr);
58
+ if (newHasOptional)
59
+ return 0.9;
60
+ const newHasNullish = /\?\?/.test(newStr) && !/\?\?/.test(oldStr);
61
+ if (newHasNullish)
62
+ return 0.8;
63
+ const newHasNullCheck = (/!=\s*null/.test(newStr) || /!==\s*null/.test(newStr) || /!==\s*undefined/.test(newStr)) &&
64
+ !(/!=\s*null/.test(oldStr) || /!==\s*null/.test(oldStr));
65
+ if (newHasNullCheck)
66
+ return 0.7;
67
+ return 0;
68
+ }
69
+ checkGuardClause(oldStr, newStr) {
70
+ // Guard clauses check for null/undefined/empty/invalid at function start
71
+ const guardPattern = /if\s*\(\s*(!?\w+|!?\w+[\?\.\[][^)]*)\s*\)\s*(return|throw)\s+/;
72
+ const newHasGuard = guardPattern.test(newStr) && !guardPattern.test(oldStr);
73
+ if (newHasGuard) {
74
+ // Higher confidence if checking null/undefined/empty
75
+ const isNullCheck = /null|undefined|empty|!/.test(newStr.match(guardPattern)?.[1] || '');
76
+ return isNullCheck ? 0.8 : 0.65;
77
+ }
78
+ return 0;
79
+ }
80
+ checkMissingImport(oldStr, newStr) {
81
+ const oldImports = (oldStr.match(/^import\s+/gm) || []).length;
82
+ const newImports = (newStr.match(/^import\s+/gm) || []).length;
83
+ if (newImports > oldImports)
84
+ return 0.85;
85
+ const newHasRequire = /require\s*\(/.test(newStr) && !/require\s*\(/.test(oldStr);
86
+ if (newHasRequire)
87
+ return 0.7;
88
+ return 0;
89
+ }
90
+ checkAsyncFix(oldStr, newStr) {
91
+ const addedAwait = /\bawait\b/.test(newStr) && !/\bawait\b/.test(oldStr);
92
+ if (addedAwait)
93
+ return 0.85;
94
+ const addedAsync = /\basync\b/.test(newStr) && !/\basync\b/.test(oldStr);
95
+ if (addedAsync)
96
+ return 0.7;
97
+ return 0;
98
+ }
99
+ checkTypeFix(oldStr, newStr, filePath) {
100
+ if (!/\.(ts|tsx)$/.test(filePath))
101
+ return 0;
102
+ const newHasType = /:\s*(string|number|boolean|any|unknown|never|void|Record|Partial|Required|Pick|Omit|Promise|Array)\b/.test(newStr) &&
103
+ !(/:\s*(string|number|boolean|any|unknown|never|void|Record|Partial|Required|Pick|Omit|Promise|Array)\b/.test(oldStr));
104
+ if (newHasType)
105
+ return 0.8;
106
+ const removedAny = /:\s*any\b/.test(oldStr) && !/:\s*any\b/.test(newStr);
107
+ if (removedAny)
108
+ return 0.85;
109
+ return 0;
110
+ }
111
+ checkOperatorFix(oldStr, newStr) {
112
+ const ops = [
113
+ ['===', '=='], ['!==', '!='], ['>=', '>'], ['<=', '<'],
114
+ ];
115
+ for (const [strict, loose] of ops) {
116
+ if (oldStr.includes(loose) && newStr.includes(strict) && !oldStr.includes(strict))
117
+ return 0.9;
118
+ if (oldStr.includes(strict) && newStr.includes(loose) && !oldStr.includes(loose))
119
+ return 0.6;
120
+ }
121
+ return 0;
122
+ }
123
+ checkLogicFix(oldStr, newStr) {
124
+ const oldHasCondition = /if\s*\(|&&|\|\||switch\s*\(/.test(oldStr);
125
+ const newHasCondition = /if\s*\(|&&|\|\||switch\s*\(/.test(newStr);
126
+ if (oldHasCondition && newHasCondition) {
127
+ const oldLines = oldStr.split('\n').filter(l => l.trim());
128
+ const newLines = newStr.split('\n').filter(l => l.trim());
129
+ if (oldLines.length <= 3 && newLines.length <= 3 && oldStr !== newStr)
130
+ return 0.6;
131
+ }
132
+ const flippedAndOr = (oldStr.includes('&&') && newStr.includes('||')) ||
133
+ (oldStr.includes('||') && newStr.includes('&&'));
134
+ if (flippedAndOr)
135
+ return 0.7;
136
+ const negated = (oldStr.includes('!') && !newStr.includes('!')) ||
137
+ (!oldStr.includes('!') && newStr.includes('!'));
138
+ if (negated && oldStr.replace(/!/g, '') === newStr.replace(/!/g, ''))
139
+ return 0.85;
140
+ return 0;
141
+ }
142
+ checkReturnValue(oldStr, newStr) {
143
+ const oldReturn = oldStr.match(/return\s+(.+)/)?.[1]?.trim();
144
+ const newReturn = newStr.match(/return\s+(.+)/)?.[1]?.trim();
145
+ if (oldReturn && newReturn && oldReturn !== newReturn) {
146
+ if (oldStr.split('\n').length <= 3 && newStr.split('\n').length <= 3)
147
+ return 0.7;
148
+ }
149
+ return 0;
150
+ }
151
+ checkWrongValue(oldStr, newStr) {
152
+ const oldLines = oldStr.split('\n').filter(l => l.trim());
153
+ const newLines = newStr.split('\n').filter(l => l.trim());
154
+ if (oldLines.length === 1 && newLines.length === 1 && oldStr !== newStr) {
155
+ const oldStrings = oldStr.match(/["'`][^"'`]+["'`]/g) || [];
156
+ const newStrings = newStr.match(/["'`][^"'`]+["'`]/g) || [];
157
+ if (oldStrings.length > 0 && newStrings.length > 0 && oldStrings[0] !== newStrings[0])
158
+ return 0.75;
159
+ const oldNums = oldStr.match(/\b\d+\b/g) || [];
160
+ const newNums = newStr.match(/\b\d+\b/g) || [];
161
+ if (oldNums.length > 0 && newNums.length > 0 && oldNums[0] !== newNums[0])
162
+ return 0.75;
163
+ }
164
+ return 0;
165
+ }
166
+ checkWrongReference(oldStr, newStr) {
167
+ const oldLines = oldStr.split('\n').filter(l => l.trim());
168
+ const newLines = newStr.split('\n').filter(l => l.trim());
169
+ if (oldLines.length === 1 && newLines.length === 1 && oldStr !== newStr) {
170
+ const oldIdents = oldStr.match(/\b[a-zA-Z_]\w*\b/g) ?? [];
171
+ const newIdents = newStr.match(/\b[a-zA-Z_]\w*\b/g) ?? [];
172
+ const diff = oldIdents.filter(i => !newIdents.includes(i));
173
+ const added = newIdents.filter(i => !oldIdents.includes(i));
174
+ if (diff.length === 1 && added.length === 1)
175
+ return 0.65;
176
+ }
177
+ return 0;
178
+ }
179
+ checkRefactor(oldStr, newStr) {
180
+ const oldLen = oldStr.length;
181
+ const newLen = newStr.length;
182
+ if (oldLen < 30 || newLen < 30)
183
+ return 0;
184
+ const ratio = Math.min(oldLen, newLen) / Math.max(oldLen, newLen);
185
+ if (ratio < 0.6)
186
+ return 0.7;
187
+ return 0;
188
+ }
189
+ summarize(pattern, oldStr, newStr) {
190
+ switch (pattern) {
191
+ case 'error-handling': return 'Added error handling (try/catch or throw)';
192
+ case 'null-safety': return 'Added null/undefined safety checks';
193
+ case 'guard-clause': return 'Added guard clause for early return/throw';
194
+ case 'missing-import': return 'Added missing import/require';
195
+ case 'async-fix': return 'Added async/await';
196
+ case 'type-fix': return 'Improved TypeScript type annotations';
197
+ case 'operator-fix': return 'Fixed comparison operator';
198
+ case 'logic-fix': return 'Fixed logic condition';
199
+ case 'return-value': return 'Changed return value';
200
+ case 'wrong-value': return 'Fixed incorrect value';
201
+ case 'wrong-reference': return 'Fixed incorrect identifier reference';
202
+ case 'refactor': return 'Major refactor (>30% diff)';
203
+ default: return 'Code fix detected';
204
+ }
205
+ }
206
+ }
207
+ //# sourceMappingURL=BugPatternDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BugPatternDetector.js","sourceRoot":"","sources":["../../src/hooks/BugPatternDetector.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  // SCALE Engine - Hook Generator Enhanced (v0.10.0)
2
2
  // Generates JavaScript hooks from rules, templates, and detectors.
3
- import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
3
+ import { writeFileSync, mkdirSync, existsSync, readFileSync } from 'node:fs';
4
4
  import { join } from 'node:path';
5
5
  import { logger } from '../core/logger.js';
6
6
  // ============================================================================
@@ -135,6 +135,302 @@ const BUILTIN_TEMPLATES = [
135
135
  description: 'Remind AI of the next workflow step when stopping',
136
136
  templateBody: String.raw `const fs = require("fs"); const path = require("path"); const scaleDir = process.env.SCALE_DIR || ".scale"; const phases = ["DEFINE", "PLAN", "EXECUTE", "VERIFY", "REVIEW", "SHIP"]; const phaseMap = {DEFINE:"define",PLAN:"plan",EXECUTE:"build",VERIFY:"verify",REVIEW:"review",SHIP:"ship"}; const missing = []; for (const phase of phases) { const marker = path.join(scaleDir, "phases", ".phase-" + phase.toLowerCase()); if (!fs.existsSync(marker)) { missing.push(phase); } } const stateFile = path.join(scaleDir, "state", "explore.json"); const hasExplore = fs.existsSync(stateFile); if (missing.length > 0) { const next = missing[0]; const cmd = phaseMap[next] || next.toLowerCase(); console.log("[NEXT] Remaining: " + missing.join(" -> ")); console.log("[NEXT] Next step: scale " + cmd); } else { console.log("[DONE] All phases complete"); } process.exit(0);`,
137
137
  variables: []
138
+ },
139
+ // ========== Anatomy Hooks (OpenWolf-inspired) ==========
140
+ {
141
+ id: 'tmpl-anatomy-pre-read',
142
+ name: 'Anatomy Pre-Read',
143
+ hookType: 'PreToolUse',
144
+ matcherPattern: 'Read',
145
+ description: 'Look up file description from anatomy.md before Claude reads it',
146
+ templateBody: String.raw `
147
+ const fs = require("fs");
148
+ const path = require("path");
149
+ const scaleDir = process.env.SCALE_DIR || ".scale";
150
+ const input = JSON.parse(process.argv[2] || "{}");
151
+ const filePath = input.tool_input?.file_path || input.tool_input?.path || "";
152
+ if (!filePath) { console.log("[PASS]"); process.exit(0); }
153
+ const anatomyPath = path.join(scaleDir, "anatomy.md");
154
+ if (!fs.existsSync(anatomyPath)) { console.log("[PASS]"); process.exit(0); }
155
+ try {
156
+ const content = fs.readFileSync(anatomyPath, "utf-8");
157
+ const basename = path.basename(filePath);
158
+ const lines = content.split("\n");
159
+ for (const line of lines) {
160
+ if (!line.startsWith("- ")) continue;
161
+ if (line.indexOf(basename) === -1) continue;
162
+ var tokMatch = line.match(/\(~(\d+)\s+tok\)/);
163
+ var tokens = tokMatch ? tokMatch[1] : "?";
164
+ var descPart = line.split(" - ")[1];
165
+ var desc = descPart ? descPart.split("(")[0].trim() : "no description";
166
+ console.error("[ANATOMY] " + basename + " - " + desc + " (~" + tokens + " tok)");
167
+ break;
168
+ }
169
+ } catch (error) {
170
+ console.error("[ANATOMY] Lookup skipped: " + (error && error.message ? error.message : String(error)));
171
+ }
172
+ console.log("[PASS]");
173
+ process.exit(0);`,
174
+ variables: []
175
+ },
176
+ {
177
+ id: 'tmpl-anatomy-post-write',
178
+ name: 'Anatomy Post-Write',
179
+ hookType: 'PostToolUse',
180
+ matcherPattern: 'Write|Edit',
181
+ description: 'Update anatomy.md after file write/edit',
182
+ templateBody: String.raw `
183
+ const fs = require("fs");
184
+ const path = require("path");
185
+ const scaleDir = process.env.SCALE_DIR || ".scale";
186
+ const projectDir = process.env.SCALE_PROJECT_DIR || process.cwd();
187
+ const input = JSON.parse(process.argv[2] || "{}");
188
+ const filePath = input.tool_input?.file_path || input.tool_input?.path || "";
189
+ if (!filePath) { console.log("[PASS]"); process.exit(0); }
190
+ const baseName = path.basename(filePath);
191
+ if (baseName === ".env" || baseName.startsWith(".env.")) { console.log("[PASS]"); process.exit(0); }
192
+ if (filePath.includes(scaleDir)) { console.log("[PASS]"); process.exit(0); }
193
+ try {
194
+ const content = input.tool_input?.content || input.tool_input?.new_string || "";
195
+ if (!content) { console.log("[PASS]"); process.exit(0); }
196
+ const tokens = Math.ceil(content.length / 4);
197
+ const relPath = path.relative(projectDir, filePath).replace(/\\\\/g, "/");
198
+ const dir = path.dirname(relPath);
199
+ const sectionKey = dir === "." ? "./" : dir + "/";
200
+ console.log("[ANATOMY-UPDATE] " + relPath + " (~" + tokens + " tok)");
201
+ } catch (error) {
202
+ console.error("[ANATOMY-UPDATE] Skipped: " + (error && error.message ? error.message : String(error)));
203
+ }
204
+ console.log("[PASS]");
205
+ process.exit(0);`,
206
+ variables: []
207
+ },
208
+ {
209
+ id: 'tmpl-anatomy-session-start',
210
+ name: 'Anatomy Session Start',
211
+ hookType: 'SessionStart',
212
+ matcherPattern: '',
213
+ description: 'Show project overview from anatomy.md at session start',
214
+ templateBody: String.raw `
215
+ const fs = require("fs");
216
+ const path = require("path");
217
+ const scaleDir = process.env.SCALE_DIR || ".scale";
218
+ const anatomyPath = path.join(scaleDir, "anatomy.md");
219
+ if (!fs.existsSync(anatomyPath)) { console.log("[PASS]"); process.exit(0); }
220
+ try {
221
+ const content = fs.readFileSync(anatomyPath, "utf-8");
222
+ const header = content.match(/> Files: (\d+) \| Total: ~([\d,]+) tokens/);
223
+ if (header) {
224
+ console.error("[ANATOMY] Project map: " + header[1] + " files, ~" + header[2] + " tokens");
225
+ }
226
+ const age = (Date.now() - fs.statSync(anatomyPath).mtimeMs) / (1000 * 60 * 60 * 24);
227
+ if (age > 7) {
228
+ console.error("[ANATOMY] anatomy.md is " + Math.floor(age) + " days old. Consider: scale scan");
229
+ }
230
+ } catch (error) {
231
+ console.error("[ANATOMY] Session summary skipped: " + (error && error.message ? error.message : String(error)));
232
+ }
233
+ console.log("[PASS]");
234
+ process.exit(0);`,
235
+ variables: []
236
+ },
237
+ // ========== Cerebrum Pre-Write Check ==========
238
+ {
239
+ id: 'tmpl-cerebrum-pre-write',
240
+ name: 'Cerebrum Pre-Write Check',
241
+ hookType: 'PreToolUse',
242
+ matcherPattern: 'Write|Edit',
243
+ description: 'Check Do-Not-Repeat rules before writing code',
244
+ templateBody: String.raw `
245
+ const fs = require("fs");
246
+ const path = require("path");
247
+ const input = JSON.parse(process.argv[2] || "{}");
248
+ const content = input.tool_input?.content || input.tool_input?.new_string || "";
249
+ if (!content) { console.log("[PASS]"); process.exit(0); }
250
+ const scaleDir = process.env.SCALE_DIR || ".scale";
251
+ const cerebrumPath = path.join(scaleDir, "cerebrum.md");
252
+ if (!fs.existsSync(cerebrumPath)) { console.log("[PASS]"); process.exit(0); }
253
+ try {
254
+ const cerebrum = fs.readFileSync(cerebrumPath, "utf-8");
255
+ const dnrSection = cerebrum.split("## Do Not Repeat")[1]?.split("## ")[0] || "";
256
+ const rules = dnrSection.match(/- \*\*(.+?)\*\*\s+-\s+(.+)/g) || [];
257
+ const contentLower = content.toLowerCase();
258
+ for (const rule of rules) {
259
+ const m = rule.match(/- \*\*(.+?)\*\*\s+-\s+(.+)/);
260
+ if (!m) continue;
261
+ const pattern = m[1].toLowerCase();
262
+ const desc = m[2];
263
+ const words = pattern.split(/\s+/).filter(w => w.length > 2);
264
+ const hits = words.filter(w => contentLower.includes(w));
265
+ if (hits.length > 0 && hits.length >= Math.ceil(words.length * 0.4)) {
266
+ console.error("[CEREBRUM] Do-Not-Repeat: \"" + m[1] + "\" - " + desc);
267
+ }
268
+ }
269
+ } catch (error) {
270
+ console.error("[CEREBRUM] Check skipped: " + (error && error.message ? error.message : String(error)));
271
+ }
272
+ console.log("[PASS]");
273
+ process.exit(0);`,
274
+ variables: []
275
+ },
276
+ // ========== Cerebrum Session Start ==========
277
+ {
278
+ id: 'tmpl-cerebrum-session-start',
279
+ name: 'Cerebrum Session Start',
280
+ hookType: 'SessionStart',
281
+ matcherPattern: '',
282
+ description: 'Show cerebrum status at session start',
283
+ templateBody: String.raw `
284
+ const fs = require("fs");
285
+ const path = require("path");
286
+ const scaleDir = process.env.SCALE_DIR || ".scale";
287
+ const cerebrumPath = path.join(scaleDir, "cerebrum.md");
288
+ if (!fs.existsSync(cerebrumPath)) { console.log("[PASS]"); process.exit(0); }
289
+ try {
290
+ const content = fs.readFileSync(cerebrumPath, "utf-8");
291
+ const dnrCount = (content.match(/- \*\*.+?\*\*/g) || []).length;
292
+ const prefCount = (content.match(/^- [^-]/gm) || []).length - dnrCount;
293
+ console.error("[CEREBRUM] " + dnrCount + " do-not-repeat rules, preferences loaded");
294
+ const age = (Date.now() - fs.statSync(cerebrumPath).mtimeMs) / (1000 * 60 * 60 * 24);
295
+ if (age > 14) {
296
+ console.error("[CEREBRUM] cerebrum.md is " + Math.floor(age) + " days old. Learning may be stale.");
297
+ }
298
+ } catch (error) {
299
+ console.error("[CEREBRUM] Session summary skipped: " + (error && error.message ? error.message : String(error)));
300
+ }
301
+ console.log("[PASS]");
302
+ process.exit(0);`,
303
+ variables: []
304
+ },
305
+ // ========== Bug Capture (PostToolUse Edit) ==========
306
+ {
307
+ id: 'tmpl-bug-capture',
308
+ name: 'Bug Pattern Capture',
309
+ hookType: 'PostToolUse',
310
+ matcherPattern: 'Edit',
311
+ description: 'Auto-detect bug fix patterns from Edit operations and log to buglog.json',
312
+ templateBody: String.raw `
313
+ const fs = require("fs");
314
+ const path = require("path");
315
+ const input = JSON.parse(process.argv[2] || "{}");
316
+ const oldStr = input.tool_input?.old_string || "";
317
+ const newStr = input.tool_input?.new_string || "";
318
+ const filePath = input.tool_input?.file_path || "";
319
+ if (!oldStr || !newStr || oldStr === newStr) { console.log("[PASS]"); process.exit(0); }
320
+
321
+ function detectPattern(old, nw) {
322
+ if (/catch\s*\(/.test(nw) && !/catch\s*\(/.test(old)) return "error-handling";
323
+ if (/\?\./.test(nw) && !/\?\./.test(old)) return "null-safety";
324
+ if (/\?\?/.test(nw) && !/\?\?/.test(old)) return "null-safety";
325
+ if (/if\s*\([^)]+\)\s*(return|throw)/.test(nw) && !/if\s*\([^)]+\)\s*(return|throw)/.test(old)) return "guard-clause";
326
+ if (/^import\s+/m.test(nw) && !/^import\s+/m.test(old)) return "missing-import";
327
+ if (/\bawait\b/.test(nw) && !/\bawait\b/.test(old)) return "async-fix";
328
+ if (/===/.test(nw) && /==[^=]/.test(old) && !/===/.test(old)) return "operator-fix";
329
+ if (/!==/.test(nw) && /!=[^=]/.test(old) && !/!==/.test(old)) return "operator-fix";
330
+ if (/:\s*(string|number|boolean|any)\b/.test(nw) && !/:\s*(string|number|boolean|any)\b/.test(old) && /\.(ts|tsx)$/.test(filePath)) return "type-fix";
331
+ if (old.split("\n").length === 1 && nw.split("\n").length === 1) {
332
+ var oldIds = (old.match(/\b[a-zA-Z_]\w*\b/g) || []);
333
+ var newIds = (nw.match(/\b[a-zA-Z_]\w*\b/g) || []);
334
+ var diff = oldIds.filter(function(i) { return newIds.indexOf(i) < 0; });
335
+ var added = newIds.filter(function(i) { return oldIds.indexOf(i) < 0; });
336
+ if (diff.length === 1 && added.length === 1) return "wrong-reference";
337
+ }
338
+ return null;
339
+ }
340
+
341
+ var pattern = detectPattern(oldStr, newStr);
342
+ if (!pattern) { console.log("[PASS]"); process.exit(0); }
343
+
344
+ var scaleDir = process.env.SCALE_DIR || ".scale";
345
+ var buglogPath = path.join(scaleDir, "buglog.json");
346
+ try {
347
+ var buglog = { version: 1, bugs: [] };
348
+ if (fs.existsSync(buglogPath)) {
349
+ buglog = JSON.parse(fs.readFileSync(buglogPath, "utf-8"));
350
+ }
351
+ var existing = buglog.bugs.find(function(b) { return b.file === filePath && b.pattern === pattern; });
352
+ if (existing) {
353
+ existing.occurrences = (existing.occurrences || 1) + 1;
354
+ existing.timestamp = new Date().toISOString();
355
+ } else {
356
+ buglog.bugs.push({
357
+ id: "bug-" + String(buglog.bugs.length + 1).padStart(3, "0"),
358
+ timestamp: new Date().toISOString(),
359
+ file: filePath,
360
+ pattern: pattern,
361
+ oldSnippet: oldStr.slice(0, 200),
362
+ newSnippet: newStr.slice(0, 200),
363
+ tags: ["auto-detected", pattern],
364
+ occurrences: 1
365
+ });
366
+ }
367
+ fs.mkdirSync(scaleDir, { recursive: true });
368
+ fs.writeFileSync(buglogPath, JSON.stringify(buglog, null, 2));
369
+ console.error("[BUG-CAPTURE] Detected " + pattern + " fix in " + path.basename(filePath));
370
+ } catch (e) {
371
+ console.error("[BUG-CAPTURE] Failed to log: " + e.message);
372
+ }
373
+ console.log("[PASS]");
374
+ process.exit(0);`,
375
+ variables: []
376
+ },
377
+ // ========== Bug Recall (PreToolUse Edit) ==========
378
+ {
379
+ id: 'tmpl-bug-recall',
380
+ name: 'Bug Recall Before Edit',
381
+ hookType: 'PreToolUse',
382
+ matcherPattern: 'Edit',
383
+ description: 'Check buglog.json for past bugs in the same file before editing',
384
+ templateBody: String.raw `
385
+ const fs = require("fs");
386
+ const path = require("path");
387
+ const input = JSON.parse(process.argv[2] || "{}");
388
+ const filePath = input.tool_input?.file_path || "";
389
+ if (!filePath) { console.log("[PASS]"); process.exit(0); }
390
+ const scaleDir = process.env.SCALE_DIR || ".scale";
391
+ const buglogPath = path.join(scaleDir, "buglog.json");
392
+ if (!fs.existsSync(buglogPath)) { console.log("[PASS]"); process.exit(0); }
393
+ try {
394
+ const buglog = JSON.parse(fs.readFileSync(buglogPath, "utf-8"));
395
+ const fileBugs = buglog.bugs.filter(b => b.file === filePath || b.file.endsWith(path.basename(filePath)));
396
+ if (fileBugs.length > 0) {
397
+ const summary = fileBugs.slice(0, 3).map(b => b.pattern + " (" + (b.timestamp || "").slice(0, 10) + ")").join(", ");
398
+ console.error("[BUG-RECALL] " + fileBugs.length + " past bugs in " + path.basename(filePath) + ": " + summary);
399
+ }
400
+ } catch (error) {
401
+ console.error("[BUG-RECALL] Skipped: " + (error && error.message ? error.message : String(error)));
402
+ }
403
+ console.log("[PASS]");
404
+ process.exit(0);`,
405
+ variables: []
406
+ },
407
+ // ========== Document Standards Check (G8) ==========
408
+ {
409
+ id: 'tmpl-doc-standards-check',
410
+ name: 'Document Standards Check (G8)',
411
+ hookType: 'PostToolUse',
412
+ matcherPattern: 'Write|Edit',
413
+ description: 'Check markdown files comply with DOCUMENT_STANDARDS.md',
414
+ templateBody: String.raw `
415
+ const input = JSON.parse(process.argv[2] || "{}");
416
+ const filePath = input.tool_input?.file_path || "";
417
+ if (!filePath.endsWith(".md")) { console.log("[PASS]"); process.exit(0); }
418
+ const content = input.tool_input?.content || "";
419
+ const issues = [];
420
+ // Check version header
421
+ if (!content.includes("Version:")) { issues.push("Missing version header"); }
422
+ // Check localhost links
423
+ if (/localhost[:\\/]/.test(content)) { issues.push("Contains localhost links"); }
424
+ // Check hardcoded secrets
425
+ if (/(password|secret|token|api_key)\\s*[:=]\\s*['"][^'"]{8,}/i.test(content)) { issues.push("Possible hardcoded secret"); }
426
+ // Check code blocks without language
427
+ const codeBlockPattern = /\`\`\`\\s*$/gm;
428
+ const matches = content.match(codeBlockPattern);
429
+ if (matches && matches.length > 0) { issues.push("Code blocks without language annotation"); }
430
+ if (issues.length > 0) { console.error("[WARN] G8-DocStandards: " + issues.join("; ")); }
431
+ console.log("[PASS]");
432
+ process.exit(0);`,
433
+ variables: []
138
434
  }
139
435
  ];
140
436
  // ============================================================================
@@ -157,7 +453,7 @@ export class HookGeneratorEnhanced {
157
453
  return null;
158
454
  mkdirSync(hooksDir, { recursive: true });
159
455
  const hookId = 'HOOK-' + Date.now() + '-' + rule.id;
160
- const scriptPath = join(hooksDir, hookId + '.mjs');
456
+ const scriptPath = join(hooksDir, hookId + '.cjs');
161
457
  const variables = this.extractVariablesFromRule(rule);
162
458
  const hookContent = suitableTemplate
163
459
  ? this.renderTemplate(suitableTemplate, variables)
@@ -184,7 +480,7 @@ export class HookGeneratorEnhanced {
184
480
  generateFromTemplate(template, variables, hooksDir) {
185
481
  mkdirSync(hooksDir, { recursive: true });
186
482
  const hookId = 'HOOK-' + Date.now() + '-' + template.id;
187
- const scriptPath = join(hooksDir, hookId + '.mjs');
483
+ const scriptPath = join(hooksDir, hookId + '.cjs');
188
484
  const hookContent = this.renderTemplate(template, variables);
189
485
  writeFileSync(scriptPath, hookContent, 'utf-8');
190
486
  const hook = {
@@ -207,7 +503,7 @@ export class HookGeneratorEnhanced {
207
503
  generateFromDetector(detectorType, pattern, hooksDir) {
208
504
  mkdirSync(hooksDir, { recursive: true });
209
505
  const hookId = 'HOOK-' + Date.now() + '-detector-' + detectorType;
210
- const scriptPath = join(hooksDir, hookId + '.mjs');
506
+ const scriptPath = join(hooksDir, hookId + '.cjs');
211
507
  const hookContent = this.generateDetectorHook(detectorType, pattern);
212
508
  writeFileSync(scriptPath, hookContent, 'utf-8');
213
509
  const hook = {
@@ -237,7 +533,7 @@ export class HookGeneratorEnhanced {
237
533
  return { valid: false, errors: ['Hook file does not exist'] };
238
534
  const errors = [];
239
535
  try {
240
- const content = require('fs').readFileSync(hookPath, 'utf-8');
536
+ const content = readFileSync(hookPath, 'utf-8');
241
537
  if (!content.includes('process.exit'))
242
538
  errors.push('Hook must call process.exit()');
243
539
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"HookGeneratorEnhanced.js","sourceRoot":"","sources":["../../src/hooks/HookGeneratorEnhanced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HookGeneratorEnhanced.js","sourceRoot":"","sources":["../../src/hooks/HookGeneratorEnhanced.ts"],"names":[],"mappings":"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"}