mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
feat(compression): implement stats tracking module
Add estimateCompressionTokens() (char/4 heuristic), createCompressionStats() for per-request stats (original/compressed tokens, savings %, techniques), and trackCompressionStats() for logging. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
38
open-sse/services/compression/stats.ts
Normal file
38
open-sse/services/compression/stats.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { CompressionStats, CompressionMode } from "./types";
|
||||
|
||||
const CHARS_PER_TOKEN = 4;
|
||||
|
||||
export function estimateCompressionTokens(text: string | object | null | undefined): number {
|
||||
if (!text) return 0;
|
||||
const str = typeof text === "string" ? text : JSON.stringify(text);
|
||||
return Math.ceil(str.length / CHARS_PER_TOKEN);
|
||||
}
|
||||
|
||||
export function createCompressionStats(
|
||||
originalBody: Record<string, unknown>,
|
||||
compressedBody: Record<string, unknown>,
|
||||
mode: CompressionMode,
|
||||
techniquesUsed: string[]
|
||||
): CompressionStats {
|
||||
const originalTokens = estimateCompressionTokens(originalBody);
|
||||
const compressedTokens = estimateCompressionTokens(compressedBody);
|
||||
const savingsPercent =
|
||||
originalTokens > 0
|
||||
? Math.round(((originalTokens - compressedTokens) / originalTokens) * 10000) / 100
|
||||
: 0;
|
||||
return {
|
||||
originalTokens,
|
||||
compressedTokens,
|
||||
savingsPercent,
|
||||
techniquesUsed,
|
||||
mode,
|
||||
timestamp: Date.now(),
|
||||
};
|
||||
}
|
||||
|
||||
export function trackCompressionStats(stats: CompressionStats): void {
|
||||
if (stats.originalTokens <= 0) return;
|
||||
console.log(
|
||||
`[COMPRESSION] mode=${stats.mode} tokens=${stats.originalTokens}->${stats.compressedTokens} savings=${stats.savingsPercent}% techniques=${stats.techniquesUsed.join(",")}`
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user