greprag 5.41.0 → 5.42.1

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 (70) hide show
  1. package/dist/archive/glyph-font.d.ts +22 -0
  2. package/dist/archive/glyph-font.js +72 -0
  3. package/dist/archive/glyph-font.js.map +1 -0
  4. package/dist/archive/page-renderer.d.ts +67 -0
  5. package/dist/archive/page-renderer.js +197 -0
  6. package/dist/archive/page-renderer.js.map +1 -0
  7. package/dist/archive/png-codec.d.ts +21 -0
  8. package/dist/archive/png-codec.js +197 -0
  9. package/dist/archive/png-codec.js.map +1 -0
  10. package/dist/archive/transcript-extract.d.ts +39 -0
  11. package/dist/archive/transcript-extract.js +187 -0
  12. package/dist/archive/transcript-extract.js.map +1 -0
  13. package/dist/ccr-store.d.ts +49 -0
  14. package/dist/ccr-store.js +171 -0
  15. package/dist/ccr-store.js.map +1 -0
  16. package/dist/commands/archive.d.ts +81 -0
  17. package/dist/commands/archive.js +358 -0
  18. package/dist/commands/archive.js.map +1 -0
  19. package/dist/commands/context-governor.d.ts +82 -0
  20. package/dist/commands/context-governor.js +344 -0
  21. package/dist/commands/context-governor.js.map +1 -0
  22. package/dist/commands/crush-stats.d.ts +36 -0
  23. package/dist/commands/crush-stats.js +142 -0
  24. package/dist/commands/crush-stats.js.map +1 -0
  25. package/dist/commands/crush.d.ts +24 -0
  26. package/dist/commands/crush.js +183 -0
  27. package/dist/commands/crush.js.map +1 -0
  28. package/dist/commands/inbox-watch-supervisor.js +8 -65
  29. package/dist/commands/inbox-watch-supervisor.js.map +1 -1
  30. package/dist/commands/init.js +93 -0
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/pipe-wrap.d.ts +97 -0
  33. package/dist/commands/pipe-wrap.js +324 -0
  34. package/dist/commands/pipe-wrap.js.map +1 -0
  35. package/dist/commands/watcher-registry.d.ts +1 -8
  36. package/dist/commands/watcher-registry.js +10 -47
  37. package/dist/commands/watcher-registry.js.map +1 -1
  38. package/dist/crush/adaptive-sizer.d.ts +40 -0
  39. package/dist/crush/adaptive-sizer.js +156 -0
  40. package/dist/crush/adaptive-sizer.js.map +1 -0
  41. package/dist/crush/crush-keywords.d.ts +40 -0
  42. package/dist/crush/crush-keywords.js +110 -0
  43. package/dist/crush/crush-keywords.js.map +1 -0
  44. package/dist/crush/crush-types.d.ts +38 -0
  45. package/dist/crush/crush-types.js +36 -0
  46. package/dist/crush/crush-types.js.map +1 -0
  47. package/dist/crush/index.d.ts +16 -0
  48. package/dist/crush/index.js +48 -0
  49. package/dist/crush/index.js.map +1 -0
  50. package/dist/crush/json-crusher.d.ts +38 -0
  51. package/dist/crush/json-crusher.js +250 -0
  52. package/dist/crush/json-crusher.js.map +1 -0
  53. package/dist/crush/json-detectors.d.ts +48 -0
  54. package/dist/crush/json-detectors.js +211 -0
  55. package/dist/crush/json-detectors.js.map +1 -0
  56. package/dist/crush/log-compressor.d.ts +60 -0
  57. package/dist/crush/log-compressor.js +394 -0
  58. package/dist/crush/log-compressor.js.map +1 -0
  59. package/dist/crush/search-compressor.d.ts +60 -0
  60. package/dist/crush/search-compressor.js +210 -0
  61. package/dist/crush/search-compressor.js.map +1 -0
  62. package/dist/hook.js +49 -1
  63. package/dist/hook.js.map +1 -1
  64. package/dist/index.js +487 -449
  65. package/dist/index.js.map +1 -1
  66. package/dist/session-id.js +7 -12
  67. package/dist/session-id.js.map +1 -1
  68. package/package.json +2 -2
  69. package/skill/mechanic/SKILL.md +1 -1
  70. package/skill/templates/chip-spawn.md +4 -2
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ // adr: adr/crush-engine.md
3
+ /** greprag crush / greprag retrieve — pre-LLM tool-output compression.
4
+ *
5
+ * `greprag crush --type <log|search|json> [--ccr] [--query "words"]`
6
+ * reads stdin, writes crushed output to stdout. Designed to sit inside
7
+ * users' piped commands, so the contract is HARD:
8
+ *
9
+ * - Exit 0 ALWAYS, even on internal error (pass stdin through verbatim).
10
+ * - Token-validate-or-revert: if crushed output isn't fewer estimated
11
+ * tokens than the input, emit the input unchanged.
12
+ * - Below-threshold skip: log/search < 500B, json < 1KB pass through.
13
+ * - With --ccr: the ORIGINAL is stored in the local CCR store
14
+ * (~/.greprag/ccr.db; override GREPRAG_CCR_DB) and a trailing
15
+ * `<<ccr:HASH>>` marker (first 16 hex of sha256) is appended.
16
+ *
17
+ * `greprag retrieve <hash>` prints the stored original to stdout.
18
+ *
19
+ * Compressors come from the local crush mirror (canonical source:
20
+ * packages/core/src/crush — the CLI cannot import @greprag/core).
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.CRUSH_HELP = void 0;
24
+ exports.runCrush = runCrush;
25
+ exports.runRetrieve = runRetrieve;
26
+ const crush_1 = require("../crush");
27
+ const ccr_store_1 = require("../ccr-store");
28
+ const crush_stats_1 = require("./crush-stats");
29
+ exports.CRUSH_HELP = `greprag crush — compress tool output before it reaches the model.
30
+
31
+ Usage:
32
+ <command> | greprag crush --type <log|search|json> [--ccr] [--query "words"] [--stats]
33
+ greprag crush stats
34
+ greprag retrieve <hash>
35
+
36
+ Reads stdin, writes the crushed version to stdout.
37
+
38
+ Flags:
39
+ --type <log|search|json> What the input is:
40
+ log build/test output (pytest, npm, cargo, jest, make)
41
+ search grep/ripgrep output (file:line:content)
42
+ json JSON containing large arrays
43
+ --ccr Stash the ORIGINAL in the local CCR store and append
44
+ a trailing <<ccr:HASH>> marker. Recover the full
45
+ output later with: greprag retrieve <hash>
46
+ --query "words" Relevance hint — matches containing these words
47
+ score higher and survive compression (search/json).
48
+ --stats Append { ts, type, bytesIn, bytesOut } to the local
49
+ stats log (~/.greprag/crush-stats.jsonl; override
50
+ GREPRAG_CRUSH_STATS). Read it back with:
51
+ greprag crush stats
52
+
53
+ Contract (safe inside pipes):
54
+ - ALWAYS exits 0; on any internal error stdin passes through verbatim.
55
+ - If compression wouldn't save tokens, the input passes through unchanged.
56
+ - Small inputs (log/search < 500B, json < 1KB) pass through untouched.
57
+
58
+ CCR store: ~/.greprag/ccr.db (override with GREPRAG_CCR_DB).
59
+
60
+ Examples:
61
+ npm test 2>&1 | greprag crush --type log --ccr
62
+ rg -n "handleSms" | greprag crush --type search --query "handleSms tenant"
63
+ curl -s api/items | greprag crush --type json`;
64
+ /** Byte thresholds below which input passes through untouched. */
65
+ const MIN_BYTES = { log: 500, search: 500, json: 1024 };
66
+ function readStdin() {
67
+ return new Promise((resolve) => {
68
+ const chunks = [];
69
+ process.stdin.on('data', (c) => chunks.push(c));
70
+ process.stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
71
+ process.stdin.on('error', () => resolve(Buffer.concat(chunks).toString('utf8')));
72
+ });
73
+ }
74
+ function parseCrushArgs(args) {
75
+ const out = { type: null, ccr: false, query: '', stats: false, help: false };
76
+ for (let i = 0; i < args.length; i++) {
77
+ const a = args[i];
78
+ if (a === '--help' || a === '-h')
79
+ out.help = true;
80
+ else if (a === '--ccr')
81
+ out.ccr = true;
82
+ else if (a === '--stats')
83
+ out.stats = true;
84
+ else if (a === '--type')
85
+ out.type = args[++i] ?? null;
86
+ else if (a === '--query')
87
+ out.query = args[++i] ?? '';
88
+ }
89
+ return out;
90
+ }
91
+ function runCompressor(type, content, query) {
92
+ switch (type) {
93
+ case 'log':
94
+ return (0, crush_1.crushLog)(content);
95
+ case 'search':
96
+ return (0, crush_1.crushSearch)(content, query);
97
+ case 'json':
98
+ return (0, crush_1.crushJson)(content);
99
+ default:
100
+ throw new Error(`unknown --type '${type}' (expected log|search|json)`);
101
+ }
102
+ }
103
+ /** greprag crush — exit 0 always; on any failure stdin passes through. */
104
+ async function runCrush(args) {
105
+ const parsed = parseCrushArgs(args);
106
+ if (parsed.help || process.stdin.isTTY) {
107
+ // --help, or interactive invocation with nothing piped in.
108
+ console.log(exports.CRUSH_HELP);
109
+ return;
110
+ }
111
+ const original = await readStdin();
112
+ // Single exit point for output: writes stdout and (with --stats) appends a
113
+ // { ts, type, bytesIn, bytesOut } record. Passthroughs are recorded too so
114
+ // the ratios reflect real savings. Stats are best-effort — appendCrushStat
115
+ // swallows its own failures, the pipe contract is untouched.
116
+ const emit = (out) => {
117
+ process.stdout.write(out);
118
+ if (parsed.stats) {
119
+ (0, crush_stats_1.appendCrushStat)({
120
+ ts: new Date().toISOString(),
121
+ type: parsed.type || 'unknown',
122
+ bytesIn: Buffer.byteLength(original, 'utf8'),
123
+ bytesOut: Buffer.byteLength(out, 'utf8'),
124
+ });
125
+ }
126
+ };
127
+ try {
128
+ if (!parsed.type || !(parsed.type in MIN_BYTES)) {
129
+ throw new Error(`missing or invalid --type (expected log|search|json)`);
130
+ }
131
+ if (Buffer.byteLength(original, 'utf8') < MIN_BYTES[parsed.type]) {
132
+ emit(original);
133
+ return;
134
+ }
135
+ const result = runCompressor(parsed.type, original, parsed.query);
136
+ // Token-validate-or-revert: never emit something that costs >= the input.
137
+ if (result.stats.passthrough || (0, crush_1.estimateTokens)(result.output) >= (0, crush_1.estimateTokens)(original)) {
138
+ emit(original);
139
+ return;
140
+ }
141
+ let output = result.output;
142
+ if (parsed.ccr) {
143
+ const store = await ccr_store_1.CcrStore.open();
144
+ try {
145
+ const hash = store.put(original, parsed.type);
146
+ output += `\n${(0, ccr_store_1.ccrMarker)(hash)}`;
147
+ }
148
+ finally {
149
+ store.close();
150
+ }
151
+ }
152
+ emit(output);
153
+ }
154
+ catch (err) {
155
+ // HARD contract: never break the user's pipe. Verbatim passthrough.
156
+ console.error(`[greprag crush] ${err instanceof Error ? err.message : String(err)} — passing input through`);
157
+ emit(original);
158
+ }
159
+ }
160
+ /** greprag retrieve <hash> — print a CCR-stored original to stdout. */
161
+ async function runRetrieve(args) {
162
+ const arg = args.find((a) => !a.startsWith('--'));
163
+ if (!arg || args.includes('--help') || args.includes('-h')) {
164
+ console.log(exports.CRUSH_HELP);
165
+ if (!arg && !args.includes('--help') && !args.includes('-h'))
166
+ process.exitCode = 1;
167
+ return;
168
+ }
169
+ const store = await ccr_store_1.CcrStore.open();
170
+ try {
171
+ const content = store.get(arg);
172
+ if (content === null) {
173
+ console.error(`[greprag retrieve] no CCR entry for '${arg}'`);
174
+ process.exitCode = 1;
175
+ return;
176
+ }
177
+ process.stdout.write(content);
178
+ }
179
+ finally {
180
+ store.close();
181
+ }
182
+ }
183
+ //# sourceMappingURL=crush.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crush.js","sourceRoot":"","sources":["../../src/commands/crush.ts"],"names":[],"mappings":"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"}
@@ -102,21 +102,12 @@ const SUPERVISOR_BACKOFF_FACTOR = 2;
102
102
  // 60s of uninterrupted child life resets the backoff so a long-lived
