specweave 1.0.569 → 1.0.571

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 (77) hide show
  1. package/bin/specweave.js +83 -0
  2. package/dist/src/cli/commands/analytics-push.d.ts +27 -0
  3. package/dist/src/cli/commands/analytics-push.d.ts.map +1 -0
  4. package/dist/src/cli/commands/analytics-push.js +74 -0
  5. package/dist/src/cli/commands/analytics-push.js.map +1 -0
  6. package/dist/src/cli/commands/session.d.ts +34 -0
  7. package/dist/src/cli/commands/session.d.ts.map +1 -0
  8. package/dist/src/cli/commands/session.js +142 -0
  9. package/dist/src/cli/commands/session.js.map +1 -0
  10. package/dist/src/cli/commands/sync-flush.d.ts +31 -0
  11. package/dist/src/cli/commands/sync-flush.d.ts.map +1 -0
  12. package/dist/src/cli/commands/sync-flush.js +114 -0
  13. package/dist/src/cli/commands/sync-flush.js.map +1 -0
  14. package/dist/src/core/analytics/event-writer.d.ts +33 -0
  15. package/dist/src/core/analytics/event-writer.d.ts.map +1 -0
  16. package/dist/src/core/analytics/event-writer.js +63 -0
  17. package/dist/src/core/analytics/event-writer.js.map +1 -0
  18. package/dist/src/core/hooks/handlers/hook-router.d.ts +1 -1
  19. package/dist/src/core/hooks/handlers/hook-router.d.ts.map +1 -1
  20. package/dist/src/core/hooks/handlers/hook-router.js +7 -10
  21. package/dist/src/core/hooks/handlers/hook-router.js.map +1 -1
  22. package/dist/src/core/hooks/handlers/pre-tool-use.d.ts.map +1 -1
  23. package/dist/src/core/hooks/handlers/pre-tool-use.js +23 -17
  24. package/dist/src/core/hooks/handlers/pre-tool-use.js.map +1 -1
  25. package/dist/src/core/hooks/handlers/types.d.ts +1 -1
  26. package/dist/src/core/hooks/handlers/types.d.ts.map +1 -1
  27. package/dist/src/core/hooks/handlers/types.js +0 -7
  28. package/dist/src/core/hooks/handlers/types.js.map +1 -1
  29. package/dist/src/core/hooks/handlers/user-prompt-submit.d.ts.map +1 -1
  30. package/dist/src/core/hooks/handlers/user-prompt-submit.js +21 -14
  31. package/dist/src/core/hooks/handlers/user-prompt-submit.js.map +1 -1
  32. package/dist/src/core/session/auto-scanner.d.ts +37 -0
  33. package/dist/src/core/session/auto-scanner.d.ts.map +1 -0
  34. package/dist/src/core/{hooks/handlers/stop-auto.js → session/auto-scanner.js} +33 -43
  35. package/dist/src/core/session/auto-scanner.js.map +1 -0
  36. package/dist/src/core/session/reflect-checker.d.ts +19 -0
  37. package/dist/src/core/session/reflect-checker.d.ts.map +1 -0
  38. package/dist/src/core/session/reflect-checker.js +30 -0
  39. package/dist/src/core/session/reflect-checker.js.map +1 -0
  40. package/dist/src/core/session/session-lifecycle.d.ts +44 -0
  41. package/dist/src/core/session/session-lifecycle.d.ts.map +1 -0
  42. package/dist/src/core/{hooks/handlers/session-start.js → session/session-lifecycle.js} +71 -32
  43. package/dist/src/core/session/session-lifecycle.js.map +1 -0
  44. package/dist/src/core/sync/event-queue-ops.d.ts +39 -0
  45. package/dist/src/core/sync/event-queue-ops.d.ts.map +1 -0
  46. package/dist/src/core/sync/event-queue-ops.js +109 -0
  47. package/dist/src/core/sync/event-queue-ops.js.map +1 -0
  48. package/dist/src/hooks/generate-settings.d.ts.map +1 -1
  49. package/dist/src/hooks/generate-settings.js +12 -13
  50. package/dist/src/hooks/generate-settings.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/src/core/hooks/handlers/post-tool-use-analytics.d.ts +0 -11
  53. package/dist/src/core/hooks/handlers/post-tool-use-analytics.d.ts.map +0 -1
  54. package/dist/src/core/hooks/handlers/post-tool-use-analytics.js +0 -75
  55. package/dist/src/core/hooks/handlers/post-tool-use-analytics.js.map +0 -1
  56. package/dist/src/core/hooks/handlers/post-tool-use.d.ts +0 -11
  57. package/dist/src/core/hooks/handlers/post-tool-use.d.ts.map +0 -1
  58. package/dist/src/core/hooks/handlers/post-tool-use.js +0 -76
  59. package/dist/src/core/hooks/handlers/post-tool-use.js.map +0 -1
  60. package/dist/src/core/hooks/handlers/pre-compact.d.ts +0 -11
  61. package/dist/src/core/hooks/handlers/pre-compact.d.ts.map +0 -1
  62. package/dist/src/core/hooks/handlers/pre-compact.js +0 -77
  63. package/dist/src/core/hooks/handlers/pre-compact.js.map +0 -1
  64. package/dist/src/core/hooks/handlers/session-start.d.ts +0 -9
  65. package/dist/src/core/hooks/handlers/session-start.d.ts.map +0 -1
  66. package/dist/src/core/hooks/handlers/session-start.js.map +0 -1
  67. package/dist/src/core/hooks/handlers/stop-auto.d.ts +0 -16
  68. package/dist/src/core/hooks/handlers/stop-auto.d.ts.map +0 -1
  69. package/dist/src/core/hooks/handlers/stop-auto.js.map +0 -1
  70. package/dist/src/core/hooks/handlers/stop-reflect.d.ts +0 -14
  71. package/dist/src/core/hooks/handlers/stop-reflect.d.ts.map +0 -1
  72. package/dist/src/core/hooks/handlers/stop-reflect.js +0 -43
  73. package/dist/src/core/hooks/handlers/stop-reflect.js.map +0 -1
  74. package/dist/src/core/hooks/handlers/stop-sync.d.ts +0 -15
  75. package/dist/src/core/hooks/handlers/stop-sync.d.ts.map +0 -1
  76. package/dist/src/core/hooks/handlers/stop-sync.js +0 -68
  77. package/dist/src/core/hooks/handlers/stop-sync.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-writer.js","sourceRoot":"","sources":["../../../../src/core/analytics/event-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAAoB,EACpB,KAAqB;IAErB,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,cAAc,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAoB,EACpB,IAAY,EACZ,MAAe,EACf,SAAkB;IAElB,MAAM,KAAK,GAAmB;QAC5B,SAAS,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAChD,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC;KACtC,CAAC;IACF,OAAO,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAoB,EACpB,IAAY,EACZ,SAAkB;IAElB,MAAM,KAAK,GAAmB;QAC5B,SAAS,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAChD,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,WAAW;KACpB,CAAC;IACF,OAAO,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC"}
@@ -11,7 +11,7 @@ import type { HookResult } from './types.js';
11
11
  /**
12
12
  * Route a hook event to the correct handler.
13
13
  *
14
- * @param eventType - The hook event type (e.g. 'pre-compact', 'user-prompt-submit')
14
+ * @param eventType - The hook event type ('pre-tool-use' or 'user-prompt-submit')
15
15
  * @param rawStdin - Raw stdin string (JSON from Claude Code)
16
16
  * @returns HookResult — always valid JSON, never throws
17
17
  */
@@ -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;AAiBxD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CA+CrB"}
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"}
@@ -13,18 +13,11 @@ import { findProjectRoot, createContext, parseStdinJson, logHook } from './utils
13
13
  const HANDLERS = {
14
14
  'user-prompt-submit': () => import('./user-prompt-submit.js'),
15
15
  'pre-tool-use': () => import('./pre-tool-use.js'),
16
- 'post-tool-use': () => import('./post-tool-use.js'),
17
- 'post-tool-use-analytics': () => import('./post-tool-use-analytics.js'),
18
- 'session-start': () => import('./session-start.js'),
19
- 'pre-compact': () => import('./pre-compact.js'),
20
- 'stop-reflect': () => import('./stop-reflect.js'),
21
- 'stop-auto': () => import('./stop-auto.js'),
22
- 'stop-sync': () => import('./stop-sync.js'),
23
16
  };
24
17
  /**
25
18
  * Route a hook event to the correct handler.
26
19
  *
27
- * @param eventType - The hook event type (e.g. 'pre-compact', 'user-prompt-submit')
20
+ * @param eventType - The hook event type ('pre-tool-use' or 'user-prompt-submit')
28
21
  * @param rawStdin - Raw stdin string (JSON from Claude Code)
29
22
  * @returns HookResult — always valid JSON, never throws
30
23
  */
@@ -66,8 +59,12 @@ export async function hookRouter(eventType, rawStdin) {
66
59
  logHook(context, 'router', `Error in ${eventType}: ${msg}`);
67
60
  }
68
61
  }
69
- catch {
70
- // Even logging can fail swallow everything
62
+ catch (logErr) {
63
+ // Last-resort fallback when even logHook fails
64
+ try {
65
+ process.stderr.write(`[specweave] hook-router: logging failed for ${eventType}: ${String(logErr)}\n`);
66
+ }
67
+ catch { /* truly nothing left */ }
71
68
  }
72
69
  return safeDefault;
73
70
  }
@@ -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;IACjD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACnD,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IACvE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACnD,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAC/C,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACjD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC3C,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;CAC5C,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,MAAM,CAAC;YACP,6CAA6C;QAC/C,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":"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 +1 @@
1
- {"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,YAAY,CAAC;AAyWpE,eAAO,MAAM,MAAM,EAAE,SAkCpB,CAAC"}
1
+ {"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,YAAY,CAAC;AA+WpE,eAAO,MAAM,MAAM,EAAE,SAkCpB,CAAC"}
@@ -94,13 +94,16 @@ function extractIncrementId(filePath) {
94
94
  const match = filePath.match(/(\d{4}[E]?-[^/]+)/);
95
95
  return match ? match[1] : 'unknown';
96
96
  }
