Files
2026-07-13 13:39:12 +08:00

43 lines
1.9 KiB
TypeScript

import { registerCompressionEngine, getCompressionEngine } from "./registry.ts";
import { aggressiveEngine, cavemanEngine, liteEngine, ultraEngine } from "./cavemanAdapter.ts";
import { rtkEngine } from "./rtk/index.ts";
import { sessionDedupEngine } from "./session-dedup/index.ts";
import { headroomEngine } from "./headroom/index.ts";
import { ccrEngine } from "./ccr/index.ts";
import { llmlinguaEngine } from "./llmlingua/index.ts";
import { ionizerEngine } from "./ionizer/index.ts";
import { relevanceEngine } from "./relevance/index.ts";
import { llmCompressorEngine } from "./llm/index.ts";
import { readLifecycleEngine } from "./readLifecycle/index.ts";
let registered = false;
export function registerBuiltinCompressionEngines(): void {
// The `registered` latch is a fast-path to skip the loop, but it must not block
// re-registration after clearCompressionEngineRegistry() empties the map (tests do this).
// Re-run when the registry was cleared so the builtins are restored.
if (registered && getCompressionEngine(liteEngine.id)) return;
registered = true;
if (!getCompressionEngine(liteEngine.id)) registerCompressionEngine(liteEngine);
const engines: Array<{ id: string; engine: typeof liteEngine }> = [
{ id: "caveman", engine: cavemanEngine },
{ id: "aggressive", engine: aggressiveEngine },
{ id: "ultra", engine: ultraEngine },
{ id: "rtk", engine: rtkEngine },
{ id: "session-dedup", engine: sessionDedupEngine },
{ id: "headroom", engine: headroomEngine },
{ id: "ccr", engine: ccrEngine },
{ id: "llmlingua", engine: llmlinguaEngine },
{ id: "ionizer", engine: ionizerEngine },
{ id: "relevance", engine: relevanceEngine },
{ id: "llm", engine: llmCompressorEngine },
{ id: "read-lifecycle", engine: readLifecycleEngine },
];
for (const { id, engine } of engines) {
if (!getCompressionEngine(id)) registerCompressionEngine(engine);
}
}