Protected Span Preservation in FreeLLMAPI: How It Safeguards Critical Prompt Content
Protected span preservation ensures essential portions of a prompt remain unchanged during aggressive token reduction by detecting marked regions, merging overlapping intervals, and reinserting them verbatim after compression.
FreeLLMAPI compresses prompts before transmitting them to language model providers to stay within token limits and minimize latency. During this process, protected span preservation acts as a safety mechanism that shields designated content from any modification. This article explains how this feature works based on the implementation in the tashfeenahmed/freellmapi repository.
What Are Protected Spans?
Protected spans are specific regions of a prompt that must remain exactly unchanged throughout the compression pipeline. Common examples include:
- System messages that define model behavior and constraints
- User-provided instructions requiring verbatim preservation, such as JSON schemas or function definitions
- Structural markers like
{{START}}/{{END}}delimiters or custom tags such as<protected>...</protected>
The preservation system guarantees these regions survive even the most aggressive compression strategies.
Core Implementation Architecture
The protected span preservation logic resides in server/src/services/compression/preservation.ts. This module provides the foundation for three critical properties: detection, normalization, and reintegration.
Step 1: Detecting Protected Regions
The system scans prompts for protected-span markers using configurable delimiters defined in compression/config.ts. The findProtectedSpans() function records exact character offsets for each protected region.
// Internals: detecting protected spans (simplified)
import { findProtectedSpans } from './preservation';
const prompt = `
<protected>
You are a helpful assistant that must always respond in JSON.
{
"schema": { "type": "object", "properties": { "answer": { "type": "string" } } }
}
</protected>
User: Explain the difference between GPT-4 and Claude.
`;
const rawSpans = findProtectedSpans(prompt);
// rawSpans = [{ start: 1, end: 215 }, { start: 190, end: 260 }] // overlapping detected
Step 2: Merging Overlapping Intervals
When protected regions overlap or nest, the mergeSpans() function normalizes them into a minimal set of disjoint intervals. This prevents duplicate preservation and simplifies downstream processing.
// Internals: merging overlapping spans
import { mergeSpans } from './preservation';
const merged = mergeSpans(rawSpans);
// merged = [{ start: 1, end: 260 }] // single, non-overlapping span
The algorithm sorts spans by offset and coalesces any intersecting intervals, yielding normalized bounds that pipeline.ts uses for reintegration.
Step 3: Reintegrating Preserved Content
The pipeline.ts orchestrator removes tokens from unprotected portions only, then stitches preserved spans back using the normalized intervals. This design ensures compression aggressiveness never compromises protected content.
Key Guarantees of Protected Span Preservation
The implementation in preservation.ts provides two essential properties:
-
Idempotence — Running the compressor repeatedly does not alter protected spans or shift their positions. The system tracks and re-inserts unchanged content after each compression pass.
-
Safety — Token-budget reducers including deduplication, JSON compaction, and relevance-based trimming cannot delete or modify protected regions. This prevents breaking system-level contracts or user-defined constraints.
Verification occurs in compression.test.ts, where the unit test "finds and merges overlapping protected spans idempotently" validates correct behavior under repeated execution.
Practical Usage Example
The high-level compressPrompt() API enables protected span preservation through a single configuration flag:
// Example: marking and preserving a protected span
const prompt = `
<protected>
You are a helpful assistant that must always respond in JSON.
{
"schema": { "type": "object", "properties": { "answer": { "type": "string" } } }
}
</protected>
User: Explain the difference between GPT-4 and Claude.
`;
import { compressPrompt } from '@freellmapi/compression';
const compressed = await compressPrompt(prompt, {
maxTokens: 512, // target token budget
preserveProtectedSpans: true, // enable protected-span preservation
});
// `compressed` contains the exact protected block above,
// while the remaining prompt may be trimmed or compacted
Source File Reference
| File | Role |
|---|---|
server/src/services/compression/preservation.ts |
Core logic for detecting, normalizing, and preserving protected spans |
server/src/services/compression/pipeline.ts |
Orchestrates compression; integrates preservation step |
server/src/services/compression/config.ts |
Defines default protected-span delimiters and settings |
server/src/__tests__/services/compression.test.ts |
Validates detection, merging, and idempotence |
Summary
- Protected span preservation guarantees essential prompt content survives aggressive token reduction in FreeLLMAPI
- The
preservation.tsmodule detects marked regions using configurable delimiters fromconfig.ts - Overlapping spans merge into disjoint intervals via
mergeSpans()to simplify reintegration pipeline.tsremoves tokens from unprotected areas only, then reinserts preserved content unchanged- Idempotence and safety are enforced by design and verified in
compression.test.ts
Frequently Asked Questions
How do I mark content as protected in a FreeLLMAPI prompt?
Wrap critical content in <protected>...</protected> tags or custom delimiters defined in compression/config.ts. The findProtectedSpans() function in preservation.ts detects these markers automatically and records their character offsets for preservation.
Does protected span preservation reduce compression effectiveness?
Only minimally. The system targets unprotected regions for aggressive reduction while preserving exact byte content of protected spans. Since protected regions typically represent small fractions of total prompt length, significant token savings remain achievable.
What happens if two protected spans overlap?
The mergeSpans() algorithm in preservation.ts sorts intervals by start position and coalesces overlapping or adjacent regions into a single continuous span. This normalization prevents duplicate handling and ensures clean reintegration by pipeline.ts.
Is the preservation behavior tested for repeated compression runs?
Yes. The test suite in compression.test.ts specifically validates idempotence with the test case "finds and merges overlapping protected spans idempotently," confirming that multiple compression passes produce identical protected span handling.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →