claude-ide-bridge 2.42.2 → 2.45.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 (105) hide show
  1. package/README.md +26 -20
  2. package/dist/activityLog.js +3 -2
  3. package/dist/activityLog.js.map +1 -1
  4. package/dist/automation.d.ts +73 -7
  5. package/dist/automation.js +147 -3
  6. package/dist/automation.js.map +1 -1
  7. package/dist/bridge.d.ts +8 -0
  8. package/dist/bridge.js +29 -6
  9. package/dist/bridge.js.map +1 -1
  10. package/dist/claudeOrchestrator.d.ts +15 -1
  11. package/dist/claudeOrchestrator.js +42 -2
  12. package/dist/claudeOrchestrator.js.map +1 -1
  13. package/dist/config.d.ts +9 -0
  14. package/dist/config.js +44 -11
  15. package/dist/config.js.map +1 -1
  16. package/dist/errors.d.ts +1 -0
  17. package/dist/errors.js +1 -0
  18. package/dist/errors.js.map +1 -1
  19. package/dist/extensionClient.d.ts +4 -0
  20. package/dist/extensionClient.js +234 -91
  21. package/dist/extensionClient.js.map +1 -1
  22. package/dist/fp/activityAnalytics.js +2 -13
  23. package/dist/fp/activityAnalytics.js.map +1 -1
  24. package/dist/fp/automationUtils.d.ts +7 -3
  25. package/dist/fp/automationUtils.js +20 -7
  26. package/dist/fp/automationUtils.js.map +1 -1
  27. package/dist/index.js +185 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/tools/batchLsp.js +3 -3
  30. package/dist/tools/batchLsp.js.map +1 -1
  31. package/dist/tools/bridgeDoctor.d.ts +11 -1
  32. package/dist/tools/bridgeDoctor.js +163 -2
  33. package/dist/tools/bridgeDoctor.js.map +1 -1
  34. package/dist/tools/bridgeStatus.d.ts +6 -0
  35. package/dist/tools/bridgeStatus.js +5 -1
  36. package/dist/tools/bridgeStatus.js.map +1 -1
  37. package/dist/tools/cancelClaudeTask.js +8 -3
  38. package/dist/tools/cancelClaudeTask.js.map +1 -1
  39. package/dist/tools/codeLens.js +1 -1
  40. package/dist/tools/codeLens.js.map +1 -1
  41. package/dist/tools/documentLinks.js +1 -1
  42. package/dist/tools/documentLinks.js.map +1 -1
  43. package/dist/tools/editText.js +1 -1
  44. package/dist/tools/editText.js.map +1 -1
  45. package/dist/tools/explainDiagnostic.js +1 -1
  46. package/dist/tools/explainDiagnostic.js.map +1 -1
  47. package/dist/tools/explainSymbol.js +1 -1
  48. package/dist/tools/explainSymbol.js.map +1 -1
  49. package/dist/tools/fileOperations.js +2 -2
  50. package/dist/tools/fileOperations.js.map +1 -1
  51. package/dist/tools/foldingRanges.js +1 -1
  52. package/dist/tools/foldingRanges.js.map +1 -1
  53. package/dist/tools/generateTests.js +10 -1
  54. package/dist/tools/generateTests.js.map +1 -1
  55. package/dist/tools/getBufferContent.js +1 -1
  56. package/dist/tools/getBufferContent.js.map +1 -1
  57. package/dist/tools/getChangeImpact.js +1 -1
  58. package/dist/tools/getChangeImpact.js.map +1 -1
  59. package/dist/tools/getClaudeTaskStatus.d.ts +7 -0
  60. package/dist/tools/getClaudeTaskStatus.js +11 -2
  61. package/dist/tools/getClaudeTaskStatus.js.map +1 -1
  62. package/dist/tools/getDocumentSymbols.js +1 -1
  63. package/dist/tools/getDocumentSymbols.js.map +1 -1
  64. package/dist/tools/getImportedSignatures.js +1 -1
  65. package/dist/tools/getImportedSignatures.js.map +1 -1
  66. package/dist/tools/getSymbolHistory.js +1 -1
  67. package/dist/tools/getSymbolHistory.js.map +1 -1
  68. package/dist/tools/gitWrite.js +4 -4
  69. package/dist/tools/gitWrite.js.map +1 -1
  70. package/dist/tools/index.d.ts +6 -5
  71. package/dist/tools/index.js +7 -6
  72. package/dist/tools/index.js.map +1 -1
  73. package/dist/tools/inlayHints.js +1 -1
  74. package/dist/tools/inlayHints.js.map +1 -1
  75. package/dist/tools/listClaudeTasks.d.ts +7 -0
  76. package/dist/tools/listClaudeTasks.js +5 -1
  77. package/dist/tools/listClaudeTasks.js.map +1 -1
  78. package/dist/tools/lsp.d.ts +25 -0
  79. package/dist/tools/lsp.js +28 -13
  80. package/dist/tools/lsp.js.map +1 -1
  81. package/dist/tools/openFile.js +1 -1
  82. package/dist/tools/openFile.js.map +1 -1
  83. package/dist/tools/refactorAnalyze.js +1 -1
  84. package/dist/tools/refactorAnalyze.js.map +1 -1
  85. package/dist/tools/refactorPreview.js +1 -1
  86. package/dist/tools/refactorPreview.js.map +1 -1
  87. package/dist/tools/replaceBlock.js +1 -1
  88. package/dist/tools/replaceBlock.js.map +1 -1
  89. package/dist/tools/resumeClaudeTask.js +6 -1
  90. package/dist/tools/resumeClaudeTask.js.map +1 -1
  91. package/dist/tools/selectionRanges.js +1 -1
  92. package/dist/tools/selectionRanges.js.map +1 -1
  93. package/dist/tools/semanticTokens.js +1 -1
  94. package/dist/tools/semanticTokens.js.map +1 -1
  95. package/dist/tools/signatureHelp.js +1 -1
  96. package/dist/tools/signatureHelp.js.map +1 -1
  97. package/dist/tools/typeHierarchy.js +1 -1
  98. package/dist/tools/typeHierarchy.js.map +1 -1
  99. package/dist/tools/watchDiagnostics.js +7 -0
  100. package/dist/tools/watchDiagnostics.js.map +1 -1
  101. package/package.json +2 -1
  102. package/templates/automation-policies/security-first.json +2 -1
  103. package/templates/automation-policies/strict-lint.json +2 -1
  104. package/templates/automation-policies/test-driven.json +2 -1
  105. package/templates/automation-policy.example.json +2 -1
