@animalabs/context-manager 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/adaptive/index.d.ts +6 -0
- package/dist/src/adaptive/index.d.ts.map +1 -1
- package/dist/src/adaptive/index.js +8 -0
- package/dist/src/adaptive/index.js.map +1 -1
- package/dist/src/adaptive/kv-cache-sim.d.ts +128 -0
- package/dist/src/adaptive/kv-cache-sim.d.ts.map +1 -0
- package/dist/src/adaptive/kv-cache-sim.js +0 -0
- package/dist/src/adaptive/kv-cache-sim.js.map +1 -0
- package/dist/src/adaptive/kv-control.d.ts +152 -0
- package/dist/src/adaptive/kv-control.d.ts.map +1 -0
- package/dist/src/adaptive/kv-control.js +368 -0
- package/dist/src/adaptive/kv-control.js.map +1 -0
- package/dist/src/adaptive/kv-replay.d.ts +76 -0
- package/dist/src/adaptive/kv-replay.d.ts.map +1 -0
- package/dist/src/adaptive/kv-replay.js +175 -0
- package/dist/src/adaptive/kv-replay.js.map +1 -0
- package/dist/src/adaptive/render-offsets.d.ts +61 -0
- package/dist/src/adaptive/render-offsets.d.ts.map +1 -0
- package/dist/src/adaptive/render-offsets.js +88 -0
- package/dist/src/adaptive/render-offsets.js.map +1 -0
- package/dist/src/adaptive/strategies/kv-stable.d.ts +48 -0
- package/dist/src/adaptive/strategies/kv-stable.d.ts.map +1 -0
- package/dist/src/adaptive/strategies/kv-stable.js +102 -0
- package/dist/src/adaptive/strategies/kv-stable.js.map +1 -0
- package/dist/src/adaptive/summary-tree.d.ts +98 -0
- package/dist/src/adaptive/summary-tree.d.ts.map +1 -0
- package/dist/src/adaptive/summary-tree.js +214 -0
- package/dist/src/adaptive/summary-tree.js.map +1 -0
- package/dist/src/context-log.d.ts.map +1 -1
- package/dist/src/context-log.js +7 -2
- package/dist/src/context-log.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/message-store.js +1 -1
- package/dist/src/message-store.js.map +1 -1
- package/dist/src/normalize-tool-messages.d.ts +33 -0
- package/dist/src/normalize-tool-messages.d.ts.map +1 -1
- package/dist/src/normalize-tool-messages.js +59 -0
- package/dist/src/normalize-tool-messages.js.map +1 -1
- package/dist/src/strategies/autobiographical.d.ts +101 -39
- package/dist/src/strategies/autobiographical.d.ts.map +1 -1
- package/dist/src/strategies/autobiographical.js +398 -222
- package/dist/src/strategies/autobiographical.js.map +1 -1
- package/dist/src/types/strategy.d.ts +40 -1
- package/dist/src/types/strategy.d.ts.map +1 -1
- package/dist/src/types/strategy.js +2 -0
- package/dist/src/types/strategy.js.map +1 -1
- package/dist/test/adaptive/kv-cache-sim.test.d.ts +16 -0
- package/dist/test/adaptive/kv-cache-sim.test.d.ts.map +1 -0
- package/dist/test/adaptive/kv-cache-sim.test.js +173 -0
- package/dist/test/adaptive/kv-cache-sim.test.js.map +1 -0
- package/dist/test/adaptive/kv-control.test.d.ts +14 -0
- package/dist/test/adaptive/kv-control.test.d.ts.map +1 -0
- package/dist/test/adaptive/kv-control.test.js +130 -0
- package/dist/test/adaptive/kv-control.test.js.map +1 -0
- package/dist/test/adaptive/kv-replay.test.d.ts +15 -0
- package/dist/test/adaptive/kv-replay.test.d.ts.map +1 -0
- package/dist/test/adaptive/kv-replay.test.js +112 -0
- package/dist/test/adaptive/kv-replay.test.js.map +1 -0
- package/dist/test/adaptive/kv-stable-strategy.test.d.ts +10 -0
- package/dist/test/adaptive/kv-stable-strategy.test.d.ts.map +1 -0
- package/dist/test/adaptive/kv-stable-strategy.test.js +89 -0
- package/dist/test/adaptive/kv-stable-strategy.test.js.map +1 -0
- package/dist/test/adaptive/render-offsets.test.d.ts +11 -0
- package/dist/test/adaptive/render-offsets.test.d.ts.map +1 -0
- package/dist/test/adaptive/render-offsets.test.js +85 -0
- package/dist/test/adaptive/render-offsets.test.js.map +1 -0
- package/dist/test/adaptive/summary-tree.test.d.ts +5 -0
- package/dist/test/adaptive/summary-tree.test.d.ts.map +1 -0
- package/dist/test/adaptive/summary-tree.test.js +72 -0
- package/dist/test/adaptive/summary-tree.test.js.map +1 -0
- package/dist/test/chunker-tool-boundary.test.d.ts +12 -0
- package/dist/test/chunker-tool-boundary.test.d.ts.map +1 -0
- package/dist/test/chunker-tool-boundary.test.js +89 -0
- package/dist/test/chunker-tool-boundary.test.js.map +1 -0
- package/dist/test/compression-shape-invariants.test.d.ts +22 -0
- package/dist/test/compression-shape-invariants.test.d.ts.map +1 -0
- package/dist/test/compression-shape-invariants.test.js +312 -0
- package/dist/test/compression-shape-invariants.test.js.map +1 -0
- package/dist/test/image-strip-render-stats.test.d.ts +2 -0
- package/dist/test/image-strip-render-stats.test.d.ts.map +1 -0
- package/dist/test/image-strip-render-stats.test.js +130 -0
- package/dist/test/image-strip-render-stats.test.js.map +1 -0
- package/dist/test/image-stripping.test.d.ts +13 -0
- package/dist/test/image-stripping.test.d.ts.map +1 -0
- package/dist/test/image-stripping.test.js +104 -0
- package/dist/test/image-stripping.test.js.map +1 -0
- package/dist/test/normalize-tool-messages.test.js +61 -1
- package/dist/test/normalize-tool-messages.test.js.map +1 -1
- package/dist/test/render-stats.test.d.ts +2 -0
- package/dist/test/render-stats.test.d.ts.map +1 -0
- package/dist/test/render-stats.test.js +91 -0
- package/dist/test/render-stats.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/adaptive/index.ts +48 -0
- package/src/adaptive/kv-cache-sim.ts +0 -0
- package/src/adaptive/kv-control.ts +497 -0
- package/src/adaptive/kv-replay.ts +238 -0
- package/src/adaptive/render-offsets.ts +116 -0
- package/src/adaptive/strategies/kv-stable.ts +123 -0
- package/src/adaptive/summary-tree.ts +252 -0
- package/src/context-log.ts +7 -2
- package/src/index.ts +1 -1
- package/src/message-store.ts +1 -1
- package/src/normalize-tool-messages.ts +61 -0
- package/src/strategies/autobiographical.ts +414 -271
- package/src/types/strategy.ts +40 -1
package/src/types/strategy.ts
CHANGED
|
@@ -258,12 +258,25 @@ export function isSearchableStrategy(s: ContextStrategy): s is SearchableStrateg
|
|
|
258
258
|
export interface RenderStats {
|
|
259
259
|
head: { messages: number; tokens: number };
|
|
260
260
|
tail: { messages: number; tokens: number };
|
|
261
|
+
/**
|
|
262
|
+
* Raw (L0) messages the renderer kept verbatim in the MIDDLE region — i.e.
|
|
263
|
+
* neither head nor tail. Under adaptive resolution the picker routinely keeps
|
|
264
|
+
* older messages raw at a resolution gradient; these are real context tokens
|
|
265
|
+
* that the head/tail/summary buckets don't capture. (Empty for a pure
|
|
266
|
+
* hierarchical render with no pinned/uncompressed-middle messages.)
|
|
267
|
+
*/
|
|
268
|
+
middleRaw: { messages: number; tokens: number };
|
|
261
269
|
summaries: {
|
|
262
270
|
l1: { count: number; tokens: number };
|
|
263
271
|
l2: { count: number; tokens: number };
|
|
264
272
|
l3: { count: number; tokens: number };
|
|
265
273
|
};
|
|
266
274
|
pending: { chunks: number; merges: number };
|
|
275
|
+
/**
|
|
276
|
+
* Sum across all buckets — the actual rendered context size. A summary is a
|
|
277
|
+
* Q/A pair, so it counts as 2 messages here.
|
|
278
|
+
*/
|
|
279
|
+
total: { messages: number; tokens: number };
|
|
267
280
|
}
|
|
268
281
|
|
|
269
282
|
/**
|
|
@@ -316,6 +329,19 @@ export interface AutobiographicalConfig {
|
|
|
316
329
|
* this limit have their text/tool_result content truncated. 0 = no limit. */
|
|
317
330
|
maxMessageTokens: number;
|
|
318
331
|
|
|
332
|
+
// --- Live image policy ---
|
|
333
|
+
|
|
334
|
+
/** Maximum number of images kept "live" (sent as real image blocks) in the
|
|
335
|
+
* compiled context. Counted newest-first across the whole window; images
|
|
336
|
+
* beyond this many are replaced with a text placeholder. 0 = unlimited.
|
|
337
|
+
* A hard ceiling for dense bursts that pack many images into the live window. */
|
|
338
|
+
maxLiveImages?: number;
|
|
339
|
+
/** Token depth from the newest message beyond which images are stripped to a
|
|
340
|
+
* text placeholder, even though the surrounding text stays verbatim. Measured
|
|
341
|
+
* the same way as recentWindowTokens (cumulative tokens walked from the tail).
|
|
342
|
+
* Typically much shallower than recentWindowTokens. 0 = never strip by depth. */
|
|
343
|
+
imageStripDepthTokens?: number;
|
|
344
|
+
|
|
319
345
|
// Legacy aliases (deprecated, use summary* instead)
|
|
320
346
|
/** @deprecated Use summarySystemPrompt */
|
|
321
347
|
diarySystemPrompt?: string;
|
|
@@ -453,9 +479,20 @@ export interface AutobiographicalConfig {
|
|
|
453
479
|
* Folding strategy name when adaptiveResolution is on. One of:
|
|
454
480
|
* 'flat-profile' (default) — level-equalizing
|
|
455
481
|
* 'oldest-first' — chronological
|
|
482
|
+
* 'kv-stable' — the KV-stable context controller: minimizes real prefix
|
|
483
|
+
* churn directly (flat zone + per-turn reach cap; no λ). Built per-compile
|
|
484
|
+
* from the live PickerInputs. See docs/kv-stable-context-control.md.
|
|
456
485
|
* Custom strategies can be plugged in by the host application.
|
|
457
486
|
*/
|
|
458
|
-
foldingStrategy?: 'flat-profile' | 'oldest-first';
|
|
487
|
+
foldingStrategy?: 'flat-profile' | 'oldest-first' | 'kv-stable';
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Per-turn divergence reach (tokens) for `foldingStrategy: 'kv-stable'` — the
|
|
491
|
+
* structural KV-perturbation cap P. Smaller = gentler per-turn cache churn but
|
|
492
|
+
* less efficient compression; exceeded only to stay under the hard budget.
|
|
493
|
+
* Default: unbounded within the budget.
|
|
494
|
+
*/
|
|
495
|
+
kvStableReachTokens?: number;
|
|
459
496
|
|
|
460
497
|
/**
|
|
461
498
|
* Slack ratio (hysteresis) for the picker. The picker folds until total
|
|
@@ -623,6 +660,8 @@ Write naturally, as recollection of what you experienced.`,
|
|
|
623
660
|
summaryContextLabel: 'What do you remember from earlier?',
|
|
624
661
|
summaryParticipant: 'Claude',
|
|
625
662
|
maxMessageTokens: 0,
|
|
663
|
+
maxLiveImages: 6,
|
|
664
|
+
imageStripDepthTokens: 30000,
|
|
626
665
|
positionedRecallPairs: true,
|
|
627
666
|
recallHeaderTemplate: '[Recall {id}]',
|
|
628
667
|
};
|