@felan-ai/ext-rtk-optimizer 0.3.0 → 0.5.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/README.md CHANGED
@@ -19,10 +19,12 @@ work.
19
19
  when ANSI stripping is enabled.
20
20
 
21
21
  Build, test, Git, and linter commands receive command-aware compaction. Search
22
- results can be grouped by file. A final character limit protects the context
23
- from unusually large command results. Lossy source filtering and smart
24
- truncation for `read` are disabled by default; explicit read ranges and reads
25
- of at most 80 lines stay exact even when read compaction is enabled.
22
+ results can be grouped by file. A final head-and-tail character limit protects
23
+ the context from unusually large command results and stores a recoverable copy
24
+ in session storage. Failed results retain their original evidence, and complete
25
+ JSON is never cut. Lossy source filtering and smart truncation for `read` are
26
+ disabled by default; explicit read ranges and reads of at most 80 lines stay
27
+ exact even when read compaction is enabled.
26
28
 
27
29
  ## Requirements
28
30
 
@@ -89,12 +91,20 @@ commands. Subcommands are:
89
91
  - `/rtk show`
90
92
  - `/rtk verify`
91
93
  - `/rtk install`
92
- - `/rtk stats`
93
- - `/rtk clear-stats`
94
94
  - `/rtk help`
95
95
 
96
- Metrics are scoped to the current Felan extension session and reset at session
97
- start.
96
+ RTK and post-tool savings are reported to Felan's persistent savings service when the
97
+ host provides it. They report two distinct sequential stages: RTK command-output
98
+ optimization from an isolated session/model tracker, and Felan post-tool
99
+ compaction for every supported result. Both use bounded token estimates and are
100
+ reported as separate Felan-owned savings measurements; they are not added twice.
101
+ The session tracker is queried once per model shard during session shutdown and
102
+ then deleted. A crashed session can recover its unfinished tracker on resume;
103
+ rare duplicate or skipped indicative measurements are acceptable. The global RTK
104
+ history is never imported. RTK command-output captures use the
105
+ `rtk-tracking-byte4-v1` estimator and are available on POSIX runtimes; on
106
+ Windows, rewriting remains available but the isolated RTK gain capture is
107
+ skipped because the POSIX environment wrapper is not used.
98
108
 
99
109
  ## Development
100
110
 
package/dist/command.d.ts CHANGED
@@ -5,8 +5,6 @@ export interface RtkOptimizerController {
5
5
  getRuntimeStatus(): RuntimeStatus;
6
6
  refreshRuntimeStatus(): Promise<RuntimeStatus>;
7
7
  install(onStatus: (message: string) => void): Promise<RuntimeStatus>;
8
- getMetricsSummary(): string;
9
- clearMetrics(): void;
10
8
  }
11
9
  export declare function registerRtkCommand(pi: FelanExtensionAPI, controller: RtkOptimizerController): void;
12
10
  //# sourceMappingURL=command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,SAAS,IAAI,kBAAkB,CAAC;IAChC,gBAAgB,IAAI,aAAa,CAAC;IAClC,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,iBAAiB,IAAI,MAAM,CAAC;IAC5B,YAAY,IAAI,IAAI,CAAC;CACtB;AAYD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAuDlG"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,SAAS,IAAI,kBAAkB,CAAC;IAChC,gBAAgB,IAAI,aAAa,CAAC;IAClC,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtE;AAUD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAkDlG"}
package/dist/command.js CHANGED
@@ -1,10 +1,8 @@
1
- const USAGE = 'Usage: /rtk [show|verify|install|stats|clear-stats|help]';
1
+ const USAGE = 'Usage: /rtk [show|verify|install|help]';
2
2
  const SUBCOMMANDS = [
3
3
  ['show', 'Show current RTK configuration and runtime status'],
4
4
  ['verify', 'Check whether rtk is available in the runtime'],
5
5
  ['install', 'Run the pinned official RTK installer'],
6
- ['stats', 'Show output-compaction metrics'],
7
- ['clear-stats', 'Clear output-compaction metrics'],
8
6
  ['help', 'Show command usage'],
9
7
  ];
10
8
  export function registerRtkCommand(pi, controller) {
@@ -51,13 +49,6 @@ export function registerRtkCommand(pi, controller) {
51
49
  ctx.ui.setStatus('rtk-install', undefined);
52
50
  }
53
51
  }
54
- else if (subcommand === 'stats') {
55
- ctx.ui.notify(controller.getMetricsSummary(), 'info');
56
- }
57
- else if (subcommand === 'clear-stats') {
58
- controller.clearMetrics();
59
- ctx.ui.notify('RTK metrics cleared.', 'info');
60
- }
61
52
  else {
62
53
  ctx.ui.notify(USAGE, 'warning');
63
54
  }
@@ -78,7 +69,4 @@ function formatSummary(config, status) {
78
69
  'commandTools=bash,exec_command,write_stdin',
79
70
  ].join(', ');