97
- function readJsonSafe(filePath) {
97
+ function readJsonSafe(filePath, context) {
98
98
  try {
99
99
  if (!fs.existsSync(filePath))
100
100
  return {};
101
101
  return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
102
102
  }
103
- catch {
103
+ catch (err) {
104
+ if (context) {
105
+ logHook(context, 'pre-tool-use', `readJsonSafe error (${filePath}): ${err instanceof Error ? err.message : String(err)}`);
106
+ }
104
107
  return {};
105
108
  }
106
109
  }
@@ -127,7 +130,7 @@ function checkStatusCompletionGuard(input, context) {
127
130
  // Allow if auto-mode active with testsVerified
128
131
  const autoSession = path.join(context.stateDir, 'auto', 'session.json');
129
132
  if (fs.existsSync(autoSession)) {
130
- const session = readJsonSafe(autoSession);
133
+ const session = readJsonSafe(autoSession, context);
131
134
  if (session.status === 'active' && session.testsVerified === true) {
132
135
  return ALLOW;
133
136
  }
@@ -156,7 +159,7 @@ function checkInterviewGuard(input, context) {
156
159
  }
157
160
  }
158
161
  // Read config to check if strict interview enabled
159
- const config = readJsonSafe(context.configPath);
162
+ const config = readJsonSafe(context.configPath, context);
160
163
  const planning = (config.planning ?? {});
161
164
  const di = (planning.deepInterview ?? {});
162
165
  if (di.enabled !== true || di.enforcement !== 'strict') {
@@ -173,7 +176,7 @@ function checkInterviewGuard(input, context) {
173
176
  };
174
177
  }
175
178
  // Check covered categories
176
- const state = readJsonSafe(interviewState);
179
+ const state = readJsonSafe(interviewState, context);
177
180
  const covered = state.coveredCategories;
178
181
  const coveredKeys = covered ? Object.keys(covered) : [];
179
182
  const missing = categories.filter((c) => !coveredKeys.includes(c));
@@ -204,7 +207,7 @@ function isNonImplTeam(input) {
204
207
  }
205
208
  return false;
206
209
  }
207
- function hasValidSpec(specPath) {
210
+ function hasValidSpec(specPath, context) {
208
211
  try {
209
212
  if (!fs.existsSync(specPath))
210
213
  return false;
@@ -225,7 +228,10 @@ function hasValidSpec(specPath) {
225
228
  return false;
226
229
  return true;
227
230
  }
228
- catch {
231
+ catch (err) {
232
+ if (context) {
233
+ logHook(context, 'pre-tool-use', `hasValidSpec error (${specPath}): ${err instanceof Error ? err.message : String(err)}`);
234
+ }
229
235
  return false;
230
236
  }
231
237
  }
@@ -242,7 +248,7 @@ function checkIncrementExistenceGuard(_input, context) {
242
248
  for (const entry of entries) {
243
249
  if (entry.isDirectory()) {
244
250
  const specPath = path.join(incDir, entry.name, 'spec.md');
245
- if (!hasValidSpec(specPath))
251
+ if (!hasValidSpec(specPath, context))
246
252
  continue;
247
253
  // Check metadata.json for qualifying status
248
254
  const metaPath = path.join(incDir, entry.name, 'metadata.json');
@@ -254,8 +260,8 @@ function checkIncrementExistenceGuard(_input, context) {
254
260
  if (qualifying.includes(status))
255
261
  return ALLOW;
256
262
  }
257
- catch {
258
- // Unreadable metadata skip this increment
263
+ catch (err) {
264
+ logHook(context, 'pre-tool-use', `metadata parse error (${metaPath}): ${err instanceof Error ? err.message : String(err)}`);
259
265
  }
260
266
  }
261
267
  else {
@@ -265,8 +271,8 @@ function checkIncrementExistenceGuard(_input, context) {
265
271
  }
266
272
  }
267
273
  }
268
- catch {
269
- // scan failure don't block
274
+ catch (err) {
275
+ logHook(context, 'pre-tool-use', `increment scan error: ${err instanceof Error ? err.message : String(err)}`);
270
276
  }
271
277
  }
272
278
  // Scan multi-repo increments
@@ -289,7 +295,7 @@ function checkIncrementExistenceGuard(_input, context) {
289
295
  for (const inc of incs) {
290
296
  if (inc.isDirectory()) {
291
297
  const specPath = path.join(repoIncDir, inc.name, 'spec.md');
292
- if (!hasValidSpec(specPath))
298
+ if (!hasValidSpec(specPath, context))
293
299
  continue;
294
300
  // Check metadata.json for qualifying status (consistent with single-repo scan)
295
301
  const metaPath = path.join(repoIncDir, inc.name, 'metadata.json');
@@ -301,8 +307,8 @@ function checkIncrementExistenceGuard(_input, context) {
301
307
  if (qualifying.includes(status))
302
308
  return ALLOW;
303
309
  }
304
- catch {
305
- // Unreadable metadata skip this increment
310
+ catch (err) {
311
+ logHook(context, 'pre-tool-use', `metadata parse error (${metaPath}): ${err instanceof Error ? err.message : String(err)}`);
306
312
  }
307
313
  }
308
314
  else {
@@ -314,8 +320,8 @@ function checkIncrementExistenceGuard(_input, context) {
314
320
  }
315
321
  }
316
322
  }
317
- catch {
318
- // scan failure don't block
323
+ catch (err) {
324
+ logHook(context, 'pre-tool-use', `multi-repo scan error: ${err instanceof Error ? err.message : String(err)}`);
319
325
  }
320
326
  }
321
327
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/pre-tool-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/pre-tool-use.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export interface HookContext {
55
55
  /** Handler function signature — every handler exports a `handle` matching this */
56
56
  export type HandlerFn = (input: HookInput, context: HookContext) => Promise<HookResult>;
57
57
  /** Event types supported by the hook router */
58
- export type HookEventType = 'user-prompt-submit' | 'pre-tool-use' | 'post-tool-use' | 'post-tool-use-analytics' | 'session-start' | 'pre-compact' | 'stop-reflect' | 'stop-auto' | 'stop-sync';
58
+ export type HookEventType = 'user-prompt-submit' | 'pre-tool-use';
59
59
  /** Map of event types to their safe fallback responses */
60
60
  export declare const SAFE_DEFAULTS: Record<string, HookResult>;
61
61
  /** Get safe default response for an event type */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,cAAc,GACd,eAAe,GACf,yBAAyB,GACzB,eAAe,GACf,aAAa,GACb,cAAc,GACd,WAAW,GACX,WAAW,CAAC;AAEhB,0DAA0D;AAC1D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAUpD,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAE5D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,cAAc,CAAC;AAEnB,0DAA0D;AAC1D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGpD,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAE5D"}
@@ -12,13 +12,6 @@
12
12
  export const SAFE_DEFAULTS = {
13
13
  'user-prompt-submit': { decision: 'approve' },
14
14
  'pre-tool-use': { decision: 'allow' },
15
- 'post-tool-use': { continue: true },
16
- 'post-tool-use-analytics': { continue: true },
17
- 'session-start': { continue: true },
18
- 'pre-compact': { continue: true },
19
- 'stop-reflect': { decision: 'approve' },
20
- 'stop-auto': { decision: 'approve' },
21
- 'stop-sync': { decision: 'approve' },
22
15
  };
23
16
  /** Get safe default response for an event type */
24
17
  export function getSafeDefault(eventType) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmEH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,oBAAoB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC7C,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;IACrC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IACjC,cAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;IACvC,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;IACpC,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;CACrC,CAAC;AAEF,kDAAkD;AAClD,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4DH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,oBAAoB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC7C,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;CACtC,CAAC;AAEF,kDAAkD;AAClD,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/user-prompt-submit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAsHxD,eAAO,MAAM,MAAM,EAAE,SAmDpB,CAAC"}
1
+ {"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/user-prompt-submit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAA2B,MAAM,YAAY,CAAC;AAyHrE,eAAO,MAAM,MAAM,EAAE,SAsDpB,CAAC"}
@@ -51,17 +51,20 @@ function isSwSkillInvocation(prompt) {
51
51
  return match !== null && DOMAINS.includes(match[1]);
52
52
  }
53
53
  /** Read and parse JSON config file, returns null on any error */
54
- function readJsonSafe(filePath) {
54
+ function readJsonSafe(filePath, context) {
55
55
  try {
56
56
  return JSON.parse(fs.readFileSync(filePath, 'utf8'));
57
57
  }
58
- catch {
58
+ catch (err) {
59
+ if (context) {
60
+ logHook(context, 'user-prompt-submit', `readJsonSafe error (${filePath}): ${err instanceof Error ? err.message : String(err)}`);
61
+ }
59
62
  return null;
60
63
  }
61
64
  }
62
65
  /** Build context string from active increments */
63
- function buildIncrementContext(projectRoot) {
64
- const incDir = path.join(projectRoot, '.specweave', 'increments');
66
+ function buildIncrementContext(context) {
67
+ const incDir = path.join(context.projectRoot, '.specweave', 'increments');
65
68
  if (!fs.existsSync(incDir))
66
69
  return '';
67
70
  const parts = [];
@@ -69,14 +72,15 @@ function buildIncrementContext(projectRoot) {
69
72
  try {
70
73
  dirs = fs.readdirSync(incDir);
71
74
  }
72
- catch {
75
+ catch (err) {
76
+ logHook(context, 'user-prompt-submit', `readdirSync error (${incDir}): ${err instanceof Error ? err.message : String(err)}`);
73
77
  return '';
74
78
  }
75
79
  for (const dir of dirs) {
76
80
  const metaPath = path.join(incDir, dir, 'metadata.json');
77
81
  if (!fs.existsSync(metaPath))
78
82
  continue;
79
- const meta = readJsonSafe(metaPath);
83
+ const meta = readJsonSafe(metaPath, context);
80
84
  if (!meta)
81
85
  continue;
82
86
  if (meta.status !== 'active' && meta.status !== 'in-progress')
@@ -89,17 +93,16 @@ function buildIncrementContext(projectRoot) {
89
93
  pending = (tasks.match(/\[ \]/g) || []).length;
90
94
  completed = (tasks.match(/\[x\]/g) || []).length;
91
95
  }
92
- catch {
93
- // No tasks file
96
+ catch (err) {
97
+ logHook(context, 'user-prompt-submit', `tasks.md read error (${tasksPath}): ${err instanceof Error ? err.message : String(err)}`);
94
98
  }
95
99
  parts.push(`Active increment: ${dir} (${completed}/${completed + pending} tasks done)`);
96
100
  }
97
101
  return parts.join('\n');
98
102
  }
99
103
  /** Build TDD context string from config */
100
- function buildTddContext(projectRoot) {
101
- const configPath = path.join(projectRoot, '.specweave', 'config.json');
102
- const config = readJsonSafe(configPath);
104
+ function buildTddContext(context) {
105
+ const config = readJsonSafe(context.configPath, context);
103
106
  if (!config)
104
107
  return '';
105
108
  const testMode = config.testing?.defaultTestMode;
@@ -152,11 +155,11 @@ export const handle = async (input, context) => {
152
155
  // 3. Context injection for regular prompts
153
156
  const contextParts = [];
154
157
  // Active increment context
155
- const incCtx = buildIncrementContext(context.projectRoot);
158
+ const incCtx = buildIncrementContext(context);
156
159
  if (incCtx)
157
160
  contextParts.push(incCtx);
158
161
  // TDD mode context
159
- const tddCtx = buildTddContext(context.projectRoot);
162
+ const tddCtx = buildTddContext(context);
160
163
  if (tddCtx)
161
164
  contextParts.push(tddCtx);
162
165
  const combined = contextParts.join('\n');
@@ -166,7 +169,11 @@ export const handle = async (input, context) => {
166
169
  return approveWithContext(combined || undefined);
167
170
  }
168
171
  catch (err) {
169
- // Never throw — return safe default
172
+ // Never throw — log and return safe default
173
+ try {
174
+ logHook(context, 'user-prompt-submit', `handler error: ${err instanceof Error ? err.message : String(err)}`);
175
+ }
176
+ catch { /* logging failure — swallow */ }
170
177
  return { decision: 'approve' };
171
178
  }
172
179
  };
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/user-prompt-submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../../../../src/core/hooks/handlers/user-prompt-submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Auto-mode scanner core module.
3
+ *
4
+ * Extracted from hooks/handlers/stop-auto.ts.
5
+ * Scans active increments for pending tasks and checks auto-mode session state.
6
+ *
7
+ * Never throws.
8
+ *
9
+ * @module core/session/auto-scanner
10
+ */
11
+ export interface PendingTasksResult {
12
+ pending: number;
13
+ completed: number;
14
+ incrementIds: string[];
15
+ }
16
+ export interface AutoSessionState {
17
+ active: boolean;
18
+ stale: boolean;
19
+ pendingTasks: PendingTasksResult;
20
+ }
21
+ /**
22
+ * Get auto-mode session file path (per-session or global fallback).
23
+ */
24
+ export declare function getAutoSessionPath(stateDir: string): string;
25
+ /**
26
+ * Check if session file is stale (older than maxSessionAge seconds).
27
+ */
28
+ export declare function isSessionStale(sessionPath: string, maxSessionAge: number): boolean;
29
+ /**
30
+ * Count pending tasks across active increments.
31
+ */
32
+ export declare function scanPendingTasks(projectRoot: string): PendingTasksResult;
33
+ /**
34
+ * Scan auto-mode session state including pending tasks.
35
+ */
36
+ export declare function scanAutoSession(stateDir: string, projectRoot: string, configPath: string): AutoSessionState;
37
+ //# sourceMappingURL=auto-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-scanner.d.ts","sourceRoot":"","sources":["../../../../src/core/session/auto-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAUD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAQlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAoCxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,gBAAgB,CAyBlB"}
@@ -1,20 +1,15 @@
1
1
  /**
2
- * Stop-auto hook handler.
2
+ * Auto-mode scanner core module.
3
3
  *
4
- * Fires when a session ends. Checks if an auto-mode session is active:
5
- * 1. Look for auto-mode.json (per-session or global)
6
- * 2. Check session staleness
7
- * 3. Scan active increments for pending tasks
8
- * 4. Include progress context but always approve
4
+ * Extracted from hooks/handlers/stop-auto.ts.
5
+ * Scans active increments for pending tasks and checks auto-mode session state.
9
6
  *
10
- * Stop hooks should NEVER block session exit.
7
+ * Never throws.
11
8
  *
12
- * @module core/hooks/handlers/stop-auto
9
+ * @module core/session/auto-scanner
13
10
  */
14
11
  import * as fs from 'fs';
15
12
  import * as path from 'path';
16
- import { logHook } from './utils.js';
17
- /** Read JSON safely, return null on error */
18
13
  function readJsonSafe(filePath) {
19
14
  try {
20
15
  return JSON.parse(fs.readFileSync(filePath, 'utf8'));
@@ -23,8 +18,10 @@ function readJsonSafe(filePath) {
23
18
  return null;
24
19
  }
25
20
  }
26
- /** Get auto-mode session file path (per-session or global fallback) */
27
- function getSessionPath(stateDir) {
21
+ /**
22
+ * Get auto-mode session file path (per-session or global fallback).
23
+ */
24
+ export function getAutoSessionPath(stateDir) {
28
25
  const sessionId = process.env.CLAUDE_SESSION_ID;
29
26
  if (sessionId) {
30
27
  const perSession = path.join(stateDir, 'sessions', sessionId, 'auto-mode.json');
@@ -33,8 +30,10 @@ function getSessionPath(stateDir) {
33
30
  }
34
31
  return path.join(stateDir, 'auto-mode.json');
35
32
  }
36
- /** Check if session file is stale (older than maxSessionAge seconds) */
37
- function isSessionStale(sessionPath, maxSessionAge) {
33
+ /**
34
+ * Check if session file is stale (older than maxSessionAge seconds).
35
+ */
36
+ export function isSessionStale(sessionPath, maxSessionAge) {
38
37
  try {
39
38
  const stat = fs.statSync(sessionPath);
40
39
  const ageMs = Date.now() - stat.mtimeMs;
@@ -44,8 +43,10 @@ function isSessionStale(sessionPath, maxSessionAge) {
44
43
  return true;
45
44
  }
46
45
  }
47
- /** Count pending tasks across active increments */
48
- function scanPendingTasks(projectRoot) {
46
+ /**
47
+ * Count pending tasks across active increments.
48
+ */
49
+ export function scanPendingTasks(projectRoot) {
49
50
  const incDir = path.join(projectRoot, '.specweave', 'increments');
50
51
  let pending = 0;
51
52
  let completed = 0;
@@ -82,41 +83,30 @@ function scanPendingTasks(projectRoot) {
82
83
  }
83
84
  return { pending, completed, incrementIds };
84
85
  }
85
- export const handle = async (input, context) => {
86
+ /**
87
+ * Scan auto-mode session state including pending tasks.
88
+ */
89
+ export function scanAutoSession(stateDir, projectRoot, configPath) {
86
90
  try {
87
- // 1. Find auto-mode session file
88
- const sessionPath = getSessionPath(context.stateDir);
91
+ const sessionPath = getAutoSessionPath(stateDir);
89
92
  if (!fs.existsSync(sessionPath)) {
90
- logHook(context, 'stop-auto', 'No auto session');
91
- return { decision: 'approve' };
93
+ return { active: false, stale: false, pendingTasks: { pending: 0, completed: 0, incrementIds: [] } };
92
94
  }
93
- // 2. Read session data
94
95
  const session = readJsonSafe(sessionPath);
95
96
  if (!session || session.active !== true) {
96
- logHook(context, 'stop-auto', 'Session not active');
97
- return { decision: 'approve' };
97
+ return { active: false, stale: false, pendingTasks: { pending: 0, completed: 0, incrementIds: [] } };
98
98
  }
99
- // 3. Read config for maxSessionAge
100
- const config = readJsonSafe(context.configPath);
99
+ const config = readJsonSafe(configPath);
101
100
  const maxSessionAge = config?.auto?.maxSessionAge ?? 7200;
102
- // 4. Check staleness
103
- if (isSessionStale(sessionPath, maxSessionAge)) {
104
- logHook(context, 'stop-auto', 'Stale session expired');
105
- return { decision: 'approve' };
101
+ const stale = isSessionStale(sessionPath, maxSessionAge);
102
+ if (stale) {
103
+ return { active: true, stale: true, pendingTasks: { pending: 0, completed: 0, incrementIds: [] } };
106
104
  }
107
- // 5. Scan active increments for pending tasks
108
- const { pending, completed, incrementIds } = scanPendingTasks(context.projectRoot);
109
- if (pending === 0) {
110
- logHook(context, 'stop-auto', 'All tasks complete');
111
- return { decision: 'approve' };
112
- }
113
- // 6. Pending tasks exist — include progress context but still approve
114
- logHook(context, 'stop-auto', `Pending tasks: ${pending} across ${incrementIds.length} increment(s)`);
115
- return { decision: 'approve' };
105
+ const pendingTasks = scanPendingTasks(projectRoot);
106
+ return { active: true, stale: false, pendingTasks };
116
107
  }
117
108
  catch {
118
- // Never throw always approve
119
- return { decision: 'approve' };
109
+ return { active: false, stale: false, pendingTasks: { pending: 0, completed: 0, incrementIds: [] } };
120
110
  }
121
- };
122
- //# sourceMappingURL=stop-auto.js.map
111
+ }
112
+ //# sourceMappingURL=auto-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-scanner.js","sourceRoot":"","sources":["../../../../src/core/session/auto-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Reflect checker core module.
3
+ *
4
+ * Extracted from hooks/handlers/stop-reflect.ts.
5
+ * Checks if reflection is enabled in config and returns result.
6
+ *
7
+ * Never throws.
8
+ *
9
+ * @module core/session/reflect-checker
10
+ */
11
+ export interface ReflectCheckResult {
12
+ enabled: boolean;
13
+ reason: string;
14
+ }
15
+ /**
16
+ * Check if reflect is enabled in config. Default: true.
17
+ */
18
+ export declare function checkReflectConfig(configPath: string): ReflectCheckResult;
19
+ //# sourceMappingURL=reflect-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect-checker.d.ts","sourceRoot":"","sources":["../../../../src/core/session/reflect-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAazE"}