@animalabs/context-manager 0.3.0 → 0.4.0

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.
Files changed (50) hide show
  1. package/dist/src/context-manager.d.ts +69 -2
  2. package/dist/src/context-manager.d.ts.map +1 -1
  3. package/dist/src/context-manager.js +128 -10
  4. package/dist/src/context-manager.js.map +1 -1
  5. package/dist/src/strategies/autobiographical.d.ts +205 -3
  6. package/dist/src/strategies/autobiographical.d.ts.map +1 -1
  7. package/dist/src/strategies/autobiographical.js +767 -59
  8. package/dist/src/strategies/autobiographical.js.map +1 -1
  9. package/dist/src/types/index.d.ts +2 -2
  10. package/dist/src/types/index.d.ts.map +1 -1
  11. package/dist/src/types/index.js +1 -1
  12. package/dist/src/types/index.js.map +1 -1
  13. package/dist/src/types/strategy.d.ts +208 -0
  14. package/dist/src/types/strategy.d.ts.map +1 -1
  15. package/dist/src/types/strategy.js +21 -0
  16. package/dist/src/types/strategy.js.map +1 -1
  17. package/dist/test/non-blocking-compile.test.d.ts +22 -0
  18. package/dist/test/non-blocking-compile.test.d.ts.map +1 -0
  19. package/dist/test/non-blocking-compile.test.js +114 -0
  20. package/dist/test/non-blocking-compile.test.js.map +1 -0
  21. package/dist/test/pins.test.d.ts +10 -0
  22. package/dist/test/pins.test.d.ts.map +1 -0
  23. package/dist/test/pins.test.js +164 -0
  24. package/dist/test/pins.test.js.map +1 -0
  25. package/dist/test/recall-positioning.test.d.ts +16 -0
  26. package/dist/test/recall-positioning.test.d.ts.map +1 -0
  27. package/dist/test/recall-positioning.test.js +181 -0
  28. package/dist/test/recall-positioning.test.js.map +1 -0
  29. package/dist/test/search.test.d.ts +10 -0
  30. package/dist/test/search.test.d.ts.map +1 -0
  31. package/dist/test/search.test.js +141 -0
  32. package/dist/test/search.test.js.map +1 -0
  33. package/dist/test/speculation-cap.test.d.ts +17 -0
  34. package/dist/test/speculation-cap.test.d.ts.map +1 -0
  35. package/dist/test/speculation-cap.test.js +157 -0
  36. package/dist/test/speculation-cap.test.js.map +1 -0
  37. package/dist/test/strategy-persistence.test.d.ts +15 -0
  38. package/dist/test/strategy-persistence.test.d.ts.map +1 -0
  39. package/dist/test/strategy-persistence.test.js +244 -0
  40. package/dist/test/strategy-persistence.test.js.map +1 -0
  41. package/dist/test/tool-pruning.test.d.ts +10 -0
  42. package/dist/test/tool-pruning.test.d.ts.map +1 -0
  43. package/dist/test/tool-pruning.test.js +140 -0
  44. package/dist/test/tool-pruning.test.js.map +1 -0
  45. package/dist/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +1 -1
  47. package/src/context-manager.ts +142 -10
  48. package/src/strategies/autobiographical.ts +815 -61
  49. package/src/types/index.ts +14 -1
  50. package/src/types/strategy.ts +223 -0
@@ -1,6 +1,7 @@
1
1
  import { JsStore } from '@animalabs/chronicle';
2
2
  import type { Membrane, ContentBlock } from '@animalabs/membrane';
3
- import type { MessageId, Sequence, MessageMetadata, StoredMessage, TokenBudget, PendingWork, BranchInfo, ContextStrategy, MessageQuery, MessageQueryResult, ContextInjection, CompileResult } from './types/index.js';
3
+ import type { MessageId, Sequence, MessageMetadata, StoredMessage, TokenBudget, PendingWork, BranchInfo, ContextStrategy, MessageQuery, MessageQueryResult, ContextInjection, CompileResult, ProtectedRange, SearchQuery, SearchResult, SummaryEntry } from './types/index.js';
4
+ import type { RenderStats } from './types/index.js';
4
5
  /**
5
6
  * Base configuration for ContextManager.
6
7
  */
