Skip to content

Releases: SimplyLiz/ContextCompressionEngine

v1.0.0

25 Feb 04:57

Choose a tag to compare

Lossless context compression for LLMs. Zero dependencies. Zero API calls. Works everywhere JavaScript runs.

1.3–6.1x compression on synthetic scenarios, 1.5x on real Claude Code sessions (11.7M chars across 8,004 messages) — fully deterministic, no LLM needed. Every compression is losslessly reversible.

npm install context-compression-engine

Highlights

  • Lossless round-tripcompress() then uncompress() restores byte-identical originals via a verbatim store
  • Code-aware classification — code fences, SQL, JSON/YAML, API keys, URLs, and file paths are preserved verbatim
  • Paragraph-aware sentence scoring — deterministic summarization that rewards technical identifiers and penalizes filler
  • Code-bearing message splitting — surrounding prose gets compressed while embedded code stays intact
  • Exact + fuzzy deduplication — cross-message duplicate detection eliminates repeated content
  • LLM-powered summarization — plug in any provider (Claude, GPT, Gemini, Grok, Ollama) via createSummarizer() and createEscalatingSummarizer()
  • Three-level fallback — LLM → deterministic → size guard, never makes output worse
  • Token budgettokenBudget binary-searches recencyWindow to fit a target token count, with forceConverge hard-truncation as a safety net
  • Pluggable token counter — bring your own tokenizer or use the built-in ceil(content.length / 3.5) estimator
  • Provenance tracking — every compressed message carries origin IDs, summary hashes, and version chains via _cce_original metadata
  • Role-based preservation — protect system prompts or any role from compression with preserve
  • Zero dependencies — pure TypeScript, ESM-only, Node 18+, also works in Deno, Bun, and edge runtimes

Quick start

import { compress, uncompress } from 'context-compression-engine';

const { messages: compressed, verbatim } = compress(messages, {
  preserve: ['system'],
  recencyWindow: 4,
});

// restore originals
const { messages: originals } = uncompress(compressed, verbatim);

Stats

  • 333 tests across all compression paths
  • Benchmark suite with synthetic and real-session scenarios
  • LLM benchmark with multi-provider comparison

Links