package/README.md CHANGED
@@ -17,6 +17,8 @@ Claude Code ──── bridge ──── VS Code extension ──── your
17
17
 
18
18
  > **See it work in 5 minutes:** save a broken file, Claude notices, diagnoses, proposes a fix — no prompt typed. [Self-healing quickstart →](./docs/self-healing-quickstart.md)
19
19
 
20
+ https://github.com/user-attachments/assets/a81a8d11-2cc3-46f3-88ad-6a905a221a2c
21
+
20
22
  ## Quick Start
21
23
 
22
24
  **Prerequisites:** [Claude Code CLI](https://claude.ai/code), Node.js ≥ 20
@@ -29,8 +31,8 @@ npm install -g claude-ide-bridge
29
31
  cd /your/project
30
32
  claude-ide-bridge init
31
33
 
32
- # 3. Start the bridge
33
- claude-ide-bridge --full --watch
34
+ # 3. Start the bridge (full tool set is the default — add --slim for IDE-only)
35
+ claude-ide-bridge --watch
34
36
 
35
37
  # 4. Open Claude Code — bridge connects automatically
36
38
  claude --ide
@@ -54,6 +56,8 @@ Or search **Claude IDE Bridge** in the VS Code / Cursor / Windsurf marketplace.
54
56
 
55
57
  ## Tool Categories
56
58
 
59
+ > **Discovering tools at runtime**: ask Claude "call `getToolCapabilities`" in any connected session, type `/mcp` in Claude Code for live server state, or run `claude-ide-bridge list-tools` from the shell for a quick category summary. Full reference: [`documents/platform-docs.md`](documents/platform-docs.md).
60
+
57
61
  | Category | Count | Example tools | Mode |
58
62
  |---|---|---|---|
59
63
  | LSP & Code Intelligence | 29 | `goToDefinition`, `findReferences`, `getCallHierarchy`, `getHover`, `explainSymbol` | S |
@@ -67,31 +71,32 @@ Or search **Claude IDE Bridge** in the VS Code / Cursor / Windsurf marketplace.
67
71
  | Claude Orchestration | 5 | `runClaudeTask`, `listClaudeTasks`, `getClaudeTaskStatus`, `cancelClaudeTask` | F |
68
72
  | Quality & Analysis | 11 | `getCodeCoverage`, `auditDependencies`, `detectUnusedCode`, `generateTests`, `getSecurityAdvisories` | F |
69
73
 
70
- **S = slim mode (default) · F = full mode (`--full` flag)**
74
+ **S = slim (opt-in via `--slim`) · F = full mode (default)**
71
75
 
72
76
  ---
73
77
 
74
78
  ## Slim vs Full Mode
75
79
 
76
- The bridge starts in **slim mode** by default — 56 IDE-exclusive tools covering LSP, debugging, refactoring, and editor state. These are capabilities Claude does not have natively, so slim mode adds signal without duplicating built-in file/shell tools.
80
+ The bridge starts in **full mode** by default (changed in v2.43.0) all ~140 tools, covering LSP/debugger/refactoring plus git, GitHub, terminal, file tree, and orchestration.
77
81
 
78
- Add `--full` to unlock all 141 tools, including git, GitHub, terminal, file tree, and orchestration:
82
+ Pass `--slim` to restrict to the ~60 IDE-exclusive tools (LSP, debugger, editor state only) — useful when you want Claude to use its native Read/Write/Bash tools for everything else:
79
83
 
80
84
  ```bash
81
- claude-ide-bridge --full --watch
85
+ claude-ide-bridge --slim --watch
82
86
  ```
83
87
 
84
88
  Or set permanently in `claude-ide-bridge.config.json`:
85
89
 
86
90
  ```json
87
- { "fullMode": true }
91
+ { "fullMode": false }
88
92
  ```
89
93
 
90
- **Use `--full` when:**
91
- - Running headless or in CI and you want structured git/GitHub output
92
- - You want `runTests` (framework detection, structured pass/fail) instead of `npm test`
93
- - You need `githubCreatePR` with PR template support
94
- - You want Claude managing the whole workflow end-to-end (edit → test → commit → PR)
94
+ **Use `--slim` when:**
95
+ - You prefer Claude's native Read/Write/Bash over bridge file/git/HTTP tools
96
+ - Running in a locked-down environment and want to minimize exposed surface
97
+ - You only need LSP navigation, debugger, and editor state signal
98
+
99
+ The `--full` flag is retained as a no-op opt-in for backward compatibility.
95
100
 
96
101
  ---
97
102
 
@@ -135,11 +140,11 @@ Claude calls `refactorAnalyze` (checks blast radius and risk), `refactorPreview`
135
140
  Standard setup. Extension connects automatically. Full LSP, debugger, and editor state available.
136
141
 
137
142
  ### Remote SSH
138
- VS Code Remote-SSH and Cursor SSH load the extension on the VPS side (`extensionKind: ["workspace"]`). Start the bridge on the remote machine. All 141 tools work over SSH.
143
+ VS Code Remote-SSH and Cursor SSH load the extension on the VPS side (`extensionKind: ["workspace"]`). Start the bridge on the remote machine. All ~140 tools work over SSH.
139
144
 
140
145
  ```bash
141
146
  # On the remote machine
142
- claude-ide-bridge --full --watch --bind 0.0.0.0
147
+ claude-ide-bridge --watch --bind 0.0.0.0
143
148
  ```
144
149
 
145
150
  ### VPS + systemd
@@ -157,7 +162,7 @@ See [deploy/README.md](deploy/README.md) and [docs/remote-access.md](docs/remote
157
162
 
158
163
  ### Docker
159
164
  ```bash
160
- docker run -p 3284:3284 ghcr.io/oolab-labs/claude-ide-bridge:latest --full --bind 0.0.0.0
165
+ docker run -p 3284:3284 ghcr.io/oolab-labs/claude-ide-bridge:latest --bind 0.0.0.0
161
166
  ```
162
167
 
163
168
  Or with Compose:
@@ -214,7 +219,7 @@ Event-driven hooks that trigger Claude tasks automatically — no polling, no ma
214
219
 
215
220
  Start with:
216
221
  ```bash
217
- claude-ide-bridge --full --watch --automation --automation-policy ./policy.json --claude-driver subprocess
222
+ claude-ide-bridge --watch --automation --automation-policy ./policy.json --claude-driver subprocess
218
223
  ```
219
224
 
220
225
  **18 hook events:** `onFileSave`, `onFileChanged`, `onDiagnosticsError`, `onDiagnosticsCleared`, `onGitCommit`, `onGitPush`, `onGitPull`, `onBranchCheckout`, `onPullRequest`, `onTestRun`, `onTestPassAfterFailure`, `onPostCompact`, `onInstructionsLoaded`, `onTaskCreated`, `onTaskSuccess`, `onPermissionDenied`, `onCwdChanged`, `onDebugSessionEnd`
@@ -232,7 +237,7 @@ Extend the bridge with custom MCP tools without forking. Plugins load in-process
232
237
  claude-ide-bridge gen-plugin-stub ./my-plugin --name "org/my-plugin" --prefix "myPrefix"
233
238
 
234
239
  # Load it
235
- claude-ide-bridge --full --watch --plugin ./my-plugin --plugin-watch
240
+ claude-ide-bridge --watch --plugin ./my-plugin --plugin-watch
236
241
  ```
237
242
 
238
243
  Publish to npm with keyword `claude-ide-bridge-plugin` — users install by package name:
@@ -265,7 +270,7 @@ claude-ide-bridge install claude-mem
265
270
  |---|---|
266
271
  | `claude-ide-bridge init` | One-command setup: install extension + write CLAUDE.md + register MCP server |
267
272
  | `claude-ide-bridge --watch` | Start bridge with auto-restart on crash (2s → 30s backoff) |
268
- | `claude-ide-bridge --full` | Enable all 141 tools (default: 56 slim tools) |
273
+ | `claude-ide-bridge --slim` | Restrict to ~60 IDE-exclusive tools (default: ~140 full tools) |
269
274
  | `claude-ide-bridge install-extension` | Install companion VS Code extension |
270
275
  | `claude-ide-bridge gen-claude-md --write` | Add bridge section to existing CLAUDE.md |
271
276
  | `claude-ide-bridge print-token` | Print auth token from active lock file |
@@ -282,7 +287,8 @@ claude-ide-bridge install claude-mem
282
287
 
283
288
  | Flag | Default | Description |
284
289
  |---|---|---|
285
- | `--full` | off | Enable all tools |
290
+ | `--slim` | off | Restrict to IDE-exclusive tools (default: full, ~140 tools) |
291
+ | `--full` | on | No-op (retained for backward compat — full is the default since v2.43.0) |
286
292
  | `--watch` | off | Auto-restart on crash |
287
293
  | `--bind <host>` | `127.0.0.1` | Bind address (`0.0.0.0` for remote access) |
288
294
  | `--port <n>` | auto | Port (auto-detected from lock files) |
@@ -310,7 +316,7 @@ claude-ide-bridge install claude-mem
310
316
  | [docs/troubleshooting.md](docs/troubleshooting.md) | Diagnostics, common errors, and fixes |
311
317
  | [docs/remote-access.md](docs/remote-access.md) | VPS setup, OAuth 2.0, nginx/Caddy reverse proxy |
312
318
  | [documents/headless-quickstart.md](documents/headless-quickstart.md) | CI, Docker, server use without VS Code |
313
- | [docs/cowork-workflow.md](docs/cowork-workflow.md) | Computer-use (Cowork) workflow and git worktree setup |
319
+ | [docs/cowork.md](docs/cowork.md) | Computer-use (Cowork) workflow and git worktree setup — **MCP bridge tools unavailable inside Cowork** |
314
320
  | [docs/multi-ide.md](docs/multi-ide.md) | Multiple sessions and parallel editor instances |
315
321
  | [docs/migration.md](docs/migration.md) | Upgrade guide between major versions |
316
322
  | [documents/plugin-authoring.md](documents/plugin-authoring.md) | Plugin manifest schema, entrypoint API, distribution |
@@ -134,9 +134,10 @@ export class ActivityLog {
134
134
  // Step 2: if still over byte limit (e.g. a few very long lines survived),
135
135
  // halve the line array repeatedly until under the byte budget.
136
136
  // This prevents O(N) disk-thrashing on every append.
137
- while (lines.join("\n").length + 1 > MAX_PERSIST_BYTES &&
138
- lines.length > 1) {
137
+ let joined = lines.join("\n");
138
+ while (joined.length + 1 > MAX_PERSIST_BYTES && lines.length > 1) {
139
139
  lines = lines.slice(-Math.max(1, Math.floor(lines.length / 2)));
140
+ joined = lines.join("\n");
140
141
  }
141
142
  await fs.promises.writeFile(this.persistPath, `${lines.join("\n")}\n`, {
142
143
  mode: 0o600,
@@ -1 +1 @@
1
- {"version":3,"file":"activityLog.js","sourceRoot":"","sources":["../src/activityLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activityLog.js","sourceRoot":"","sources":["../src/activityLog.ts"],"names":[],"mappings":"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"}
@@ -106,6 +106,22 @@ export interface OnPostCompactPolicy extends PromptSource {
106
106
  /** Minimum ms between triggers (prevents repeated compaction storms). Enforced minimum: 5000. */
107
107
  cooldownMs: number;
108
108
  }
109
+ /**
110
+ * Unified compaction hook (v2.43.0+) — replaces `onPreCompact` and
111
+ * `onPostCompact` with a single schema entry carrying a `phase` discriminator.
112
+ *
113
+ * The parser expands `onCompaction` into the internal `onPreCompact` or
114
+ * `onPostCompact` field before downstream processing; both legacy names still
115
+ * work but now log a deprecation warning at load time. Scheduled removal:
116
+ * no earlier than 3 minor versions + 30 days after v2.43.0.
117
+ */
118
+ export interface OnCompactionPolicy extends PromptSource {
119
+ enabled: boolean;
120
+ /** "pre" fires before Claude Code compacts context; "post" fires after. */
121
+ phase: "pre" | "post";
122
+ /** Minimum ms between triggers. Enforced minimum: 5000. */
123
+ cooldownMs: number;
124
+ }
109
125
  export interface OnInstructionsLoadedPolicy extends PromptSource {
110
126
  enabled: boolean;
111
127
  /**
@@ -127,11 +143,23 @@ export interface OnCwdChangedPolicy extends PromptSource {
127
143
  export interface OnTestRunPolicy extends PromptSource {
128
144
  enabled: boolean;
129
145
  /**
146
+ * Unified test-run trigger (v2.43.0+) replacing `onFailureOnly` and the
147
+ * separate `onTestPassAfterFailure` hook:
148
+ * - "any" — fire after every test run
149
+ * - "failure" — fire only when the run has failures (= onFailureOnly:true)
150
+ * - "pass-after-fail" — fire only when a runner transitions fail → pass;
151
+ * routed internally to the onTestPassAfterFailure slot
152
+ * Exactly one of `filter` or `onFailureOnly` should be set; the two are
153
+ * mutually exclusive. If neither is set, defaults to "failure".
154
+ */
155
+ filter?: "any" | "failure" | "pass-after-fail";
156
+ /**
157
+ * @deprecated v2.43.0 — use `filter: "any"` or `filter: "failure"` instead.
130
158
  * Only trigger when there are test failures or errors.
131
159
  * Set to false to trigger after every test run regardless of outcome.
132
160
  * Default: true.
133
161
  */
134
- onFailureOnly: boolean;
162
+ onFailureOnly?: boolean;
135
163
  /**
136
164
  * Only trigger when the test run duration meets or exceeds this threshold (ms).
137
165
  * Useful to ignore fast unit test runs and only fire on slow integration runs.
@@ -183,6 +211,16 @@ export interface DebugSessionEndResult {
183
211
  sessionName: string;
184
212
  sessionType: string;
185
213
  }
214
+ /**
215
+ * Unified debug-session hook (v2.43.0+) — replaces `onDebugSessionStart`
216
+ * and `onDebugSessionEnd`. Expanded at load time based on `phase`.
217
+ */
218
+ export interface OnDebugSessionPolicy extends PromptSource {
219
+ enabled: boolean;
220
+ phase: "start" | "end";
221
+ /** Placeholders (inline prompt only): {{sessionName}}, {{sessionType}}, plus {{breakpointCount}}/{{activeFile}} for phase: "start" */
222
+ cooldownMs: number;
223
+ }
186
224
  export interface OnDebugSessionStartPolicy extends PromptSource {
187
225
  enabled: boolean;
188
226
  /**
@@ -305,6 +343,17 @@ export interface OnDiagnosticsClearedPolicy extends PromptSource {
305
343
  /** Placeholders (inline prompt only): {{file}} */
306
344
  cooldownMs: number;
307
345
  }
346
+ /**
347
+ * Unified diagnostics-state hook (v2.43.0+) — replaces `onDiagnosticsError`
348
+ * and `onDiagnosticsCleared` with a single schema entry carrying a `state`
349
+ * discriminator. Expanded at load time. Legacy names still accepted with a
350
+ * deprecation warning. Removed no earlier than v2.46 + 30 days.
351
+ */
352
+ export type OnDiagnosticsStateChangePolicy = ({
353
+ state: "error";
354
+ } & OnDiagnosticsErrorPolicy) | ({
355
+ state: "cleared";
356
+ } & OnDiagnosticsClearedPolicy);
308
357
  export interface OnTaskSuccessPolicy extends PromptSource {
309
358
  enabled: boolean;
310
359
  /** Placeholders (inline prompt only): {{taskId}}, {{output}} */
@@ -340,19 +389,26 @@ export interface AutomationPolicy {
340
389
  * Override per-hook via the hook's own effort field.
341
390
  */
342
391
  defaultEffort?: "low" | "medium" | "high" | "max";
392
+ /** @deprecated v2.43.0 — use `onDiagnosticsStateChange` with `state: "error"`. */
343
393
  onDiagnosticsError?: OnDiagnosticsErrorPolicy;
344
394
  onFileSave?: OnFileSavePolicy;
345
395
  /** Fired by Claude Code 2.1.83+ FileChanged hook — reacts to any file edit, not just explicit saves. */
346
396
  onFileChanged?: OnFileChangedPolicy;
347
397
  /** Fired by Claude Code 2.1.83+ CwdChanged hook — fires when CC's working directory changes. */
348
398
  onCwdChanged?: OnCwdChangedPolicy;
349
- /** Fired by Claude Code 2.1.76+ PostCompact hook — re-injects IDE context after compaction. */
399
+ /**
400
+ * Unified compaction hook (v2.43.0+) — replaces onPreCompact/onPostCompact.
401
+ * Expanded at load time into the internal `onPreCompact` or `onPostCompact`
402
+ * slot based on `phase`. Prefer this form in new policies.
403
+ */
404
+ onCompaction?: OnCompactionPolicy;
405
+ /** @deprecated v2.43.0 — use `onCompaction` with `phase: "post"`. Removed no earlier than v2.46 / 30 days. */
350
406
  onPostCompact?: OnPostCompactPolicy;
351
- /** Fired by Claude Code PreCompact hook runs before context window is trimmed. */
407
+ /** @deprecated v2.43.0 use `onCompaction` with `phase: "pre"`. Removed no earlier than v2.46 / 30 days. */
352
408
  onPreCompact?: OnPreCompactPolicy;
353
409
  /** Fired by Claude Code 2.1.76+ InstructionsLoaded hook — injects bridge status at session start. */
354
410
  onInstructionsLoaded?: OnInstructionsLoadedPolicy;
355
- /** Fired after every runTests call (or only on failures, depending on onFailureOnly). */
411
+ /** Fired after every runTests call. Use `filter` to target failures / pass-after-fail / all runs. */
356
412
  onTestRun?: OnTestRunPolicy;
357
413
  /** Fired when a test run transitions from failing → passing for the same runner. */
358
414
  onTestPassAfterFailure?: OnTestPassAfterFailurePolicy;
@@ -370,13 +426,20 @@ export interface AutomationPolicy {
370
426
  onTaskCreated?: OnTaskCreatedPolicy;
371
427
  /** Fired by Claude Code 2.1.89+ PermissionDenied hook — fires when a tool call is blocked. */
372
428
  onPermissionDenied?: OnPermissionDeniedPolicy;
373
- /** Fired when all errors/warnings clear for a file (non-zero → zero transition). */
429
+ /**
430
+ * Unified diagnostics-state hook (v2.43.0+) — replaces onDiagnosticsError/
431
+ * onDiagnosticsCleared. Expanded at load time based on `state`.
432
+ */
433
+ onDiagnosticsStateChange?: OnDiagnosticsStateChangePolicy;
434
+ /** @deprecated v2.43.0 — use `onDiagnosticsStateChange` with `state: "cleared"`. */
374
435
  onDiagnosticsCleared?: OnDiagnosticsClearedPolicy;
375
436
  /** Fired when a Claude orchestrator task completes with status done. */
376
437
  onTaskSuccess?: OnTaskSuccessPolicy;
377
- /** Fired when a VS Code debug session terminates (hasActiveSession transitions true→false). */
438
+ /** Unified debug-session hook (v2.43.0+). Expanded to onDebugSessionStart/End based on phase. */
439
+ onDebugSession?: OnDebugSessionPolicy;
440
+ /** @deprecated v2.43.0 — use `onDebugSession` with `phase: "end"`. */
378
441
  onDebugSessionEnd?: OnDebugSessionEndPolicy;
379
- /** Fired when a VS Code debug session starts (hasActiveSession transitions false→true). */
442
+ /** @deprecated v2.43.0 use `onDebugSession` with `phase: "start"`. */
380
443
  onDebugSessionStart?: OnDebugSessionStartPolicy;
381
444
  }
382
445
  export interface Diagnostic {
@@ -414,6 +477,8 @@ export declare class AutomationHooks {
414
477
  * each "write" to maintain immutability semantics at the value level.
415
478
  */
416
479
  private _automationState;
480
+ /** Accumulated skip counts keyed by hook name → reason. */
481
+ private _skipCountsByHookAndReason;
417
482
  /** Tracks previous error count per normalized file path for zero-transition detection. */
418
483
  private prevDiagnosticErrors;
419
484
  /**
@@ -605,5 +670,6 @@ export declare class AutomationHooks {
605
670
  getStats(): {
606
671
  hooksEnabled: number;
607
672
  lastFiredAt: string | null;
673
+ skipCountsByHookAndReason?: Record<string, Record<string, number>>;
608
674
  };
609
675
  }
@@ -76,6 +76,45 @@ function validatePromptSource(hookName, cfg) {
76
76
  }
77
77
  }
78
78
  }
79
+ /**
80
+ * Expand a discriminated unified hook (e.g. onCompaction.phase="pre"|"post")
81
+ * into the corresponding internal legacy slot, then clear the unified key.
82
+ * Throws if the discriminator value is invalid or if both the unified hook
83
+ * and the legacy slot are set simultaneously.
84
+ * legacyA/legacyB may be null when there is no legacy field to guard against.
85
+ */
86
+ function expandDiscriminatedHook(policy, unifiedKey, discriminatorKey, valueA, slotA, legacyA, valueB, slotB, legacyB, filePath) {
87
+ const p = policy;
88
+ const hook = p[unifiedKey];
89
+ if (hook === undefined)
90
+ return;
91
+ if (typeof hook !== "object" || hook === null) {
92
+ throw new Error(`"${unifiedKey}" must be an object`);
93
+ }
94
+ const discriminator = hook[discriminatorKey];
95
+ if (discriminator !== valueA && discriminator !== valueB) {
96
+ throw new Error(`"${unifiedKey}.${discriminatorKey}" must be "${valueA}" or "${valueB}" (got ${JSON.stringify(discriminator)})`);
97
+ }
98
+ // Only guard the slot that matches the actual discriminator value.
99
+ if (discriminator === valueA &&
100
+ legacyA !== null &&
101
+ p[legacyA] !== undefined) {
102
+ throw new Error(`Cannot set both "${unifiedKey}" (${discriminatorKey}: "${valueA}") and "${legacyA}" — use ${unifiedKey} only.`);
103
+ }
104
+ if (discriminator === valueB &&
105
+ legacyB !== null &&
106
+ p[legacyB] !== undefined) {
107
+ throw new Error(`Cannot set both "${unifiedKey}" (${discriminatorKey}: "${valueB}") and "${legacyB}" — use ${unifiedKey} only.`);
108
+ }
109
+ const { [discriminatorKey]: _disc, ...rest } = hook;
110
+ const targetKey = discriminator === valueA ? slotA : slotB;
111
+ p[targetKey] = rest;
112
+ p[unifiedKey] = undefined;
113
+ // Deprecation warnings for pre-existing legacy fields (set before expansion).
114
+ // These are emitted after the expansion so callers can check the hadLegacy*
115
+ // flags they captured before calling this helper.
116
+ void filePath; // filePath passed through to callers for their warn messages
117
+ }
79
118
  /** Load and validate a JSON automation policy file. Throws on any failure. */
80
119
  export function loadPolicy(filePath) {
81
120
  let raw;
@@ -96,6 +135,85 @@ export function loadPolicy(filePath) {
96
135
  throw new Error(`Automation policy must be a JSON object in "${filePath}"`);
97
136
  }
98
137
  const policy = parsed;
138
+ // ── onCompaction normalization (v2.43.0+) ───────────────────────────────
139
+ // Expand unified `onCompaction` into internal onPreCompact/onPostCompact.
140
+ // hadLegacy* captured BEFORE expansion so warn only for user-set values.
141
+ const hadLegacyPreCompact = policy.onPreCompact !== undefined;
142
+ const hadLegacyPostCompact = policy.onPostCompact !== undefined;
143
+ expandDiscriminatedHook(policy, "onCompaction", "phase", "pre", "onPreCompact", "onPreCompact", "post", "onPostCompact", "onPostCompact", filePath);
144
+ if (hadLegacyPreCompact) {
145
+ console.warn(`[automation-policy] "onPreCompact" in "${filePath}" is deprecated — migrate to "onCompaction" with phase: "pre". Legacy name removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
146
+ }
147
+ if (hadLegacyPostCompact) {
148
+ console.warn(`[automation-policy] "onPostCompact" in "${filePath}" is deprecated — migrate to "onCompaction" with phase: "post". Legacy name removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
149
+ }
150
+ // ── onDiagnosticsStateChange normalization (v2.43.0+) ───────────────────
151
+ // Expand into internal onDiagnosticsError/onDiagnosticsCleared based on state.
152
+ const hadLegacyDiagError = policy.onDiagnosticsError !== undefined;
153
+ const hadLegacyDiagCleared = policy.onDiagnosticsCleared !== undefined;
154
+ expandDiscriminatedHook(policy, "onDiagnosticsStateChange", "state", "error", "onDiagnosticsError", "onDiagnosticsError", "cleared", "onDiagnosticsCleared", "onDiagnosticsCleared", filePath);
155
+ if (hadLegacyDiagError) {
156
+ console.warn(`[automation-policy] "onDiagnosticsError" in "${filePath}" is deprecated — migrate to "onDiagnosticsStateChange" with state: "error". Legacy name removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
157
+ }
158
+ if (hadLegacyDiagCleared) {
159
+ console.warn(`[automation-policy] "onDiagnosticsCleared" in "${filePath}" is deprecated — migrate to "onDiagnosticsStateChange" with state: "cleared". Legacy name removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
160
+ }
161
+ // ── onDebugSession normalization (v2.43.0+) ─────────────────────────────
162
+ // Expand into internal onDebugSessionStart/onDebugSessionEnd based on phase.
163
+ const hadLegacyDebugStart = policy.onDebugSessionStart !== undefined;
164
+ const hadLegacyDebugEnd = policy.onDebugSessionEnd !== undefined;
165
+ expandDiscriminatedHook(policy, "onDebugSession", "phase", "start", "onDebugSessionStart", "onDebugSessionStart", "end", "onDebugSessionEnd", "onDebugSessionEnd", filePath);
166
+ if (hadLegacyDebugStart) {
167
+ console.warn(`[automation-policy] "onDebugSessionStart" in "${filePath}" is deprecated — migrate to "onDebugSession" with phase: "start". Legacy name removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
168
+ }
169
+ if (hadLegacyDebugEnd) {
170
+ console.warn(`[automation-policy] "onDebugSessionEnd" in "${filePath}" is deprecated — migrate to "onDebugSession" with phase: "end". Legacy name removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
171
+ }
172
+ // ── onTestRun(filter) normalization (v2.43.0+) ──────────────────────────
173
+ // The new canonical form is `onTestRun.filter: "any"|"failure"|"pass-after-fail"`.
174
+ // - "any" / "failure" rewrite to onFailureOnly:false/true on the same hook.
175
+ // - "pass-after-fail" is routed into the onTestPassAfterFailure slot (a
176
+ // separate internal hook with its own dispatch path).
177
+ // Legacy `onFailureOnly` field + legacy `onTestPassAfterFailure` hook still
178
+ // work but warn at load time.
179
+ const hadLegacyOnFailureOnly = policy.onTestRun !== undefined &&
180
+ policy.onTestRun.onFailureOnly !==
181
+ undefined;
182
+ const hadLegacyTestPassAfterFailure = policy.onTestPassAfterFailure !== undefined;
183
+ if (policy.onTestRun !== undefined &&
184
+ typeof policy.onTestRun === "object" &&
185
+ policy.onTestRun !== null) {
186
+ const tr = policy.onTestRun;
187
+ if (tr.filter !== undefined) {
188
+ if (tr.filter !== "any" &&
189
+ tr.filter !== "failure" &&
190
+ tr.filter !== "pass-after-fail") {
191
+ throw new Error(`"onTestRun.filter" must be one of "any", "failure", "pass-after-fail" (got ${JSON.stringify(tr.filter)})`);
192
+ }
193
+ if (tr.onFailureOnly !== undefined) {
194
+ throw new Error(`Cannot set both "onTestRun.filter" and "onTestRun.onFailureOnly" — use "filter" only.`);
195
+ }
196
+ if (tr.filter === "pass-after-fail") {
197
+ if (hadLegacyTestPassAfterFailure) {
198
+ throw new Error(`Cannot set both "onTestRun" (filter: "pass-after-fail") and legacy "onTestPassAfterFailure" — use onTestRun.filter only.`);
199
+ }
200
+ const { filter: _f, onFailureOnly: _ofo, ...rest } = tr;
201
+ policy.onTestPassAfterFailure =
202
+ rest;
203
+ policy.onTestRun = undefined;
204
+ }
205
+ else {
206
+ tr.onFailureOnly = tr.filter === "failure";
207
+ tr.filter = undefined;
208
+ }
209
+ }
210
+ }
211
+ if (hadLegacyOnFailureOnly) {
212
+ console.warn(`[automation-policy] "onTestRun.onFailureOnly" in "${filePath}" is deprecated — migrate to "onTestRun.filter" ("failure" or "any"). Legacy field removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
213
+ }
214
+ if (hadLegacyTestPassAfterFailure) {
215
+ console.warn(`[automation-policy] "onTestPassAfterFailure" in "${filePath}" is deprecated — migrate to "onTestRun" with filter: "pass-after-fail". Legacy hook removed no earlier than v2.46 + 30 days after v2.43.0 release.`);
216
+ }
99
217
  // Helper: throw with actual value in message for easier debugging
100
218
  function expectType(value, type, field) {
101
219
  if (typeof value !== type) {
@@ -290,7 +408,13 @@ export function loadPolicy(filePath) {
290
408
  if (typeof tr.enabled !== "boolean") {
291
409
  throw new Error(`"onTestRun.enabled" must be a boolean`);
292
410
  }
293
- if (typeof tr.onFailureOnly !== "boolean") {
411
+ // After C3 expansion, onFailureOnly is always populated (either by the
412
+ // filter rewrite or by user-provided legacy value). Accept missing as
413
+ // "failure" default for safety.
414
+ if (tr.onFailureOnly === undefined) {
415
+ tr.onFailureOnly = true;
416
+ }
417
+ else if (typeof tr.onFailureOnly !== "boolean") {
294
418
  throw new Error(`"onTestRun.onFailureOnly" must be a boolean`);
295
419
  }
296
420
  validatePromptSource("onTestRun", tr);
@@ -381,6 +505,8 @@ export class AutomationHooks {
381
505
  * each "write" to maintain immutability semantics at the value level.
382
506
  */
383
507
  _automationState = EMPTY_AUTOMATION_STATE;
508
+ /** Accumulated skip counts keyed by hook name → reason. */
509
+ _skipCountsByHookAndReason = new Map();
384
510
  /** Tracks previous error count per normalized file path for zero-transition detection. */
385
511
  prevDiagnosticErrors = new Map();
386
512
  /**
@@ -427,6 +553,13 @@ export class AutomationHooks {
427
553
  }
428
554
  for (const s of result.value.skipped) {
429
555
  this.log(`[interpreter] ${eventType}: skipped ${s.hook} — ${s.reason}`);
556
+ if (!this._skipCountsByHookAndReason.has(s.hook)) {
557
+ this._skipCountsByHookAndReason.set(s.hook, new Map());
558
+ }
559
+ const byReason = this._skipCountsByHookAndReason.get(s.hook);
560
+ if (byReason) {
561
+ byReason.set(s.reason, (byReason.get(s.reason) ?? 0) + 1);
562
+ }
430
563
  }
431
564
  for (const e of result.value.errors) {
432
565
  this.log(`[interpreter] ${eventType}: error in ${e.hook} — ${e.message}`);
@@ -768,7 +901,7 @@ export class AutomationHooks {
768
901
  onTestRun: p.onTestRun
769
902
  ? {
770
903
  enabled: p.onTestRun.enabled,
771
- onFailureOnly: p.onTestRun.onFailureOnly,
904
+ onFailureOnly: p.onTestRun.onFailureOnly ?? true,
772
905
  cooldownMs: p.onTestRun.cooldownMs,
773
906
  }
774
907
  : null,
@@ -888,7 +1021,18 @@ export class AutomationHooks {
888
1021
  const hook = this.policy[k];
889
1022
  return hook !== undefined && hook.enabled !== false;
890
1023
  }).length;
891
- return { hooksEnabled, lastFiredAt: this._lastFiredAt };
1024
+ // Convert skipCountsByHookAndReason Map to plain object
1025
+ const skipCountsByHookAndReason = {};
1026
+ for (const [hook, reasons] of this._skipCountsByHookAndReason) {
1027
+ skipCountsByHookAndReason[hook] = Object.fromEntries(reasons);
1028
+ }
1029
+ return {
1030
+ hooksEnabled,
1031
+ lastFiredAt: this._lastFiredAt,
1032
+ skipCountsByHookAndReason: Object.keys(skipCountsByHookAndReason).length > 0
1033
+ ? skipCountsByHookAndReason
1034
+ : undefined,
1035
+ };
892
1036
  }
893
1037
  }
894
1038
  //# sourceMappingURL=automation.js.map