context-compress 2026.5.0 → 2026.7.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 (79) hide show
  1. package/.claude-plugin/marketplace.json +17 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/.codex-plugin/plugin.json +40 -0
  4. package/.mcp.json +11 -0
  5. package/README.md +43 -12
  6. package/dist/bench/quality.d.ts +46 -0
  7. package/dist/bench/quality.d.ts.map +1 -0
  8. package/dist/bench/quality.js +118 -0
  9. package/dist/bench/quality.js.map +1 -0
  10. package/dist/bench/run.d.ts +2 -0
  11. package/dist/bench/run.d.ts.map +1 -0
  12. package/dist/bench/run.js +4 -0
  13. package/dist/bench/run.js.map +1 -0
  14. package/dist/cli/filter.d.ts.map +1 -1
  15. package/dist/cli/filter.js +13 -1
  16. package/dist/cli/filter.js.map +1 -1
  17. package/dist/cli/index.js +0 -0
  18. package/dist/cli/uninstall.d.ts.map +1 -1
  19. package/dist/cli/uninstall.js +4 -2
  20. package/dist/cli/uninstall.js.map +1 -1
  21. package/dist/config.d.ts +2 -0
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +11 -0
  24. package/dist/config.js.map +1 -1
  25. package/dist/executor.d.ts.map +1 -1
  26. package/dist/executor.js +32 -8
  27. package/dist/executor.js.map +1 -1
  28. package/dist/format-filter.d.ts +63 -0
  29. package/dist/format-filter.d.ts.map +1 -0
  30. package/dist/format-filter.js +331 -0
  31. package/dist/format-filter.js.map +1 -0
  32. package/dist/logger.d.ts +4 -0
  33. package/dist/logger.d.ts.map +1 -1
  34. package/dist/logger.js +14 -1
  35. package/dist/logger.js.map +1 -1
  36. package/dist/runtime/index.d.ts +2 -2
  37. package/dist/runtime/index.d.ts.map +1 -1
  38. package/dist/runtime/index.js +37 -20
  39. package/dist/runtime/index.js.map +1 -1
  40. package/dist/server.bundle.mjs +479 -110
  41. package/dist/server.bundle.mjs.map +4 -4
  42. package/dist/server.d.ts.map +1 -1
  43. package/dist/server.js +5 -2
  44. package/dist/server.js.map +1 -1
  45. package/dist/stats.d.ts.map +1 -1
  46. package/dist/stats.js +19 -1
  47. package/dist/stats.js.map +1 -1
  48. package/dist/store.d.ts +1 -0
  49. package/dist/store.d.ts.map +1 -1
  50. package/dist/store.js +20 -2
  51. package/dist/store.js.map +1 -1
  52. package/dist/tools/batch-execute.d.ts.map +1 -1
  53. package/dist/tools/batch-execute.js +20 -2
  54. package/dist/tools/batch-execute.js.map +1 -1
  55. package/dist/util/auto-mode.d.ts +8 -0
  56. package/dist/util/auto-mode.d.ts.map +1 -1
  57. package/dist/util/auto-mode.js +40 -26
  58. package/dist/util/auto-mode.js.map +1 -1
  59. package/dist/util/fetch-code.d.ts.map +1 -1
  60. package/dist/util/fetch-code.js +2 -48
  61. package/dist/util/fetch-code.js.map +1 -1
  62. package/dist/util/html-to-markdown.d.ts +17 -0
  63. package/dist/util/html-to-markdown.d.ts.map +1 -0
  64. package/dist/util/html-to-markdown.js +66 -0
  65. package/dist/util/html-to-markdown.js.map +1 -0
  66. package/dist/util/intent-filter.d.ts +12 -3
  67. package/dist/util/intent-filter.d.ts.map +1 -1
  68. package/dist/util/intent-filter.js +61 -8
  69. package/dist/util/intent-filter.js.map +1 -1
  70. package/dist/util/regret.d.ts +54 -0
  71. package/dist/util/regret.d.ts.map +1 -0
  72. package/dist/util/regret.js +107 -0
  73. package/dist/util/regret.js.map +1 -0
  74. package/docs/agentic-benchmark.md +110 -0
  75. package/docs/quality-regression-report.md +20 -0
  76. package/hooks/claude-codex-hooks.json +19 -0
  77. package/package.json +9 -5
  78. package/skills/context-compress-audit/SKILL.md +49 -0
  79. package/skills/context-compress-audit/agents/openai.yaml +13 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
