@phamvuhoang/otto-core 0.23.0 → 0.25.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/dist/cli-help.d.ts +6 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +15 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/context-compressor.d.ts +167 -0
- package/dist/context-compressor.d.ts.map +1 -0
- package/dist/context-compressor.js +233 -0
- package/dist/context-compressor.js.map +1 -0
- package/dist/context-report-cli.d.ts.map +1 -1
- package/dist/context-report-cli.js +9 -1
- package/dist/context-report-cli.js.map +1 -1
- package/dist/headroom-adapter.d.ts +65 -0
- package/dist/headroom-adapter.d.ts.map +1 -0
- package/dist/headroom-adapter.js +120 -0
- package/dist/headroom-adapter.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts +6 -0
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +17 -1
- package/dist/loop.js.map +1 -1
- package/dist/render.d.ts +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +5 -2
- package/dist/render.js.map +1 -1
- package/dist/run-bin.d.ts.map +1 -1
- package/dist/run-bin.js +6 -0
- package/dist/run-bin.js.map +1 -1
- package/dist/runner.d.ts +4 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js.map +1 -1
- package/dist/stage-exec.d.ts +7 -0
- package/dist/stage-exec.d.ts.map +1 -1
- package/dist/stage-exec.js +31 -1
- package/dist/stage-exec.js.map +1 -1
- package/package.json +1 -1
package/dist/cli-help.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type AgentRuntimeId, type AgentSelectionSource } from "./agent-runtime.js";
|
|
2
2
|
import type { TierLadder } from "./model-tier.js";
|
|
3
3
|
import { type TokenMode } from "./tokens.js";
|
|
4
|
+
import type { CompressorMode } from "./context-compressor.js";
|
|
4
5
|
export type CliFlags = {
|
|
5
6
|
help: boolean;
|
|
6
7
|
version: boolean;
|
|
@@ -19,6 +20,9 @@ export type CliFlags = {
|
|
|
19
20
|
budget?: number;
|
|
20
21
|
cooldownMs?: number;
|
|
21
22
|
tokenMode?: TokenMode;
|
|
23
|
+
/** `--context-compressor <off|headroom>` (default off; issue #112 P20). Routes
|
|
24
|
+
* @spill output through the named context compressor; validated at parse time. */
|
|
25
|
+
contextCompressor?: CompressorMode;
|
|
22
26
|
/**
|
|
23
27
|
* Validated `--agent` value (the active agent CLI runtime). Undefined when the
|
|
24
28
|
* flag is absent; run-bin then falls back to OTTO_AGENT / .otto/config.json /
|
|
@@ -152,6 +156,8 @@ export type PrintConfigOptions = {
|
|
|
152
156
|
cooldownMs?: number;
|
|
153
157
|
tokenMode?: TokenMode | string;
|
|
154
158
|
tokenModeError?: string;
|
|
159
|
+
/** Resolved context compressor (issue #112 P20); default "off". */
|
|
160
|
+
contextCompressor?: CompressorMode;
|
|
155
161
|
/** Resolved active runtime id (e.g. "claude"); omitted → claude default. */
|
|
156
162
|
agentId?: AgentRuntimeId;
|
|
157
163
|
/** Display name for the active runtime (e.g. "Claude Code"). */
|
package/dist/cli-help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-help.js
CHANGED
|
@@ -67,6 +67,8 @@ export function parseFlags(argv, opts = {}) {
|
|
|
67
67
|
let expectingCooldown = false;
|
|
68
68
|
let tokenMode;
|
|
69
69
|
let expectingTokenMode = false;
|
|
70
|
+
let contextCompressor;
|
|
71
|
+
let expectingContextCompressor = false;
|
|
70
72
|
let agent;
|
|
71
73
|
let expectingAgent = false;
|
|
72
74
|
let fallbackAgent;
|
|
@@ -148,6 +150,14 @@ export function parseFlags(argv, opts = {}) {
|
|
|
148
150
|
expectingTokenMode = false;
|
|
149
151
|
continue;
|
|
150
152
|
}
|
|
153
|
+
if (expectingContextCompressor) {
|
|
154
|
+
if (a !== "off" && a !== "headroom") {
|
|
155
|
+
throw new Error(`--context-compressor must be "off" or "headroom", got: ${JSON.stringify(a)}`);
|
|
156
|
+
}
|
|
157
|
+
contextCompressor = a;
|
|
158
|
+
expectingContextCompressor = false;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
151
161
|
if (expectingAgent) {
|
|
152
162
|
agent = parseAgentId(a, "--agent");
|
|
153
163
|
expectingAgent = false;
|
|
@@ -251,6 +261,8 @@ export function parseFlags(argv, opts = {}) {
|
|
|
251
261
|
explainRouting = true;
|
|
252
262
|
else if (a === "--model-routing")
|
|
253
263
|
modelRouting = true;
|
|
264
|
+
else if (a === "--context-compressor")
|
|
265
|
+
expectingContextCompressor = true;
|
|
254
266
|
else if (a === "--fan-out")
|
|
255
267
|
fanOut = true;
|
|
256
268
|
else if (a === "--fan-out-concurrency")
|
|
@@ -351,6 +363,7 @@ export function parseFlags(argv, opts = {}) {
|
|
|
351
363
|
budget,
|
|
352
364
|
cooldownMs,
|
|
353
365
|
tokenMode,
|
|
366
|
+
contextCompressor,
|
|
354
367
|
agent,
|
|
355
368
|
fallbackAgent,
|
|
356
369
|
autoSwitchOnLimit,
|
|
@@ -483,7 +496,7 @@ Environment variables:
|
|
|
483
496
|
`);
|
|
484
497
|
}
|
|
485
498
|
export function printConfig(bin, workspaceDir, packageDir, opts = {}) {
|
|
486
|
-
const { cliVersion, noKeepAlive = false, maxRetries = DEFAULT_MAX_RETRIES, detach = false, detachLogPath, notify = false, budget, cooldownMs, tokenMode = "off", tokenModeError, agentId = "claude", agentDisplayName = "Claude Code", agentSource = "default", agentError, fallbackAgentId, fallbackAgentDisplayName, fallbackSource, autoSwitchOnLimit = false, fallbackError, verbose = false, reviewLenses = [], adaptiveRouter = false, explainRouting = false, modelRouting = false, tierLadder, fanOut = false, fanOutConcurrency = 3, watch = false, watchIntervalSec, watchLabel = process.env.OTTO_WATCH_LABEL?.trim() || "otto", watchScope, issue, includeSubIssues = false, maxWaitMs, mode, branchStrategy, branchPrefix, branchConvention, } = opts;
|
|
499
|
+
const { cliVersion, noKeepAlive = false, maxRetries = DEFAULT_MAX_RETRIES, detach = false, detachLogPath, notify = false, budget, cooldownMs, tokenMode = "off", tokenModeError, contextCompressor = "off", agentId = "claude", agentDisplayName = "Claude Code", agentSource = "default", agentError, fallbackAgentId, fallbackAgentDisplayName, fallbackSource, autoSwitchOnLimit = false, fallbackError, verbose = false, reviewLenses = [], adaptiveRouter = false, explainRouting = false, modelRouting = false, tierLadder, fanOut = false, fanOutConcurrency = 3, watch = false, watchIntervalSec, watchLabel = process.env.OTTO_WATCH_LABEL?.trim() || "otto", watchScope, issue, includeSubIssues = false, maxWaitMs, mode, branchStrategy, branchPrefix, branchConvention, } = opts;
|
|
487
500
|
const core = readCoreVersion();
|
|
488
501
|
const cli = cliVersion ?? "?";
|
|
489
502
|
const runner = process.env.OTTO_RUNNER?.trim() === "host" ? "host" : "sandbox";
|
|
@@ -560,6 +573,7 @@ export function printConfig(bin, workspaceDir, packageDir, opts = {}) {
|
|
|
560
573
|
budget ${budgetStatus}
|
|
561
574
|
cooldown ${cooldownStatus}
|
|
562
575
|
token mode ${tokenModeStatus}
|
|
576
|
+
context compressor ${contextCompressor}
|
|
563
577
|
max-wait ${maxWaitMs != null ? `${Math.round(maxWaitMs / 60000)}m` : "6h (default)"}
|
|
564
578
|
verbose ${verbose}
|
|
565
579
|
review ${reviewStatus}
|
package/dist/cli-help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AA+G7D,2FAA2F;AAC3F,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CACb,gEAAgE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,OAAO,CAAC,GAAG,MAAM,CAAC;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,0FAA0F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAWD,MAAM,UAAU,UAAU,CACxB,IAAc,EACd,OAA0B,EAAE;IAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC;IACpD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,UAA8B,CAAC;IACnC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,GAAuB,CAAC;IAC5B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAA0B,CAAC;IAC/B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,UAA8B,CAAC;IACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,SAAgC,CAAC;IACrC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,KAAiC,CAAC;IACtC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,aAAyC,CAAC;IAC9C,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,0BAA0B,GAAG,KAAK,CAAC;IACvC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,gBAAoC,CAAC;IACzC,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,KAAkC,CAAC;IACvC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,SAA6B,CAAC;IAClC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,WAA+B,CAAC;IACpC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,MAAqD,CAAC;IAC1D,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,YAAgC,CAAC;IACrC,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAClC,IAAI,gBAAoC,CAAC;IACzC,IAAI,yBAAyB,GAAG,KAAK,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAC1E,CAAC;YACJ,CAAC;YACD,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,mBAAmB,GAAG,KAAK,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,0BAA0B,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,0DAA0D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAC;YACJ,CAAC;YACD,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,0BAA0B,GAAG,KAAK,CAAC;YACnC,SAAS;QACX,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,GAAG,CAAC,CAAC;YACR,YAAY,GAAG,KAAK,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAChE,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC,CAAC;YACX,eAAe,GAAG,KAAK,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,wDAAwD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAC5E,CAAC;YACJ,CAAC;YACD,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,iBAAiB,GAAG,KAAK,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,IAAI,kBAAkB,EAAE,CAAC;YACvB,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC9C,kBAAkB,GAAG,KAAK,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACnC,cAAc,GAAG,KAAK,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,aAAa,GAAG,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACpD,sBAAsB,GAAG,KAAK,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CACb,+DAA+D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CACnF,CAAC;YACJ,CAAC;YACD,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,sBAAsB,GAAG,KAAK,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACtB,cAAc,GAAG,KAAK,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAC/B,gBAAgB,GAAG,KAAK,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,oBAAoB,EAAE,CAAC;YACzB,WAAW,GAAG,CAAC,CAAC;YAChB,oBAAoB,GAAG,KAAK,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CACb,yDAAyD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC,CAAC;YACX,eAAe,GAAG,KAAK,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,YAAY,GAAG,CAAC,CAAC;YACjB,qBAAqB,GAAG,KAAK,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,yBAAyB,EAAE,CAAC;YAC9B,gBAAgB,GAAG,CAAC,CAAC;YACrB,yBAAyB,GAAG,KAAK,CAAC;YAClC,SAAS;QACX,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,aAAa,GAAG,KAAK,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,gBAAgB,GAAG,KAAK,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ;YAAE,IAAI,GAAG,IAAI,CAAC;aACzC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO,GAAG,IAAI,CAAC;aACpD,IAAI,CAAC,KAAK,gBAAgB;YAAE,WAAW,GAAG,IAAI,CAAC;aAC/C,IAAI,CAAC,KAAK,kBAAkB;YAAE,aAAa,GAAG,IAAI,CAAC;aACnD,IAAI,CAAC,KAAK,eAAe;YAAE,UAAU,GAAG,IAAI,CAAC;aAC7C,IAAI,CAAC,KAAK,iBAAiB;YAAE,WAAW,GAAG,IAAI,CAAC;aAChD,IAAI,CAAC,KAAK,eAAe;YAAE,mBAAmB,GAAG,IAAI,CAAC;aACtD,IAAI,CAAC,KAAK,UAAU;YAAE,MAAM,GAAG,IAAI,CAAC;aACpC,IAAI,CAAC,KAAK,OAAO;YAAE,YAAY,GAAG,IAAI,CAAC;aACvC,IAAI,CAAC,KAAK,UAAU;YAAE,MAAM,GAAG,IAAI,CAAC;aACpC,IAAI,CAAC,KAAK,UAAU;YAAE,eAAe,GAAG,IAAI,CAAC;aAC7C,IAAI,CAAC,KAAK,YAAY;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACjD,IAAI,CAAC,KAAK,cAAc;YAAE,kBAAkB,GAAG,IAAI,CAAC;aACpD,IAAI,CAAC,KAAK,SAAS;YAAE,cAAc,GAAG,IAAI,CAAC;aAC3C,IAAI,CAAC,KAAK,kBAAkB;YAAE,sBAAsB,GAAG,IAAI,CAAC;aAC5D,IAAI,CAAC,KAAK,wBAAwB;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC7D,IAAI,CAAC,KAAK,gBAAgB;YAAE,WAAW,GAAG,IAAI,CAAC;aAC/C,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,mBAAmB;YAAE,cAAc,GAAG,IAAI,CAAC;aACrD,IAAI,CAAC,KAAK,mBAAmB;YAAE,cAAc,GAAG,IAAI,CAAC;aACrD,IAAI,CAAC,KAAK,iBAAiB;YAAE,YAAY,GAAG,IAAI,CAAC;aACjD,IAAI,CAAC,KAAK,WAAW;YAAE,MAAM,GAAG,IAAI,CAAC;aACrC,IAAI,CAAC,KAAK,uBAAuB;YAAE,0BAA0B,GAAG,IAAI,CAAC;aACrE,IAAI,CAAC,KAAK,SAAS;YAAE,KAAK,GAAG,IAAI,CAAC;aAClC,IAAI,CAAC,KAAK,kBAAkB;YAAE,sBAAsB,GAAG,IAAI,CAAC;aAC5D,IAAI,CAAC,KAAK,SAAS;YAAE,cAAc,GAAG,IAAI,CAAC;aAC3C,IAAI,CAAC,KAAK,sBAAsB;YAAE,gBAAgB,GAAG,IAAI,CAAC;aAC1D,IAAI,CAAC,KAAK,YAAY;YAAE,gBAAgB,GAAG,IAAI,CAAC;aAChD,IAAI,CAAC,KAAK,SAAS;YAAE,KAAK,GAAG,IAAI,CAAC;aAClC,IAAI,CAAC,KAAK,UAAU;YAAE,MAAM,GAAG,IAAI,CAAC;aACpC,IAAI,CAAC,KAAK,QAAQ;YAAE,IAAI,GAAG,IAAI,CAAC;aAChC,IAAI,CAAC,KAAK,gBAAgB;YAAE,oBAAoB,GAAG,IAAI,CAAC;aACxD,IAAI,CAAC,KAAK,UAAU;YAAE,eAAe,GAAG,IAAI,CAAC;aAC7C,IAAI,CAAC,KAAK,iBAAiB;YAAE,qBAAqB,GAAG,IAAI,CAAC;aAC1D,IAAI,CAAC,KAAK,qBAAqB;YAAE,yBAAyB,GAAG,IAAI,CAAC;aAClE,IAAI,CAAC,KAAK,QAAQ;YAAE,aAAa,GAAG,IAAI,CAAC;aACzC,IAAI,CAAC,KAAK,WAAW;YAAE,gBAAgB,GAAG,IAAI,CAAC;;YAC/C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,yBAAyB,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO;QACL,IAAI;QACJ,OAAO;QACP,WAAW;QACX,aAAa;QACb,UAAU;QACV,WAAW;QACX,UAAU;QACV,MAAM;QACN,GAAG;QACH,MAAM;QACN,MAAM;QACN,UAAU;QACV,SAAS;QACT,KAAK;QACL,aAAa;QACb,iBAAiB;QACjB,WAAW;QACX,OAAO;QACP,cAAc;QACd,cAAc;QACd,YAAY;QACZ,MAAM;QACN,iBAAiB;QACjB,KAAK;QACL,gBAAgB;QAChB,KAAK;QACL,gBAAgB;QAChB,SAAS;QACT,KAAK;QACL,MAAM;QACN,IAAI;QACJ,WAAW;QACX,MAAM;QACN,YAAY;QACZ,gBAAgB;QAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,KAAK;QACL,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpB,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnD,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,UAAmB;IAC3D,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,IAAI,GAAG,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,UAAU,IAAI,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,KAAa,EACb,WAAmB;IAEnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,WAAW;;;IAG1C,GAAG,IAAI,KAAK;IACZ,GAAG;IACH,GAAG;IACH,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEN,CAAC,CAAC;AACH,CAAC;AAsED,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,YAAoB,EACpB,UAAkB,EAClB,OAA2B,EAAE;IAE7B,MAAM,EACJ,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,UAAU,GAAG,mBAAmB,EAChC,MAAM,GAAG,KAAK,EACd,aAAa,EACb,MAAM,GAAG,KAAK,EACd,MAAM,EACN,UAAU,EACV,SAAS,GAAG,KAAK,EACjB,cAAc,EACd,OAAO,GAAG,QAAQ,EAClB,gBAAgB,GAAG,aAAa,EAChC,WAAW,GAAG,SAAS,EACvB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAAG,KAAK,EACzB,aAAa,EACb,OAAO,GAAG,KAAK,EACf,YAAY,GAAG,EAAE,EACjB,cAAc,GAAG,KAAK,EACtB,cAAc,GAAG,KAAK,EACtB,YAAY,GAAG,KAAK,EACpB,UAAU,EACV,MAAM,GAAG,KAAK,EACd,iBAAiB,GAAG,CAAC,EACrB,KAAK,GAAG,KAAK,EACb,gBAAgB,EAChB,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,MAAM,EAC3D,UAAU,EACV,KAAK,EACL,gBAAgB,GAAG,KAAK,EACxB,SAAS,EACT,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,GAAG,IAAI,CAAC;IACT,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,IAAI,GAAG,CAAC;IAE9B,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACpD,MAAM,SAAS,GACb,MAAM,KAAK,MAAM;QACf,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,kBAAkB,MAAM,EAAE;YAC5B,CAAC,CAAC,wCAAwC,CAAC;IAEjD,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACvE,MAAM,YAAY,GAChB,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,YAAY,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG;QACzC,CAAC,CAAC,GAAG,OAAO,sBAAsB,OAAO,CAAC,WAAW,EAAE,4BAA4B,CAAC;IAEtF,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,YAAY,UAAU,GAAG;QAC3B,CAAC,CAAC,GAAG,OAAO,KAAK,gBAAgB,GAAG,CAAC;IACvC,MAAM,mBAAmB,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;IAC3D,+EAA+E;IAC/E,6EAA6E;IAC7E,MAAM,cAAc,GAAG,aAAa;QAClC,CAAC,CAAC,YAAY,aAAa,GAAG;QAC9B,CAAC,CAAC,eAAe;YACf,CAAC,CAAC,GAAG,eAAe,KAAK,wBAAwB,KAAK,cAAc,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;YACzH,CAAC,CAAC,iBAAiB;gBACjB,CAAC,CAAC,wCAAwC;gBAC1C,CAAC,CAAC,KAAK,CAAC;IACd,MAAM,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,MAAM,eAAe,GAAG,cAAc;QACpC,CAAC,CAAC,YAAY,SAAS,KAAK,cAAc,GAAG;QAC7C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM;QACtC,CAAC,CAAC,UAAU,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACrC,CAAC,CAAC,iBAAiB,CAAC;IACtB,MAAM,aAAa,GAAG,cAAc;QAClC,CAAC,CAAC,WAAW,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE;QACpD,CAAC,CAAC,cAAc;YACd,CAAC,CAAC,iDAAiD;YACnD,CAAC,CAAC,KAAK,CAAC;IACZ,MAAM,kBAAkB,GAAG,YAAY;QACrC,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,aAAa,UAAU,CAAC,KAAK,IAAI,SAAS,SAAS,UAAU,CAAC,GAAG,IAAI,SAAS,YAAY,UAAU,CAAC,MAAM,IAAI,SAAS,GAAG;YAC7H,CAAC,CAAC,IAAI;QACR,CAAC,CAAC,KAAK,CAAC;IACV,MAAM,WAAW,GAAG,KAAK;QACvB,CAAC,CAAC,aAAa,gBAAgB,IAAI,GAAG,aAAa,UAAU,IAAI;QACjE,CAAC,CAAC,KAAK,CAAC;IACV,MAAM,WAAW,GAAG,UAAU,IAAI,iCAAiC,CAAC;IACpE,8EAA8E;IAC9E,8CAA8C;IAC9C,MAAM,WAAW,GACf,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,MAAM,eAAe,GACnB,gBAAgB,IAAI,IAAI;QACtB,CAAC,CAAC,eAAe,gBAAgB,GAAG;QACpC,CAAC,CAAC,WAAW,YAAY,IAAI,OAAO,GAAG,CAAC;IAC5C,MAAM,YAAY,GAAG,GAAG,cAAc,IAAI,SAAS,KAAK,eAAe,GAAG,CAAC;IAE3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG;0BACJ,GAAG,IAAI,GAAG,UAAU,IAAI;0BACxB,IAAI,IAAI,KAAK;yBACd,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB;0BAClE,UAAU;0BACV,aAAa;0BACb,mBAAmB;0BACnB,cAAc;yBACf,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;0BACpD,SAAS;0BACT,WAAW;0BACX,eAAe;0BACf,UAAU;0BACV,YAAY;0BACZ,YAAY;0BACZ,YAAY;0BACZ,cAAc;0BACd,eAAe;0BACf,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc;0BACxE,OAAO;0BACP,YAAY;0BACZ,aAAa;0BACb,kBAAkB;0BAClB,MAAM,CAAC,CAAC,CAAC,mBAAmB,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK;0BACxD,YAAY;0BACZ,WAAW;0BACX,WAAW;0BACX,WAAW;0BACX,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;CACxD,CAAC,CAAC;IAED,4EAA4E;IAC5E,uDAAuD;IACvD,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,SAAS;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;SACpE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;GACpB,GAAG;EACJ,cAAc;CACf,CAAC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { ToolUsage } from "./run-report.js";
|
|
2
|
+
/**
|
|
3
|
+
* Context compression at a governed harness boundary (issue #112 P20). Long
|
|
4
|
+
* unattended runs are constrained by token spend (P7); a compressor such as
|
|
5
|
+
* [Headroom](https://github.com/headroomlabs-ai/headroom) can shrink token-heavy
|
|
6
|
+
* content before it reaches the model. P20 routes selected content through a
|
|
7
|
+
* compressor and **measures** the result, with two hard rules from the roadmap:
|
|
8
|
+
*
|
|
9
|
+
* 1. **Off by default, degrades cleanly.** No compressor unless explicitly
|
|
10
|
+
* enabled (`--context-compressor headroom` / `OTTO_CONTEXT_COMPRESSOR` /
|
|
11
|
+
* `.otto/config.json` `contextCompressor`). A missing/failed compressor falls
|
|
12
|
+
* back to the original content with a warning — never a broken run.
|
|
13
|
+
* 2. **Reversible, never hides evidence.** Every compression stores the original
|
|
14
|
+
* under a durable retrieval handle and records tokens before/after, latency,
|
|
15
|
+
* and the compressor version, so reports/evals/reviewers can still reach the
|
|
16
|
+
* original.
|
|
17
|
+
*
|
|
18
|
+
* The compressor is invoked behind P19's external-tool contract (see
|
|
19
|
+
* `headroom-adapter.ts`); this module is the transport-agnostic core: setting
|
|
20
|
+
* resolution, the `ContextCompressor` interface, the reversible-compress
|
|
21
|
+
* orchestrator, and the savings summary. Pure except for the fs retrieval store,
|
|
22
|
+
* which is injected.
|
|
23
|
+
*
|
|
24
|
+
* **Scope of this slice (P20a spike):** the setting, contract, adapter,
|
|
25
|
+
* reversible mechanism, and inspectability are wired and tested. Applying
|
|
26
|
+
* compression at every live spill/log/memory call site is the P20 production
|
|
27
|
+
* follow-up — until then a run with the compressor off behaves exactly as today.
|
|
28
|
+
*/
|
|
29
|
+
/** Off, or route through the Headroom adapter. */
|
|
30
|
+
export type CompressorMode = "off" | "headroom";
|
|
31
|
+
/**
|
|
32
|
+
* The token-heavy content categories P7 already flags — the targets the roadmap
|
|
33
|
+
* names. Carried on each compression so a report can attribute savings by source.
|
|
34
|
+
*/
|
|
35
|
+
export type CompressionCategory = "issue-body" | "command-log" | "prior-iteration" | "read-artifact" | "memory-projection";
|
|
36
|
+
/** Content handed to the compressor, tagged by source category + a stable key. */
|
|
37
|
+
export type CompressInput = {
|
|
38
|
+
/** A run-unique key (used to name the retrieval artifact). */
|
|
39
|
+
key: string;
|
|
40
|
+
category: CompressionCategory;
|
|
41
|
+
text: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A compressor adapter (Headroom, or a test double). `compress` is async because
|
|
45
|
+
* a real adapter shells out / calls a local MCP server. `ok: false` signals a
|
|
46
|
+
* recoverable failure (the orchestrator then degrades to the original).
|
|
47
|
+
*/
|
|
48
|
+
export type ContextCompressor = {
|
|
49
|
+
name: string;
|
|
50
|
+
version: string;
|
|
51
|
+
/** Whether the underlying tool is installed/reachable right now. */
|
|
52
|
+
isAvailable: () => boolean | Promise<boolean>;
|
|
53
|
+
compress: (input: CompressInput) => Promise<{
|
|
54
|
+
text: string;
|
|
55
|
+
ok: boolean;
|
|
56
|
+
note?: string;
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* A synchronous compressor for the sync render/`@spill` path. `available` is a
|
|
61
|
+
* value (probed once when the compressor is built) rather than a call, since the
|
|
62
|
+
* sync render boundary cannot await an availability check.
|
|
63
|
+
*/
|
|
64
|
+
export type SyncContextCompressor = {
|
|
65
|
+
name: string;
|
|
66
|
+
version: string;
|
|
67
|
+
available: boolean;
|
|
68
|
+
compress: (input: CompressInput) => {
|
|
69
|
+
text: string;
|
|
70
|
+
ok: boolean;
|
|
71
|
+
note?: string;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
/** The measured outcome of one compression (or a degraded passthrough). */
|
|
75
|
+
export type CompressOutput = {
|
|
76
|
+
/** The text to actually use downstream (compressed, or original if degraded). */
|
|
77
|
+
text: string;
|
|
78
|
+
tokensBefore: number;
|
|
79
|
+
tokensAfter: number;
|
|
80
|
+
tokensSaved: number;
|
|
81
|
+
/** Durable handle to the original; absent when nothing was stored (passthrough). */
|
|
82
|
+
retrievalHandle?: string;
|
|
83
|
+
latencyMs: number;
|
|
84
|
+
compressorVersion: string;
|
|
85
|
+
/** True when the compressor was unavailable/failed and the original was kept. */
|
|
86
|
+
degraded: boolean;
|
|
87
|
+
note?: string;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Persist the original content and return a durable retrieval handle. Injected so
|
|
91
|
+
* the orchestrator stays testable; {@link runRetrievalStore} is the fs default.
|
|
92
|
+
*/
|
|
93
|
+
export type RetrievalStore = (key: string, original: string) => string;
|
|
94
|
+
/**
|
|
95
|
+
* Resolve the compressor mode from the flag/env/config precedence chain (flag >
|
|
96
|
+
* env > config > off). An unrecognized value resolves to `off`, so a typo never
|
|
97
|
+
* silently enables compression. Pure.
|
|
98
|
+
*/
|
|
99
|
+
export declare function resolveCompressorMode(opts: {
|
|
100
|
+
flag?: string;
|
|
101
|
+
env?: string;
|
|
102
|
+
config?: string;
|
|
103
|
+
}): CompressorMode;
|
|
104
|
+
/**
|
|
105
|
+
* Read the effective compressor mode for a workspace: `--context-compressor`
|
|
106
|
+
* flag, else `OTTO_CONTEXT_COMPRESSOR`, else `.otto/config.json`
|
|
107
|
+
* `contextCompressor`, else `off`. Missing/malformed config → off (never throws).
|
|
108
|
+
*/
|
|
109
|
+
export declare function readCompressorMode(workspaceDir: string, env?: NodeJS.ProcessEnv, flag?: string): CompressorMode;
|
|
110
|
+
/**
|
|
111
|
+
* Default fs retrieval store: write each original under
|
|
112
|
+
* `.otto/runs/<run-id>/compressed/<key>.orig` and return that **workspace-relative**
|
|
113
|
+
* path as the durable handle, so the run bundle stays portable.
|
|
114
|
+
*/
|
|
115
|
+
export declare function runRetrievalStore(workspaceDir: string, runId: string): RetrievalStore;
|
|
116
|
+
/**
|
|
117
|
+
* Compress one piece of content reversibly and measure it (async — for adapters
|
|
118
|
+
* that shell out / call a local MCP server). The single entry point both a live
|
|
119
|
+
* async caller and the benchmark use:
|
|
120
|
+
*
|
|
121
|
+
* - off (`compressor` null) → original verbatim, zero savings, not degraded;
|
|
122
|
+
* - compressor unavailable / throws / `ok: false` → degraded passthrough
|
|
123
|
+
* (original kept), never throws;
|
|
124
|
+
* - success → stores the original via `store`, returns compressed text + measured
|
|
125
|
+
* tokens-before/after, savings, retrieval handle, and latency.
|
|
126
|
+
*
|
|
127
|
+
* `now` is injected for deterministic latency in tests.
|
|
128
|
+
*/
|
|
129
|
+
export declare function compressContent(compressor: ContextCompressor | null, input: CompressInput, store: RetrievalStore | null, deps?: {
|
|
130
|
+
now?: () => number;
|
|
131
|
+
}): Promise<CompressOutput>;
|
|
132
|
+
/**
|
|
133
|
+
* Synchronous compression for the sync render/`@spill` path, where `renderTemplate`
|
|
134
|
+
* cannot await. Same reversible measurement and degrade rules as
|
|
135
|
+
* {@link compressContent}; backed by a {@link SyncContextCompressor} (the Headroom
|
|
136
|
+
* command runner is itself synchronous). `compressor === null` → original verbatim.
|
|
137
|
+
*/
|
|
138
|
+
export declare function compressContentSync(compressor: SyncContextCompressor | null, input: CompressInput, store: RetrievalStore | null, now?: () => number): CompressOutput;
|
|
139
|
+
/**
|
|
140
|
+
* Build the {@link ToolUsage} evidence record for a compression, so the loop can
|
|
141
|
+
* attach it to a stage's `toolsUsed[]` (P19). Pure.
|
|
142
|
+
*/
|
|
143
|
+
export declare function compressionToolUsage(output: CompressOutput, category: CompressionCategory, stage?: string): ToolUsage;
|
|
144
|
+
/** Aggregate savings across a run's compressions (for the context report). */
|
|
145
|
+
export type CompressionSummary = {
|
|
146
|
+
invocations: number;
|
|
147
|
+
tokensBefore: number;
|
|
148
|
+
tokensAfter: number;
|
|
149
|
+
tokensSaved: number;
|
|
150
|
+
retrievals: number;
|
|
151
|
+
degraded: number;
|
|
152
|
+
};
|
|
153
|
+
/** Sum a set of compression outcomes into a {@link CompressionSummary}. Pure. */
|
|
154
|
+
export declare function summarizeCompression(outputs: CompressOutput[]): CompressionSummary;
|
|
155
|
+
/**
|
|
156
|
+
* Summarize the compression {@link ToolUsage} records on a run's stage records
|
|
157
|
+
* (name `headroom`) — what `--context-report` reads, since the loop attaches
|
|
158
|
+
* compression evidence as `toolsUsed[]`. Pure.
|
|
159
|
+
*/
|
|
160
|
+
export declare function summarizeToolCompression(usages: ToolUsage[]): {
|
|
161
|
+
invocations: number;
|
|
162
|
+
tokensSaved: number;
|
|
163
|
+
retrievals: number;
|
|
164
|
+
};
|
|
165
|
+
/** One-line human summary of compression savings for the context report. Pure. */
|
|
166
|
+
export declare function formatCompressionSummary(s: CompressionSummary): string;
|
|
167
|
+
//# sourceMappingURL=context-compressor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-compressor.d.ts","sourceRoot":"","sources":["../src/context-compressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { estimateTokens } from "./context-report.js";
|
|
4
|
+
import { runReportDir } from "./run-report.js";
|
|
5
|
+
const MODES = new Set(["off", "headroom"]);
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the compressor mode from the flag/env/config precedence chain (flag >
|
|
8
|
+
* env > config > off). An unrecognized value resolves to `off`, so a typo never
|
|
9
|
+
* silently enables compression. Pure.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveCompressorMode(opts) {
|
|
12
|
+
for (const raw of [opts.flag, opts.env, opts.config]) {
|
|
13
|
+
if (typeof raw === "string" && raw.length > 0) {
|
|
14
|
+
const v = raw.trim().toLowerCase();
|
|
15
|
+
return MODES.has(v) ? v : "off";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return "off";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Read the effective compressor mode for a workspace: `--context-compressor`
|
|
22
|
+
* flag, else `OTTO_CONTEXT_COMPRESSOR`, else `.otto/config.json`
|
|
23
|
+
* `contextCompressor`, else `off`. Missing/malformed config → off (never throws).
|
|
24
|
+
*/
|
|
25
|
+
export function readCompressorMode(workspaceDir, env = process.env, flag) {
|
|
26
|
+
let config;
|
|
27
|
+
try {
|
|
28
|
+
const raw = JSON.parse(readFileSync(join(workspaceDir, ".otto", "config.json"), "utf8"));
|
|
29
|
+
if (typeof raw.contextCompressor === "string")
|
|
30
|
+
config = raw.contextCompressor;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// no/invalid config → leave undefined (resolves to off)
|
|
34
|
+
}
|
|
35
|
+
return resolveCompressorMode({
|
|
36
|
+
flag,
|
|
37
|
+
env: env.OTTO_CONTEXT_COMPRESSOR,
|
|
38
|
+
config,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Default fs retrieval store: write each original under
|
|
43
|
+
* `.otto/runs/<run-id>/compressed/<key>.orig` and return that **workspace-relative**
|
|
44
|
+
* path as the durable handle, so the run bundle stays portable.
|
|
45
|
+
*/
|
|
46
|
+
export function runRetrievalStore(workspaceDir, runId) {
|
|
47
|
+
const absDir = join(runReportDir(workspaceDir, runId), "compressed");
|
|
48
|
+
return (key, original) => {
|
|
49
|
+
mkdirSync(absDir, { recursive: true });
|
|
50
|
+
const safe = key.replace(/[^a-zA-Z0-9._-]+/g, "-").slice(0, 80);
|
|
51
|
+
writeFileSync(join(absDir, `${safe}.orig`), original);
|
|
52
|
+
return join(".otto", "runs", runId, "compressed", `${safe}.orig`);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Turn a raw compression attempt into a measured {@link CompressOutput}, shared
|
|
57
|
+
* by the async ({@link compressContent}) and sync ({@link compressContentSync})
|
|
58
|
+
* entry points so their decision logic never drifts. `result === null` means the
|
|
59
|
+
* compressor was unavailable (degraded passthrough). A result that did not shrink
|
|
60
|
+
* the token estimate is discarded in favor of the original. Pure except for the
|
|
61
|
+
* injected `store` (only invoked on a real reduction).
|
|
62
|
+
*/
|
|
63
|
+
function assembleOutput(input, version, result, store, latencyMs) {
|
|
64
|
+
const tokensBefore = estimateTokens(input.text.length);
|
|
65
|
+
const passthrough = (degraded, note) => ({
|
|
66
|
+
text: input.text,
|
|
67
|
+
tokensBefore,
|
|
68
|
+
tokensAfter: tokensBefore,
|
|
69
|
+
tokensSaved: 0,
|
|
70
|
+
latencyMs,
|
|
71
|
+
compressorVersion: version,
|
|
72
|
+
degraded,
|
|
73
|
+
...(note ? { note } : {}),
|
|
74
|
+
});
|
|
75
|
+
if (result === null) {
|
|
76
|
+
return passthrough(true, `compressor "${version}" unavailable — kept original`);
|
|
77
|
+
}
|
|
78
|
+
const tokensAfter = estimateTokens(result.text.length);
|
|
79
|
+
if (!result.ok || tokensAfter >= tokensBefore) {
|
|
80
|
+
return passthrough(!result.ok, result.note ??
|
|
81
|
+
(result.ok ? "no token reduction — kept original" : undefined));
|
|
82
|
+
}
|
|
83
|
+
const retrievalHandle = store ? store(input.key, input.text) : undefined;
|
|
84
|
+
return {
|
|
85
|
+
text: result.text,
|
|
86
|
+
tokensBefore,
|
|
87
|
+
tokensAfter,
|
|
88
|
+
tokensSaved: tokensBefore - tokensAfter,
|
|
89
|
+
...(retrievalHandle ? { retrievalHandle } : {}),
|
|
90
|
+
latencyMs,
|
|
91
|
+
compressorVersion: version,
|
|
92
|
+
degraded: false,
|
|
93
|
+
...(result.note ? { note: result.note } : {}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Compress one piece of content reversibly and measure it (async — for adapters
|
|
98
|
+
* that shell out / call a local MCP server). The single entry point both a live
|
|
99
|
+
* async caller and the benchmark use:
|
|
100
|
+
*
|
|
101
|
+
* - off (`compressor` null) → original verbatim, zero savings, not degraded;
|
|
102
|
+
* - compressor unavailable / throws / `ok: false` → degraded passthrough
|
|
103
|
+
* (original kept), never throws;
|
|
104
|
+
* - success → stores the original via `store`, returns compressed text + measured
|
|
105
|
+
* tokens-before/after, savings, retrieval handle, and latency.
|
|
106
|
+
*
|
|
107
|
+
* `now` is injected for deterministic latency in tests.
|
|
108
|
+
*/
|
|
109
|
+
export async function compressContent(compressor, input, store, deps = {}) {
|
|
110
|
+
const now = deps.now ?? Date.now;
|
|
111
|
+
if (!compressor)
|
|
112
|
+
return assembleOutput(input, "off", { ok: true, text: input.text }, null, 0);
|
|
113
|
+
const start = now();
|
|
114
|
+
let available;
|
|
115
|
+
try {
|
|
116
|
+
available = await compressor.isAvailable();
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
available = false;
|
|
120
|
+
}
|
|
121
|
+
if (!available)
|
|
122
|
+
return assembleOutput(input, compressor.name, null, store, 0);
|
|
123
|
+
try {
|
|
124
|
+
const result = await compressor.compress(input);
|
|
125
|
+
return assembleOutput(input, compressor.version, result, store, Math.max(0, now() - start));
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
return assembleOutput(input, compressor.version, {
|
|
129
|
+
ok: false,
|
|
130
|
+
text: input.text,
|
|
131
|
+
note: `compressor error: ${e.message ?? e}`,
|
|
132
|
+
}, store, Math.max(0, now() - start));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Synchronous compression for the sync render/`@spill` path, where `renderTemplate`
|
|
137
|
+
* cannot await. Same reversible measurement and degrade rules as
|
|
138
|
+
* {@link compressContent}; backed by a {@link SyncContextCompressor} (the Headroom
|
|
139
|
+
* command runner is itself synchronous). `compressor === null` → original verbatim.
|
|
140
|
+
*/
|
|
141
|
+
export function compressContentSync(compressor, input, store, now = Date.now) {
|
|
142
|
+
if (!compressor)
|
|
143
|
+
return assembleOutput(input, "off", { ok: true, text: input.text }, null, 0);
|
|
144
|
+
if (!compressor.available)
|
|
145
|
+
return assembleOutput(input, compressor.name, null, store, 0);
|
|
146
|
+
const start = now();
|
|
147
|
+
try {
|
|
148
|
+
const result = compressor.compress(input);
|
|
149
|
+
return assembleOutput(input, compressor.version, result, store, Math.max(0, now() - start));
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
return assembleOutput(input, compressor.version, {
|
|
153
|
+
ok: false,
|
|
154
|
+
text: input.text,
|
|
155
|
+
note: `compressor error: ${e.message ?? e}`,
|
|
156
|
+
}, store, Math.max(0, now() - start));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Build the {@link ToolUsage} evidence record for a compression, so the loop can
|
|
161
|
+
* attach it to a stage's `toolsUsed[]` (P19). Pure.
|
|
162
|
+
*/
|
|
163
|
+
export function compressionToolUsage(output, category, stage) {
|
|
164
|
+
return {
|
|
165
|
+
name: "headroom",
|
|
166
|
+
kind: "command",
|
|
167
|
+
...(stage ? { stage } : {}),
|
|
168
|
+
tokensSaved: output.tokensSaved,
|
|
169
|
+
...(output.retrievalHandle
|
|
170
|
+
? { retrievalHandle: output.retrievalHandle }
|
|
171
|
+
: {}),
|
|
172
|
+
reasons: [
|
|
173
|
+
`compressed ${category}`,
|
|
174
|
+
output.degraded
|
|
175
|
+
? "degraded: kept original"
|
|
176
|
+
: `saved ${output.tokensSaved} tokens`,
|
|
177
|
+
],
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/** Sum a set of compression outcomes into a {@link CompressionSummary}. Pure. */
|
|
181
|
+
export function summarizeCompression(outputs) {
|
|
182
|
+
const s = {
|
|
183
|
+
invocations: outputs.length,
|
|
184
|
+
tokensBefore: 0,
|
|
185
|
+
tokensAfter: 0,
|
|
186
|
+
tokensSaved: 0,
|
|
187
|
+
retrievals: 0,
|
|
188
|
+
degraded: 0,
|
|
189
|
+
};
|
|
190
|
+
for (const o of outputs) {
|
|
191
|
+
s.tokensBefore += o.tokensBefore;
|
|
192
|
+
s.tokensAfter += o.tokensAfter;
|
|
193
|
+
s.tokensSaved += o.tokensSaved;
|
|
194
|
+
if (o.retrievalHandle)
|
|
195
|
+
s.retrievals += 1;
|
|
196
|
+
if (o.degraded)
|
|
197
|
+
s.degraded += 1;
|
|
198
|
+
}
|
|
199
|
+
return s;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Summarize the compression {@link ToolUsage} records on a run's stage records
|
|
203
|
+
* (name `headroom`) — what `--context-report` reads, since the loop attaches
|
|
204
|
+
* compression evidence as `toolsUsed[]`. Pure.
|
|
205
|
+
*/
|
|
206
|
+
export function summarizeToolCompression(usages) {
|
|
207
|
+
let tokensSaved = 0;
|
|
208
|
+
let retrievals = 0;
|
|
209
|
+
let invocations = 0;
|
|
210
|
+
for (const u of usages) {
|
|
211
|
+
if (u.name !== "headroom")
|
|
212
|
+
continue;
|
|
213
|
+
invocations += 1;
|
|
214
|
+
tokensSaved += u.tokensSaved ?? 0;
|
|
215
|
+
if (u.retrievalHandle)
|
|
216
|
+
retrievals += 1;
|
|
217
|
+
}
|
|
218
|
+
return { invocations, tokensSaved, retrievals };
|
|
219
|
+
}
|
|
220
|
+
/** One-line human summary of compression savings for the context report. Pure. */
|
|
221
|
+
export function formatCompressionSummary(s) {
|
|
222
|
+
if (s.invocations === 0)
|
|
223
|
+
return "Context compression: not used.";
|
|
224
|
+
const pct = s.tokensBefore > 0 ? Math.round((s.tokensSaved / s.tokensBefore) * 100) : 0;
|
|
225
|
+
const parts = [
|
|
226
|
+
`Context compression: ${s.tokensSaved} tokens saved (${pct}%) across ${s.invocations} call(s)`,
|
|
227
|
+
`${s.retrievals} original(s) retained`,
|
|
228
|
+
];
|
|
229
|
+
if (s.degraded > 0)
|
|
230
|
+
parts.push(`${s.degraded} degraded (kept original)`);
|
|
231
|
+
return parts.join("; ") + ".";
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=context-compressor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-compressor.js","sourceRoot":"","sources":["../src/context-compressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-report-cli.d.ts","sourceRoot":"","sources":["../src/context-report-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-report-cli.d.ts","sourceRoot":"","sources":["../src/context-report-cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAGzB;;;;;;;;;GASG;AAEH,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,CAAC;AAgBF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EAAE,GACpB,MAAM,CAuER;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,GAAE,iBAA+B,GACpC,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { summarizeToolCompression } from "./context-compressor.js";
|
|
3
|
+
import { listRunIds, readStageRecords, } from "./run-report.js";
|
|
3
4
|
import { formatCacheEfficiency, summarizeCacheEfficiency } from "./tokens.js";
|
|
4
5
|
const defaultDeps = {
|
|
5
6
|
env: process.env,
|
|
@@ -59,6 +60,13 @@ export function formatContextReportRun(runId, stages) {
|
|
|
59
60
|
if (cache.totalInputTokens > 0) {
|
|
60
61
|
lines.push("", ` ${formatCacheEfficiency(cache)}`);
|
|
61
62
|
}
|
|
63
|
+
// Context compression savings (P20) — drawn from compression tool-usage records
|
|
64
|
+
// on the stage bundle; omitted entirely when no compressor ran.
|
|
65
|
+
const comp = summarizeToolCompression(stages.flatMap((s) => s.toolsUsed ?? []));
|
|
66
|
+
if (comp.invocations > 0) {
|
|
67
|
+
lines.push("", ` Context compression: ~${num.format(comp.tokensSaved)} tokens saved across ` +
|
|
68
|
+
`${comp.invocations} call(s); ${comp.retrievals} original(s) retained.`);
|
|
69
|
+
}
|
|
62
70
|
return lines.join("\n");
|
|
63
71
|
}
|
|
64
72
|
/**
|