feat(compression): add type definitions and barrel exports

Define CompressionMode (off/lite/standard/aggressive/ultra), CompressionConfig, CompressionStats, CompressionResult interfaces. Add barrel index.ts re-exporting all public functions.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
oyi77
2026-04-27 03:51:52 +07:00
parent ff28b1a990
commit fec0deb758
2 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
/**
* Compression Pipeline — Phase 1 (Lite mode)
*
* Modular prompt compression that runs BEFORE the existing reactive context manager.
* Lite mode: 5 techniques, ~10-15% token savings, <1ms latency.
*/
// Types
export type {
CompressionMode,
CompressionConfig,
CompressionStats,
CompressionResult,
} from "./types";
export { DEFAULT_COMPRESSION_CONFIG } from "./types";
// Lite compression techniques
export {
applyLiteCompression,
collapseWhitespace,
dedupSystemPrompt,
compressToolResults,
removeRedundantContent,
replaceImageUrls,
} from "./lite";
// Strategy selector
export { selectCompressionStrategy, getEffectiveMode, applyCompression } from "./strategySelector";
// Stats tracking
export { estimateCompressionTokens, createCompressionStats, trackCompressionStats } from "./stats";

View File

@@ -0,0 +1,45 @@
/**
* Compression Pipeline Types — Phase 1 (Lite mode)
*
* Modular prompt compression that runs BEFORE the existing reactive context manager.
*/
/** Compression mode levels (only 'off' and 'lite' are active in Phase 1) */
export type CompressionMode = "off" | "lite" | "standard" | "aggressive" | "ultra";
/** Compression configuration stored in DB */
export interface CompressionConfig {
enabled: boolean;
defaultMode: CompressionMode;
autoTriggerTokens: number;
cacheMinutes: number;
preserveSystemPrompt: boolean;
comboOverrides: Record<string, CompressionMode>;
}
/** Per-request compression statistics */
export interface CompressionStats {
originalTokens: number;
compressedTokens: number;
savingsPercent: number;
techniquesUsed: string[];
mode: CompressionMode;
timestamp: number;
}
/** Result of a compression operation */
export interface CompressionResult {
body: Record<string, unknown>;
compressed: boolean;
stats: CompressionStats | null;
}
/** Default compression config values */
export const DEFAULT_COMPRESSION_CONFIG: CompressionConfig = {
enabled: false,
defaultMode: "off",
autoTriggerTokens: 0,
cacheMinutes: 5,
preserveSystemPrompt: true,
comboOverrides: {},
};