mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 04:12:10 +03:00
feat(compression): integrate pipeline into chatCore request flow
Insert compression pipeline before existing compressContext() in chatCore.ts (~line 1228). Uses dynamic imports for compression modules, wrapped in try/catch so errors are non-fatal. Logs compression stats via log?.info?('COMPRESSION', ...). No changes to request flow when mode=off.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -1221,6 +1221,36 @@ export async function handleChatCore({
|
||||
body?.messages || body?.input || body?.contents || body?.request?.contents || [];
|
||||
if (body && Array.isArray(allMessages) && allMessages.length > 0) {
|
||||
const estimatedTokens = estimateTokens(JSON.stringify(allMessages));
|
||||
|
||||
// --- Modular Compression Pipeline (Phase 1: Lite mode) ---
|
||||
// Runs BEFORE the existing reactive compressContext() to proactively reduce tokens.
|
||||
try {
|
||||
const { getCompressionSettings } = await import("../../src/lib/db/compression");
|
||||
const { selectCompressionStrategy, applyCompression } =
|
||||
await import("../services/compression/strategySelector");
|
||||
const { trackCompressionStats } = await import("../services/compression/stats");
|
||||
const config = await getCompressionSettings();
|
||||
const mode = selectCompressionStrategy(config, comboName ?? null, estimatedTokens);
|
||||
if (mode !== "off") {
|
||||
const result = applyCompression(body, mode, { model: effectiveModel });
|
||||
if (result.compressed && result.stats) {
|
||||
body = result.body as typeof body;
|
||||
trackCompressionStats(result.stats);
|
||||
log?.info?.(
|
||||
"COMPRESSION",
|
||||
`Prompt compressed (${mode}): ${result.stats.originalTokens} -> ${result.stats.compressedTokens} tokens (${result.stats.savingsPercent}% saved, techniques: ${result.stats.techniquesUsed.join(",")})`
|
||||
);
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
log?.warn?.(
|
||||
"COMPRESSION",
|
||||
"Compression pipeline error (non-fatal): " +
|
||||
(err instanceof Error ? err.message : String(err))
|
||||
);
|
||||
}
|
||||
// --- End Modular Compression Pipeline ---
|
||||
|
||||
let contextLimit = getTokenLimit(provider, effectiveModel);
|
||||
|
||||
if (isCombo && comboName) {
|
||||
|
||||
Reference in New Issue
Block a user