+ "name": "context-compress",
4
+ "description": "MCP server and hook toolkit that keeps large tool output searchable instead of dumping it into context.",
5
+ "owner": {
6
+ "name": "Open330",
7
+ "url": "https://github.com/Open330"
8
+ },
9
+ "plugins": [
10
+ {
11
+ "name": "context-compress",
12
+ "description": "Compress Bash, Read, WebFetch, logs, tests, and API output before it reaches the context window.",
13
+ "source": "./",
14
+ "category": "productivity"
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "context-compress",
3
+ "version": "2026.7.0",
4
+ "description": "Keep large tool output searchable without flooding the agent context window.",
5
+ "author": {
6
+ "name": "Open330",
7
+ "url": "https://github.com/Open330"
8
+ },
9
+ "skills": "./skills/",
10
+ "hooks": "./hooks/claude-codex-hooks.json",
11
+ "mcpServers": "./.mcp.json"
12
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "context-compress",
3
+ "version": "2026.7.0",
4
+ "description": "Keep large tool output searchable without flooding the agent context window.",
5
+ "author": {
6
+ "name": "Open330",
7
+ "url": "https://github.com/Open330"
8
+ },
9
+ "homepage": "https://github.com/Open330/context-compress",
10
+ "repository": "https://github.com/Open330/context-compress",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "mcp",
14
+ "claude-code",
15
+ "context-window",
16
+ "token-optimization",
17
+ "developer-tools"
18
+ ],
19
+ "skills": "./skills/",
20
+ "mcpServers": "./.mcp.json",
21
+ "interface": {
22
+ "displayName": "Context Compress",
23
+ "shortDescription": "Compress tool output before it enters context.",
24
+ "longDescription": "Run commands, fetch pages, index large outputs, and search the retained data through an MCP server so agents see concise answers instead of raw logs.",
25
+ "developerName": "Open330",
26
+ "category": "Productivity",
27
+ "capabilities": [
28
+ "MCP",
29
+ "Skills",
30
+ "Token optimization"
31
+ ],
32
+ "websiteURL": "https://github.com/Open330/context-compress",
33
+ "brandColor": "#2563EB",
34
+ "defaultPrompt": [
35
+ "Run tests through context-compress and summarize failures.",
36
+ "Index this large output and search it for root causes.",
37
+ "Audit this session for raw tool output waste."
38
+ ]
39
+ }
40
+ }
package/.mcp.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "context-compress": {
4
+ "cwd": ".",
5
+ "command": "node",
6
+ "args": [
7
+ "./dist/index.js"
8
+ ]
9
+ }
10
+ }
11
+ }
package/README.md CHANGED
@@ -3,16 +3,17 @@
3
3
  # context-compress
4
4
 
5
5
  **Stop drowning your AI agent in shell output.**
6
- Compress tool output before it hits the context window through an MCP server, a drop-in CLI, or both.
6
+ Large tool output stays searchablenot stuffed into the context window.
7
+ Use it through an MCP server, a drop-in CLI, agent plugins, or all three.
7
8
 
