specweave 1.0.570 → 1.0.572

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 (61) hide show
  1. package/bin/specweave.js +36 -2
  2. package/dist/src/cli/commands/hooks-cmd.d.ts +27 -0
  3. package/dist/src/cli/commands/hooks-cmd.d.ts.map +1 -0
  4. package/dist/src/cli/commands/hooks-cmd.js +145 -0
  5. package/dist/src/cli/commands/hooks-cmd.js.map +1 -0
  6. package/dist/src/cli/helpers/init/smart-defaults.d.ts.map +1 -1
  7. package/dist/src/cli/helpers/init/smart-defaults.js +0 -6
  8. package/dist/src/cli/helpers/init/smart-defaults.js.map +1 -1
  9. package/dist/src/core/doctor/checkers/hooks-checker.js +2 -2
  10. package/dist/src/core/doctor/checkers/hooks-checker.js.map +1 -1
  11. package/dist/src/core/doctor/doctor.js +1 -1
  12. package/dist/src/core/doctor/doctor.js.map +1 -1
  13. package/dist/src/core/hooks/handlers/hook-router.d.ts.map +1 -1
  14. package/dist/src/core/hooks/handlers/hook-router.js +34 -2
  15. package/dist/src/core/hooks/handlers/hook-router.js.map +1 -1
  16. package/dist/src/core/hooks/handlers/utils.d.ts +2 -1
  17. package/dist/src/core/hooks/handlers/utils.d.ts.map +1 -1
  18. package/dist/src/core/hooks/handlers/utils.js +14 -1
  19. package/dist/src/core/hooks/handlers/utils.js.map +1 -1
  20. package/dist/src/core/hooks/hook-health-tracker.js +2 -2
  21. package/dist/src/core/hooks/hook-health-tracker.js.map +1 -1
  22. package/dist/src/core/hooks/hook-logger.d.ts +1 -1
  23. package/dist/src/core/hooks/hook-logger.js +1 -1
  24. package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
  25. package/dist/src/core/increment/completion-validator.js +60 -0
  26. package/dist/src/core/increment/completion-validator.js.map +1 -1
  27. package/dist/src/core/increment/template-creator.d.ts.map +1 -1
  28. package/dist/src/core/increment/template-creator.js +19 -0
  29. package/dist/src/core/increment/template-creator.js.map +1 -1
  30. package/dist/src/core/rubric/index.d.ts +6 -0
  31. package/dist/src/core/rubric/index.d.ts.map +1 -0
  32. package/dist/src/core/rubric/index.js +6 -0
  33. package/dist/src/core/rubric/index.js.map +1 -0
  34. package/dist/src/core/rubric/rubric-evaluator.d.ts +17 -0
  35. package/dist/src/core/rubric/rubric-evaluator.d.ts.map +1 -0
  36. package/dist/src/core/rubric/rubric-evaluator.js +141 -0
  37. package/dist/src/core/rubric/rubric-evaluator.js.map +1 -0
  38. package/dist/src/core/rubric/rubric-generator.d.ts +13 -0
  39. package/dist/src/core/rubric/rubric-generator.d.ts.map +1 -0
  40. package/dist/src/core/rubric/rubric-generator.js +126 -0
  41. package/dist/src/core/rubric/rubric-generator.js.map +1 -0
  42. package/dist/src/core/rubric/rubric-merger.d.ts +14 -0
  43. package/dist/src/core/rubric/rubric-merger.d.ts.map +1 -0
  44. package/dist/src/core/rubric/rubric-merger.js +78 -0
  45. package/dist/src/core/rubric/rubric-merger.js.map +1 -0
  46. package/dist/src/core/rubric/rubric-parser.d.ts +10 -0
  47. package/dist/src/core/rubric/rubric-parser.d.ts.map +1 -0
  48. package/dist/src/core/rubric/rubric-parser.js +172 -0
  49. package/dist/src/core/rubric/rubric-parser.js.map +1 -0
  50. package/dist/src/core/rubric/types.d.ts +74 -0
  51. package/dist/src/core/rubric/types.d.ts.map +1 -0
  52. package/dist/src/core/rubric/types.js +16 -0
  53. package/dist/src/core/rubric/types.js.map +1 -0
  54. package/package.json +2 -2
  55. package/plugins/specweave/agents/sw-planner.md +22 -0
  56. package/plugins/specweave/defaults/rubric-defaults.md +53 -0
  57. package/plugins/specweave/skills/auto/SKILL.md +0 -1
  58. package/plugins/specweave/skills/code-reviewer/SKILL.md +5 -0
  59. package/plugins/specweave/skills/done/SKILL.md +2 -0
  60. package/plugins/specweave/skills/grill/SKILL.md +6 -0
  61. package/plugins/specweave/skills/judge-llm/SKILL.md +7 -0
package/bin/specweave.js CHANGED
@@ -1606,8 +1606,8 @@ program
1606
1606
  await dashboardCommand(options);
1607
1607
  });
1608
1608
 
1609
- // Hooks command - Manage HTTP hook system
1610
- const hooksCmd = program.command('hooks').description('Manage HTTP hook system');
1609
+ // Hooks command - Hook observability and management
1610
+ const hooksCmd = program.command('hooks').description('Hook observability and management');
1611
1611
 
1612
1612
  hooksCmd
1613
1613
  .command('status')
@@ -1628,6 +1628,40 @@ hooksCmd
1628
1628
  console.log('Hooks settings written to .claude/settings.json');
1629
1629
  });
1630
1630
 
1631
+ hooksCmd
1632
+ .command('log')
1633
+ .description('View recent hook events')
1634
+ .option('--last <number>', 'Number of entries to show (default: 20)', '20')
1635
+ .option('--blocks-only', 'Show only block decisions')
1636
+ .option('--errors-only', 'Show only error entries')
1637
+ .option('--hook <name>', 'Filter by hook name')
1638
+ .action(async (options) => {
1639
+ const { hooksLogCommand } = await import('../dist/src/cli/commands/hooks-cmd.js');
1640
+ await hooksLogCommand({
1641
+ last: parseInt(options.last, 10),
1642
+ blocksOnly: options.blocksOnly,
1643
+ errorsOnly: options.errorsOnly,
1644
+ hook: options.hook,
1645
+ });
1646
+ });
1647
+
1648
+ hooksCmd
1649
+ .command('health')
1650
+ .description('Show hook health summary')
1651
+ .option('--json', 'Output as JSON')
1652
+ .action(async (options) => {
1653
+ const { hooksHealthCommand } = await import('../dist/src/cli/commands/hooks-cmd.js');
1654
+ await hooksHealthCommand({ format: options.json ? 'json' : 'console' });
1655
+ });
1656
+
1657
+ hooksCmd
1658
+ .command('ls')
1659
+ .description('List registered hooks')
1660
+ .action(async () => {
1661
+ const { hooksLsCommand } = await import('../dist/src/cli/commands/hooks-cmd.js');
1662
+ await hooksLsCommand();
1663
+ });
1664
+
1631
1665
  // Get command - Clone and register an existing repository into the workspace
1632
1666
  program
1633
1667
  .command('get <source>')
@@ -0,0 +1,27 @@
1
+ /**
2
+ * CLI commands for hook observability: log, health, ls.
3
+ *
4
+ * @module cli/commands/hooks-cmd
5
+ */
6
+ export interface HooksLogOptions {
7
+ last?: number;
8
+ blocksOnly?: boolean;
9
+ errorsOnly?: boolean;
10
+ hook?: string;
11
+ }
12
+ /**
13
+ * `specweave hooks log` — show recent hook events.
14
+ */
15
+ export declare function hooksLogCommand(options?: HooksLogOptions): Promise<void>;
16
+ export interface HooksHealthOptions {
17
+ format?: 'console' | 'json';
18
+ }
19
+ /**
20
+ * `specweave hooks health` — show hook health summary.
21
+ */
22
+ export declare function hooksHealthCommand(options?: HooksHealthOptions): Promise<void>;
23
+ /**
24
+ * `specweave hooks ls` — list registered hooks.
25
+ */
26
+ export declare function hooksLsCommand(): Promise<void>;
27
+ //# sourceMappingURL=hooks-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-cmd.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/hooks-cmd.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DlF;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CxF;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCpD"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * CLI commands for hook observability: log, health, ls.
3
+ *
4
+ * @module cli/commands/hooks-cmd
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { HookLogger } from '../../core/hooks/hook-logger.js';
9
+ import { HookHealthTracker } from '../../core/hooks/hook-health-tracker.js';
10
+ import { HookScanner } from '../../core/hooks/HookScanner.js';
11
+ function resolveLogsDir(cwd) {
12
+ return path.join(cwd, '.specweave', 'logs', 'hooks');
13
+ }
14
+ /**
15
+ * `specweave hooks log` — show recent hook events.
16
+ */
17
+ export async function hooksLogCommand(options = {}) {
18
+ const logsDir = resolveLogsDir(process.cwd());
19
+ const logger = new HookLogger(logsDir);
20
+ const limit = options.last ?? 20;
21
+ const hookNames = options.hook ? [options.hook] : await logger.listHooks();
22
+ if (hookNames.length === 0) {
23
+ console.log('No hook logs found. Hooks will be logged after they execute.');
24
+ return;
25
+ }
26
+ let allEntries = [];
27
+ for (const hookName of hookNames) {
28
+ const entries = await logger.readLogs(hookName, 200);
29
+ for (const entry of entries) {
30
+ allEntries.push({ ...entry, hookName: entry.hookName || hookName });
31
+ }
32
+ }
33
+ // Sort by timestamp descending
34
+ allEntries.sort((a, b) => {
35
+ const ta = String(a.timestamp ?? '');
36
+ const tb = String(b.timestamp ?? '');
37
+ return tb.localeCompare(ta);
38
+ });
39
+ // Apply filters
40
+ if (options.blocksOnly) {
41
+ allEntries = allEntries.filter((e) => e.status === 'warning' || (typeof e.error === 'string' && e.error.includes('[GUARD]')));
42
+ }
43
+ if (options.errorsOnly) {
44
+ allEntries = allEntries.filter((e) => e.status === 'error' || (typeof e.error === 'string' && e.error.includes('[ERROR]')));
45
+ }
46
+ // Limit
47
+ allEntries = allEntries.slice(0, limit);
48
+ if (allEntries.length === 0) {
49
+ console.log('No matching hook events found.');
50
+ return;
51
+ }
52
+ // Format as table
53
+ console.log(`Hook Log (last ${allEntries.length} entries):`);
54
+ console.log('─'.repeat(80));
55
+ for (const entry of allEntries) {
56
+ const ts = String(entry.timestamp ?? '').slice(11, 19) || '??:??:??';
57
+ const hook = String(entry.hookName ?? 'unknown').padEnd(20);
58
+ const status = String(entry.status ?? 'unknown');
59
+ const icon = status === 'success' ? '✅' : status === 'warning' ? '🛡️' : status === 'error' ? '❌' : '❓';
60
+ const dur = entry.duration != null ? `${entry.duration}ms` : '';
61
+ const reason = entry.error ? ` ${String(entry.error).slice(0, 60)}` : '';
62
+ console.log(` ${ts} ${icon} ${hook} ${status.padEnd(8)} ${dur.padStart(6)}${reason}`);
63
+ }
64
+ }
65
+ /**
66
+ * `specweave hooks health` — show hook health summary.
67
+ */
68
+ export async function hooksHealthCommand(options = {}) {
69
+ const logsDir = resolveLogsDir(process.cwd());
70
+ const logger = new HookLogger(logsDir);
71
+ const tracker = new HookHealthTracker();
72
+ const hookNames = await logger.listHooks();
73
+ if (hookNames.length === 0) {
74
+ console.log('No hook data available. Run some hooks first, then check health.');
75
+ return;
76
+ }
77
+ // Build Map<hookName, entries[]> for the tracker
78
+ const hooksMap = new Map();
79
+ for (const hookName of hookNames) {
80
+ const entries = await logger.readLogs(hookName, 200);
81
+ hooksMap.set(hookName, entries);
82
+ }
83
+ const healthResults = tracker.analyzeAll(hooksMap);
84
+ if (options.format === 'json') {
85
+ console.log(JSON.stringify(healthResults, null, 2));
86
+ return;
87
+ }
88
+ // Console format using HealthReporter pattern
89
+ console.log('Hook Health Report:');
90
+ console.log('═'.repeat(60));
91
+ for (const health of healthResults) {
92
+ const icon = health.status === 'OK' ? '✅' : health.status === 'DEGRADED' ? '⚠️' : health.status === 'FAILED' ? '❌' : '❓';
93
+ console.log(` ${icon} ${String(health.hookName).padEnd(25)} ${health.status}`);
94
+ if (health.successRate != null) {
95
+ console.log(` Success rate: ${(health.successRate * 100).toFixed(0)}%`);
96
+ }
97
+ if (health.recommendations && health.recommendations.length > 0) {
98
+ for (const rec of health.recommendations) {
99
+ console.log(` → ${rec}`);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * `specweave hooks ls` — list registered hooks.
106
+ */
107
+ export async function hooksLsCommand() {
108
+ const cwd = process.cwd();
109
+ const pluginsDir = path.join(cwd, 'plugins');
110
+ const pluginDirs = [];
111
+ if (fs.existsSync(pluginsDir)) {
112
+ for (const entry of fs.readdirSync(pluginsDir)) {
113
+ const full = path.join(pluginsDir, entry);
114
+ if (fs.statSync(full).isDirectory())
115
+ pluginDirs.push(full);
116
+ }
117
+ }
118
+ const scanner = new HookScanner({ projectRoot: cwd, pluginDirs, includeNonTestable: true });
119
+ const hooks = await scanner.scanHooks();
120
+ if (!hooks || hooks.length === 0) {
121
+ console.log('No hooks registered. Install a plugin with hooks to get started.');
122
+ return;
123
+ }
124
+ // Group by trigger type
125
+ const grouped = {};
126
+ for (const hook of hooks) {
127
+ const trigger = hook.trigger || 'unknown';
128
+ if (!grouped[trigger])
129
+ grouped[trigger] = [];
130
+ grouped[trigger].push(hook);
131
+ }
132
+ console.log('Registered Hooks:');
133
+ console.log('═'.repeat(70));
134
+ for (const [trigger, hookList] of Object.entries(grouped)) {
135
+ console.log(`\n┌─ ${trigger} ${'─'.repeat(Math.max(0, 65 - trigger.length))}┐`);
136
+ for (const hook of hookList) {
137
+ const name = String(hook.name || 'unnamed').padEnd(30);
138
+ const plugin = String(hook.plugin || 'core').padEnd(15);
139
+ const critical = hook.critical ? '⚡' : ' ';
140
+ console.log(`│ ${critical} ${name} ${plugin} │`);
141
+ }
142
+ console.log(`└${'─'.repeat(68)}┘`);
143
+ }
144
+ }
145
+ //# sourceMappingURL=hooks-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-cmd.js","sourceRoot":"","sources":["../../../../src/cli/commands/hooks-cmd.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"smart-defaults.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/smart-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA8FrB"}
1
+ {"version":3,"file":"smart-defaults.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/smart-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAwFrB"}
@@ -32,18 +32,12 @@ export function applySmartDefaults(config, options) {
32
32
  ...config.qualityGates,
33
33
  };
34
34
  // Deep interview: default to off (init-time, quick setup)
35
- // Increment interview: default to ON (where planning value is highest)
36
35
  config.planning = {
37
36
  ...config.planning,
38
37
  deepInterview: {
39
38
  enabled: false,
40
39
  ...config.planning?.deepInterview,
41
40
  },
42
- incrementInterview: {
43
- enabled: true,
44
- minQuestions: 3,
45
- ...config.planning?.incrementInterview,
46
- },
47
41
  };
48
42
  // LSP: auto-enable for Claude
49
43
  if (options.adapter === 'claude') {
@@ -1 +1 @@
1
- {"version":3,"file":"smart-defaults.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/smart-defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-defaults.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/smart-defaults.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ export class HooksChecker {
38
38
  name: 'Hooks summary',
39
39
  status: 'fail',
40
40
  message: `${failedHooks}/${totalHooks} hooks failing`,
41
- fixSuggestion: 'Run: specweave check-hooks --fix',
41
+ fixSuggestion: 'Run: specweave hooks health',
42
42
  });
43
43
  }
44
44
  else if (totalHooks > 0) {
@@ -159,7 +159,7 @@ export class HooksChecker {
159
159
  status: 'warn',
160
160
  message: 'execution test failed',
161
161
  durationMs: Date.now() - start,
162
- fixSuggestion: 'Run: specweave check-hooks for detailed analysis',
162
+ fixSuggestion: 'Run: specweave hooks health for detailed analysis',
163
163
  };
164
164
  }
165
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-checker.js","sourceRoot":"","sources":["../../../../../src/core/doctor/checkers/hooks-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks-checker.js","sourceRoot":"","sources":["../../../../../src/core/doctor/checkers/hooks-checker.ts"],"names":[],"mappings":"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"}
@@ -109,7 +109,7 @@ function determineFix(categories) {
109
109
  return 'specweave update';
110
110
  }
111
111
  if (hasHookIssues) {
112
- return 'specweave check-hooks --fix';
112
+ return 'specweave hooks health';
113
113
  }
114
114
  return 'specweave update';
115
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../../src/core/doctor/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../../src/core/doctor/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hook-router.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/hook-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAUxD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAgDrB"}
1
+ {"version":3,"file":"hook-router.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/hook-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAWxD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAiFrB"}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { getSafeDefault } from './types.js';
11
11
  import { findProjectRoot, createContext, parseStdinJson, logHook } from './utils.js';
12
+ import { HookLogger } from '../hook-logger.js';
12
13
  /** Dynamic import map — only the requested handler is loaded per invocation */
13
14
  const HANDLERS = {
14
15
  'user-prompt-submit': () => import('./user-prompt-submit.js'),
@@ -44,19 +45,50 @@ export async function hookRouter(eventType, rawStdin) {
44
45
  logHook(context, 'router', `Unknown event type: ${eventType}`);
45
46
  return safeDefault;
46
47
  }
47
- // Dynamic import + execute
48
+ // Dynamic import + execute with timing
49
+ const startTime = Date.now();
48
50
  const handlerModule = await loader();
49
51
  const result = await handlerModule.handle(input, context);
52
+ const duration = Date.now() - startTime;
53
+ // Semantic prefix: intentional blocks get [GUARD] label
54
+ if (result.decision === 'block' && result.reason) {
55
+ result.reason = `[GUARD] ${result.reason}`;
56
+ }
57
+ // Structured logging via HookLogger
58
+ try {
59
+ const hooksLogDir = `${context.logsDir}/hooks`;
60
+ const logger = new HookLogger(hooksLogDir);
61
+ await logger.log({
62
+ hookName: eventType,
63
+ status: result.decision === 'block' ? 'warning' : 'success',
64
+ duration,
65
+ ...(result.decision === 'block' && result.reason ? { error: result.reason } : {}),
66
+ });
67
+ }
68
+ catch { /* logging must never crash hooks */ }
50
69
  return result;
51
70
  }
52
71
  catch (error) {
53
72
  // Never crash — log and return safe default
73
+ const duration = Date.now() - (0); // approximate
54
74
  try {
55
75
  const projectRoot = findProjectRoot();
56
76
  if (projectRoot) {
57
77
  const context = createContext(projectRoot);
58
78
  const msg = error instanceof Error ? error.message : String(error);
59
- logHook(context, 'router', `Error in ${eventType}: ${msg}`);
79
+ logHook(context, 'router', `[ERROR] Error in ${eventType}: ${msg}`);
80
+ // Structured error logging
81
+ try {
82
+ const hooksLogDir = `${context.logsDir}/hooks`;
83
+ const logger = new HookLogger(hooksLogDir);
84
+ await logger.log({
85
+ hookName: eventType,
86
+ status: 'error',
87
+ duration,
88
+ error: msg,
89
+ });
90
+ }
91
+ catch { /* logging must never crash hooks */ }
60
92
  }
61
93
  }
62
94
  catch (logErr) {
@@ -1 +1 @@
1
- {"version":3,"file":"hook-router.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/hook-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErF,+EAA+E;AAC/E,MAAM,QAAQ,GAAyD;IACrE,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC;IAC7D,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;CAClD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,QAAgB;IAEhB,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,EAAE,CAAC;YAChD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,cAAc;QACd,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEvC,uBAAuB;QACvB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,yCAAyC;YACzC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,gBAAgB;QAChB,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAE3C,eAAe;QACf,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAC/D,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,2BAA2B;QAC3B,MAAM,aAAa,GAAG,MAAM,MAAM,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;YACtC,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,+CAA+C;YAC/C,IAAI,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACnJ,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hook-router.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/hook-router.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,8 @@ export declare function createContext(projectRoot: string): HookContext;
18
18
  */
19
19
  export declare function parseStdinJson(raw: string): HookInput;
20
20
  /**
21
- * Append a log entry to `.specweave/logs/hooks.log`.
21
+ * Append a log entry to `.specweave/logs/hooks.log` (plaintext, backwards compat)
22
+ * and to `.specweave/logs/hooks/{handler}.log` (structured JSONL via HookLogger).
22
23
  * Never throws — logging failures are silently ignored.
23
24
  */
24
25
  export declare function logHook(context: HookContext, handler: string, message: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAahE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAQ9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAOrD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CAQN"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGzD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAahE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAQ9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAOrD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CAoBN"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import * as fs from 'fs';
7
7
  import * as path from 'path';
8
+ import { HookLogger } from '../hook-logger.js';
8
9
  /**
9
10
  * Walk up from `startDir` to find the nearest directory containing `.specweave/config.json`.
10
11
  * Returns the project root path, or null if not found.
@@ -48,14 +49,26 @@ export function parseStdinJson(raw) {
48
49
  }
49
50
  }
50
51
  /**
51
- * Append a log entry to `.specweave/logs/hooks.log`.
52
+ * Append a log entry to `.specweave/logs/hooks.log` (plaintext, backwards compat)
53
+ * and to `.specweave/logs/hooks/{handler}.log` (structured JSONL via HookLogger).
52
54
  * Never throws — logging failures are silently ignored.
53
55
  */
54
56
  export function logHook(context, handler, message) {
55
57
  try {
58
+ // Plaintext log (backwards compat)
56
59
  fs.mkdirSync(context.logsDir, { recursive: true });
57
60
  const entry = `[${context.timestamp}] ${handler}: ${message}\n`;
58
61
  fs.appendFileSync(path.join(context.logsDir, 'hooks.log'), entry);
62
+ // Structured JSONL dual-write
63
+ const hooksLogDir = path.join(context.logsDir, 'hooks');
64
+ const logger = new HookLogger(hooksLogDir);
65
+ const isError = message.startsWith('[ERROR]');
66
+ const isBlock = message.includes('block') || message.includes('GUARD');
67
+ logger.log({
68
+ hookName: handler,
69
+ status: isError ? 'error' : isBlock ? 'warning' : 'success',
70
+ error: isError || isBlock ? message : undefined,
71
+ }).catch(() => { });
59
72
  }
60
73
  catch {
61
74
  // Never throw from logging
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,IAAI,OAAO,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,OAAO,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;YACnE,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO;QACL,WAAW;QACX,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC;QACvD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC;QACrD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC;QAC/D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,OAAoB,EACpB,OAAe,EACf,OAAe;IAEf,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,KAAK,OAAO,IAAI,CAAC;QAChE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/utils.ts"],"names":[],"mappings":"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"}
@@ -95,14 +95,14 @@ export class HookHealthTracker {
95
95
  // Generate recommendations
96
96
  const recommendations = [];
97
97
  if (status === 'FAILED') {
98
- recommendations.push('Run `specweave check-hooks` to diagnose issues');
98
+ recommendations.push('Run `specweave hooks health` to diagnose issues');
99
99
  if (actualConsecutiveFailures >= 3) {
100
100
  recommendations.push('Multiple consecutive failures detected');
101
101
  }
102
102
  recommendations.push('Check `.specweave/logs/hooks/${hookName}.log` for details');
103
103
  }
104
104
  else if (status === 'DEGRADED') {
105
- recommendations.push('Run `specweave check-hooks` to identify problems');
105
+ recommendations.push('Run `specweave hooks health` to identify problems');
106
106
  if (avgDuration > 5000) {
107
107
  recommendations.push('Hook execution is slow (>5s) - may timeout');
108
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hook-health-tracker.js","sourceRoot":"","sources":["../../../../src/core/hooks/hook-health-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-health-tracker.js","sourceRoot":"","sources":["../../../../src/core/hooks/hook-health-tracker.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export interface HookLogEntry {
41
41
  * warnings: [{
42
42
  * severity: 'WARNING',
43
43
  * message: 'Hook execution timeout after 5s',
44
- * recommendation: 'Run specweave check-hooks'
44
+ * recommendation: 'Run specweave hooks health'
45
45
  * }]
46
46
  * });
47
47
  * ```
@@ -20,7 +20,7 @@ import * as path from 'path';
20
20
  * warnings: [{
21
21
  * severity: 'WARNING',
22
22
  * message: 'Hook execution timeout after 5s',
23
- * recommendation: 'Run specweave check-hooks'
23
+ * recommendation: 'Run specweave hooks health'
24
24
  * }]
25
25
  * });
26
26
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"completion-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/completion-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,4BAA4B;IACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;WACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC5D,OAAO,CAAC,gBAAgB,CAAC;IAuM5B;;;;;;;;;;;;;;;OAeG;mBACkB,0BAA0B;IAgJ/C;;;;;;;;;;;OAWG;mBACkB,kBAAkB;IAoEvC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAiDtC;;;;;;;OAOG;WACU,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa/D;;;;;;;OAOG;WACU,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAarE"}
1
+ {"version":3,"file":"completion-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/completion-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,4BAA4B;IACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;WACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC5D,OAAO,CAAC,gBAAgB,CAAC;IA8Q5B;;;;;;;;;;;;;;;OAeG;mBACkB,0BAA0B;IAgJ/C;;;;;;;;;;;OAWG;mBACkB,kBAAkB;IAoEvC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAiDtC;;;;;;;OAOG;WACU,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa/D;;;;;;;OAOG;WACU,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAarE"}