@@ -69,6 +70,8 @@ export declare class ContextManager {
69
70
  /** Whether we own the store (created it) vs app owns it (passed in) */
70
71
  private ownsStore;
71
72
  private debugLogContext;
73
+ /** Namespace passed to strategies for scoping their persistent state slots. */
74
+ private strategyNamespace;
72
75
  private constructor();
73
76
  /**
74
77
  * Open or create a context manager.
@@ -140,12 +143,36 @@ export declare class ContextManager {
140
143
  /**
141
144
  * Create a branch from a specific message.
142
145
  * The new branch will have state as of that message's sequence (time-travel branching).
146
+ *
147
+ * Returns the new branch *name*, which is what `switchBranch` and `forkAt`
148
+ * expect. (Chronicle's branch APIs are name-keyed; the numeric `id` field
149
+ * on JsBranch is an internal identifier and isn't accepted by switchBranch.)
143
150
  */
144
151
  branchAt(messageId: MessageId, name?: string): string;
145
152
  /**
146
153
  * Switch to a different branch.
154
+ *
155
+ * Re-initializes the strategy after switching so any branch-scoped state
156
+ * stored on Chronicle is reloaded. Strategies that hold derived in-memory
157
+ * caches (e.g. AutobiographicalStrategy.summaries) need this to avoid
158
+ * showing the previous branch's state on the new branch.
147
159
  */
148
- switchBranch(branchId: string): void;
160
+ switchBranch(branchId: string): Promise<void>;
161
+ /**
162
+ * Fork from the current head: create a new branch at the current sequence
163
+ * and switch to it. The new branch starts with all current state (messages,
164
+ * context log, and strategy state) and diverges from there.
165
+ *
166
+ * Use this when an agent wants to explore an alternate timeline from
167
+ * "now" — e.g. trying a different response without committing.
168
+ *
169
+ * For time-travel branching at a specific historical message, use
170
+ * `branchAt(messageId, name?)` instead, then `switchBranch(name)`.
171
+ *
172
+ * Returns the new branch's name. The strategy is re-initialized on the
173
+ * new branch so it picks up the forked state.
174
+ */
175
+ fork(name?: string): Promise<string>;
149
176
  /**
150
177
  * Get current branch.
151
178
  */
@@ -187,6 +214,46 @@ export declare class ContextManager {
187
214
  * Get the current strategy.
188
215
  */
189
216
  getStrategy(): ContextStrategy;
217
+ /**
218
+ * Pin a range of messages so they aren't compressed and render raw at
219
+ * their original chronological position. Returns the new pin id.
220
+ *
221
+ * Throws if the active strategy doesn't support pins.
222
+ */
223
+ pinRange(firstMessageId: MessageId, lastMessageId: MessageId, opts?: {
224
+ name?: string;
225
+ }): string;
226
+ /**
227
+ * Mark a single message as a "document" (semantically a body of
228
+ * information to retain in full). Same effect as a single-message pin
229
+ * with `kind: 'document'`. Returns the new pin id.
230
+ */
231
+ markDocument(messageId: MessageId, opts?: {
232
+ name?: string;
233
+ }): string;
234
+ /** Remove a pin or document mark. Returns true if removed. */
235
+ unpin(pinId: string): boolean;
236
+ /** List all current pins. Returns empty array if strategy is not pinnable. */
237
+ listPins(): ReadonlyArray<ProtectedRange>;
238
+ /**
239
+ * Search the strategy's summary archive (substring or regex over content).
240
+ * Returns empty array if the strategy doesn't support search.
241
+ *
242
+ * Suitable for building memory-search agent tools at the framework layer
243
+ * — see e.g. agent-framework's MCPL host integration.
244
+ */
245
+ searchSummaries(query: SearchQuery): SearchResult[];
246
+ /** Look up a single summary by id. Returns null if not found / unsupported. */
247
+ getSummary(id: string): SummaryEntry | null;
248
+ /**
249
+ * Per-render stats from the active strategy: head/tail message + token
250
+ * counts, plus per-level summary counts and total tokens. Returns null
251
+ * if the strategy doesn't implement `getRenderStats`.
252
+ *
253
+ * Designed for TUIs / dashboards that want to display "how much of the
254
+ * agent's context is folded vs raw" at a glance.
255
+ */
256
+ getRenderStats(): RenderStats | null;
190
257
  /**
191
258
  * Reset the head window to start from a new position.
192
259
  * Old head window messages become compressible.
@@ -1 +1 @@
1
- {"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/context-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/context-manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { JsStore } from '@animalabs/chronicle';
2
- import { isResettableStrategy } from './types/index.js';
2
+ import { isResettableStrategy, isPinnableStrategy, isSearchableStrategy, isRenderStatsCapable } from './types/index.js';
3
3
  import { MessageStore } from './message-store.js';
4
4
  import { ContextLog } from './context-log.js';
5
5
  import { PassthroughStrategy } from './strategies/passthrough.js';
@@ -19,12 +19,15 @@ export class ContextManager {
19
19
  /** Whether we own the store (created it) vs app owns it (passed in) */
20
20
  ownsStore;
21
21
  debugLogContext;
22
- constructor(store, messageStore, contextLog, strategy, ownsStore, membrane, debugLogContext = false) {
22
+ /** Namespace passed to strategies for scoping their persistent state slots. */
23
+ strategyNamespace;
24
+ constructor(store, messageStore, contextLog, strategy, ownsStore, strategyNamespace, membrane, debugLogContext = false) {
23
25
  this.store = store;
24
26
  this.messageStore = messageStore;
25
27
  this.contextLog = contextLog;
26
28
  this.strategy = strategy;
27
29
  this.ownsStore = ownsStore;
30
+ this.strategyNamespace = strategyNamespace;
28
31
  this.membrane = membrane;
29
32
  this.debugLogContext = debugLogContext;
30
33
  // Set up edit propagation
@@ -86,7 +89,11 @@ export class ContextManager {
86
89
  namespace: config.namespace,
87
90
  });
88
91
  const strategy = config.strategy ?? new PassthroughStrategy();
89
- const manager = new ContextManager(store, messageStore, contextLog, strategy, ownsStore, config.membrane, config.debugLogContext ?? false);
92
+ // Namespace passed to strategies. Falls back to a stable per-store value
93
+ // so strategies always have something to scope state IDs by, even when
94
+ // the caller didn't supply a namespace.
95
+ const strategyNamespace = config.namespace ?? 'default';
96
+ const manager = new ContextManager(store, messageStore, contextLog, strategy, ownsStore, strategyNamespace, config.membrane, config.debugLogContext ?? false);
90
97
  // Initialize strategy
91
98
  await manager.initializeStrategy();
92
99
  manager.initialized = true;
@@ -180,6 +187,10 @@ export class ContextManager {
180
187
  /**
181
188
  * Create a branch from a specific message.
182
189
  * The new branch will have state as of that message's sequence (time-travel branching).
190
+ *
191
+ * Returns the new branch *name*, which is what `switchBranch` and `forkAt`
192
+ * expect. (Chronicle's branch APIs are name-keyed; the numeric `id` field
193
+ * on JsBranch is an internal identifier and isn't accepted by switchBranch.)
183
194
  */
184
195
  branchAt(messageId, name) {
185
196
  const message = this.messageStore.get(messageId);
@@ -192,13 +203,41 @@ export class ContextManager {
192
203
  const currentBranch = this.store.currentBranch();
193
204
  // Use createBranchAt to branch at the message's sequence (time-travel)
194
205
  const branch = this.store.createBranchAt(branchName, currentBranch.name, message.sequence);
195
- return branch.id;
206
+ return branch.name;
196
207
  }
197
208
  /**
198
209
  * Switch to a different branch.
210
+ *
211
+ * Re-initializes the strategy after switching so any branch-scoped state
212
+ * stored on Chronicle is reloaded. Strategies that hold derived in-memory
213
+ * caches (e.g. AutobiographicalStrategy.summaries) need this to avoid
214
+ * showing the previous branch's state on the new branch.
199
215
  */
200
- switchBranch(branchId) {
216
+ async switchBranch(branchId) {
201
217
  this.store.switchBranch(branchId);
218
+ await this.initializeStrategy();
219
+ }
220
+ /**
221
+ * Fork from the current head: create a new branch at the current sequence
222
+ * and switch to it. The new branch starts with all current state (messages,
223
+ * context log, and strategy state) and diverges from there.
224
+ *
225
+ * Use this when an agent wants to explore an alternate timeline from
226
+ * "now" — e.g. trying a different response without committing.
227
+ *
228
+ * For time-travel branching at a specific historical message, use
229
+ * `branchAt(messageId, name?)` instead, then `switchBranch(name)`.
230
+ *
231
+ * Returns the new branch's name. The strategy is re-initialized on the
232
+ * new branch so it picks up the forked state.
233
+ */
234
+ async fork(name) {
235
+ const branchName = name ?? `fork-${Date.now()}`;
236
+ const currentBranch = this.store.currentBranch();
237
+ const currentSeq = this.store.currentSequence();
238
+ const branch = this.store.createBranchAt(branchName, currentBranch.name, currentSeq);
239
+ await this.switchBranch(branch.name);
240
+ return branch.name;
202
241
  }
203
242
  /**
204
243
  * Get current branch.
@@ -261,11 +300,15 @@ export class ContextManager {
261
300
  * May block if strategy has pending work.
262
301
  */
263
302
  async compile(budget, injections) {
264
- // Check readiness and wait if needed
265
- const readiness = this.strategy.checkReadiness();
266
- if (!readiness.ready && readiness.pendingWork) {
267
- await readiness.pendingWork;
268
- }
303
+ // Don't block the agent's turn on speculative compression — let it
304
+ // run in the background. The strategy renders whatever's available
305
+ // now; the next compile picks up the freshly-formed L1.
306
+ //
307
+ // Old behavior (await pendingWork to fold the latest chunk before
308
+ // the agent responds) added 30+ seconds of latency per turn whenever
309
+ // a chunk was forming, which is unacceptable UX for an agent that
310
+ // streams its responses. We accept "this turn doesn't have the very
311
+ // latest L1" in exchange for non-blocking compile.
269
312
  // Default budget
270
313
  const effectiveBudget = budget ?? {
271
314
  maxTokens: 100000,
@@ -379,6 +422,79 @@ export class ContextManager {
379
422
  getStrategy() {
380
423
  return this.strategy;
381
424
  }
425
+ // ==========================================================================
426
+ // Pins / documents (passthrough to the active strategy)
427
+ // ==========================================================================
428
+ /**
429
+ * Pin a range of messages so they aren't compressed and render raw at
430
+ * their original chronological position. Returns the new pin id.
431
+ *
432
+ * Throws if the active strategy doesn't support pins.
433
+ */
434
+ pinRange(firstMessageId, lastMessageId, opts) {
435
+ if (!isPinnableStrategy(this.strategy)) {
436
+ throw new Error('Active strategy does not support pins');
437
+ }
438
+ return this.strategy.pinRange(firstMessageId, lastMessageId, opts);
439
+ }
440
+ /**
441
+ * Mark a single message as a "document" (semantically a body of
442
+ * information to retain in full). Same effect as a single-message pin
443
+ * with `kind: 'document'`. Returns the new pin id.
444
+ */
445
+ markDocument(messageId, opts) {
446
+ if (!isPinnableStrategy(this.strategy)) {
447
+ throw new Error('Active strategy does not support documents');
448
+ }
449
+ return this.strategy.markDocument(messageId, opts);
450
+ }
451
+ /** Remove a pin or document mark. Returns true if removed. */
452
+ unpin(pinId) {
453
+ if (!isPinnableStrategy(this.strategy)) {
454
+ throw new Error('Active strategy does not support pins');
455
+ }
456
+ return this.strategy.unpin(pinId);
457
+ }
458
+ /** List all current pins. Returns empty array if strategy is not pinnable. */
459
+ listPins() {
460
+ if (!isPinnableStrategy(this.strategy))
461
+ return [];
462
+ return this.strategy.listPins();
463
+ }
464
+ // ==========================================================================
465
+ // Search (passthrough to the active strategy)
466
+ // ==========================================================================
467
+ /**
468
+ * Search the strategy's summary archive (substring or regex over content).
469
+ * Returns empty array if the strategy doesn't support search.
470
+ *
471
+ * Suitable for building memory-search agent tools at the framework layer
472
+ * — see e.g. agent-framework's MCPL host integration.
473
+ */
474
+ searchSummaries(query) {
475
+ if (!isSearchableStrategy(this.strategy))
476
+ return [];
477
+ return this.strategy.searchSummaries(query);
478
+ }
479
+ /** Look up a single summary by id. Returns null if not found / unsupported. */
480
+ getSummary(id) {
481
+ if (!isSearchableStrategy(this.strategy))
482
+ return null;
483
+ return this.strategy.getSummary(id);
484
+ }
485
+ /**
486
+ * Per-render stats from the active strategy: head/tail message + token
487
+ * counts, plus per-level summary counts and total tokens. Returns null
488
+ * if the strategy doesn't implement `getRenderStats`.
489
+ *
490
+ * Designed for TUIs / dashboards that want to display "how much of the
491
+ * agent's context is folded vs raw" at a glance.
492
+ */
493
+ getRenderStats() {
494
+ if (!isRenderStatsCapable(this.strategy))
495
+ return null;
496
+ return this.strategy.getRenderStats(this.messageStore.createView());
497
+ }
382
498
  /**
383
499
  * Reset the head window to start from a new position.
384
500
  * Old head window messages become compressible.
@@ -426,6 +542,8 @@ export class ContextManager {
426
542
  contextLog: this.contextLog.createView(),
427
543
  membrane: this.membrane,
428
544
  currentSequence: this.store.currentSequence(),
545
+ store: this.store,
546
+ namespace: this.strategyNamespace,
429
547
  };
430
548
  }
431
549
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/context-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/context-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import type { JsStore } from '@animalabs/chronicle';
1
2
  import type { ContentBlock } from '@animalabs/membrane';
2
3
  import { NativeFormatter } from '@animalabs/membrane';
3
- import type { ResettableStrategy, StrategyContext, ReadinessState, MessageStoreView, ContextLogView, TokenBudget, ContextEntry, StoredMessage, AutobiographicalConfig, SummaryLevel, SummaryEntry } from '../types/index.js';
4
+ import type { ResettableStrategy, StrategyContext, ReadinessState, MessageStoreView, ContextLogView, TokenBudget, ContextEntry, StoredMessage, AutobiographicalConfig, SummaryLevel, SummaryEntry, ProtectedRange, SearchQuery, SearchResult } from '../types/index.js';
4
5
  /**
5
6
  * Chunk of messages to be compressed.
6
7
  */
@@ -54,10 +55,133 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
54
55
  protected headWindowStartId: string | null;
55
56
  /** Cached result of getHeadWindowStartIndex to avoid repeated linear scans. */
56
57
  private _cachedHeadStartIndex;
58
+ /** Chronicle store for persistent state. Set in `initialize()`. */
59
+ protected store: JsStore | null;
60
+ /** Namespace for state-id scoping. Set in `initialize()`. */
61
+ protected ns: string;
62
+ protected get summariesStateId(): string;
63
+ protected get counterStateId(): string;
64
+ protected get mergeQueueStateId(): string;
65
+ protected get pinsStateId(): string;
66
+ /** Protected ranges (pins + documents). Loaded from chronicle in initialize. */
67
+ protected pins: ProtectedRange[];
68
+ /** Monotonically increasing counter for pin ids. Persisted as part of the pins snapshot. */
69
+ protected pinIdCounter: number;
57
70
  constructor(config?: Partial<AutobiographicalConfig>);
58
71
  initialize(ctx: StrategyContext): Promise<void>;
72
+ /**
73
+ * Register the three Chronicle state slots this strategy uses.
74
+ * Idempotent — chronicle throws if a state is already registered, which we
75
+ * swallow (the existing slot is what we want).
76
+ */
77
+ protected registerStates(): void;
78
+ /**
79
+ * Load summaries, counter, and pending merges from chronicle into the
80
+ * in-memory mirrors. Called on every (re)initialize so branch switches
81
+ * pick up the new branch's state.
82
+ */
83
+ protected loadPersistedState(): void;
84
+ /** Persist the current pins + counter as a single snapshot. */
85
+ protected persistPins(): void;
86
+ /**
87
+ * Pin a range of messages so they aren't compressed and render raw at
88
+ * their original position. Returns the pin id.
89
+ */
90
+ pinRange(firstMessageId: string, lastMessageId: string, opts?: {
91
+ name?: string;
92
+ }): string;
93
+ /**
94
+ * Mark a single message as a "document" — semantically a body of
95
+ * information the agent wants to retain in full. Functionally a
96
+ * single-message pin with `kind: 'document'`.
97
+ */
98
+ markDocument(messageId: string, opts?: {
99
+ name?: string;
100
+ }): string;
101
+ /** Remove a pin or document mark by id. Returns true if removed. */
102
+ unpin(pinId: string): boolean;
103
+ /** Read-only list of all current pins. */
104
+ listPins(): ReadonlyArray<ProtectedRange>;
105
+ /**
106
+ * Look up a single summary by id. Returns null if not found.
107
+ */
108
+ getSummary(id: string): SummaryEntry | null;
109
+ /**
110
+ * Search summaries by substring or regex over their content.
111
+ *
112
+ * Result ordering: matches by descending hit count, then by descending
113
+ * `created` timestamp (newest first within the same hit count).
114
+ *
115
+ * Default behavior: only "live" (unmerged) summaries are searched. Set
116
+ * `includeMerged: true` to also include summaries that have been folded
117
+ * into a higher level.
118
+ */
119
+ searchSummaries(query: SearchQuery): SearchResult[];
120
+ /**
121
+ * Whether a given message position is inside any protected range.
122
+ * Uses a position map (computed by caller) so callers can avoid
123
+ * repeated per-message lookups in tight loops.
124
+ */
125
+ protected isPositionPinned(position: number, pinPositions: Set<number>): boolean;
126
+ /**
127
+ * Build a set of message-store positions covered by any pin. O(N pins · K range).
128
+ * Returns positions for which the message exists; orphan pins (deleted
129
+ * messages) are silently skipped.
130
+ */
131
+ protected pinnedPositions(messages: StoredMessage[]): Set<number>;
132
+ /**
133
+ * Append a summary to the in-memory list and to the chronicle AppendLog.
134
+ * Single point so subclasses inherit persistence.
135
+ */
136
+ protected pushSummary(entry: SummaryEntry): void;
137
+ /**
138
+ * Mark a summary as merged into a higher-level summary, updating the
139
+ * chronicle copy at the same index. Index is the position in `this.summaries`.
140
+ */
141
+ protected setMergedInto(entry: SummaryEntry, mergedIntoId: string): void;
142
+ /**
143
+ * Allocate the next summary-id counter value and persist the new counter.
144
+ */
145
+ protected nextSummaryIdCounter(): number;
146
+ /**
147
+ * Push to the merge queue and persist the new queue snapshot.
148
+ */
149
+ protected enqueueMerge(merge: {
150
+ level: SummaryLevel;
151
+ sourceIds: string[];
152
+ }): void;
153
+ /**
154
+ * Pop from the merge queue and persist the new queue snapshot.
155
+ */
156
+ protected dequeueMerge(): {
157
+ level: SummaryLevel;
158
+ sourceIds: string[];
159
+ } | undefined;
59
160
  checkReadiness(): ReadinessState;
60
161
  onNewMessage(message: StoredMessage, ctx: StrategyContext): Promise<void>;
162
+ /**
163
+ * Background-drain loop: keeps calling tick() while there's queued work,
164
+ * subject to the speculation cap and preflight hook. Recurses via
165
+ * `queueMicrotask` so one chunk's compression doesn't block the
166
+ * scheduling of the next.
167
+ *
168
+ * Stops if a tick fails to make progress (queue size unchanged) — guards
169
+ * against runaway recursion when tick is a no-op (e.g. no membrane
170
+ * configured, or a subclass override that doesn't process the queue).
171
+ */
172
+ protected driveSpeculativeDrain(ctx: StrategyContext): void;
173
+ /**
174
+ * Whether the strategy's pending+queued L1 budget has reached the cap
175
+ * configured by `maxSpeculativeL1s`. If no cap is set, always false.
176
+ */
177
+ protected isAtSpeculativeCap(): boolean;
178
+ /**
179
+ * Preflight hook for whether speculative compression should fire on
180
+ * `onNewMessage`. Returns true by default (current eager behavior).
181
+ * Subclasses can override for predictive scheduling — e.g. only fire
182
+ * when the live tail token count is approaching some threshold.
183
+ */
184
+ protected shouldCompressPreflight(): boolean;
61
185
  tick(ctx: StrategyContext): Promise<void>;
62
186
  select(store: MessageStoreView, log: ContextLogView, budget: TokenBudget): ContextEntry[];
63
187
  /**
@@ -72,6 +196,43 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
72
196
  l3: number;
73
197
  pendingMerges: number;
74
198
  };
199
+ /**
200
+ * Richer per-render stats: requires a message store view to compute the
201
+ * head + tail (recent window) sizes. Returns counts AND token sums per
202
+ * summary level, so observers can see "how much of the agent's context
203
+ * is in raw tail vs folded into L1/L2/L3."
204
+ *
205
+ * Useful for TUI / dashboards. The token sums use the strategy's own
206
+ * token estimates (which match what `select()` uses for budget math).
207
+ */
208
+ getRenderStats(store: MessageStoreView): {
209
+ head: {
210
+ messages: number;
211
+ tokens: number;
212
+ };
213
+ tail: {
214
+ messages: number;
215
+ tokens: number;
216
+ };
217
+ summaries: {
218
+ l1: {
219
+ count: number;
220
+ tokens: number;
221
+ };
222
+ l2: {
223
+ count: number;
224
+ tokens: number;
225
+ };
226
+ l3: {
227
+ count: number;
228
+ tokens: number;
229
+ };
230
+ };
231
+ pending: {
232
+ chunks: number;
233
+ merges: number;
234
+ };
235
+ };
75
236
  protected selectLegacy(store: MessageStoreView, _log: ContextLogView, budget: TokenBudget): ContextEntry[];
76
237
  /**
77
238
  * Emit recent-window messages, evicting OLDEST-first when the budget is tight.
@@ -109,6 +270,11 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
109
270
  /**
110
271
  * Check if unmerged summary counts exceed the merge threshold.
111
272
  * Enqueues merge operations if so.
273
+ *
274
+ * Skips L1s/L2s that are already in a pending merge — without this guard,
275
+ * each new summary above threshold re-enqueues a merge for the same
276
+ * already-eligible siblings, producing N near-identical higher-level
277
+ * summaries when the queue eventually drains.
112
278
  */
113
279
  protected checkMergeThreshold(): void;
114
280
  /**
@@ -139,6 +305,26 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
139
305
  selected: SummaryEntry[];
140
306
  tokensUsed: number;
141
307
  };
308
+ /**
309
+ * True if `projectedTotal` exceeds `max` AND the strategy is configured
310
+ * to enforce budget. When `enforceBudget: false`, always returns false
311
+ * — the rendering pipeline emits the full ideal context regardless of
312
+ * budget overage. Caller's API will reject if it exceeds the model's
313
+ * context window; the philosophy is "surface overage, don't hide it."
314
+ */
315
+ protected isOverBudget(projectedTotal: number, max: number): boolean;
316
+ /**
317
+ * Sort selected summaries by source-range start position, so per-pair
318
+ * recall emission appears in chronological order. Falls back to the
319
+ * created timestamp for summaries whose source-range first message is
320
+ * no longer in the store.
321
+ */
322
+ protected sortSummariesChronologically(summaries: SummaryEntry[], messages: StoredMessage[]): SummaryEntry[];
323
+ /**
324
+ * Render the per-pair recall header from the configured template.
325
+ * Substitutions: {id} {level} {first} {last}.
326
+ */
327
+ protected buildRecallHeader(summary: SummaryEntry): string;
142
328
  /**
143
329
  * Reset the head window to start from a new message ID.
144
330
  * Old head window messages become compressible on the next chunk rebuild.
@@ -158,8 +344,10 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
158
344
  */
159
345
  protected extractText(content: ContentBlock[]): string;
160
346
  /**
161
- * Get messages in the compressible zone: outside both head window and recent window.
162
- * Returns messages from [0, headStart) [headEnd, recentStart).
347
+ * Get messages in the compressible zone: outside both head window and
348
+ * recent window AND not inside any pinned range. Returns messages from
349
+ * [0, headStart) ∪ [headEnd, recentStart) minus any positions covered
350
+ * by a pin or document mark.
163
351
  */
164
352
  protected getCompressibleMessages(store: MessageStoreView): StoredMessage[];
165
353
  /**
@@ -188,6 +376,20 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
188
376
  * a tool_use message and its tool_result response.
189
377
  */
190
378
  private trimOrphanedToolUse;
379
+ /**
380
+ * Prune tool_use / tool_result blocks in-place:
381
+ * 1. Truncate `tool_use.input` blocks whose serialized JSON exceeds
382
+ * `toolUseInputMaxTokens`.
383
+ * 2. For each tool name, keep only the last N `tool_result` blocks
384
+ * per `toolResultMaxLastN`; older ones get their `content` replaced
385
+ * with a brief marker referencing the tool name and how many newer
386
+ * results exist below.
387
+ *
388
+ * Both passes are no-ops when the corresponding config is unset/0.
389
+ * Pruning runs AFTER selection and orphan-trimming, so it doesn't
390
+ * affect chunk formation or the recall/pin layout.
391
+ */
392
+ protected pruneToolEntries(entries: ContextEntry[]): void;
191
393
  protected isChunkOldEnough(chunk: Chunk): boolean;
192
394
  protected formatChunkForCompression(chunk: Chunk): string;
193
395
  /**