@ironbee-ai/cli 0.8.1 → 0.8.3

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/CHANGELOG.md +12 -0
  2. package/README.md +6 -0
  3. package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
  4. package/dist/clients/claude/hooks/clear-verdict.js +25 -4
  5. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  6. package/dist/clients/claude/hooks/require-verdict.d.ts.map +1 -1
  7. package/dist/clients/claude/hooks/require-verdict.js +21 -3
  8. package/dist/clients/claude/hooks/require-verdict.js.map +1 -1
  9. package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
  10. package/dist/clients/cursor/hooks/clear-verdict.js +31 -5
  11. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  12. package/dist/clients/cursor/hooks/require-verdict.d.ts.map +1 -1
  13. package/dist/clients/cursor/hooks/require-verdict.js +24 -3
  14. package/dist/clients/cursor/hooks/require-verdict.js.map +1 -1
  15. package/dist/commands/backend-toggle.d.ts +20 -9
  16. package/dist/commands/backend-toggle.d.ts.map +1 -1
  17. package/dist/commands/backend-toggle.js +33 -26
  18. package/dist/commands/backend-toggle.js.map +1 -1
  19. package/dist/commands/config.d.ts +40 -5
  20. package/dist/commands/config.d.ts.map +1 -1
  21. package/dist/commands/config.js +67 -17
  22. package/dist/commands/config.js.map +1 -1
  23. package/dist/commands/disable-backend.d.ts.map +1 -1
  24. package/dist/commands/disable-backend.js +6 -2
  25. package/dist/commands/disable-backend.js.map +1 -1
  26. package/dist/commands/disable-verification.d.ts.map +1 -1
  27. package/dist/commands/disable-verification.js +5 -2
  28. package/dist/commands/disable-verification.js.map +1 -1
  29. package/dist/commands/enable-backend.d.ts.map +1 -1
  30. package/dist/commands/enable-backend.js +6 -2
  31. package/dist/commands/enable-backend.js.map +1 -1
  32. package/dist/commands/enable-verification.d.ts.map +1 -1
  33. package/dist/commands/enable-verification.js +5 -2
  34. package/dist/commands/enable-verification.js.map +1 -1
  35. package/dist/commands/update.d.ts +23 -0
  36. package/dist/commands/update.d.ts.map +1 -1
  37. package/dist/commands/update.js +189 -0
  38. package/dist/commands/update.js.map +1 -1
  39. package/dist/commands/verification-toggle.d.ts +18 -1
  40. package/dist/commands/verification-toggle.d.ts.map +1 -1
  41. package/dist/commands/verification-toggle.js +96 -21
  42. package/dist/commands/verification-toggle.js.map +1 -1
  43. package/dist/hooks/core/actions.d.ts +9 -0
  44. package/dist/hooks/core/actions.d.ts.map +1 -1
  45. package/dist/hooks/core/actions.js.map +1 -1
  46. package/dist/hooks/core/file-diff.d.ts +17 -0
  47. package/dist/hooks/core/file-diff.d.ts.map +1 -1
  48. package/dist/hooks/core/file-diff.js +72 -0
  49. package/dist/hooks/core/file-diff.js.map +1 -1
  50. package/dist/hooks/core/tool-use-stash.d.ts +7 -1
  51. package/dist/hooks/core/tool-use-stash.d.ts.map +1 -1
  52. package/dist/hooks/core/tool-use-stash.js.map +1 -1
  53. package/dist/lib/config.d.ts +87 -6
  54. package/dist/lib/config.d.ts.map +1 -1
  55. package/dist/lib/config.js +124 -29
  56. package/dist/lib/config.js.map +1 -1
  57. package/dist/lib/gitignore.d.ts +26 -11
  58. package/dist/lib/gitignore.d.ts.map +1 -1
  59. package/dist/lib/gitignore.js +71 -24
  60. package/dist/lib/gitignore.js.map +1 -1
  61. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.3 (2026-05-09)