8
9
  [![CI](https://github.com/Open330/context-compress/actions/workflows/ci.yml/badge.svg)](https://github.com/Open330/context-compress/actions/workflows/ci.yml)
9
10
  [![npm version](https://img.shields.io/npm/v/context-compress?color=cb3837&logo=npm)](https://www.npmjs.com/package/context-compress)
10
11
  [![Node.js](https://img.shields.io/badge/node-%E2%89%A518-brightgreen?logo=nodedotjs&logoColor=white)](https://nodejs.org)
11
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
12
13
  [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?logo=typescript&logoColor=white)](tsconfig.json)
13
- [![Tests](https://img.shields.io/badge/tests-213%20passing-success)](#contributing)
14
+ [![Tests](https://img.shields.io/badge/tests-unit%20%2B%20integration-success)](#contributing)
14
15
 
15
- [Quickstart](#quickstart) · [Compression Modes](#compression-modes) · [vs RTK](#head-to-head-with-rtk) · [How It Works](#how-it-works) · [Configuration](#configuration) · [CLI](#cli) · [Changelog](CHANGELOG.md)
16
+ [Quickstart](#quickstart) · [Plugin Support](#plugin-support) · [Compression Modes](#compression-modes) · [vs RTK](#head-to-head-with-rtk) · [How It Works](#how-it-works) · [Configuration](#configuration) · [CLI](#cli) · [Changelog](CHANGELOG.md)
16
17
 
17
18
  </div>
18
19
 
@@ -27,9 +28,9 @@ Compress tool output before it hits the context window — through an MCP server
27
28
  </td>
28
29
  <td align="center" width="25%">
29
30
 
30
- **+10.5pp**
31
- <br>over RTK
32
- <br><sub>same commands</sub>
31
+ **Searchable**
32
+ <br>raw data retained
33
+ <br><sub>FTS5 + BM25</sub>
33
34
 
34
35
  </td>
35
36
  <td align="center" width="25%">
@@ -41,9 +42,9 @@ Compress tool output before it hits the context window — through an MCP server
41
42
  </td>
42
43
  <td align="center" width="25%">
43
44
 
44
- **8 MCP tools**
45
- <br>+ standalone CLI
46
- <br><sub>RTK-compatible wrap</sub>
45
+ **Plugins**
46
+ <br>Codex + Claude
47
+ <br><sub>MCP • hooks • skills</sub>
47
48
 
48
49
  </td>
49
50
  </tr>
@@ -121,6 +122,18 @@ It works in two modes that compose freely:
121
122
  npm install -g context-compress
122
123
  ```
123
124
 
125
+ ### Plugin Support
126
+
127
+ context-compress now ships plugin metadata for agent hosts:
128
+
129
+ | Host | Files | What they enable |
130
+ |:--|:--|:--|
131
+ | **Codex** | `.codex-plugin/plugin.json`, `.mcp.json`, `skills/` | MCP server registration plus skills in plugin-aware Codex flows. |
132
+ | **Claude Code** | `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `hooks/claude-codex-hooks.json` | PreToolUse routing, skills, and MCP config from a plugin install. |
133
+ | **Manual / fallback** | `context-compress setup --auto` | Writes `~/.claude/settings.json` directly when plugin installation is not available. |
134
+
135
+ The plugin manifests are designed for built package/archive installs where `dist/`, `hooks/`, and `skills/` are present together. For a raw source checkout, run `npm install && npm run build` before testing the plugin locally, or use the global npm setup above.
136
+
124
137
  ### One-line setup
125
138
 
126
139
  ```bash
@@ -225,6 +238,20 @@ export CONTEXT_COMPRESS_MODE=aggressive
225
238
 
226
239
  The PreToolUse hook also forwards `CONTEXT_COMPRESS_MODE` automatically when wrapping Bash commands, so agents transparently get whatever mode you've configured.
227
240
 
241
+ ### Beyond mode selection
242
+
243
+ Three capabilities layer on top of the modes above. All are grounded in the 2026 agent-compression literature, whose central finding is that *token-level* extractive compression (LLMLingua-2, Selective Context) breaks agents by destroying action grammar — so context-compress only ever operates on **whole structural units**, never partial tokens.
244
+
245
+ - **Format-aware compression** — when no command-specific filter matches, output is compressed by its *shape*. Pretty-printed JSON is minified losslessly (balanced) or collapsed to a schema + sample (aggressive); NDJSON folds into per-shape summaries; repetitive logs fold into `template ×count` via variable masking (Drain-style). Error/warning lines are always kept verbatim, and balanced-mode JSON stays parseable. Typical wins: JSON −41% (still valid) to −96%, logs −98%.
246
+ - **Intent-conditioned summaries** — pass `intent` to `execute` and large output is indexed, then the top query-ranked sections are inlined up to a byte budget (`CONTEXT_COMPRESS_INTENT_BUDGET_BYTES`, default 1800) instead of only listing section titles — fewer follow-up `search()` round-trips. Error lines are surfaced as a safety net.
247
+ - **Self-tuning `auto` mode (ACON-style)** — when a command is compressed aggressively and then re-run fast (≤30s) repeatedly, `auto` records the "regret" and downgrades that command one step to preserve fidelity. Downgrades only ever *reduce* compression, so a false positive costs tokens, never correctness. See the self-tuning table in `stats`.
248
+
249
+ Verify fidelity yourself with the quality-regression benchmark, which measures **survival of task-critical information**, not just token ratio:
250
+
251
+ ```bash
252
+ npm run bench:quality # report at docs/quality-regression-report.md
253
+ ```
254
+
228
255
  ### Head-to-head with [RTK](https://github.com/rtk-ai/rtk)
229
256
 
230
257
  Reproduce locally:
@@ -290,6 +317,8 @@ Without context-compress, 12 operations consume **133% of the 200K context windo
290
317
 
291
318
  **[Read the full Token Reduction Report](docs/token-reduction-report.md)** — includes cost analysis, architecture deep-dive, and FAQ on context loss trade-offs.
292
319
 
320
+ **[Read the Agentic Benchmark Plan](docs/agentic-benchmark.md)** — defines the fair on/off benchmark for real Claude Code sessions, including baseline isolation, task success checks, and reporting limits.
321
+
293
322
  ---
294
323
 
295
324
  ## What Changed from context-mode
@@ -335,8 +364,8 @@ CONTEXT_COMPRESS_NUDGE_GREP=0
335
364
  # Compression mode: conservative | balanced (default) | aggressive | auto
336
365
  CONTEXT_COMPRESS_MODE=balanced
337
366
 
338
- # Auto mode prefers the Anthropic API when this is set (faster than `claude -p` fallback)
339
- ANTHROPIC_API_KEY=sk-ant-...
367
+ # Auto mode prefers the Anthropic API when ANTHROPIC_API_KEY is set
368
+ # in your shell or secret manager (faster than `claude -p` fallback)
340
369
 
341
370
  # RTK-style transparent Bash wrapping (default: off)
342
371
  CONTEXT_COMPRESS_FILTER_BASH=1
@@ -448,7 +477,7 @@ context-compress/
448
477
  │ ├── doctor.ts # `doctor` — diagnostics
449
478
  │ └── uninstall.ts # `uninstall` — clean removal
450
479
  ├── tests/
451
- │ ├── unit/ # 18 unit test files (213 tests, all passing)
480
+ │ ├── unit/ # 18 unit test files
452
481
  │ └── integration/ # 3 integration test files
453
482
  ├── scripts/
454
483
  │ ├── benchmark.ts # Synthetic compression benchmark
@@ -516,6 +545,8 @@ RTK_BIN=... tsx scripts/benchmark-vs-rtk.ts --auto # also run LLM-judged auto
516
545
  RTK_BIN=... tsx scripts/benchmark-vs-rtk.ts --json # machine-readable
517
546
  ```
518
547
 
548
+ For real agent sessions, use [docs/agentic-benchmark.md](docs/agentic-benchmark.md) to compare baseline, MCP-only, hook-balanced, and hook-aggressive arms with isolated settings.
549
+
519
550
  ---
520
551
 
521
552
  ## License
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Quality-regression benchmark.
3
+ *
4
+ * The usual compression metric is "% tokens removed" — but for an agent, the
5
+ * number that actually matters is whether the *task-critical information
6
+ * survived* the compression (cf. ACON / the agent-compression literature, which
7
+ * evaluates end-task success, not token ratio). A compressor that drops 99% of
8
+ * bytes is worthless if it also drops the error message the agent needed.
9
+ *
10
+ * This harness runs a fixed corpus of (command, output, must-contain) cases
11
+ * through the real compression pipeline at every mode and reports two numbers
12
+ * per case: reduction % and survival % (fraction of must-contain assertions still
13
+ * present). It's consumed both by a CLI report (npm run bench:quality) and by a
14
+ * unit test that fails if survival regresses below the per-case floor — so the
15
+ * Phase 1–3 compressors can't silently start eating important output.
16
+ */
17
+ import type { FilterMode } from "../filters.js";
18
+ export interface BenchCase {
19
+ name: string;
20
+ command: string;
21
+ output: string;
22
+ /** Substrings that MUST survive compression in every mode. */
23
+ mustContain: string[];
24
+ /** If true, balanced-mode output must remain parseable JSON. */
25
+ balancedKeepsValidJson?: boolean;
26
+ /** Minimum acceptable survival ratio (default 1.0 — everything must survive). */
27
+ minSurvival?: number;
28
+ }
29
+ export interface ModeResult {
30
+ mode: FilterMode;
31
+ beforeBytes: number;
32
+ afterBytes: number;
33
+ reduction: number;
34
+ survival: number;
35
+ missing: string[];
36
+ validJson: boolean | null;
37
+ }
38
+ export interface CaseResult {
39
+ name: string;
40
+ modes: ModeResult[];
41
+ }
42
+ export declare const CORPUS: BenchCase[];
43
+ export declare function runCase(c: BenchCase): CaseResult;
44
+ export declare function runQualityBench(corpus?: BenchCase[]): CaseResult[];
45
+ export declare function formatBenchReport(results?: CaseResult[]): string;
46
+ //# sourceMappingURL=quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/bench/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gEAAgE;IAChE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,EAAE,CAAC;CACpB;AA6CD,eAAO,MAAM,MAAM,EAAE,SAAS,EA2B7B,CAAC;AAiBF,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAiBhD;AAED,wBAAgB,eAAe,CAAC,MAAM,GAAE,SAAS,EAAW,GAAG,UAAU,EAAE,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,UAAU,EAAsB,GAAG,MAAM,CAanF"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Quality-regression benchmark.
3
+ *
4
+ * The usual compression metric is "% tokens removed" — but for an agent, the
5
+ * number that actually matters is whether the *task-critical information
6
+ * survived* the compression (cf. ACON / the agent-compression literature, which
7
+ * evaluates end-task success, not token ratio). A compressor that drops 99% of
8
+ * bytes is worthless if it also drops the error message the agent needed.
9
+ *
10
+ * This harness runs a fixed corpus of (command, output, must-contain) cases
11
+ * through the real compression pipeline at every mode and reports two numbers
12
+ * per case: reduction % and survival % (fraction of must-contain assertions still
13
+ * present). It's consumed both by a CLI report (npm run bench:quality) and by a
14
+ * unit test that fails if survival regresses below the per-case floor — so the
15
+ * Phase 1–3 compressors can't silently start eating important output.
16
+ */
17
+ import { compressOutput } from "../cli/filter.js";
18
+ const MODES = ["conservative", "balanced", "aggressive"];
19
+ function jsonBlob() {
20
+ return JSON.stringify({
21
+ status: "ok",
22
+ total: 128,
23
+ users: Array.from({ length: 60 }, (_, i) => ({
24
+ id: i,
25
+ name: `user_${i}`,
26
+ email: `user${i}@example.com`,
27
+ role: i === 0 ? "admin" : "member",
28
+ })),
29
+ }, null, 2);
30
+ }
31
+ function ndjsonBlob() {
32
+ return Array.from({ length: 40 }, (_, i) => JSON.stringify({ ts: 1_700_000_000 + i, level: "info", msg: "req", path: `/api/${i}` })).join("\n");
33
+ }
34
+ function logBlob() {
35
+ const lines = Array.from({ length: 200 }, (_, i) => `2026-07-06T10:00:${String(i % 60).padStart(2, "0")}.001Z INFO [http] GET /api/items/${i} 200 in ${i % 40}ms`);
36
+ lines.splice(120, 0, "2026-07-06T10:02:00.000Z ERROR [db] connection timeout to db-primary:5432");
37
+ return lines.join("\n");
38
+ }
39
+ function gitLogBlob() {
40
+ return Array.from({ length: 25 }, (_, i) => `commit ${"a".repeat(40 - String(i).length)}${i}\nAuthor: Dev <dev@example.com>\nDate: Mon Jul 6 10:0${i % 10}:00 2026\n\n Fix issue number ${i} in the widget renderer\n`).join("\n");
41
+ }
42
+ export const CORPUS = [
43
+ {
44
+ name: "pretty-json (unrecognized cmd)",
45
+ command: "somecli users --json",
46
+ output: jsonBlob(),
47
+ mustContain: ['"role"', "admin", "user_0"],
48
+ balancedKeepsValidJson: true,
49
+ },
50
+ {
51
+ name: "ndjson stream",
52
+ command: "logcli tail --json",
53
+ output: ndjsonBlob(),
54
+ mustContain: ["path", "level"],
55
+ },
56
+ {
57
+ name: "app logs with an error",
58
+ command: "myservice serve -v",
59
+ output: logBlob(),
60
+ mustContain: ["connection timeout to db-primary:5432", "ERROR"],
61
+ },
62
+ {
63
+ name: "git log",
64
+ command: "git log -25",
65
+ output: gitLogBlob(),
66
+ // Aggressive git log keeps subjects one-per-line; subjects must survive.
67
+ mustContain: ["Fix issue number 0", "Fix issue number 24"],
68
+ },
69
+ ];
70
+ function survival(output, mustContain) {
71
+ if (mustContain.length === 0)
72
+ return { survival: 1, missing: [] };
73
+ const missing = mustContain.filter((s) => !output.includes(s));
74
+ return { survival: (mustContain.length - missing.length) / mustContain.length, missing };
75
+ }
76
+ function isValidJson(s) {
77
+ try {
78
+ JSON.parse(s);
79
+ return true;
80
+ }
81
+ catch {
82
+ return false;
83
+ }
84
+ }
85
+ export function runCase(c) {
86
+ const beforeBytes = Buffer.byteLength(c.output);
87
+ const modes = MODES.map((mode) => {
88
+ const out = compressOutput(c.output, c.command, mode);
89
+ const afterBytes = Buffer.byteLength(out);
90
+ const { survival: s, missing } = survival(out, c.mustContain);
91
+ return {
92
+ mode,
93
+ beforeBytes,
94
+ afterBytes,
95
+ reduction: beforeBytes > 0 ? 1 - afterBytes / beforeBytes : 0,
96
+ survival: s,
97
+ missing,
98
+ validJson: c.balancedKeepsValidJson && mode === "balanced" ? isValidJson(out) : null,
99
+ };
100
+ });
101
+ return { name: c.name, modes };
102
+ }
103
+ export function runQualityBench(corpus = CORPUS) {
104
+ return corpus.map(runCase);
105
+ }
106
+ export function formatBenchReport(results = runQualityBench()) {
107
+ const lines = ["# Quality-Regression Benchmark", ""];
108
+ lines.push("| Case | Mode | Reduction | Survival | Valid JSON |");
109
+ lines.push("|------|------|-----------|----------|------------|");
110
+ for (const r of results) {
111
+ for (const m of r.modes) {
112
+ const vj = m.validJson === null ? "—" : m.validJson ? "✓" : "✗";
113
+ lines.push(`| ${r.name} | ${m.mode} | ${(m.reduction * 100).toFixed(0)}% | ${(m.survival * 100).toFixed(0)}% | ${vj} |`);
114
+ }
115
+ }
116
+ return lines.join("\n");
117
+ }
118
+ //# sourceMappingURL=quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/bench/quality.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/bench/run.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /** CLI entry: print the quality-regression report. Run via `npm run bench:quality`. */
2
+ import { formatBenchReport } from "./quality.js";
3
+ process.stdout.write(`${formatBenchReport()}\n`);
4
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/bench/run.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iBAAiB,EAAE,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/cli/filter.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,aAAa,EAGlB,MAAM,eAAe,CAAC;AAUvB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,GAAE,UAAyB,GAC7B,MAAM,CAgBR;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,GAAE,aAA4B,GAChC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU5E;AAoBD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C7D"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/cli/filter.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,aAAa,EAGlB,MAAM,eAAe,CAAC;AAWvB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,GAAE,UAAyB,GAC7B,MAAM,CA4BR;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,GAAE,aAA4B,GAChC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU5E;AAoBD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C7D"}
@@ -1,6 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { deduplicateLines, groupErrorLines, stripAnsi, stripProgressLines } from "../executor.js";
3
3
  import { DEFAULT_MODE, applyCommandFilter, parseRequestedMode, } from "../filters.js";
4
+ import { applyFormatFilter } from "../format-filter.js";
4
5
  import { pickModeAuto } from "../util/auto-mode.js";
5
6
  import { StreamCompressor } from "../util/stream-compress.js";
6
7
  // Generic dedup/progress/group pipeline kicks in once output crosses these
@@ -28,10 +29,21 @@ export function compressOutput(stdout, originalCmd, mode = DEFAULT_MODE) {
28
29
  let out = stripAnsi(stdout);
29
30
  if (mode === "conservative")
30
31
  return out;
32
+ let commandFiltered = false;
31
33
  if (originalCmd) {
32
34
  const filtered = applyCommandFilter(originalCmd, out, mode);
33
- if (filtered.filtered)
35
+ if (filtered.filtered) {
34
36
  out = filtered.output;
37
+ commandFiltered = true;
38
+ }
39
+ }
40
+ // Format-aware fallback: when no command-specific filter matched, compress by
41
+ // the *shape* of the output (JSON minify/collapse, log template folding).
42
+ // This catches the long tail of unrecognized commands emitting structured data.
43
+ if (!commandFiltered) {
44
+ const fmt = applyFormatFilter(out, mode);
45
+ if (fmt.filtered)
46
+ out = fmt.output;
35
47
  }
36
48
  const threshold = mode === "aggressive" ? AGGRESSIVE_DEDUP_THRESHOLD : BALANCED_DEDUP_THRESHOLD;
37
49
  if (out.length > threshold) {
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/cli/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/cli/filter.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkG/C"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAoG/C"}
@@ -38,7 +38,8 @@ export async function uninstall() {
38
38
  const settings = JSON.parse(readFileSync(mcpPath, "utf-8"));
39
39
  const mcpServers = settings.mcpServers;
40
40
  if (mcpServers && "context-compress" in mcpServers) {
41
- mcpServers["context-compress"] = undefined;
41
+ // biome-ignore lint/performance/noDelete: must remove the key, not set it to null
42
+ delete mcpServers["context-compress"];
42
43
  writeFileSync(mcpPath, `${JSON.stringify(settings, null, 2)}\n`, "utf-8");
43
44
  changes.push("Removed context-compress MCP server from settings");
44
45
  }
@@ -53,7 +54,8 @@ export async function uninstall() {
53
54
  const mcp = JSON.parse(readFileSync(mcpJson, "utf-8"));
54
55
  const servers = mcp.mcpServers;
55
56
  if (servers && "context-compress" in servers) {
56
- servers["context-compress"] = undefined;
57
+ // biome-ignore lint/performance/noDelete: must remove the key, not set it to null
58
+ delete servers["context-compress"];
57
59
  writeFileSync(mcpJson, `${JSON.stringify(mcp, null, 2)}\n`, "utf-8");
58
60
  changes.push("Removed context-compress from .mcp.json");
59
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -14,6 +14,8 @@ export interface Config {
14
14
  nudgeOnGrep: boolean;
15
15
  /** Threshold in bytes to trigger intent-based search filtering */
16
16
  intentSearchThreshold: number;
17
+ /** Byte budget for query-ranked content inlined into an intent-filtered summary */
18
+ intentBudgetBytes: number;
17
19
  /** Default max output bytes for executor */
18
20
  maxOutputBytes: number;
19
21
  /** Hard cap in bytes for stream-level output (kills process if exceeded) */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,MAAM;IACtB,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAkKD,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA4EtD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,iCAAiC;AACjC,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,MAAM;IACtB,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mFAAmF;IACnF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAyKD,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAkFtD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,iCAAiC;AACjC,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
package/dist/config.js CHANGED
@@ -10,6 +10,7 @@ const DEFAULTS = {
10
10
  nudgeOnRead: true,
11
11
  nudgeOnGrep: true,
12
12
  intentSearchThreshold: 5_000,
13
+ intentBudgetBytes: 1_800,
13
14
  maxOutputBytes: 102_400,
14
15
  hardCapBytes: 100 * 1024 * 1024,
15
16
  searchMaxBytes: 40_960,
@@ -31,6 +32,7 @@ const LEVEL_OVERRIDES = {
31
32
  batchMaxBytes: 40_960,
32
33
  searchLimit: 2,
33
34
  intentSearchThreshold: 3_000,
35
+ intentBudgetBytes: 1_000,
34
36
  },
35
37
  ultra: {
36
38
  maxOutputBytes: 25_600,
@@ -38,6 +40,7 @@ const LEVEL_OVERRIDES = {
38
40
  batchMaxBytes: 20_480,
39
41
  searchLimit: 1,
40
42
  intentSearchThreshold: 2_000,
43
+ intentBudgetBytes: 500,
41
44
  },
42
45
  };
43
46
  const ConfigSchema = z.object({
@@ -48,6 +51,7 @@ const ConfigSchema = z.object({
48
51
  nudgeOnRead: z.boolean().optional(),
49
52
  nudgeOnGrep: z.boolean().optional(),
50
53
  intentSearchThreshold: z.number().int().positive().optional(),
54
+ intentBudgetBytes: z.number().int().positive().optional(),
51
55
  maxOutputBytes: z.number().int().positive().optional(),
52
56
  hardCapBytes: z.number().int().positive().optional(),
53
57
  searchMaxBytes: z.number().int().positive().optional(),
@@ -139,6 +143,9 @@ function loadEnvConfig() {
139
143
  const intentThreshold = parseIntEnv("CONTEXT_COMPRESS_INTENT_SEARCH_THRESHOLD");
140
144
  if (intentThreshold !== undefined)
141
145
  partial.intentSearchThreshold = intentThreshold;
146
+ const intentBudget = parseIntEnv("CONTEXT_COMPRESS_INTENT_BUDGET_BYTES");
147
+ if (intentBudget !== undefined)
148
+ partial.intentBudgetBytes = intentBudget;
142
149
  const level = process.env.CONTEXT_COMPRESS_LEVEL;
143
150
  if (level === "normal" || level === "compact" || level === "ultra") {
144
151
  partial.compressionLevel = level;
@@ -180,6 +187,10 @@ export function loadConfig(projectDir) {
180
187
  console.error(`[context-compress] Config: intentSearchThreshold clamped from ${merged.intentSearchThreshold} to 0`);
181
188
  merged.intentSearchThreshold = 0;
182
189
  }
190
+ if (merged.intentBudgetBytes < 0) {
191
+ console.error(`[context-compress] Config: intentBudgetBytes clamped from ${merged.intentBudgetBytes} to 0`);
192
+ merged.intentBudgetBytes = 0;
193
+ }
183
194
  if (merged.searchLimit < 1) {
184
195
  console.error(`[context-compress] Config: searchLimit clamped from ${merged.searchLimit} to 1`);
185
196
  merged.searchLimit = 1;