103
103
  // child that finally dies retries fast, not slowly.
104
104
  const SUPERVISOR_HEALTHY_RESET_MS = 60_000;
105
- // ---- Monitor-task liveness probe (2026-06-10) ----------------------------
106
- // The pipe binding (bindToConsumer) catches the harness CLOSING the pipe
107
- // (session end/reload) and --owner-pid catches claude.exe dying but a
108
- // TaskStop (and the host restart on a model switch) kills only the Monitor
109
- // task's bash layers: claude.exe survives, the harness keeps the pipe's read
110
- // end open, and the sh→supervisor→child stack orphans (reproduced live
111
- // 2026-06-10: TaskStop killed bash 7604/17948; sh 14148 + node 11556/12776
112
- // survived and needed a manual taskkill — the reaper read them `ok→keep
113
- // via=owner=…:live-claude`). The arm command stamps the Monitor bash's
114
- // Windows PID (`--monitor-pid`, from /proc/$$/winpid); this probe tests it
115
- // with ONE pidAlive() syscall per tick — never a process-table snapshot (the
116
- // 2026-06-05b lesson) — and on death stops the whole watcher through the
117
- // normal terminal teardown (goodbye + pidfile removal, no respawn).
118
- // Env-overridable for tests. adr: adr/monitor-resilience.md (2026-06-10)
119
- const MONITOR_PROBE_MS = Number(process.env.GREPRAG_WATCH_MONITOR_PROBE_MS) || 15_000;
105
+ // The --monitor-pid monitor-task liveness probe (ff681bb, 2026-06-10) was
106
+ // reverted 2026-06-11: /proc/$$/winpid stamped the transient arm-line bash, not
107
+ // the persistent Monitor task, so the probe false-killed live watchers
108
+ // (terminal stop, no respawn) "constantly dying". The pipe binding
109
+ // (bindToConsumer) + --owner-pid reaper remain the supervision layers.
110
+ // adr: adr/monitor-resilience.md
120
111
  // Rebuild settle (2026-06-10): `npm run build` swaps dist/ under every running
