feat(compression): fidelityGate config + rejected breakdown fields

This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-06-26 21:05:29 -03:00
committed by Diego Rodrigues de Sa e Souza
parent 5dacaa7f4d
commit bccdfac449
2 changed files with 18 additions and 0 deletions

View File

@@ -11,6 +11,7 @@
import { ENGINE_IDS } from "./engineCatalog.ts";
import type { ContextBudgetConfig } from "./adaptiveCompression/types.ts";
import type { FidelityGateConfig } from "./fidelityGate.ts";
// Re-export so consumers that already import from this module (e.g. src/lib/db/compression.ts)
// can get ENGINE_IDS without a second bare `@omniroute/open-sse/...engineCatalog.ts` specifier.
@@ -141,6 +142,8 @@ export interface CompressionConfig {
comboOverrides: Record<string, CompressionMode>;
compressionComboId?: string | null;
stackedPipeline?: CompressionPipelineStep[];
/** Opt-in per-step fidelity gate (default disabled). */
fidelityGate?: FidelityGateConfig;
cavemanConfig?: CavemanConfig;
cavemanOutputMode?: CavemanOutputModeConfig;
/** Phase 4A: selected output styles (supersedes cavemanOutputMode via a back-compat shim). */
@@ -232,6 +235,8 @@ export interface CompressionStats {
techniquesUsed: string[];
rulesApplied?: string[];
durationMs?: number;
rejected?: boolean;
rejectReason?: string;
}>;
}

View File

@@ -0,0 +1,13 @@
import test from "node:test";
import assert from "node:assert/strict";
import type { CompressionConfig, CompressionStats } from "../../../open-sse/services/compression/types.ts";
import type { FidelityGateConfig } from "../../../open-sse/services/compression/fidelityGate.ts";
test("CompressionConfig accepts a fidelityGate block and breakdown carries rejected fields", () => {
const cfg: CompressionConfig = { fidelityGate: { enabled: true } as FidelityGateConfig };
assert.equal(cfg.fidelityGate?.enabled, true);
const entry: NonNullable<CompressionStats["engineBreakdown"]>[number] = {
engine: "caveman", originalTokens: 10, compressedTokens: 10, savingsPercent: 0,
techniquesUsed: [], rejected: true, rejectReason: "numeric: 14 ausente",
};
assert.equal(entry.rejected, true);
});