Spaces:
Runtime error
Runtime error
File size: 6,381 Bytes
cd8bd0a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | import { describe, it } from "node:test";
import assert from "node:assert/strict";
import {
applyCompression,
selectCompressionStrategy,
} from "../../../open-sse/services/compression/strategySelector.ts";
import { compressAggressive } from "../../../open-sse/services/compression/aggressive.ts";
import { DEFAULT_AGGRESSIVE_CONFIG } from "../../../open-sse/services/compression/types.ts";
import type {
AggressiveConfig,
CompressionConfig,
} from "../../../open-sse/services/compression/types.ts";
function makeMessages(count: number): Array<{ role: string; content: string }> {
return Array.from({ length: count }, (_, i) => ({
role: i % 2 === 0 ? "user" : "assistant",
content: `Message ${i}: ${"x".repeat(200)}`,
}));
}
describe("Integration: strategySelector → aggressive pipeline", () => {
it("applyCompression with mode='aggressive' compresses messages", () => {
const messages = makeMessages(20);
const body = { messages };
const config: CompressionConfig = {
enabled: true,
defaultMode: "aggressive",
autoTriggerTokens: 0,
cacheMinutes: 5,
preserveSystemPrompt: true,
comboOverrides: {},
aggressive: DEFAULT_AGGRESSIVE_CONFIG,
};
const result = applyCompression(body as Record<string, unknown>, "aggressive", {
model: "test-model",
config,
});
assert.ok(result.compressed !== undefined);
assert.ok(result.stats !== null);
assert.equal(result.stats!.mode, "aggressive");
assert.ok(Array.isArray((result.body as Record<string, unknown>).messages));
});
it("applyCompression with mode='aggressive' returns unchanged for empty messages", () => {
const body = { messages: [] };
const config: CompressionConfig = {
enabled: true,
defaultMode: "aggressive",
autoTriggerTokens: 0,
cacheMinutes: 5,
preserveSystemPrompt: true,
comboOverrides: {},
aggressive: DEFAULT_AGGRESSIVE_CONFIG,
};
const result = applyCompression(body as Record<string, unknown>, "aggressive", {
model: "test-model",
config,
});
assert.equal(result.compressed, false);
assert.equal(result.stats, null);
});
it("applyCompression with mode='off' returns unchanged", () => {
const messages = makeMessages(20);
const body = { messages };
const result = applyCompression(body as Record<string, unknown>, "off");
assert.equal(result.compressed, false);
assert.equal(result.stats, null);
assert.deepEqual((result.body as Record<string, unknown>).messages, messages);
});
it("applyCompression with mode='lite' still works after aggressive addition", () => {
const messages = makeMessages(10);
const body = { messages };
const result = applyCompression(body as Record<string, unknown>, "lite");
// Lite mode should still work — no regression
assert.ok(result.compressed !== undefined);
});
it("compressAggressive with custom config overrides defaults", () => {
const messages = makeMessages(20);
const customConfig: Partial<AggressiveConfig> = {
maxTokensPerMessage: 500,
minSavingsThreshold: 0.5,
summarizerEnabled: false,
};
const result = compressAggressive(messages, customConfig);
assert.ok(result.messages.length > 0);
assert.equal(result.stats.mode, "aggressive");
// With summarizer disabled, no summarizer savings
assert.equal(result.stats.aggressive!.summarizerSavings, 0);
});
it("compressAggressive handles tool result messages", () => {
const messages = [
{ role: "user", content: "Show me the file" },
{
role: "assistant",
content: null,
tool_calls: [
{ id: "call_1", type: "function", function: { name: "read_file", arguments: "{}" } },
],
},
{
role: "tool",
content: `File contents:\n${"line of code\n".repeat(100)}`,
tool_call_id: "call_1",
name: "read_file",
},
{ role: "assistant", content: "Here's the file content." },
];
const result = compressAggressive(messages, {
toolStrategies: {
fileContent: true,
grepSearch: true,
shellOutput: true,
json: true,
errorMessage: true,
},
});
assert.ok(result.messages.length > 0);
assert.equal(result.stats.mode, "aggressive");
// Tool result should have been compressed
assert.ok(result.stats.aggressive!.toolResultSavings >= 0);
});
it("compressAggressive preserves system messages", () => {
const messages = [
{ role: "system", content: "You are a helpful coding assistant." },
...makeMessages(15),
];
const result = compressAggressive(messages);
// System message should be preserved
const systemMsg = result.messages.find((m) => m.role === "system");
assert.ok(systemMsg, "System message should be preserved");
assert.equal(systemMsg!.content, "You are a helpful coding assistant.");
});
it("compressAggressive preserves duplicate system prompts during lite fallback", () => {
const messages = [
{ role: "system", content: "Policy exact. Keep exact." },
{ role: "system", content: "Policy exact. Keep exact." },
{ role: "user", content: "Short" },
];
const result = compressAggressive(messages, {
preserveSystemPrompt: true,
minSavingsThreshold: 0.9,
summarizerEnabled: false,
maxTokensPerMessage: 999999,
});
assert.deepEqual(
result.messages.filter((message) => message.role === "system"),
messages.filter((message) => message.role === "system")
);
});
it("compressAggressive downgrade chain works when aggressive fails", () => {
// Empty messages should trigger downgrade gracefully
const result = compressAggressive([]);
assert.ok(result.messages.length === 0);
assert.equal(result.stats.mode, "aggressive");
});
it("full pipeline: strategySelector selects aggressive mode from config", () => {
const config: CompressionConfig = {
enabled: true,
defaultMode: "aggressive",
autoTriggerTokens: 0,
cacheMinutes: 5,
preserveSystemPrompt: true,
comboOverrides: {},
aggressive: DEFAULT_AGGRESSIVE_CONFIG,
};
const mode = selectCompressionStrategy(config, null, 0);
assert.equal(mode, "aggressive");
});
});
|