121
112
  // watcher; the child crashes (a lazy `require` loads a half-written module) and
122
113
  // an immediate respawn loads a partially-emitted entry file → a crash-loop wave
@@ -175,18 +166,6 @@ function ownerPidFromArgv(argv) {
175
166
  }
176
167
  return undefined;
177
168
  }
178
- /** The Monitor task's bash PID forwarded by the arm command
179
- * (`--monitor-pid N`, Windows pid space via /proc/$$/winpid). 0 = the arm-time
180
- * "no stamp" fallback → undefined. */
181
- function monitorPidFromArgv(argv) {
182
- const i = argv.indexOf('--monitor-pid');
183
- if (i >= 0 && i + 1 < argv.length) {
184
- const n = Number(argv[i + 1]);
185
- if (Number.isFinite(n) && n > 0)
186
- return n;
187
- }
188
- return undefined;
189
- }
190
169
  /** Entry-script mtime, or null when unstatable (deleted mid-rebuild, exotic
191
170
  * launcher). Null disables the rebuild-settle branch — fail-open. */
192
171
  function entryMtimeMs(entry) {
@@ -297,10 +276,9 @@ async function runSupervisor() {
297
276
  // see a live, locally-consumed watcher without asking the cloud registry
298
277
  // (which counts orphans as armed). Removed on terminal exit below — and, if a
299
278
  // hard kill skips that, swept by the SessionStart reaper. adr: adr/monitor-resilience.md
300
- const monitorPid = monitorPidFromArgv(process.argv.slice(2));
301
279
  if (session)
302
- (0, watcher_registry_1.writeWatcherPidfile)(session, process.pid, ownerPidFromArgv(process.argv.slice(2)), monitorPid);
303
- (0, watcher_registry_1.watcherAuditLog)(`arm session=${session ?? 'tenant'} ppid=${process.ppid} monitorPid=${monitorPid ?? 'none'} (launcher shell; reaper severs this watcher if ppid exits below a claude.exe)`);
280
+ (0, watcher_registry_1.writeWatcherPidfile)(session, process.pid, ownerPidFromArgv(process.argv.slice(2)));
281
+ (0, watcher_registry_1.watcherAuditLog)(`arm session=${session ?? 'tenant'} ppid=${process.ppid} (launcher shell; reaper severs this watcher if ppid exits below a claude.exe)`);
304
282
  // Visibility only: the reaper kills via OS taskkill/tree-kill, which leaves NO
305
283
  // teardown log below. So "an `arm` line with no matching `exit` line" == killed
306
284
  // externally (reaper); an `exit reason=consumer-gone` line == the pipe binding
@@ -316,34 +294,6 @@ async function runSupervisor() {
316
294
  if (typeof heartbeat.unref === 'function')
317
295
  heartbeat.unref();
318
296
  }
319
- // Monitor-task liveness probe (see MONITOR_PROBE_MS above). The stamp is
320
- // verified at arm time: a stamp that is ALREADY dead is unusable (wrong pid
321
- // space, pasted into a non-bash shell, or recycled before we started) — the
322
- // probe is then disabled rather than trusted, so a bad stamp can NEVER
323
- // false-kill a live watcher; the pipe probe + reaper still cover it. A stamp
324
- // that was verified alive and LATER dies is the Monitor task ending: stop
325
- // everything through the normal terminal teardown.
326
- let monitorGone = false;
327
- let monitorProbe = null;
328
- if (monitorPid) {
329
- if (!(0, watcher_registry_1.pidAlive)(monitorPid)) {
330
- (0, watcher_registry_1.watcherAuditLog)(`monitor-pid-unverifiable session=${session ?? 'tenant'} monitorPid=${monitorPid} (dead at arm — probe disabled, falling back to pipe probe + reaper)`);
331
- }
332
- else {
333
- monitorProbe = setInterval(() => {
334
- if (monitorGone || shutdownRequested)
335
- return;
336
- if (!(0, watcher_registry_1.pidAlive)(monitorPid)) {
337
- monitorGone = true;
338
- (0, watcher_registry_1.watcherAuditLog)(`monitor-gone session=${session ?? 'tenant'} monitorPid=${monitorPid} (Monitor task died — owner may still be alive; terminal stop, no respawn)`);
339
- console.error(`${LOG_PREFIX} Monitor task (pid ${monitorPid}) is gone — stopping watcher (no respawn).`);
340
- forward('SIGTERM');
341
- }
342
- }, MONITOR_PROBE_MS);
343
- if (typeof monitorProbe.unref === 'function')
344
- monitorProbe.unref();
345
- }
346
- }
347
297
  // Entry-script mtime at the moment each child is (re)spawned — the rebuild
348
298
  // detector's baseline. Null when unstatable (branch disabled, fail-open).
349
299
  const entryScript = process.argv[1];
@@ -446,14 +396,7 @@ async function runSupervisor() {
446
396
  // exit; respawns `continue`). Stop the heartbeat and fire a best-effort goodbye
447
397
  // so the ghost is pruned instantly instead of waiting out the lease TTL. The
448
398
  // DELETE both closes the live WS in the InboxDO and drops the lease row.
449
- // A monitor-gone trip is the root cause whenever it fired, regardless of which
450
- // break path the loop took (the probe routes through forward(), so the loop
451
- // sees a generic shutdown) — name it in the audit trail.
452
- if (monitorGone)
453
- terminalReason = 'monitor-gone(task-dead)';
454
399
  (0, watcher_registry_1.watcherAuditLog)(`exit session=${session ?? 'tenant'} reason=${terminalReason}`);
455
- if (monitorProbe)
456
- clearInterval(monitorProbe);
457
400
  if (heartbeat)
458
401
  clearInterval(heartbeat);
459
402
  if (session)
@@ -1 +1 @@
1
- {"version":3,"file":"inbox-watch-supervisor.js","sourceRoot":"","sources":["../../src/commands/inbox-watch-supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox-watch-supervisor.js","sourceRoot":"","sources":["../../src/commands/inbox-watch-supervisor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;qCA0BqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6ErC,8DAWC;AAqCD,gDAoBC;AAiCD,sCAoLC;AAnWD,uCAAyB;AACzB,kCAAoC;AACpC,+CAAgF;AAChF,yDAAgH;AAEhH,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,6EAA6E;AAC7E,yCAAyC;AACzC,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,WAAW;AACX,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,oEAAoE;AACpE,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,6CAA6C;AAE7C,gFAAgF;AAChF,oBAAoB;AACpB,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACpC,6EAA6E;AAC7E,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,oEAAoE;AACpE,iEAAiE;AACjE,qCAAqC;AACxB,QAAA,aAAa,GAAG,qBAAqB,CAAC;AAEnD,2DAA2D;AAC3D,+DAA+D;AAC/D,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAC1C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,qEAAqE;AACrE,oDAAoD;AACpD,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAE3C,0EAA0E;AAC1E,gFAAgF;AAChF,uEAAuE;AACvE,qEAAqE;AACrE,uEAAuE;AACvE,iCAAiC;AAEjC,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAE1C,oEAAoE;AACpE,qEAAqE;AACrE,qEAAqE;AACrE,kEAAkE;AACrD,QAAA,eAAe,GAAG,EAAE,CAAC;AAElC;;;;;;yBAMyB;AACzB,SAAgB,yBAAyB;IACvC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,uBAAuB,GAAG,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,CAAC,MAAM,IAAK,MAAgB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,wBAAwB,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;8CAG8C;AAC9C,SAAS,eAAe,CAAC,IAAc;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;8EAE8E;AAC9E,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;sEACsE;AACtE,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACnE,CAAC;AAED;;;qCAGqC;AAC9B,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,IAAgE;IAEhE,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,sBAAsB,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,uBAAuB,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,0BAA0B,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,CAAC;YACT,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;oDAEoD;AACpD,KAAK,UAAU,eAAe,CAC5B,GAAW,EAAE,MAAc,EAAE,MAAc,EAAE,SAAiB;IAE9D,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,EAAE;YACf,MAAM;YACN,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;YAC9C,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,OAAe;IAClD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;AACnG,CAAC;AACD,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe;IACpD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED;;0CAE0C;AACnC,KAAK,UAAU,aAAa;IACjC,IAAI,OAAO,GAAG,6BAA6B,CAAC;IAC5C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,YAAY,GAAwB,IAAI,CAAC;IAE7C,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,kEAAkE;IAClE,MAAM,OAAO,GAAG,CAAC,GAAmB,EAAQ,EAAE;QAC5C,iBAAiB,GAAG,IAAI,CAAC;QACzB,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC;gBAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC;IACF,MAAM,QAAQ,GAAI,GAAS,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,GAAS,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAG,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjC,qEAAqE;IACrE,iEAAiE;IACjE,qEAAqE;IACrE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,qBAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAE1D,yEAAyE;IACzE,+EAA+E;IAC/E,6EAA6E;IAC7E,gFAAgF;IAChF,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAA,uBAAS,GAAE,CAAC;IACxB,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAE/C,6EAA6E;IAC7E,mEAAmE;IACnE,0EAA0E;IAC1E,+EAA+E;IAC/E,yDAAyD;IACzD,IAAI,OAAO,IAAI,IAAA,iCAAc,EAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAA,kCAAe,EAAC,oBAAoB,OAAO,yCAAyC,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,YAAY,OAAO,sDAAsD,CAAC,CAAC;QACtG,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,gFAAgF;IAChF,yEAAyE;IACzE,8EAA8E;IAC9E,yFAAyF;IACzF,IAAI,OAAO;QAAE,IAAA,sCAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,IAAA,kCAAe,EAAC,eAAe,OAAO,IAAI,QAAQ,SAAS,OAAO,CAAC,IAAI,gFAAgF,CAAC,CAAC;IACzJ,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,mFAAmF;IACnF,IAAI,cAAc,GAAG,iCAAiC,CAAC;IACvD,IAAI,SAAS,GAA0C,IAAI,CAAC;IAC5D,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,KAAK,eAAe,CAClB,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAC7E,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU;YAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,YAAY,GAAkB,IAAI,CAAC;IAEvC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,QAAQ,GAAiB,IAAI,CAAC;QAClC,IAAI,CAAC;YACH,YAAY,GAAG,IAAA,gBAAS,EAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE;gBACpD,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,SAAS;gBAChB,yDAAyD;gBACzD,6DAA6D;gBAC7D,+CAA+C;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,GAAG,GAAY,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,8BAA8B,MAAM,gBAAgB,IAAA,yBAAW,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvG,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;YACnF,SAAS;QACX,CAAC;QAGD,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,CAAO,EAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC;gBAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC;YACtF,YAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClF,YAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACtC,YAAY,GAAG,IAAI,CAAC;QAEpB,IAAI,iBAAiB,EAAE,CAAC;YAAC,cAAc,GAAG,oBAAoB,CAAC;YAAC,MAAM;QAAC,CAAC;QAExE,2DAA2D;QAC3D,iEAAiE;QACjE,uDAAuD;QACvD,8DAA8D;QAC9D,uCAAuC;QACvC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAAC,cAAc,GAAG,qBAAqB,CAAC;YAAC,MAAM;QAAC,CAAC;QAEpH,2DAA2D;QAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,cAAc,GAAG,UAAU,IAAI,CAAC,MAAM,GAAG,CAAC;YAAC,MAAM;QAAC,CAAC;QAEhH,6DAA6D;QAC7D,iDAAiD;QACjD,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAe,EAAE,CAAC;YACvD,cAAc,GAAG,uCAAuC,CAAC;YACzD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,MAAM;QACR,CAAC;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,4DAA4D;QAC5D,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,qCAAuB,EAAE,CAAC;YAAC,cAAc,GAAG,2BAA2B,CAAC;YAAC,MAAM;QAAC,CAAC;QAExH,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,oEAAoE;QACpE,wEAAwE;QACxE,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,yGAAyG,CAAC,CAAC;YACtI,IAAA,kCAAe,EAAC,0BAA0B,OAAO,IAAI,QAAQ,yEAAyE,CAAC,CAAC;YACxI,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACtC,OAAO,GAAG,6BAA6B,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,MAAM,IAAI,2BAA2B;YAAE,OAAO,GAAG,6BAA6B,CAAC;QAEnF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG;YACrB,CAAC,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YACpC,CAAC,CAAC,IAAI,CAAC,MAAM;gBACX,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE;gBACzB,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CACX,GAAG,UAAU,4BAA4B,MAAM,WAAW,IAAA,yBAAW,EAAC,MAAM,CAAC,oBAAoB,IAAA,yBAAW,EAAC,OAAO,CAAC,EAAE,CACxH,CAAC;QACF,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC7D,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;IACrF,CAAC;IAED,8EAA8E;IAC9E,gFAAgF;IAChF,6EAA6E;IAC7E,yEAAyE;IACzE,IAAA,kCAAe,EAAC,gBAAgB,OAAO,IAAI,QAAQ,WAAW,cAAc,EAAE,CAAC,CAAC;IAChF,IAAI,SAAS;QAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,OAAO;QAAE,IAAA,uCAAoB,EAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,eAAe,CACnB,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAC9E,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAG,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED;;2EAE2E;AAC3E,SAAS,oBAAoB,CAAC,EAAU,EAAE,MAAqB;IAC7D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,IAAI,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC9D,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1318,6 +1318,99 @@ function applySettings(settings, apiKey) {
1318
1318
  else {
1319
1319
  changes.push('UserPromptSubmit mail hook already configured (skipped)');
1320
1320
  }
1321
+ // Context governor (Chip C) — two local-only hooks, no API calls.
1322
+ // Stop probe: reads the transcript TAIL, records live context size to
1323
+ // ~/.greprag/context-state/<8hex>.json. UserPromptSubmit check: past the
1324
+ // crossover threshold (default 400K) injects a one-line "governed compact
1325
+ // recommended" advisory, at most once per 25-turn window. Off-switch:
1326
+ // context_governor=false in .greprag/project.json or
1327
+ // GREPRAG_CONTEXT_GOVERNOR=off. docs/pre-llm-compression.md
1328
+ const contextProbeHook = {
1329
+ matcher: '',
1330
+ hooks: [{ type: 'command', command: 'greprag-hook context-probe', timeout: 3000 }],
1331
+ };
1332
+ if (!hasGrepragHook(settings.hooks.Stop, 'context-probe')) {
1333
+ if (!settings.hooks.Stop)
1334
+ settings.hooks.Stop = [];
1335
+ settings.hooks.Stop.push(contextProbeHook);
1336
+ changes.push('Added Stop hook (context-governor probe)');
1337
+ }
1338
+ else {
1339
+ changes.push('Stop context-probe hook already configured (skipped)');
1340
+ }
1341
+ const contextCheckHook = {
1342
+ matcher: '',
1343
+ hooks: [{ type: 'command', command: 'greprag-hook context-check', timeout: 3000 }],
1344
+ };
1345
+ if (!hasGrepragHook(settings.hooks.UserPromptSubmit, 'context-check')) {
1346
+ if (!settings.hooks.UserPromptSubmit)
1347
+ settings.hooks.UserPromptSubmit = [];
1348
+ settings.hooks.UserPromptSubmit.push(contextCheckHook);
1349
+ changes.push('Added UserPromptSubmit hook (context-governor crossover advisory)');
1350
+ }
1351
+ else {
1352
+ changes.push('UserPromptSubmit context-check hook already configured (skipped)');
1353
+ }
1354
+ // Pipe-wrap (Chip B) — write-time crush. PreToolUse matcher `Bash`: noisy
1355
+ // commands (test/build runners, grep/rg, --json emitters) are rewritten via
1356
+ // hookSpecificOutput.updatedInput to pipe through `greprag crush --ccr
1357
+ // --stats`, so tool output enters the model's context already compressed and
1358
+ // the original stays recoverable (`greprag retrieve <hash>`). Default-deny
1359
+ // classifier — anything piped, redirected, chained with `;`/`||`, or
1360
+ // otherwise structurally unclear is left untouched. Off-switches:
1361
+ // GREPRAG_NO_CRUSH=1, crush_wrap=false in .greprag/project.json, or a
1362
+ // literal `# nocrush` in the command.
1363
+ // docs/pre-llm-compression.md, adr/pipe-wrap-hook.md
1364
+ const crushWrapHook = {
1365
+ matcher: 'Bash',
1366
+ hooks: [{ type: 'command', command: 'greprag-hook crush-wrap', timeout: 3000 }],
1367
+ };
1368
+ if (!hasGrepragHookWithMatcher(settings.hooks.PreToolUse, 'crush-wrap', 'Bash')) {
1369
+ if (!settings.hooks.PreToolUse)
1370
+ settings.hooks.PreToolUse = [];
1371
+ settings.hooks.PreToolUse.push(crushWrapHook);
1372
+ changes.push('Added PreToolUse hook (crush pipe-wrap, matcher=Bash)');
1373
+ }
1374
+ else {
1375
+ changes.push('PreToolUse crush-wrap hook already configured (skipped)');
1376
+ }
1377
+ // Governed compact (Chip D) — two local-only hooks, no API calls.
1378
+ // PreCompact: render the transcript main chain to pixel-font PNG pages
1379
+ // (lossless archive, CCR-indexed) BEFORE compaction summarizes it away.
1380
+ // Two entries (manual/auto) matching the PostCompact precedent above.
1381
+ // SessionStart(matcher=compact): inject the archive pointer into the
1382
+ // post-compact context — the one documented channel that reaches the
1383
+ // model after a compact (PreCompact output does not; verified 2026-06-12,
1384
+ // adr/governed-compact.md). Off-switch: png_archive=false in
1385
+ // .greprag/project.json or GREPRAG_PNG_ARCHIVE=off.
1386
+ if (!settings.hooks.PreCompact)
1387
+ settings.hooks.PreCompact = [];
1388
+ for (const matcher of ['manual', 'auto']) {
1389
+ const entry = {
1390
+ matcher,
1391
+ hooks: [{ type: 'command', command: 'greprag-hook pre-compact', timeout: 60000 }],
1392
+ };
1393
+ if (!hasGrepragHookWithMatcher(settings.hooks.PreCompact, 'pre-compact', matcher)) {
1394
+ settings.hooks.PreCompact.push(entry);
1395
+ changes.push(`Added PreCompact hook (png-archive render, matcher=${matcher})`);
1396
+ }
1397
+ else {
1398
+ changes.push(`PreCompact png-archive hook (matcher=${matcher}) already configured (skipped)`);
1399
+ }
1400
+ }
1401
+ const archivePointerHook = {
1402
+ matcher: 'compact',
1403
+ hooks: [{ type: 'command', command: 'greprag-hook archive-pointer', timeout: 10000 }],
1404
+ };
1405
+ if (!hasGrepragHookWithMatcher(settings.hooks.SessionStart, 'archive-pointer', 'compact')) {
1406
+ if (!settings.hooks.SessionStart)
1407
+ settings.hooks.SessionStart = [];
1408
+ settings.hooks.SessionStart.push(archivePointerHook);
1409
+ changes.push('Added SessionStart hook (png-archive pointer, matcher=compact)');
1410
+ }
1411
+ else {
1412
+ changes.push('SessionStart archive-pointer hook already configured (skipped)');
1413
+ }
1321
1414
  return changes;
1322
1415
  }
1323
1416
  /** True if a hook entry invokes `greprag-hook <subcommand>` in ANY of its