80
71
  }
81
- function errorMessage(error) {
82
- return error instanceof Error ? error.message : String(error);
83
- }
84
72
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { AgentRuntime, FelanExtension } from '@felan-ai/agent-core';
2
2
  import type { RtkOptimizerConfig, RuntimeStatus } from './types.js';
3
3
  export declare function refreshActiveRtkRuntime(runtime: AgentRuntime): Promise<RuntimeStatus>;
4
4
  declare const rtkOptimizerExtension: FelanExtension;
5
+ export declare function estimateUtf8Tokens(values: readonly string[]): number;
5
6
  export declare function shouldInjectSourceFilterTroubleshootingNote(config: RtkOptimizerConfig): boolean;
6
7
  export declare function injectGuidelineIntoPrompt(systemPrompt: string, guideline: string): string;
7
8
  export interface BoundedNoticeTracker {
@@ -13,7 +14,6 @@ export { RTK_OPTIMIZER_CONFIG, rtkOptimizerConfigFromSettings, validateRtkOptimi
13
14
  export { computeRewriteDecision, inspectRtkRuntime, resolveRtkRewrite } from './command-rewriter.js';
14
15
  export { installManagedRtk, managedRtkDirectory, managedRtkExecutable, MANAGED_RTK_VERSION, supportsManagedRtk, } from './installer.js';
15
16
  export { compactToolResult } from './output-compactor.js';
16
- export { OutputMetrics } from './output-metrics.js';
17
17
  export { DEFAULT_RTK_OPTIMIZER_CONFIG } from './types.js';
18
18
  export type { RtkMode, RtkOptimizerConfig, RtkOutputCompactionConfig, RtkSourceFilterLevel, RuntimeStatus, } from './types.js';
19
19
  export default rtkOptimizerExtension;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmB3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQpE,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAE3F;AAED,QAAA,MAAM,qBAAqB,EAAE,cA4N5B,CAAC;AAEF,wBAAgB,2CAA2C,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAU/F;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAyBzF;AA4DD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAoBnF;AAWD,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,YAAY,EACV,OAAO,EACP,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA2B3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AASpE,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAE3F;AAED,QAAA,MAAM,qBAAqB,EAAE,cAiR5B,CAAC;AAyDF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGpE;AAuBD,wBAAgB,2CAA2C,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAU/F;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAyBzF;AAkED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAoBnF;AAWD,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,YAAY,EACV,OAAO,EACP,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,eAAe,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -3,9 +3,10 @@ import { computeRewriteDecision, inspectRtkRuntime } from './command-rewriter.js
3
3
  import { associateExtensionConfig } from '@felan-ai/agent-core';
4
4
  import { RTK_OPTIMIZER_CONFIG, rtkOptimizerConfigFromSettings } from './config.js';
5
5
  import { installManagedRtk } from './installer.js';
6
- import { compactToolResult } from './output-compactor.js';
7
- import { OutputMetrics } from './output-metrics.js';
8
- import { toRecord } from './record-utils.js';
6
+ import { addRecoveryPath, compactToolResult } from './output-compactor.js';
7
+ import { persistRecoveryArtifact } from './recovery.js';
8
+ import { createRtkGainSegment, discoverRtkGainSegments, discardRtkGainSegment, readRtkGainSegment, wrapCommandWithRtkGain, } from './rtk-gain.js';
9
+ import { isTextContentBlock, toRecord } from './record-utils.js';
9
10
  import { sanitizeStreamingCommandResult } from './tool-execution-sanitizer.js';
10
11
  import { codexResultHasExited, isCommandToolName, isStreamingCommandToolName, readCodexSessionId, readRunningCodexSessionId, readToolCommand, writeToolCommand, } from './tool-shapes.js';
11
12
  const EXTENSION_NAME = 'RTK optimizer';
@@ -20,11 +21,13 @@ const rtkOptimizerExtension = async (pi) => {
20
21
  let runtimeStatus = { rtkAvailable: false };
21
22
  let statusRefresh;
22
23
  let missingRtkWarningShown = false;
23
- const metrics = new OutputMetrics();
24
24
  const warnedMessages = createBoundedNoticeTracker(100);
25
25
  const suggestionNotices = createBoundedNoticeTracker(200);
26
26
  const codexSessionCommands = new Map();
27
+ const codexSessionModels = new Map();
28
+ const toolCallModels = new Map();
27
29
  const activeCodexCommands = new Map();
30
+ const rtkSegments = new Map();
28
31
  const refreshRuntimeStatus = () => {
29
32
  statusRefresh ??= inspectRtkRuntime(pi.runtime)
30
33
  .then((status) => {
@@ -70,27 +73,30 @@ const rtkOptimizerExtension = async (pi) => {
70
73
  missingRtkWarningShown = false;
71
74
  return status;
72
75
  },
73
- getMetricsSummary: () => metrics.summary(),
74
- clearMetrics: () => metrics.clear(),
75
76
  });
76
77
  pi.on('session_start', async (_event, ctx) => {
77
78
  warnedMessages.reset();
78
79
  suggestionNotices.reset();
79
80
  codexSessionCommands.clear();
80
81
  activeCodexCommands.clear();
81
- metrics.clear();
82
+ toolCallModels.clear();
83
+ codexSessionModels.clear();
82
84
  missingRtkWarningShown = false;
83
85
  if (config.enabled) {
84
86
  await refreshRuntimeStatus();
85
87
  maybeWarnRtkMissing(ctx);
86
88
  }
87
89
  });
88
- pi.on('session_shutdown', () => {
90
+ pi.on('session_shutdown', async () => {
89
91
  if (activeRuntimeRefreshers.get(pi.runtime) === refreshRuntimeStatus) {
90
92
  activeRuntimeRefreshers.delete(pi.runtime);
91
93
  }
92
94
  codexSessionCommands.clear();
95
+ codexSessionModels.clear();
96
+ toolCallModels.clear();
93
97
  activeCodexCommands.clear();
98
+ rtkSegments.clear();
99
+ await flushRtkGainSegments(pi, runtimeStatus.command ?? 'rtk');
94
100
  });
95
101
  pi.on('agent_end', () => {
96
102
  activeCodexCommands.clear();
@@ -106,6 +112,9 @@ const rtkOptimizerExtension = async (pi) => {
106
112
  return systemPrompt === event.systemPrompt ? undefined : { systemPrompt };
107
113
  });
108
114
  pi.on('tool_call', async (event, ctx) => {
115
+ if (isCompactionToolName(event.toolName) && ctx.model) {
116
+ toolCallModels.set(event.toolCallId, { provider: ctx.model.provider, id: ctx.model.id });
117
+ }
109
118
  if (!config.enabled || !isCommandToolName(event.toolName))
110
119
  return undefined;
111
120
  const command = readToolCommand(event.toolName, event.input);
@@ -126,7 +135,20 @@ const rtkOptimizerExtension = async (pi) => {
126
135
  return undefined;
127
136
  }
128
137
  if (config.mode === 'rewrite') {
129
- writeToolCommand(event.toolName, event.input, decision.rewrittenCommand);
138
+ let rewrittenCommand = decision.rewrittenCommand;
139
+ if (config.outputCompaction.trackSavings && pi.savings) {
140
+ const model = toolCallModels.get(event.toolCallId);
141
+ const modelKey = JSON.stringify(model ?? null);
142
+ let segment = rtkSegments.get(modelKey);
143
+ if (!segment) {
144
+ segment = await createRtkGainSegment(pi.runtime, model);
145
+ if (segment)
146
+ rtkSegments.set(modelKey, segment);
147
+ }
148
+ if (segment)
149
+ rewrittenCommand = wrapCommandWithRtkGain(rewrittenCommand, segment);
150
+ }
151
+ writeToolCommand(event.toolName, event.input, rewrittenCommand);
130
152
  if (config.showRewriteNotifications && ctx.hasUI) {
131
153
  ctx.ui.notify(`RTK rewrite: ${trimMessage(command, 100)} -> ${trimMessage(decision.rewrittenCommand, 120)}`, 'info');
132
154
  }
@@ -146,7 +168,7 @@ const rtkOptimizerExtension = async (pi) => {
146
168
  activeCodexCommands.set(event.toolCallId, command);
147
169
  });
148
170
  pi.on('tool_execution_update', (event) => {
149
- recordCodexSessionFromExecution(event.toolName, event.toolCallId, event.partialResult, activeCodexCommands, codexSessionCommands);
171
+ recordCodexSessionFromExecution(event.toolName, event.toolCallId, event.partialResult, activeCodexCommands, codexSessionCommands, codexSessionModels, toolCallModels);
150
172
  if (!config.enabled ||
151
173
  !config.outputCompaction.enabled ||
152
174
  !config.outputCompaction.stripAnsi ||
@@ -155,7 +177,7 @@ const rtkOptimizerExtension = async (pi) => {
155
177
  sanitizeStreamingCommandResult(event.partialResult);
156
178
  });
157
179
  pi.on('tool_execution_end', (event) => {
158
- recordCodexSessionFromExecution(event.toolName, event.toolCallId, event.result, activeCodexCommands, codexSessionCommands);
180
+ recordCodexSessionFromExecution(event.toolName, event.toolCallId, event.result, activeCodexCommands, codexSessionCommands, codexSessionModels, toolCallModels);
159
181
  activeCodexCommands.delete(event.toolCallId);
160
182
  if (!config.enabled ||
161
183
  !config.outputCompaction.enabled ||
@@ -166,11 +188,12 @@ const rtkOptimizerExtension = async (pi) => {
166
188
  });
167
189
  pi.on('tool_result', async (event, ctx) => {
168
190
  const originatingCommand = commandForResult(event.toolName, event.input, codexSessionCommands);
169
- updateCodexSessionCommands(event.toolName, event.input, event.details, originatingCommand, codexSessionCommands);
191
+ const resultModel = modelForResult(event.toolName, event.input, event.toolCallId, toolCallModels, codexSessionModels);
192
+ updateCodexSessionCommands(event.toolName, event.input, event.details, originatingCommand, codexSessionCommands, codexSessionModels);
170
193
  if (!config.enabled || !config.outputCompaction.enabled)
171
194
  return undefined;
172
195
  try {
173
- const outcome = compactToolResult({
196
+ let outcome = compactToolResult({
174
197
  toolName: event.toolName,
175
198
  input: event.input,
176
199
  content: event.content,
@@ -178,10 +201,32 @@ const rtkOptimizerExtension = async (pi) => {
178
201
  cwd: ctx.cwd,
179
202
  agentDir: pi.agentDir,
180
203
  ...(originatingCommand === undefined ? {} : { command: originatingCommand }),
181
- metrics,
204
+ failed: event.isError || hasNonZeroExitCode(event.details),
182
205
  });
183
- if (!outcome.changed || !outcome.content)
206
+ if (!outcome.changed || !outcome.content) {
207
+ if (config.outputCompaction.trackSavings && isCompactionToolName(event.toolName)) {
208
+ reportSavings(pi.savings, event.toolName, event.content, event.content, resultModel);
209
+ }
210
+ toolCallModels.delete(event.toolCallId);
184
211
  return undefined;
212
+ }
213
+ if (outcome.metadata?.truncated) {
214
+ const originalText = event.content
215
+ .filter(isTextContentBlock)
216
+ .map((block) => toRecord(block).text)
217
+ .filter((text) => typeof text === 'string')
218
+ .join('\n');
219
+ const recoveryPath = await persistRecoveryArtifact(pi.runtime, originalText);
220
+ if (!recoveryPath) {
221
+ warnOnce(ctx, `${EXTENSION_NAME}: output was not compacted because a recovery copy could not be stored.`);
222
+ return undefined;
223
+ }
224
+ outcome = addRecoveryPath(outcome, recoveryPath);
225
+ }
226
+ if (config.outputCompaction.trackSavings && isCompactionToolName(event.toolName)) {
227
+ reportSavings(pi.savings, event.toolName, event.content, outcome.content, resultModel, outcome.techniques);
228
+ }
229
+ toolCallModels.delete(event.toolCallId);
185
230
  return {
186
231
  content: outcome.content,
187
232
  ...(outcome.metadata === undefined ? {} : { details: mergeCompactionDetails(event.details, outcome.metadata) }),
@@ -193,6 +238,66 @@ const rtkOptimizerExtension = async (pi) => {
193
238
  }
194
239
  });
195
240
  };
241
+ function hasNonZeroExitCode(details) {
242
+ const value = toRecord(details).exit_code;
243
+ return Number.isSafeInteger(value) && value !== 0;
244
+ }
245
+ function textBlocks(content) {
246
+ if (!Array.isArray(content))
247
+ return [];
248
+ return content.filter(isTextContentBlock).map((block) => toRecord(block).text);
249
+ }
250
+ function reportSavings(reporter, tool, original, compacted, model, techniques = []) {
251
+ if (!reporter)
252
+ return;
253
+ const baseline = textBlocks(original);
254
+ const actual = textBlocks(compacted);
255
+ void reporter.report({
256
+ category: 'output-optimization',
257
+ operation: 'post-tool-compaction',
258
+ baseline: { ...(model === undefined ? {} : { model }), tokens: { input: estimateUtf8Tokens(baseline), output: 0 } },
259
+ actual: { ...(model === undefined ? {} : { model }), tokens: { input: estimateUtf8Tokens(actual), output: 0 } },
260
+ basis: { kind: 'estimated-baseline', method: 'utf8-bytes/4-ceil-v1' },
261
+ dimensions: { tool, ...(techniques.length === 0 ? {} : { techniques }) },
262
+ }).catch(() => { });
263
+ }
264
+ async function flushRtkGainSegments(pi, executable) {
265
+ const segments = await discoverRtkGainSegments(pi.runtime);
266
+ await Promise.allSettled(segments.map(async (segment) => {
267
+ const totals = await readRtkGainSegment(pi.runtime, executable, segment);
268
+ if (!totals)
269
+ return;
270
+ if (totals.calls === 0 || !pi.savings) {
271
+ await discardRtkGainSegment(pi.runtime, segment);
272
+ return;
273
+ }
274
+ await pi.savings.report({
275
+ category: 'output-optimization',
276
+ operation: 'rtk-command-output',
277
+ baseline: { ...(segment.model === undefined ? {} : { model: segment.model }), tokens: { input: totals.inputTokens, output: 0 } },
278
+ actual: { ...(segment.model === undefined ? {} : { model: segment.model }), tokens: { input: totals.outputTokens, output: 0 } },
279
+ basis: { kind: 'observed-comparison', method: 'rtk-tracking-byte4-v1' },
280
+ calls: totals.calls,
281
+ });
282
+ await discardRtkGainSegment(pi.runtime, segment);
283
+ }));
284
+ }
285
+ export function estimateUtf8Tokens(values) {
286
+ const bytes = values.reduce((total, value) => total + new TextEncoder().encode(value).byteLength, 0);
287
+ return Math.ceil(bytes / 4);
288
+ }
289
+ function modelForCodexResult(input, models) {
290
+ const sessionId = readCodexSessionId(input);
291
+ return sessionId === undefined ? undefined : models.get(sessionId);
292
+ }
293
+ function modelForResult(toolName, input, toolCallId, toolCallModels, codexSessionModels) {
294
+ return toolName === 'write_stdin'
295
+ ? modelForCodexResult(input, codexSessionModels)
296
+ : toolCallModels.get(toolCallId);
297
+ }
298
+ function isCompactionToolName(toolName) {
299
+ return isCommandToolName(toolName) || toolName === 'write_stdin' || toolName === 'read' || toolName === 'grep';
300
+ }
196
301
  export function shouldInjectSourceFilterTroubleshootingNote(config) {
197
302
  const compaction = config.outputCompaction;
198
303
  return (config.enabled &&
@@ -239,7 +344,7 @@ function commandForResult(toolName, input, codexSessionCommands) {
239
344
  const sessionId = readCodexSessionId(input);
240
345
  return sessionId === undefined ? undefined : codexSessionCommands.get(sessionId);
241
346
  }
242
- function recordCodexSessionFromExecution(toolName, toolCallId, result, activeCodexCommands, codexSessionCommands) {
347
+ function recordCodexSessionFromExecution(toolName, toolCallId, result, activeCodexCommands, codexSessionCommands, codexSessionModels, toolCallModels) {
243
348
  if (toolName !== 'exec_command')
244
349
  return;
245
350
  const command = activeCodexCommands.get(toolCallId);
@@ -248,8 +353,11 @@ function recordCodexSessionFromExecution(toolName, toolCallId, result, activeCod
248
353
  const sessionId = readRunningCodexSessionId(toRecord(result).details);
249
354
  if (sessionId !== undefined)
250
355
  codexSessionCommands.set(sessionId, command);
356
+ const model = toolCallModels.get(toolCallId);
357
+ if (sessionId !== undefined && model)
358
+ codexSessionModels.set(sessionId, model);
251
359
  }
252
- function updateCodexSessionCommands(toolName, input, details, command, codexSessionCommands) {
360
+ function updateCodexSessionCommands(toolName, input, details, command, codexSessionCommands, codexSessionModels) {
253
361
  if (toolName === 'exec_command' && command) {
254
362
  const runningSessionId = readRunningCodexSessionId(details);
255
363
  if (runningSessionId !== undefined)
@@ -263,6 +371,8 @@ function updateCodexSessionCommands(toolName, input, details, command, codexSess
263
371
  return;
264
372
  if (codexResultHasExited(details))
265
373
  codexSessionCommands.delete(requestedSessionId);
374
+ if (codexResultHasExited(details))
375
+ codexSessionModels.delete(requestedSessionId);
266
376
  }
267
377
  function mergeCompactionDetails(existingDetails, compaction) {
268
378
  const base = toRecord(existingDetails);
@@ -308,7 +418,6 @@ export { RTK_OPTIMIZER_CONFIG, rtkOptimizerConfigFromSettings, validateRtkOptimi
308
418
  export { computeRewriteDecision, inspectRtkRuntime, resolveRtkRewrite } from './command-rewriter.js';
309
419
  export { installManagedRtk, managedRtkDirectory, managedRtkExecutable, MANAGED_RTK_VERSION, supportsManagedRtk, } from './installer.js';
310
420
  export { compactToolResult } from './output-compactor.js';
311
- export { OutputMetrics } from './output-metrics.js';
312
421
  export { DEFAULT_RTK_OPTIMIZER_CONFIG } from './types.js';
313
422
  export default rtkOptimizerExtension;
314
423
  associateExtensionConfig(rtkOptimizerExtension, RTK_OPTIMIZER_CONFIG);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAqC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,cAAc,GAAG,eAAe,CAAC;AACvC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,kCAAkC,GACtC,iMAAiM,CAAC;AACpM,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAA8C,CAAC;AAE1F,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAqB;IACjE,OAAO,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,qBAAqB,GAAmB,KAAK,EAAE,EAAE,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,8BAA8B,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,aAAa,GAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAI,aAAiD,CAAC;IACtD,IAAI,sBAAsB,GAAG,KAAK,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD,MAAM,oBAAoB,GAAG,GAA2B,EAAE;QACxD,aAAa,KAAK,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC;aAC5C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,aAAa,GAAG,MAAM,CAAC;YACvB,IAAI,MAAM,CAAC,YAAY;gBAAE,sBAAsB,GAAG,KAAK,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC,CAAC,CAAC;QACL,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IACF,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAE9D,MAAM,wBAAwB,GAAG,KAAK,IAAmB,EAAE;QACzD,IAAI,CAAC,MAAM,CAAC,mBAAmB;YAAE,OAAO;QACxC,IACE,aAAa,CAAC,aAAa,KAAK,SAAS;YACzC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,aAAa,GAAG,yBAAyB,EACpE,CAAC;YACD,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAE,OAAe,EAAE,QAA6B,SAAS,EAAQ,EAAE;QACxG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO;QAC9C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,GAAqB,EAAQ,EAAE;QAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,aAAa,CAAC,YAAY,IAAI,sBAAsB;YAAE,OAAO;QAEnH,sBAAsB,GAAG,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,QAAQ,CAAC,GAAG,EAAE,GAAG,cAAc,sDAAsD,MAAM,GAAG,CAAC,CAAC;IAClG,CAAC,CAAC;IAEF,kBAAkB,CAAC,EAAE,EAAE;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;QACvB,gBAAgB,EAAE,GAAG,EAAE,CAAC,aAAa;QACrC,oBAAoB;QACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC7D,aAAa,GAAG,MAAM,CAAC;YACvB,IAAI,MAAM,CAAC,YAAY;gBAAE,sBAAsB,GAAG,KAAK,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;QAC1C,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;KACpC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC1B,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC7B,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,sBAAsB,GAAG,KAAK,CAAC;QAE/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,oBAAoB,EAAE,CAAC;YAC7B,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC7B,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,oBAAoB,EAAE,CAAC;YACrE,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC7B,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;QACtB,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACtC,MAAM,wBAAwB,EAAE,CAAC;QACjC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,2CAA2C,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3E,MAAM,YAAY,GAAG,yBAAyB,CAAC,KAAK,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC;QACvG,OAAO,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5E,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,MAAM,wBAAwB,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,mBAAmB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YAC9D,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE;YACjE,GAAG,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC;SACtF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,QAAQ,CACN,GAAG,EACH,GAAG,cAAc,8BAA8B,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAChH,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,wBAAwB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACjD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,gBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,EAC7F,MAAM,CACP,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAChE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC3D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,QAAQ,KAAK,cAAc;YAAE,OAAO;QAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,OAAO;YAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,+BAA+B,CAC7B,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,EACnB,mBAAmB,EACnB,oBAAoB,CACrB,CAAC;QACF,IACE,CAAC,MAAM,CAAC,OAAO;YACf,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;YAChC,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS;YAClC,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC;YAE3C,OAAO;QAET,8BAA8B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;QACpC,+BAA+B,CAC7B,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,MAAM,EACZ,mBAAmB,EACnB,oBAAoB,CACrB,CAAC;QACF,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,IACE,CAAC,MAAM,CAAC,OAAO;YACf,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;YAChC,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS;YAClC,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC;YAE3C,OAAO;QAET,8BAA8B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACxC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC/F,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;QAEjH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE1E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,iBAAiB,CAC/B;gBACE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,EACD,MAAM,EACN;gBACE,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;gBAC5E,OAAO;aACR,CACF,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC3D,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,OAA+B;gBAChD,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;aAChH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CACN,GAAG,EACH,GAAG,cAAc,iDAAiD,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CACvG,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,2CAA2C,CAAC,MAA0B;IACpF,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC3C,OAAO,CACL,MAAM,CAAC,OAAO;QACd,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,cAAc,CAAC,OAAO;QACjC,UAAU,CAAC,0BAA0B;QACrC,UAAU,CAAC,mBAAmB,KAAK,MAAM;QACzC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,YAAoB,EAAE,SAAiB;IAC/E,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3E,MAAM,MAAM,GAAG,KAAK,SAAS,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,IAAI,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,YAAoB,CAAC;IACzB,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,WAAW,GAAG,CAAC,CAAC;QAChB,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,YAAY,OAAO,SAAS,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM;QAC5C,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;AAC/G,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAgB,EAChB,KAAc,EACd,oBAAiD;IAEjD,IAAI,iBAAiB,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzE,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,+BAA+B,CACtC,QAAgB,EAChB,UAAkB,EAClB,MAAe,EACf,mBAAgD,EAChD,oBAAyC;IAEzC,IAAI,QAAQ,KAAK,cAAc;QAAE,OAAO;IACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,SAAS,GAAG,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;IACtE,IAAI,SAAS,KAAK,SAAS;QAAE,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,0BAA0B,CACjC,QAAgB,EAChB,KAAc,EACd,OAAgB,EAChB,OAA2B,EAC3B,oBAAyC;IAEzC,IAAI,QAAQ,KAAK,cAAc,IAAI,OAAO,EAAE,CAAC;QAC3C,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,gBAAgB,KAAK,SAAS;YAAE,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO;IAEvC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,kBAAkB,KAAK,SAAS;QAAE,OAAO;IAC7C,IAAI,oBAAoB,CAAC,OAAO,CAAC;QAAE,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,sBAAsB,CAC7B,eAAwB,EACxB,UAAwC;IAExC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO;QACL,GAAG,IAAI;QACP,aAAa,EAAE,UAAU;QACzB,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE;QACpD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5G,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO;QACL,QAAQ,CAAC,GAAG;YACV,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,OAAO,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,SAAS,GAAG,GAAG;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAQ1D,eAAe,qBAAqB,CAAC;AACrC,wBAAwB,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { OutputMetrics } from './output-metrics.js';
2
1
  import type { RtkOptimizerConfig } from './types.js';
3
2
  interface ToolResultLikeEvent {
4
3
  toolName: string;
@@ -9,7 +8,8 @@ export interface ToolResultCompactionOptions {
9
8
  readonly cwd: string;
10
9
  readonly agentDir: string;
11
10
  readonly command?: string;
12
- readonly metrics?: OutputMetrics;
11
+ /** True when the tool failed or reported a non-zero process exit. */
12
+ readonly failed?: boolean;
13
13
  }
14
14
  export interface ToolResultCompactionMetadata {
15
15
  applied: boolean;
@@ -19,7 +19,9 @@ export interface ToolResultCompactionMetadata {
19
19
  compactedCharCount: number;
20
20
  originalLineCount: number;
21
21
  compactedLineCount: number;
22
+ recoveryPath?: string;
22
23
  }
24
+ export declare function addRecoveryPath(outcome: ToolResultCompactionOutcome, recoveryPath: string): ToolResultCompactionOutcome;
23
25
  export interface ToolResultCompactionOutcome {
24
26
  changed: boolean;
25
27
  content?: unknown[];
@@ -1 +1 @@
1
- {"version":3,"file":"output-compactor.d.ts","sourceRoot":"","sources":["../src/output-compactor.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;CACzC;AA+iBD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,2BAA2B,GACnC,2BAA2B,CA2E7B"}
1
+ {"version":3,"file":"output-compactor.d.ts","sourceRoot":"","sources":["../src/output-compactor.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,2BAA2B,EACpC,YAAY,EAAE,MAAM,GACnB,2BAA2B,CAc7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;CACzC;AAmkBD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,2BAA2B,GACnC,2BAA2B,CAuE7B"}
@@ -1,7 +1,25 @@
1
- import { aggregateLinterOutput, aggregateTestOutput, compactGitOutput, detectLanguage, filterBuildOutput, filterSourceCode, groupSearchResults, smartTruncate, stripAnsiFast, truncate, } from './techniques/index.js';
2
- import { mapTextContentBlocks, toRecord } from './record-utils.js';
1
+ import { aggregateLinterOutput, aggregateTestOutput, compactGitOutput, detectLanguage, filterBuildOutput, filterSourceCode, groupSearchResults, smartTruncate, stripAnsiFast, } from './techniques/index.js';
2
+ import { isTextContentBlock, mapTextContentBlocks, toRecord } from './record-utils.js';
3
3
  import { isRuntimePathUnderRoot, joinRuntimePath, normalizeRuntimePath } from './runtime-path.js';
4
4
  import { isCommandToolName, readToolCommand } from './tool-shapes.js';
5
+ import { truncateHeadTail } from './techniques/truncate.js';
6
+ export function addRecoveryPath(outcome, recoveryPath) {
7
+ if (!outcome.changed || !outcome.content || !outcome.metadata?.truncated)
8
+ return outcome;
9
+ const content = outcome.content.map((block, index) => {
10
+ if (index !== 0 || !isTextContentBlock(block))
11
+ return block;
12
+ return {
13
+ ...block,
14
+ text: `${block.text}\n[RTK recovery: full original output at ${recoveryPath}]`,
15
+ };
16
+ });
17
+ return {
18
+ ...outcome,
19
+ content,
20
+ metadata: { ...outcome.metadata, recoveryPath },
21
+ };
22
+ }
5
23
  const LOSSY_TECHNIQUE_PREFIXES = [
6
24
  'build',
7
25
  'test',
@@ -297,7 +315,9 @@ function applyAnsiStripping(state, compaction) {
297
315
  /** Applies hard character truncation when enabled and the threshold is exceeded. */
298
316
  function applyTruncation(state, compaction) {
299
317
  if (compaction.truncate.enabled && state.text.length > compaction.truncate.maxChars) {
300
- state.text = truncate(state.text, compaction.truncate.maxChars);
318
+ state.text = truncateHeadTail(state.text, compaction.truncate.maxChars, {
319
+ marker: (omitted) => `\n[RTK truncated: ${omitted} characters omitted; head and tail retained]\n`,
320
+ }).text;
301
321
  state.techniques.push('truncate');
302
322
  }
303
323
  }
@@ -330,8 +350,22 @@ function applyReadCompactionBanner(state) {
330
350
  state.text = `${formatReadCompactionBanner(state.techniques)}\n${state.text}`;
331
351
  }
332
352
  }
333
- function compactCommandText(text, command, config) {
353
+ function compactCommandText(text, command, config, failed = false) {
334
354
  const { state, compaction } = beginCompaction(text, config);
355
+ // A complete JSON document is a structured payload, not prose. Preserve it
356
+ // before semantic filters or truncation can make it invalid. This is checked
357
+ // after ANSI removal so ordinary terminal decoration does not bypass the guard.
358
+ if (isCompleteJson(state.text)) {
359
+ return { text: state.text, techniques: state.techniques };
360
+ }
361
+ // Synthetic success summaries are unsafe on failures: the original output
362
+ // may contain the only useful diagnostic, and a parser that did not recognize
363
+ // it must never turn it into an apparent success. The final head/tail cap still
364
+ // bounds unusually large failures while retaining evidence from both ends.
365
+ if (failed) {
366
+ applyTruncation(state, compaction);
367
+ return { text: state.text, techniques: state.techniques };
368
+ }
335
369
  applyConditionalTechnique(state, compaction.filterBuildOutput, (t) => filterBuildOutput(t, command), 'build');
336
370
  applyConditionalTechnique(state, compaction.aggregateTestOutput, (t) => aggregateTestOutput(t, command), 'test');
337
371
  applyConditionalTechnique(state, compaction.compactGitOutput, (t) => compactGitOutput(t, command), 'git');
@@ -339,13 +373,13 @@ function compactCommandText(text, command, config) {
339
373
  applyTruncation(state, compaction);
340
374
  return { text: state.text, techniques: state.techniques };
341
375
  }
342
- function compactCodexCommandText(text, command, config) {
376
+ function compactCodexCommandText(text, command, config, failed = false) {
343
377
  const markerIndex = text.indexOf(CODEX_OUTPUT_MARKER);
344
378
  if (markerIndex === -1)
345
- return compactCommandText(text, command, config);
379
+ return compactCommandText(text, command, config, failed);
346
380
  const outputStart = markerIndex + CODEX_OUTPUT_MARKER.length;
347
381
  const prefix = text.slice(0, outputStart);
348
- const transformed = compactCommandText(text.slice(outputStart), command, config);
382
+ const transformed = compactCommandText(text.slice(outputStart), command, config, failed);
349
383
  return { ...transformed, text: `${prefix}${transformed.text}` };
350
384
  }
351
385
  function compactReadText(text, filePath, config, preserveExactReadOutput) {
@@ -407,11 +441,11 @@ export function compactToolResult(event, config, options) {
407
441
  const command = options.command ?? readToolCommand(event.toolName, input);
408
442
  transformed =
409
443
  event.toolName === 'exec_command'
410
- ? compactCodexCommandText(contentBlock.text, command, config)
411
- : compactCommandText(contentBlock.text, command, config);
444
+ ? compactCodexCommandText(contentBlock.text, command, config, options.failed)
445
+ : compactCommandText(contentBlock.text, command, config, options.failed);
412
446
  }
413
447
  else if (event.toolName === 'write_stdin') {
414
- transformed = compactCodexCommandText(contentBlock.text, options.command, config);
448
+ transformed = compactCodexCommandText(contentBlock.text, options.command, config, options.failed);
415
449
  }
416
450
  else if (event.toolName === 'read') {
417
451
  const normalizedPath = normalizePath(input);
@@ -433,9 +467,6 @@ export function compactToolResult(event, config, options) {
433
467
  const techniques = Array.from(allTechniques);
434
468
  const originalText = originalChunks.join('\n');
435
469
  const compactedText = filteredChunks.join('\n');
436
- if (config.outputCompaction.trackSavings) {
437
- options.metrics?.track(originalText, compactedText, event.toolName, techniques);
438
- }
439
470
  const metadata = {
440
471
  applied: true,
441
472
  techniques,
@@ -452,4 +483,16 @@ export function compactToolResult(event, config, options) {
452
483
  metadata,
453
484
  };
454
485
  }
486
+ function isCompleteJson(text) {
487
+ const trimmed = text.trimStart();
488
+ if (!trimmed || (trimmed[0] !== '{' && trimmed[0] !== '['))
489
+ return false;
490
+ try {
491
+ JSON.parse(text);
492
+ return true;
493
+ }
494
+ catch {
495
+ return false;
496
+ }
497
+ }
455
498
  //# sourceMappingURL=output-compactor.js.map