4
+
5
+ ### Features
6
+
7
+ * **config:** optional .ironbee/config.local.json personal-override layer ([770c2f3](https://github.com/ironbee-ai/ironbee-cli/commit/770c2f333f5d1d9146aaafb6fd975c5966e1d681))
8
+
9
+ ## 0.8.2 (2026-05-08)
10
+
11
+ ### Features
12
+
13
+ * **update:** warn on prefix mismatch and PATH shadow before installing ([675a1f3](https://github.com/ironbee-ai/ironbee-cli/commit/675a1f3b62350dc5e78469f62568409e967c81a3))
14
+
3
15
  ## 0.8.1 (2026-05-08)
4
16
 
5
17
  ### Bug Fixes
package/README.md CHANGED
@@ -222,6 +222,10 @@ IronBee loads config from two locations (project deep-merges over global):
222
222
 
223
223
  "verification": {
224
224
  "enable": false
225
+ },
226
+
227
+ "fileChange": {
228
+ "captureChangeset": true
225
229
  }
226
230
  }
227
231
  ```
@@ -235,6 +239,8 @@ IronBee loads config from two locations (project deep-merges over global):
235
239
  | `ignoredVerifyPatterns` | Patterns to exclude from verification (checked first, applies to all cycles) | `[]` |
236
240
  | `maxRetries` | Max retry attempts before allowing completion (single global counter regardless of how many cycles run) | `3` |
237
241
  | `verification.enable` | Master switch for enforcement. **Inverse semantics from `recording`/`jobQueue`/`collector`** — verification is the core feature, opt-out via `enable: false`. When disabled, ironbee runs in monitoring-only mode (no enforcement hooks, skill, rule, or MCP servers; only session/activity/tool_call telemetry flows to the collector). | `true` |
242
+ | `fileChange.captureChangeset` | When `true`, every `file_change` event carries a hunks-only unified-diff `changeset` string (`@@` headers + `space`/`-`/`+` lines, no filename header — `file_path` already lives on the parent event). Off by default — the default `tool_input` whitelist deliberately strips file content from the wire; turning this on routes content through `file_change` instead. PreToolUse pre-reads the file when enabled so PostToolUse can produce a real before/after diff (Write/Edit on Claude; Write/StrReplace/Delete on Cursor). Skipped on binary content (NUL byte in first 4 KB). | `false` |
243
+ | `fileChange.maxChangesetBytes` | Hard cap on the `changeset` string size. Diffs over the cap are sliced on a UTF-8 byte boundary and end with a `\n... (truncated, N bytes omitted)\n` footer so the collector POST stays within typical reverse-proxy body limits. | `65536` (64 KB) |
238
244
 
239
245
  > **Migrating from older versions:** the previous flat `verifyPatterns` / `additionalVerifyPatterns` at the top level is no longer supported. The config loader fails loudly on legacy shape — move them under `browser.*` (or the appropriate runtime under `backend.<runtime>.*`).
240
246
 
@@ -1 +1 @@
1
- {"version":3,"file":"clear-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/clear-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA6DH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D3D"}
1
+ {"version":3,"file":"clear-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/clear-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAmFH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE3D"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.run = run;
18
+ const fs_1 = require("fs");
18
19
  const clear_verdict_1 = require("../../../hooks/core/clear-verdict");
19
20
  const actions_1 = require("../../../hooks/core/actions");
20
21
  const session_state_1 = require("../../../hooks/core/session-state");
@@ -29,27 +30,41 @@ function deriveChangeFacts(input, sessionId) {
29
30
  if (!ti) {
30
31
  return null;
31
32
  }
33
+ const stash = input.tool_use_id
34
+ ? (0, tool_use_stash_1.consumeToolUseData)(sessionId, input.tool_use_id)
35
+ : null;
32
36
  if (tool === "Edit") {
33
37
  const oldStr = ti.old_string ?? "";
34
38
  const newStr = ti.new_string ?? "";
35
39
  const counts = (0, file_diff_1.diffLineCounts)(oldStr, newStr);
36
- return { tool_name: "Edit", operation: "update", lines_added: counts.added, lines_removed: counts.removed };
40
+ return { tool_name: "Edit", operation: "update", lines_added: counts.added, lines_removed: counts.removed, stash };
37
41
  }
38
42
  if (tool === "Write") {
39
43
  const content = ti.content ?? "";
40
- const stash = input.tool_use_id
41
- ? (0, tool_use_stash_1.consumeToolUseData)(sessionId, input.tool_use_id)
42
- : null;
43
44
  const fileExisted = stash?.file_existed ?? false;
44
45
  return {
45
46
  tool_name: "Write",
46
47
  operation: fileExisted ? "update" : "create",
47
48
  lines_added: (0, file_diff_1.countLines)(content),
48
49
  lines_removed: fileExisted ? null : 0,
50
+ stash,
49
51
  };
50
52
  }
51
53
  return null;
52
54
  }
55
+ function buildChangeset(filePath, stash, maxBytes) {
56
+ const priorContent = stash?.prior_content ?? "";
57
+ let postContent;
58
+ try {
59
+ postContent = (0, fs_1.existsSync)(filePath) ? (0, fs_1.readFileSync)(filePath, "utf-8") : "";
60
+ }
61
+ catch (e) {
62
+ logger_1.logger.debug(`failed to read post-edit content of ${filePath} for changeset: ${e}`);
63
+ return undefined;
64
+ }
65
+ const diff = (0, file_diff_1.createUnifiedDiff)(priorContent, postContent, maxBytes);
66
+ return diff ?? undefined;
67
+ }
53
68
  async function run(projectDir) {
54
69
  let sessionId = "default";
55
70
  let input;
@@ -95,6 +110,12 @@ async function run(projectDir) {
95
110
  activity_id: (0, session_state_1.getActiveActivityId)(sessionDir),
96
111
  fix_id: (0, session_state_1.getActiveFixId)(sessionDir),
97
112
  };
113
+ if ((0, config_1.getCaptureFileChangeset)(config)) {
114
+ const changeset = buildChangeset(writtenFile, facts.stash, (0, config_1.getMaxChangesetBytes)(config));
115
+ if (changeset !== undefined) {
116
+ entry.changeset = changeset;
117
+ }
118
+ }
98
119
  await (0, actions_1.appendAction)(actionsFile, entry);
99
120
  (0, clear_verdict_1.runClearVerdict)({
100
121
  verdictFile: `${projectDir}/.ironbee/sessions/${sessionId}/verdict.json`,
@@ -1 +1 @@
1
- {"version":3,"file":"clear-verdict.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/clear-verdict.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clear-verdict.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/clear-verdict.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAmFH,kBAgEC;AAjJD,2BAA8C;AAC9C,qEAAoE;AACpE,yDAA8G;AAC9G,qEAAwF;AACxF,uEAAwF;AACxF,6DAA8G;AAC9G,gDAM6B;AAC7B,gDAAyD;AACzD,8CAA+C;AAsB/C,SAAS,iBAAiB,CAAC,KAA6B,EAAE,SAAiB;IACvE,MAAM,IAAI,GAAuB,KAAK,CAAC,SAAS,CAAC;IACjD,MAAM,EAAE,GAAyC,KAAK,CAAC,UAAU,CAAC;IAClE,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAA0B,KAAK,CAAC,WAAW;QAClD,CAAC,CAAC,IAAA,mCAAkB,EAAiB,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC;QAClE,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAmB,IAAA,0BAAc,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACvH,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GAAW,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;QACzC,MAAM,WAAW,GAAY,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC;QAC1D,OAAO;YACH,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YAC5C,WAAW,EAAE,IAAA,sBAAU,EAAC,OAAO,CAAC;YAChC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,KAAK;SACR,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,KAA4B,EAAE,QAAgB;IACpF,MAAM,YAAY,GAAW,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;IACxD,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACD,WAAW,GAAG,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,uCAAuC,QAAQ,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,GAAkB,IAAA,6BAAiB,EAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnF,OAAO,IAAI,IAAI,SAAS,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,SAAS,GAAW,SAAS,CAAC;IAClC,IAAI,KAA6B,CAAC;IAClC,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA2B,CAAC;QAC1D,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;QAC1C,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAuB,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;IACpE,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACpG,eAAM,CAAC,KAAK,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,IAAA,6BAAoB,EAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;QAC7C,eAAM,CAAC,KAAK,CAAC,+DAA+D,WAAW,GAAG,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAE1D,MAAM,KAAK,GAAuB,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,eAAM,CAAC,KAAK,CAAC,4CAA4C,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,GAAqB;QAC5B,GAAG,IAAA,oBAAU,EAAC,WAAW,CAAC;QAC1B,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW,EAAE,IAAA,mCAAmB,EAAC,UAAU,CAAE;QAC7C,MAAM,EAAE,IAAA,8BAAc,EAAC,UAAU,CAAE;KACtC,CAAC;IACF,IAAI,IAAA,gCAAuB,EAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAuB,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC,CAAC;QAC7G,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAChC,CAAC;IACL,CAAC;IACD,MAAM,IAAA,sBAAY,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAEvC,IAAA,+BAAe,EAAC;QACZ,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,eAAe;QACxE,UAAU;KACb,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"require-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/require-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAkBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC3D"}
1
+ {"version":3,"file":"require-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/require-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3D"}
@@ -21,6 +21,7 @@ const fs_1 = require("fs");
21
21
  const actions_1 = require("../../../hooks/core/actions");
22
22
  const activity_1 = require("../../../hooks/core/activity");
23
23
  const tool_use_stash_1 = require("../../../hooks/core/tool-use-stash");
24
+ const config_1 = require("../../../lib/config");
24
25
  const logger_1 = require("../../../lib/logger");
25
26
  const stdin_1 = require("../../../lib/stdin");
26
27
  async function run(projectDir) {
@@ -46,9 +47,26 @@ Then you can edit code to fix the issues.
46
47
  `);
47
48
  process.exit(2);
48
49
  }
49
- if (input.tool_name === "Write" && input.tool_input?.file_path && input.tool_use_id) {
50
- const state = { file_existed: (0, fs_1.existsSync)(input.tool_input.file_path) };
51
- (0, tool_use_stash_1.stashToolUseData)(sessionId, input.tool_use_id, state);
50
+ const filePath = input.tool_input?.file_path;
51
+ if (filePath && input.tool_use_id) {
52
+ const config = (0, config_1.loadConfig)(projectDir);
53
+ const captureChangeset = (0, config_1.getCaptureFileChangeset)(config);
54
+ const fileExisted = (0, fs_1.existsSync)(filePath);
55
+ // We always stash for Write so PostToolUse can label create vs update.
56
+ // For Edit we only stash when changeset capture is on — there's no
57
+ // operation-derivation need otherwise (Edit is always "update").
58
+ if (input.tool_name === "Write" || (input.tool_name === "Edit" && captureChangeset)) {
59
+ const state = { file_existed: fileExisted };
60
+ if (captureChangeset && fileExisted) {
61
+ try {
62
+ state.prior_content = (0, fs_1.readFileSync)(filePath, "utf-8");
63
+ }
64
+ catch (e) {
65
+ logger_1.logger.debug(`failed to pre-read ${filePath} for changeset capture: ${e}`);
66
+ }
67
+ }
68
+ (0, tool_use_stash_1.stashToolUseData)(sessionId, input.tool_use_id, state);
69
+ }
52
70
  }
53
71
  await (0, activity_1.startActivity)({ sessionDir, actionsFile, source: "pre_tool_use" });
54
72
  process.exit(0);
@@ -1 +1 @@
1
- {"version":3,"file":"require-verdict.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/require-verdict.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAkBH,kBAkCC;AAlDD,2BAAgC;AAChC,yDAA2E;AAC3E,2DAA6D;AAC7D,uEAAsF;AACtF,gDAAyD;AACzD,8CAA+C;AAWxC,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA4B,CAAC;IACjC,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA0B,CAAC;IAC7D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAE1D,IAAI,IAAA,sCAA4B,EAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;yBAGJ,SAAS;;;CAGjC,CAAC,CAAC;QACK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAClF,MAAM,KAAK,GAAmB,EAAE,YAAY,EAAE,IAAA,eAAU,EAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACvF,IAAA,iCAAgB,EAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,IAAA,wBAAa,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAEzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"require-verdict.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/require-verdict.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAmBH,kBAmDC;AApED,2BAA8C;AAC9C,yDAA2E;AAC3E,2DAA6D;AAC7D,uEAAsF;AACtF,gDAAyF;AACzF,gDAAyD;AACzD,8CAA+C;AAWxC,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA4B,CAAC;IACjC,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA0B,CAAC;IAC7D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAE1D,IAAI,IAAA,sCAA4B,EAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;yBAGJ,SAAS;;;CAGjC,CAAC,CAAC;QACK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAuB,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;IACjE,IAAI,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAY,IAAA,gCAAuB,EAAC,MAAM,CAAC,CAAC;QAClE,MAAM,WAAW,GAAY,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAC;QAElD,uEAAuE;QACvE,mEAAmE;QACnE,iEAAiE;QACjE,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,gBAAgB,CAAC,EAAE,CAAC;YAClF,MAAM,KAAK,GAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAC5D,IAAI,gBAAgB,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACD,KAAK,CAAC,aAAa,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBAClB,eAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,2BAA2B,CAAC,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC;YACD,IAAA,iCAAgB,EAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED,MAAM,IAAA,wBAAa,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAEzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"clear-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/clear-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAmEH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D3D"}
1
+ {"version":3,"file":"clear-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/clear-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6FH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE3D"}
@@ -19,6 +19,7 @@
19
19
  */
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.run = run;
22
+ const fs_1 = require("fs");
22
23
  const clear_verdict_1 = require("../../../hooks/core/clear-verdict");
23
24
  const actions_1 = require("../../../hooks/core/actions");
24
25
  const session_state_1 = require("../../../hooks/core/session-state");
@@ -33,30 +34,49 @@ function deriveChangeFacts(input, sessionId) {
33
34
  if (!ti) {
34
35
  return null;
35
36
  }
37
+ const stash = input.tool_use_id
38
+ ? (0, tool_use_stash_1.consumeToolUseData)(sessionId, input.tool_use_id)
39
+ : null;
36
40
  if (tool === "StrReplace") {
37
41
  const oldStr = ti.old_string ?? "";
38
42
  const newStr = ti.new_string ?? "";
39
43
  const counts = (0, file_diff_1.diffLineCounts)(oldStr, newStr);
40
- return { tool_name: "StrReplace", operation: "update", lines_added: counts.added, lines_removed: counts.removed };
44
+ return { tool_name: "StrReplace", operation: "update", lines_added: counts.added, lines_removed: counts.removed, stash };
41
45
  }
42
46
  if (tool === "Write") {
43
47
  const contents = ti.contents ?? "";
44
- const stash = input.tool_use_id
45
- ? (0, tool_use_stash_1.consumeToolUseData)(sessionId, input.tool_use_id)
46
- : null;
47
48
  const fileExisted = stash?.file_existed ?? false;
48
49
  return {
49
50
  tool_name: "Write",
50
51
  operation: fileExisted ? "update" : "create",
51
52
  lines_added: (0, file_diff_1.countLines)(contents),
52
53
  lines_removed: fileExisted ? null : 0,
54
+ stash,
53
55
  };
54
56
  }
55
57
  if (tool === "Delete") {
56
- return { tool_name: "Delete", operation: "delete", lines_added: 0, lines_removed: null };
58
+ return { tool_name: "Delete", operation: "delete", lines_added: 0, lines_removed: null, stash };
57
59
  }
58
60
  return null;
59
61
  }
62
+ function buildChangeset(filePath, operation, stash, maxBytes) {
63
+ const priorContent = stash?.prior_content ?? "";
64
+ let postContent;
65
+ if (operation === "delete") {
66
+ postContent = "";
67
+ }
68
+ else {
69
+ try {
70
+ postContent = (0, fs_1.existsSync)(filePath) ? (0, fs_1.readFileSync)(filePath, "utf-8") : "";
71
+ }
72
+ catch (e) {
73
+ logger_1.logger.debug(`failed to read post-edit content of ${filePath} for changeset: ${e}`);
74
+ return undefined;
75
+ }
76
+ }
77
+ const diff = (0, file_diff_1.createUnifiedDiff)(priorContent, postContent, maxBytes);
78
+ return diff ?? undefined;
79
+ }
60
80
  async function run(projectDir) {
61
81
  let input;
62
82
  try {
@@ -101,6 +121,12 @@ async function run(projectDir) {
101
121
  activity_id: (0, session_state_1.getActiveActivityId)(sessionDir),
102
122
  fix_id: (0, session_state_1.getActiveFixId)(sessionDir),
103
123
  };
124
+ if ((0, config_1.getCaptureFileChangeset)(config)) {
125
+ const changeset = buildChangeset(writtenFile, facts.operation, facts.stash, (0, config_1.getMaxChangesetBytes)(config));
126
+ if (changeset !== undefined) {
127
+ entry.changeset = changeset;
128
+ }
129
+ }
104
130
  await (0, actions_1.appendAction)(actionsFile, entry);
105
131
  (0, clear_verdict_1.runClearVerdict)({
106
132
  verdictFile: `${sessionDir}/verdict.json`,
@@ -1 +1 @@
1
- {"version":3,"file":"clear-verdict.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/clear-verdict.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clear-verdict.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/clear-verdict.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"require-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/require-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C3D"}
1
+ {"version":3,"file":"require-verdict.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/require-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0BH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D3D"}
@@ -20,6 +20,7 @@ const fs_1 = require("fs");
20
20
  const actions_1 = require("../../../hooks/core/actions");
21
21
  const activity_1 = require("../../../hooks/core/activity");
22
22
  const tool_use_stash_1 = require("../../../hooks/core/tool-use-stash");
23
+ const config_1 = require("../../../lib/config");
23
24
  const logger_1 = require("../../../lib/logger");
24
25
  const stdin_1 = require("../../../lib/stdin");
25
26
  async function run(projectDir) {
@@ -52,9 +53,29 @@ Then you can edit code to fix the issues.`,
52
53
  process.exit(2);
53
54
  return;
54
55
  }
55
- if (input.tool_name === "Write" && input.tool_input?.path && input.tool_use_id) {
56
- const state = { file_existed: (0, fs_1.existsSync)(input.tool_input.path) };
57
- (0, tool_use_stash_1.stashToolUseData)(sessionId, input.tool_use_id, state);
56
+ const filePath = input.tool_input?.path;
57
+ if (filePath && input.tool_use_id) {
58
+ const config = (0, config_1.loadConfig)(projectDir);
59
+ const captureChangeset = (0, config_1.getCaptureFileChangeset)(config);
60
+ const fileExisted = (0, fs_1.existsSync)(filePath);
61
+ // Always stash for Write so PostToolUse can label create vs update.
62
+ // For StrReplace / Delete we only stash when changeset capture is on
63
+ // (StrReplace is always "update" and Delete is always "delete" — no
64
+ // operation-derivation need otherwise).
65
+ const isWrite = input.tool_name === "Write";
66
+ const isOtherEdit = input.tool_name === "StrReplace" || input.tool_name === "Delete";
67
+ if (isWrite || (isOtherEdit && captureChangeset)) {
68
+ const state = { file_existed: fileExisted };
69
+ if (captureChangeset && fileExisted) {
70
+ try {
71
+ state.prior_content = (0, fs_1.readFileSync)(filePath, "utf-8");
72
+ }
73
+ catch (e) {
74
+ logger_1.logger.debug(`failed to pre-read ${filePath} for changeset capture: ${e}`);
75
+ }
76
+ }
77
+ (0, tool_use_stash_1.stashToolUseData)(sessionId, input.tool_use_id, state);
78
+ }
58
79
  }
59
80
  await (0, activity_1.startActivity)({ sessionDir, actionsFile, source: "pre_tool_use" });
60
81
  const output = { permission: "allow" };
@@ -1 +1 @@
1
- {"version":3,"file":"require-verdict.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/require-verdict.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAyBH,kBA2CC;AAlED,2BAAgC;AAChC,yDAA2E;AAC3E,2DAA6D;AAC7D,uEAAsF;AACtF,gDAAyD;AACzD,8CAA+C;AAkBxC,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA4B,CAAC;IACjC,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA0B,CAAC;IAC7D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAA2B,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACX,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,eAAe,IAAI,SAAS,CAAC;IAC7D,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAE1D,IAAI,IAAA,sCAA4B,EAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,MAAM,MAAM,GAA2B;YACnC,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE;;;yBAGF,SAAS;;0CAEQ;SACjC,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACX,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAmB,EAAE,YAAY,EAAE,IAAA,eAAU,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,IAAA,iCAAgB,EAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,IAAA,wBAAa,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAEzE,MAAM,MAAM,GAA2B,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"require-verdict.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/require-verdict.ts"],"names":[],"mappings":"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"}
@@ -16,30 +16,41 @@
16
16
  * Both throw when `<runtime>` isn't in the registered runtime set
17
17
  * (today: just `node`); callers handle the error and exit.
18
18
  */
19
+ import { ConfigTarget } from "../lib/config";
19
20
  export declare function knownRuntimes(): string[];
20
21
  export declare function assertKnownRuntime(runtime: string): void;
21
22
  /**
22
23
  * Enable a backend runtime: write default `verifyPatterns` + splice the
23
24
  * runtime fragment into installed skill/rule/command md files.
24
25
  *
25
- * No-op + warning when patterns are already populated (the user must
26
- * `disable-backend` first to reset, since we don't want to clobber their
27
- * custom additions).
26
+ * No-op + warning when patterns are already populated **in the targeted
27
+ * layer** (the user must `disable-backend` first to reset, since we don't
28
+ * want to clobber their custom additions). Higher-priority layers' patterns
29
+ * are not consulted by this check — they ride along through `loadConfig`
30
+ * at runtime, but they don't shadow our writes the way they do for boolean
31
+ * `verification.enable` flips.
32
+ *
33
+ * `target` selects which config layer to write:
34
+ * - `"project"` (default) — committed `<project>/.ironbee/config.json`.
35
+ * - `"global"` — `~/.ironbee/config.json`.
36
+ * - `"local"` — gitignored `<project>/.ironbee/config.local.json`.
28
37
  *
29
38
  * `clientName`: optional filter for which clients' md files to update.
30
39
  * Same semantics as `applyVerificationToggle` — `"all"` / `<name>` /
31
40
  * undefined (default: every registered client; per-file existsSync gate
32
41
  * skips ones without installed artifacts).
33
42
  */
34
- export declare function applyEnableBackend(runtime: string, projectDir: string, clientName?: string): void;
43
+ export declare function applyEnableBackend(runtime: string, projectDir: string, target: ConfigTarget, clientName?: string): void;
35
44
  /**
36
- * Disable a backend runtime: reset `verifyPatterns` to `[]` and reset the
37
- * runtime fragment in installed skill/rule/command md files.
45
+ * Disable a backend runtime: reset `verifyPatterns` to `[]` in the
46
+ * targeted layer and reset the runtime fragment in installed
47
+ * skill/rule/command md files.
38
48
  *
39
49
  * Customizations of `alwaysRequired`, `evidencePaths`, and
40
- * `additionalVerifyPatterns` are preserved. Idempotent.
50
+ * `additionalVerifyPatterns` are preserved (we only touch `verifyPatterns`).
51
+ * Idempotent — no-op when the targeted layer has no patterns to clear.
41
52
  *
42
- * `clientName`: same semantics as `applyEnableBackend`.
53
+ * `target` / `clientName` semantics match `applyEnableBackend`.
43
54
  */
44
- export declare function applyDisableBackend(runtime: string, projectDir: string, clientName?: string): void;
55
+ export declare function applyDisableBackend(runtime: string, projectDir: string, target: ConfigTarget, clientName?: string): void;
45
56
  //# sourceMappingURL=backend-toggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend-toggle.d.ts","sourceRoot":"","sources":["../../src/commands/backend-toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiDH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAWxC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKxD;AAyCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAgDjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAwBlG"}
1
+ {"version":3,"file":"backend-toggle.d.ts","sourceRoot":"","sources":["../../src/commands/backend-toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,EAAmB,YAAY,EAA0C,MAAM,eAAe,CAAC;AAyCtG,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAWxC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKxD;AAqCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,MAAM,GACpB,IAAI,CAgDN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,MAAM,GACpB,IAAI,CAwBN"}
@@ -68,10 +68,7 @@ function assertKnownRuntime(runtime) {
68
68
  throw new Error(`Unknown runtime '${runtime}'. Available: ${known.join(", ")}.`);
69
69
  }
70
70
  }
71
- function projectConfigPath(projectDir) {
72
- return (0, path_1.join)((0, path_1.resolve)(projectDir), ".ironbee", "config.json");
73
- }
74
- function readProjectConfig(configPath) {
71
+ function readLayerConfig(configPath) {
75
72
  if (!(0, fs_1.existsSync)(configPath)) {
76
73
  return {};
77
74
  }
@@ -80,10 +77,10 @@ function readProjectConfig(configPath) {
80
77
  }
81
78
  catch (e) {
82
79
  logger_1.logger.debug(`failed to read ${configPath}: ${e}`);
83
- throw new Error(`Project config at ${configPath} is not valid JSON: ${e instanceof Error ? e.message : e}`);
80
+ throw new Error(`Config at ${configPath} is not valid JSON: ${e instanceof Error ? e.message : e}`);
84
81
  }
85
82
  }
86
- function writeProjectConfig(configPath, config) {
83
+ function writeLayerConfig(configPath, config) {
87
84
  (0, fs_1.mkdirSync)((0, path_1.join)(configPath, ".."), { recursive: true });
88
85
  (0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2) + "\n");
89
86
  }
@@ -108,27 +105,35 @@ function clientFilterForRuntime(projectDir, clientName) {
108
105
  * Enable a backend runtime: write default `verifyPatterns` + splice the
109
106
  * runtime fragment into installed skill/rule/command md files.
110
107
  *
111
- * No-op + warning when patterns are already populated (the user must
112
- * `disable-backend` first to reset, since we don't want to clobber their
113
- * custom additions).
108
+ * No-op + warning when patterns are already populated **in the targeted
109
+ * layer** (the user must `disable-backend` first to reset, since we don't
110
+ * want to clobber their custom additions). Higher-priority layers' patterns
111
+ * are not consulted by this check — they ride along through `loadConfig`
112
+ * at runtime, but they don't shadow our writes the way they do for boolean
113
+ * `verification.enable` flips.
114
+ *
115
+ * `target` selects which config layer to write:
116
+ * - `"project"` (default) — committed `<project>/.ironbee/config.json`.
117
+ * - `"global"` — `~/.ironbee/config.json`.
118
+ * - `"local"` — gitignored `<project>/.ironbee/config.local.json`.
114
119
  *
115
120
  * `clientName`: optional filter for which clients' md files to update.
116
121
  * Same semantics as `applyVerificationToggle` — `"all"` / `<name>` /
117
122
  * undefined (default: every registered client; per-file existsSync gate
118
123
  * skips ones without installed artifacts).
119
124
  */
120
- function applyEnableBackend(runtime, projectDir, clientName) {
125
+ function applyEnableBackend(runtime, projectDir, target, clientName) {
121
126
  assertKnownRuntime(runtime);
122
- const configPath = projectConfigPath(projectDir);
123
- const config = readProjectConfig(configPath);
127
+ const configPath = (0, config_1.getTargetConfigPath)(target, projectDir);
128
+ const config = readLayerConfig(configPath);
124
129
  if (!config.backend) {
125
130
  config.backend = {};
126
131
  }
127
132
  const block = config.backend[runtime] ?? {};
128
133
  const existing = Array.isArray(block.verifyPatterns) ? block.verifyPatterns : [];
129
134
  if (existing.length > 0) {
130
- console.log(`${output_1.pc.yellow("⚠")} ${runtime} backend is already enabled in ${output_1.pc.dim(configPath)}.\n` +
131
- ` Run ${output_1.pc.cyan(`ironbee disable-backend ${runtime}`)} first, or empty the verifyPatterns array manually,\n` +
135
+ console.log(`${output_1.pc.yellow("⚠")} ${runtime} backend is already enabled in ${target} config (${output_1.pc.dim(configPath)}).\n` +
136
+ ` Run ${output_1.pc.cyan(`ironbee disable-backend ${runtime}${target === "project" ? "" : ` --${target}`}`)} first, or empty the verifyPatterns array manually,\n` +
132
137
  ` then re-run enable-backend to re-apply defaults.`);
133
138
  return;
134
139
  }
@@ -138,13 +143,13 @@ function applyEnableBackend(runtime, projectDir, clientName) {
138
143
  }
139
144
  block.verifyPatterns = [...defaults];
140
145
  config.backend[runtime] = block;
141
- writeProjectConfig(configPath, config);
146
+ writeLayerConfig(configPath, config);
142
147
  // Splice the runtime fragment into installed md files (skill/rule/command).
143
148
  // `clientName` narrows the iteration; without it we sweep every registered
144
149
  // client and rely on existsSync to skip ones without installed artifacts.
145
150
  const clientFilter = clientFilterForRuntime(projectDir, clientName);
146
151
  const updatedFiles = (0, runtime_section_1.applyRuntimeToProjectFiles)(projectDir, runtime, true, fragmentsDirFor, clientFilter);
147
- console.log(`${output_1.pc.green("✓")} Enabled ${output_1.pc.bold(runtime)} backend verification in ${output_1.pc.dim(configPath)}.`);
152
+ console.log(`${output_1.pc.green("✓")} Enabled ${output_1.pc.bold(runtime)} backend verification in ${target} config (${output_1.pc.dim(configPath)}).`);
148
153
  console.log(` ${output_1.pc.dim("Patterns applied to backend." + runtime + ".verifyPatterns:")}`);
149
154
  for (const p of defaults) {
150
155
  console.log(` ${output_1.pc.dim("- " + p)}`);
@@ -158,29 +163,31 @@ function applyEnableBackend(runtime, projectDir, clientName) {
158
163
  console.log(`\n ${output_1.pc.dim("Edit the patterns to match your project, or add overrides via")} ${output_1.pc.cyan(`backend.${runtime}.additionalVerifyPatterns`)}${output_1.pc.dim(".")}`);
159
164
  }
160
165
  /**
161
- * Disable a backend runtime: reset `verifyPatterns` to `[]` and reset the
162
- * runtime fragment in installed skill/rule/command md files.
166
+ * Disable a backend runtime: reset `verifyPatterns` to `[]` in the
167
+ * targeted layer and reset the runtime fragment in installed
168
+ * skill/rule/command md files.
163
169
  *
164
170
  * Customizations of `alwaysRequired`, `evidencePaths`, and
165
- * `additionalVerifyPatterns` are preserved. Idempotent.
171
+ * `additionalVerifyPatterns` are preserved (we only touch `verifyPatterns`).
172
+ * Idempotent — no-op when the targeted layer has no patterns to clear.
166
173
  *
167
- * `clientName`: same semantics as `applyEnableBackend`.
174
+ * `target` / `clientName` semantics match `applyEnableBackend`.
168
175
  */
169
- function applyDisableBackend(runtime, projectDir, clientName) {
176
+ function applyDisableBackend(runtime, projectDir, target, clientName) {
170
177
  assertKnownRuntime(runtime);
171
- const configPath = projectConfigPath(projectDir);
172
- const config = readProjectConfig(configPath);
178
+ const configPath = (0, config_1.getTargetConfigPath)(target, projectDir);
179
+ const config = readLayerConfig(configPath);
173
180
  const block = config.backend?.[runtime];
174
181
  const currentPatterns = Array.isArray(block?.verifyPatterns) ? block.verifyPatterns : [];
175
182
  if (block === undefined || currentPatterns.length === 0) {
176
- console.log(`${output_1.pc.dim("·")} ${runtime} backend already disabled (no-op).`);
183
+ console.log(`${output_1.pc.dim("·")} ${runtime} backend already disabled in ${target} config (no-op).`);
177
184
  return;
178
185
  }
179
186
  block.verifyPatterns = [];
180
- writeProjectConfig(configPath, config);
187
+ writeLayerConfig(configPath, config);
181
188
  const clientFilter = clientFilterForRuntime(projectDir, clientName);
182
189
  const updatedFiles = (0, runtime_section_1.applyRuntimeToProjectFiles)(projectDir, runtime, false, fragmentsDirFor, clientFilter);
183
- console.log(`${output_1.pc.green("✓")} Disabled ${output_1.pc.bold(runtime)} backend verification in ${output_1.pc.dim(configPath)}.`);
190
+ console.log(`${output_1.pc.green("✓")} Disabled ${output_1.pc.bold(runtime)} backend verification in ${target} config (${output_1.pc.dim(configPath)}).`);
184
191
  console.log(` ${output_1.pc.dim("Customizations of alwaysRequired, evidencePaths, additionalVerifyPatterns are preserved.")}`);
185
192
  if (updatedFiles.length > 0) {
186
193
  console.log(` ${output_1.pc.dim("Reset agent guidance for the runtime block in:")}`);
@@ -1 +1 @@
1
- {"version":3,"file":"backend-toggle.js","sourceRoot":"","sources":["../../src/commands/backend-toggle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend-toggle.js","sourceRoot":"","sources":["../../src/commands/backend-toggle.ts"],"names":[],"mappings":"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"}