context-compress 2026.6.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.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +14 -0
- package/dist/bench/quality.d.ts +46 -0
- package/dist/bench/quality.d.ts.map +1 -0
- package/dist/bench/quality.js +118 -0
- package/dist/bench/quality.js.map +1 -0
- package/dist/bench/run.d.ts +2 -0
- package/dist/bench/run.d.ts.map +1 -0
- package/dist/bench/run.js +4 -0
- package/dist/bench/run.js.map +1 -0
- package/dist/cli/filter.d.ts.map +1 -1
- package/dist/cli/filter.js +13 -1
- package/dist/cli/filter.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +4 -2
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +32 -8
- package/dist/executor.js.map +1 -1
- package/dist/format-filter.d.ts +63 -0
- package/dist/format-filter.d.ts.map +1 -0
- package/dist/format-filter.js +331 -0
- package/dist/format-filter.js.map +1 -0
- package/dist/logger.d.ts +4 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +14 -1
- package/dist/logger.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +37 -20
- package/dist/runtime/index.js.map +1 -1
- package/dist/server.bundle.mjs +479 -110
- package/dist/server.bundle.mjs.map +4 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -2
- package/dist/server.js.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +19 -1
- package/dist/stats.js.map +1 -1
- package/dist/store.d.ts +1 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +20 -2
- package/dist/store.js.map +1 -1
- package/dist/tools/batch-execute.d.ts.map +1 -1
- package/dist/tools/batch-execute.js +20 -2
- package/dist/tools/batch-execute.js.map +1 -1
- package/dist/util/auto-mode.d.ts +8 -0
- package/dist/util/auto-mode.d.ts.map +1 -1
- package/dist/util/auto-mode.js +40 -26
- package/dist/util/auto-mode.js.map +1 -1
- package/dist/util/fetch-code.d.ts.map +1 -1
- package/dist/util/fetch-code.js +2 -48
- package/dist/util/fetch-code.js.map +1 -1
- package/dist/util/html-to-markdown.d.ts +17 -0
- package/dist/util/html-to-markdown.d.ts.map +1 -0
- package/dist/util/html-to-markdown.js +66 -0
- package/dist/util/html-to-markdown.js.map +1 -0
- package/dist/util/intent-filter.d.ts +12 -3
- package/dist/util/intent-filter.d.ts.map +1 -1
- package/dist/util/intent-filter.js +61 -8
- package/dist/util/intent-filter.js.map +1 -1
- package/dist/util/regret.d.ts +54 -0
- package/dist/util/regret.d.ts.map +1 -0
- package/dist/util/regret.js +107 -0
- package/dist/util/regret.js.map +1 -0
- package/docs/quality-regression-report.md +20 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -238,6 +238,20 @@ export CONTEXT_COMPRESS_MODE=aggressive
|
|
|
238
238
|
|
|
239
239
|
The PreToolUse hook also forwards `CONTEXT_COMPRESS_MODE` automatically when wrapping Bash commands, so agents transparently get whatever mode you've configured.
|
|
240
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
|
+
|
|
241
255
|
### Head-to-head with [RTK](https://github.com/rtk-ai/rtk)
|
|
242
256
|
|
|
243
257
|
Reproduce locally:
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/bench/run.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|
package/dist/cli/filter.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/cli/filter.js
CHANGED
|
@@ -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) {
|
package/dist/cli/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/cli/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACN,YAAY,EAGZ,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,2EAA2E;AAC3E,wEAAwE;AACxE,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAC7B,MAAc,EACd,WAAoB,EACpB,OAAmB,YAAY;IAE/B,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,GAAG,CAAC;IAExC,IAAI,WAAW,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,QAAQ;
|
|
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,
|
|
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"}
|
package/dist/cli/uninstall.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,SAAS;IAC9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,qCAAqC;IACrC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACpE,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA8C,CAAC;QACtE,IAAI,KAAK,EAAE,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YACvC,KAAK,CAAC,UAAU,GAAI,KAAK,CAAC,UAA6C,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAgD,CAAC;gBAC1E,OAAO,CAAC,UAAU,EAAE,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CACvF,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,wEAAwE;gBACxE,OAAO,KAAK,CAAC,UAAU,CAAC;YACzB,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;gBACxE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBACvB,aAAa,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/E,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IACjE,CAAC;IAED,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAiD,CAAC;QAC9E,IAAI,UAAU,IAAI,kBAAkB,IAAI,UAAU,EAAE,CAAC;YACpD,UAAU,CAAC,kBAAkB,CAAC,
|
|
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) */
|
package/dist/config.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAUrF,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtC;AA0ED;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBlD;AAED;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA+BhD;AAED;;;GAGG;AACH,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA6D/C;AA2CD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;AAE5E,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,eAAe,CAAwD;gBAEnE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IAMhD,+DAA+D;IAC/D,QAAQ,IAAI,IAAI;IAWhB;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA4ErD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAsB7D,OAAO,CAAC,eAAe;IAgIvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;CAetB"}
|
package/dist/executor.js
CHANGED
|
@@ -3,6 +3,7 @@ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { applyCommandFilter } from "./filters.js";
|
|
6
|
+
import { applyFormatFilter } from "./format-filter.js";
|
|
6
7
|
import { debug } from "./logger.js";
|
|
7
8
|
import { formatBytes } from "./utils.js";
|
|
8
9
|
const DEFAULT_TIMEOUT = 30_000;
|
|
@@ -43,8 +44,9 @@ function buildEnv(config) {
|
|
|
43
44
|
const env = {};
|
|
44
45
|
// Copy safe base variables
|
|
45
46
|
for (const key of SAFE_ENV_KEYS) {
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
const value = process.env[key];
|
|
48
|
+
if (value) {
|
|
49
|
+
env[key] = value;
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
// Deterministic settings
|
|
@@ -54,8 +56,9 @@ function buildEnv(config) {
|
|
|
54
56
|
env.NO_COLOR = "1";
|
|
55
57
|
// Opt-in passthrough (security fix: default is empty)
|
|
56
58
|
for (const key of config.passthroughEnvVars) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
const value = process.env[key];
|
|
60
|
+
if (value) {
|
|
61
|
+
env[key] = value;
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
return env;
|
|
@@ -326,8 +329,10 @@ export class SubprocessExecutor {
|
|
|
326
329
|
return await this.spawnAndCapture(cmd[0], cmd.slice(1), tmpDir, timeout, maxOutput, plugin.needsShell, opts.language === "shell" ? opts.code : undefined);
|
|
327
330
|
}
|
|
328
331
|
finally {
|
|
329
|
-
//
|
|
330
|
-
|
|
332
|
+
// Remove user code from disk immediately to minimize the window in
|
|
333
|
+
// which it is readable. cleanupTempDir falls back to a deferred retry
|
|
334
|
+
// if a runtime (e.g. Bun) still holds a handle.
|
|
335
|
+
this.cleanupTempDir(tmpDir);
|
|
331
336
|
}
|
|
332
337
|
}
|
|
333
338
|
/**
|
|
@@ -423,12 +428,22 @@ export class SubprocessExecutor {
|
|
|
423
428
|
// (PASS/FAIL, ✓/✗, etc.) that real-world output wraps in color escapes.
|
|
424
429
|
stdout = stripAnsi(stdout);
|
|
425
430
|
// Apply command-specific filter for shell commands (before generic pipeline)
|
|
431
|
+
let commandFiltered = false;
|
|
426
432
|
if (shellCode && stdout) {
|
|
427
433
|
const filtered = applyCommandFilter(shellCode, stdout);
|
|
428
434
|
if (filtered.filtered) {
|
|
429
435
|
stdout = filtered.output;
|
|
436
|
+
commandFiltered = true;
|
|
430
437
|
}
|
|
431
438
|
}
|
|
439
|
+
// Format-aware fallback: compress by output shape (JSON/NDJSON/logs)
|
|
440
|
+
// when no command-specific filter matched. Balanced mode: lossless JSON
|
|
441
|
+
// minify, log template folding — errors preserved.
|
|
442
|
+
if (!commandFiltered && stdout) {
|
|
443
|
+
const fmt = applyFormatFilter(stdout, "balanced");
|
|
444
|
+
if (fmt.filtered)
|
|
445
|
+
stdout = fmt.output;
|
|
446
|
+
}
|
|
432
447
|
// Post-process: strip progress, dedup repeated lines + group similar errors (skip for small outputs)
|
|
433
448
|
if (stdout.length > 10_000) {
|
|
434
449
|
stdout = stripProgressLines(stdout);
|
|
@@ -459,8 +474,17 @@ export class SubprocessExecutor {
|
|
|
459
474
|
try {
|
|
460
475
|
rmSync(dir, { recursive: true, force: true });
|
|
461
476
|
}
|
|
462
|
-
catch
|
|
463
|
-
|
|
477
|
+
catch {
|
|
478
|
+
// A runtime may still hold a handle to the dir (seen with Bun and on
|
|
479
|
+
// Windows). Retry once after a short delay before giving up.
|
|
480
|
+
setTimeout(() => {
|
|
481
|
+
try {
|
|
482
|
+
rmSync(dir, { recursive: true, force: true });
|
|
483
|
+
}
|
|
484
|
+
catch (e) {
|
|
485
|
+
debug("Failed to cleanup temp dir:", dir, e);
|
|
486
|
+
}
|
|
487
|
+
}, 100).unref();
|
|
464
488
|
}
|
|
465
489
|
}
|
|
466
490
|
}
|