Files
OmniRoute/tests/unit/compression/codex-responses.test.ts
Jan Leon fb6ea295bf feat(compression): add Responses tool-output engine (#8010)
* Add Responses tool-output compression engine

* fix: enable Codex Responses stacked steps

* fix(compression): share Codex tokenizer and rebase UI

* fix(compression): sync MCP engine selection

* fix(compression): i18n parity for codex-responses mode + rebaseline

The codex-responses compression engine already imports the shared
countTextTokens/resolveTokenizerEncoding from tiktokenCounter.ts (no
duplicate encoder) and CompressionSettingsTab.tsx already threads the
new mode through the existing useTranslations()/labelKey pattern - both
pre-existing on this branch tip after rebasing onto release/v3.8.49.

What was missing after the rebase: the new compressionModeCodexResponses
/ compressionModeCodexResponsesDesc keys existed only in en.json. Filled
en-fallback into all 42 locales via scripts/i18n/fill-missing-from-en.mjs
and added real pt-BR/vi translations. Also rebaselined the three files
whose own growth (new codex-responses mode wiring) crossed the frozen
file-size caps: open-sse/mcp-server/schemas/tools.ts, open-sse/services/
compression/strategySelector.ts, and src/lib/db/compression.ts.

Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>

---------

Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouza.pw@gmail.com>
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
2026-07-22 07:03:02 -03:00

179 lines
7.1 KiB
TypeScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { adaptBodyForCompression } from "../../../open-sse/services/compression/bodyAdapter.ts";
import { codexResponsesEngine } from "../../../open-sse/services/compression/engines/codexResponses/index.ts";
import {
applyCompression,
applyCompressionAsync,
} from "../../../open-sse/services/compression/index.ts";
function run(input: unknown[], config: Record<string, unknown> = {}) {
const adapter = adaptBodyForCompression({ input });
const result = codexResponsesEngine.apply(adapter.body, {
stepConfig: { enabled: true, ...config },
});
return { result, body: adapter.restore(result.body) };
}
describe("Responses tool-output compression", () => {
it("minifies eligible JSON function output and preserves the Responses envelope", () => {
const output = JSON.stringify(
{
files: Array.from({ length: 12 }, (_, i) => ({
name: `file-${i}`,
status: "ok",
details: "complete",
})),
count: 12,
},
null,
2
);
const { result, body } = run([
{ type: "function_call", call_id: "call-1", name: "run_command", arguments: "{}" },
{ type: "function_call_output", call_id: "call-1", output },
]);
const restored = (body.input as Array<Record<string, unknown>>)[1];
assert.equal(result.compressed, true);
assert.equal(restored.type, "function_call_output");
assert.deepEqual(JSON.parse(String(restored.output)), JSON.parse(output));
assert.ok(String(restored.output).length < output.length);
});
it("compresses shell/build logs and patch output when they are large enough", () => {
const log = [
"npm test",
...Array.from({ length: 35 }, (_, i) => `verbose test progress ${i}`),
"FAIL test/example.test.ts",
"Error: expected value",
...Array.from({ length: 20 }, (_, i) => `tail progress ${i}`),
].join("\n");
const diff = [
"diff --git a/file.ts b/file.ts",
"@@ -1,10 +1,10 @@",
...Array.from({ length: 60 }, (_, i) => ` context ${i}`),
"-old value",
"+new value",
...Array.from({ length: 60 }, (_, i) => ` context after ${i}`),
].join("\n");
const logResult = run([
{ type: "function_call", call_id: "shell-1", name: "run_shell", arguments: "{}" },
{ type: "function_call_output", call_id: "shell-1", output: log },
]);
const diffResult = run([{ type: "apply_patch_call_output", id: "patch-1", output: diff }]);
assert.equal(logResult.result.compressed, true);
assert.equal(diffResult.result.compressed, true);
assert.match(
String((logResult.body.input as Array<Record<string, unknown>>)[1].output),
/compressed/
);
assert.match(
String((diffResult.body.input as Array<Record<string, unknown>>)[0].output),
/new value/
);
});
it("keeps lossy shell/log, diff, and search rewrites fail-open", () => {
const log = [
"npm test",
...Array.from({ length: 50 }, (_, i) => `progress ${i}`),
"Error: expected value",
].join("\n");
const result = run([{ type: "local_shell_call_output", id: "shell-1", output: log }]);
const restored = result.body.input as Array<Record<string, unknown>>;
assert.equal(result.result.compressed, false);
assert.equal(restored[0].output, log);
});
it("protects Read/Grep, retrieval, unknown tools, malformed JSON, and non-string output", () => {
const noisy = JSON.stringify(
{ data: Array.from({ length: 20 }, (_, i) => ({ i, value: "x" })) },
null,
2
);
const input = [
{ type: "function_call", call_id: "read-1", name: "Read", arguments: "{}" },
{ type: "function_call_output", call_id: "read-1", output: noisy },
{
type: "function_call",
call_id: "retrieval-1",
name: "headless_retrieval",
arguments: "{}",
},
{ type: "function_call_output", call_id: "retrieval-1", output: noisy },
{ type: "function_call_output", call_id: "unknown", output: noisy },
{ type: "function_call", call_id: "shell-1", name: "run_shell", arguments: "{}" },
{ type: "function_call_output", call_id: "shell-1", output: "{not valid json" },
{
type: "local_shell_call_output",
id: "array-output",
output: [{ type: "input_text", text: noisy }],
},
];
const { result, body } = run(input);
const restored = body.input as Array<Record<string, unknown>>;
assert.equal(result.compressed, false);
assert.equal(restored[1].output, noisy);
assert.equal(restored[3].output, noisy);
assert.equal(restored[4].output, noisy);
assert.equal(restored[6].output, "{not valid json");
assert.deepEqual(restored[7].output, input[7].output);
});
it("fails open when disabled and when the candidate exceeds configured limits", () => {
const output = JSON.stringify(
{ data: Array.from({ length: 50 }, (_, i) => ({ i, value: "x" })) },
null,
2
);
const input = [{ type: "local_shell_call_output", id: "shell-1", output }];
const disabled = run(input, { enabled: false });
const limited = run(input, { maxCandidateBytes: 10 });
assert.equal(disabled.result.compressed, false);
assert.equal(limited.result.compressed, false);
assert.equal((disabled.body.input as Array<Record<string, unknown>>)[0].output, output);
assert.equal((limited.body.input as Array<Record<string, unknown>>)[0].output, output);
});
it("supports standalone mode and stacked pipelines through the public selector", async () => {
const output = JSON.stringify(
{ data: Array.from({ length: 20 }, (_, i) => ({ id: i, status: "ok" })) },
null,
2
);
const input = [
{ type: "function_call", call_id: "run-1", name: "run_command", arguments: "{}" },
{ type: "function_call_output", call_id: "run-1", output },
];
const config = {
// Selecting the engine in an explicit stacked pipeline enables it even
// when the standalone setting remains at its default disabled value.
codexResponsesConfig: { enabled: false },
stackedPipeline: [{ engine: "codex-responses" as const }],
};
const standalone = applyCompression({ input }, "codex-responses", { config });
const stacked = await applyCompressionAsync({ input }, "stacked", { config });
assert.equal(standalone.compressed, true);
assert.equal(stacked.compressed, true);
assert.equal(
JSON.stringify(standalone.body),
JSON.stringify(stacked.body),
"stacked execution should preserve the standalone Responses envelope"
);
const stringPipeline = await applyCompressionAsync({ input }, "stacked", {
config: { ...config, stackedPipeline: ["codex-responses" as const] },
});
assert.equal(stringPipeline.compressed, true);
assert.deepEqual(stringPipeline.body, stacked.body);
const explicitlyDisabled = await applyCompressionAsync({ input }, "stacked", {
config: {
...config,
stackedPipeline: [{ engine: "codex-responses", config: { enabled: false } }],
},
});
assert.equal(explicitlyDisabled.compressed, false);
});
});