@animalabs/context-manager 0.5.9 → 0.5.10

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.
@@ -835,8 +835,24 @@ export declare class AutobiographicalStrategy implements ResettableStrategy {
835
835
  protected postStripEstimates(store: MessageStoreView): number[];
836
836
  /** Byte wall default: 20MB of base64 (API total-request cap is 32MB). */
837
837
  protected static readonly DEFAULT_MAX_LIVE_IMAGE_BYTES: number;
838
+ /** Compression prompts carry head + recall frontier + raw chunk alongside
839
+ * their images, so they get a tighter image budget than the live window. */
840
+ protected static readonly DEFAULT_MAX_COMPRESSION_IMAGE_BYTES: number;
838
841
  /** Base64 payload size of an image block (0 for non-base64 sources). */
839
842
  protected static imageBlockBytes(b: unknown): number;
843
+ /**
844
+ * Cap inline image bytes in a COMPRESSION prompt (2026-07-12). The main
845
+ * window enforces `maxLiveImageBytes` through the strip policy; the
846
+ * summarizer's raw-chunk replay had no such wall and leaned on membrane's
847
+ * byte shed instead — which is a transport backstop, not a policy owner
848
+ * (it fired at 27MB on a live merge). Keep images newest-first within the
849
+ * budget; older ones become the same loud placeholder the window uses, so
850
+ * the summarizer is told plainly that it is not seeing them.
851
+ * Returns the number of images replaced.
852
+ */
853
+ protected capCompressionImageBytes(messages: Array<{
854
+ content: ContentBlock[];
855
+ }>, capBytes: number): number;
840
856
  protected getRecentWindowStart(store: MessageStoreView): number;
841
857
  /**
842
858
  * Index of the first message in the head window.
@@ -1 +1 @@
1
- {"version":3,"file":"autobiographical.d.ts","sourceRoot":"","sources":["../../../src/strategies/autobiographical.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autobiographical.d.ts","sourceRoot":"","sources":["../../../src/strategies/autobiographical.ts"],"names":[],"mappings":"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"}
@@ -634,6 +634,9 @@ export class AutobiographicalStrategy {
634
634
  // Anthropic 400 "content must be non-empty". Never let them re-enter memory.
635
635
  const nonEmpty = loaded.filter(s => s && typeof s.content === 'string' && s.content.trim().length > 0);
636
636
  const droppedEmpty = loaded.length - nonEmpty.length;
637
+ const removedEmptyIds = new Set(loaded
638
+ .filter(s => s && (typeof s.content !== 'string' || s.content.trim().length === 0))
639
+ .map(s => s.id));
637
640
  if (droppedEmpty > 0)
638
641
  console.warn(`[autobiographical] dropped ${droppedEmpty} empty summary(ies) on load`);
639
642
  // Dedupe by id, keeping the copy with mergedInto set (position of first
@@ -652,13 +655,57 @@ export class AutobiographicalStrategy {
652
655
  const dupes = nonEmpty.length - byId.size;
653
656
  if (dupes > 0)
654
657
  console.warn(`[autobiographical] deduped ${dupes} duplicate summary id(s) on load`);
655
- this.summaries = [...byId.values()];
658
+ // Dropping an invalid parent is only half the repair. Its children may
659
+ // still carry `mergedInto: <dropped-id>`, which makes them simultaneously
660
+ // unavailable to the picker (no parent to render) and ineligible for a
661
+ // replacement merge (they still look merged). Clear every dangling edge
662
+ // and persist the canonicalized array so the poison does not return on
663
+ // every restart.
664
+ let danglingParents = 0;
665
+ this.summaries = [...byId.values()].map((summary) => {
666
+ if (!summary.mergedInto || byId.has(summary.mergedInto))
667
+ return summary;
668
+ danglingParents++;
669
+ const { mergedInto: _dropped, ...repaired } = summary;
670
+ return repaired;
671
+ });
672
+ if (droppedEmpty > 0 || dupes > 0 || danglingParents > 0) {
673
+ this.store.setStateJson(this.summariesStateId, this.summaries);
674
+ console.warn(`[autobiographical] repaired summary state: removed ${droppedEmpty} empty, ` +
675
+ `deduped ${dupes}, cleared ${danglingParents} dangling parent pointer(s)`);
676
+ }
677
+ // An invalid L1 may also be referenced by a persisted chunk record. Make
678
+ // that chunk compressible again instead of leaving it permanently marked
679
+ // complete with no summary behind it.
680
+ if (this.chunkPersistenceEnabled && this.chunkRecords.length > 0) {
681
+ const validL1Ids = new Set(this.summaries.filter(s => s.level === 1).map(s => s.id));
682
+ let repairedChunkRecords = 0;
683
+ this.chunkRecords = this.chunkRecords.map((record) => {
684
+ if (!record.compressed || (record.summaryId && validL1Ids.has(record.summaryId))) {
685
+ return record;
686
+ }
687
+ repairedChunkRecords++;
688
+ const { summaryId: _dropped, ...rest } = record;
689
+ return { ...rest, compressed: false };
690
+ });
691
+ if (repairedChunkRecords > 0) {
692
+ this.store.setStateJson(this.chunksStateId, this.chunkRecords);
693
+ console.warn(`[autobiographical] repaired ${repairedChunkRecords} chunk record(s) with missing L1 summaries`);
694
+ }
695
+ }
656
696
  const counter = this.store.getStateJson(this.counterStateId);
657
697
  this.summaryIdCounter = typeof counter === 'number' ? counter : 0;
658
698
  const queue = this.store.getStateJson(this.mergeQueueStateId);
659
699
  this.mergeQueue = Array.isArray(queue)
660
700
  ? queue
661
701
  : [];
702
+ const validMergeQueue = this.mergeQueue.filter(merge => !merge.sourceIds.some(id => removedEmptyIds.has(id) && !byId.has(id)));
703
+ if (validMergeQueue.length !== this.mergeQueue.length) {
704
+ const removed = this.mergeQueue.length - validMergeQueue.length;
705
+ this.mergeQueue = validMergeQueue;
706
+ this.store.setStateJson(this.mergeQueueStateId, this.mergeQueue);
707
+ console.warn(`[autobiographical] removed ${removed} merge queue item(s) with missing sources`);
708
+ }
662
709
  const pinsState = this.store.getStateJson(this.pinsStateId);
663
710
  if (pinsState && typeof pinsState === 'object' && Array.isArray(pinsState.pins)) {
664
711
  const ps = pinsState;
@@ -923,6 +970,9 @@ export class AutobiographicalStrategy {
923
970
  * Single point so subclasses inherit persistence.
924
971
  */
925
972
  pushSummary(entry) {
973
+ if (typeof entry.content !== 'string' || entry.content.trim().length === 0) {
974
+ throw new Error(`[autobiographical] refusing to persist empty summary ${entry.id} at L${entry.level}`);
975
+ }
926
976
  this.summaries.push(entry);
927
977
  this.store?.appendToStateJson(this.summariesStateId, entry);
928
978
  }
@@ -1894,6 +1944,13 @@ export class AutobiographicalStrategy {
1894
1944
  // (b) provide an alternative identity source that competes with the
1895
1945
  // structural one carried by the conversation itself. Anchoring
1896
1946
  // identity by the chronicle's actual head is more honest.
1947
+ // Own the byte wall here rather than delegating to membrane's shed: cap
1948
+ // the prompt's inline image bytes newest-first before the request is built.
1949
+ // A tighter budget than the live window's: a compression prompt also
1950
+ // carries the head, the whole recall frontier and the raw chunk, so the
1951
+ // image share must leave room for all of it under the API's 32MB cap.
1952
+ this.capCompressionImageBytes(llmMessages, this.config.maxCompressionImageBytes ??
1953
+ AutobiographicalStrategy.DEFAULT_MAX_COMPRESSION_IMAGE_BYTES);
1897
1954
  const request = {
1898
1955
  // EXPLICIT image-loss opt-in (2026-07-12): summarizer prompts replay
1899
1956
  // raw history that can carry more inline image bytes than the API's
@@ -2081,21 +2138,40 @@ export class AutobiographicalStrategy {
2081
2138
  withPos.push({ s, first: Math.min(first, last), last: Math.max(first, last) });
2082
2139
  }
2083
2140
  withPos.sort((a, b) => a.first - b.first);
2141
+ // Split into contiguous runs (a gap larger than `gapLimit` starts a new one).
2142
+ const runs = [];
2084
2143
  let run = [];
2085
2144
  let runEnd = -Infinity;
2086
2145
  for (const x of withPos) {
2087
2146
  if (run.length > 0 && x.first - runEnd > gapLimit) {
2088
- if (run.length >= threshold)
2089
- break; // oldest qualifying run wins
2147
+ runs.push(run);
2090
2148
  run = [];
2091
2149
  runEnd = -Infinity;
2092
2150
  }
2093
2151
  run.push(x);
2094
2152
  runEnd = Math.max(runEnd, x.last);
2095
2153
  }
2096
- if (run.length < threshold)
2154
+ if (run.length > 0)
2155
+ runs.push(run);
2156
+ if (runs.length === 0)
2097
2157
  return null;
2098
- return run.slice(0, threshold).map((x) => x.s);
2158
+ // ONLY THE NEWEST RUN CAN GROW (2026-07-12 starvation fix). Summaries are
2159
+ // always produced at the live end, so any INTERIOR run is stranded: it can
2160
+ // never reach `threshold` members, and waiting for it froze the whole
2161
+ // pyramid (mythos: L1 frontier [913-981]x5 + [4039-4131]x5 separated by a
2162
+ // 3058-message hole from the poison-node surgery — 10 unmerged L1s, 8
2163
+ // unmerged L2s, merge queue empty, fold floor climbing to 117k until the
2164
+ // picker died). Interior runs consolidate as soon as they have 2 members;
2165
+ // only the newest run waits for the full threshold.
2166
+ for (let i = 0; i < runs.length; i++) {
2167
+ const r = runs[i];
2168
+ const isNewest = i === runs.length - 1;
2169
+ if (r.length >= threshold)
2170
+ return r.slice(0, threshold).map((x) => x.s);
2171
+ if (!isNewest && r.length >= 2)
2172
+ return r.slice(0, threshold).map((x) => x.s);
2173
+ }
2174
+ return null;
2099
2175
  }
2100
2176
  checkMergeThreshold() {
2101
2177
  phaseChannel.report('merge-threshold'); // liveness-watchdog phase
@@ -2432,6 +2508,13 @@ export class AutobiographicalStrategy {
2432
2508
  const split = splitMixedToolMessages(llmMessages);
2433
2509
  const collapsed = this.collapseConsecutiveMessages(split);
2434
2510
  const cleaned = stripUnpairedToolBlocks(collapsed);
2511
+ // Byte wall on the MERGE prompt too (2026-07-12). A merge expands its
2512
+ // sources ONE LEVEL DEEPER — an L2 merge therefore replays the RAW
2513
+ // messages under its L1s, images and all (including screenshots nested in
2514
+ // tool_results). This is the path that kept tripping membrane's transport
2515
+ // shed at 27MB after the L1 site was already capped. Own it here.
2516
+ this.capCompressionImageBytes(cleaned, this.config.maxCompressionImageBytes ??
2517
+ AutobiographicalStrategy.DEFAULT_MAX_COMPRESSION_IMAGE_BYTES);
2435
2518
  // NO system prompt — identity is established by the head window
2436
2519
  // (present at the start of llmMessages above) and by the prior
2437
2520
  // recall pairs. Same rationale as compressChunkHierarchical.
@@ -2586,7 +2669,7 @@ export class AutobiographicalStrategy {
2586
2669
  // Post-strip estimates (see postStripEstimates): every budgeting site in
2587
2670
  // this method prices a message the way the stripped render will cost it.
2588
2671
  const pse = this.postStripEstimates(store);
2589
- // ----- 1. Build head/tail sets and emit head entries -----
2672
+ // ----- 1. Build head/tail sets and reserve the tail before emitting -----
2590
2673
  const headStart = this.getHeadWindowStartIndex(store);
2591
2674
  const headEnd = this.getHeadWindowEnd(store);
2592
2675
  const recentStart = this.getRecentWindowStart(store);
@@ -2594,14 +2677,42 @@ export class AutobiographicalStrategy {
2594
2677
  const tailMessageIds = new Set();
2595
2678
  let headTokens = 0;
2596
2679
  let tailTokens = 0;
2680
+ // Compute the fixed raw windows first. They are hard reservations, not
2681
+ // best-effort phases: foldable history may use only the space left after
2682
+ // every head and tail message has been accounted for.
2683
+ for (let i = headStart; i < headEnd && i < messages.length; i++) {
2684
+ const msg = messages[i];
2685
+ const tokens = msgCap > 0 ? Math.min(pse[i], msgCap + 50) : pse[i];
2686
+ headMessageIds.add(msg.id);
2687
+ headTokens += tokens;
2688
+ }
2689
+ const effectiveRecentStart = Math.max(recentStart, headEnd);
2690
+ for (let i = effectiveRecentStart; i < messages.length; i++) {
2691
+ const msg = messages[i];
2692
+ const tokens = msgCap > 0 ? Math.min(pse[i], msgCap + 50) : pse[i];
2693
+ tailMessageIds.add(msg.id);
2694
+ tailTokens += tokens;
2695
+ }
2696
+ if (headTokens + tailTokens > rejectionBudget) {
2697
+ throw new OverBudgetError({
2698
+ budget: rejectionBudget,
2699
+ actual: headTokens + tailTokens,
2700
+ diagnostics: {
2701
+ headTokens,
2702
+ tailTokens,
2703
+ middleTokens: 0,
2704
+ middleChunkCount: Math.max(0, effectiveRecentStart - headEnd),
2705
+ deepestLevel: 0,
2706
+ },
2707
+ });
2708
+ }
2709
+ const prefixBudget = rejectionBudget - tailTokens;
2597
2710
  let totalTokens = 0;
2598
- // Emit head entries verbatim
2711
+ // Emit the already-reserved head entries verbatim.
2599
2712
  for (let i = headStart; i < headEnd && i < messages.length; i++) {
2600
2713
  const msg = messages[i];
2601
2714
  const content = msgCap > 0 ? this.truncateContent(msg.content, msgCap) : msg.content;
2602
2715
  const tokens = msgCap > 0 ? Math.min(pse[i], msgCap + 50) : pse[i];
2603
- if (totalTokens + tokens > rejectionBudget)
2604
- break;
2605
2716
  entries.push({
2606
2717
  index: entries.length,
2607
2718
  sourceMessageId: msg.id,
@@ -2610,21 +2721,11 @@ export class AutobiographicalStrategy {
2610
2721
  content,
2611
2722
  });
2612
2723
  totalTokens += tokens;
2613
- headMessageIds.add(msg.id);
2614
- headTokens += tokens;
2615
2724
  this.rsRaw('head', tokens);
2616
2725
  }
2617
2726
  // (Cache breakpoints are placed in one pass over the FINAL ordered entries
2618
2727
  // below — see placeCacheMarkers — capturing the stable folded prefix, not
2619
2728
  // just the head boundary.)
2620
- // Compute tail message IDs (will be emitted at end)
2621
- const effectiveRecentStart = Math.max(recentStart, headEnd);
2622
- for (let i = effectiveRecentStart; i < messages.length; i++) {
2623
- const msg = messages[i];
2624
- const tokens = msgCap > 0 ? Math.min(pse[i], msgCap + 50) : pse[i];
2625
- tailMessageIds.add(msg.id);
2626
- tailTokens += tokens;
2627
- }
2628
2729
  // ----- 2. Build PickerChunks for messages in the middle -----
2629
2730
  // For each compressible (non-head, non-tail) message we create one
2630
2731
  // PickerChunk. Its l1Id is determined by the existing chunks that
@@ -2783,12 +2884,10 @@ export class AutobiographicalStrategy {
2783
2884
  if (result.produced.length > 0) {
2784
2885
  this.handleProducedOps(result.produced);
2785
2886
  }
2786
- // Hard-fail check: if the picker exhausted itself but the final render
2787
- // would still exceed the HARD budget (not just the soft target), surface
2788
- // an OverBudgetError to the host rather than silently dropping entries.
2789
- // The strategy has done all it can; the application has to decide what
2790
- // to do next (raise budget, switch model, drop windows, etc.).
2791
- if (result.exhausted && result.finalTokens > rejectionBudget) {
2887
+ // Hard-fail whenever the picker's current plan exceeds the hard budget.
2888
+ // A `produce` op only schedules a missing summary; it does not make the
2889
+ // current raw plan feasible and must never authorize an inference.
2890
+ if (result.finalTokens > rejectionBudget) {
2792
2891
  throw new OverBudgetError({
2793
2892
  budget: rejectionBudget,
2794
2893
  actual: result.finalTokens,
@@ -2841,7 +2940,7 @@ export class AutobiographicalStrategy {
2841
2940
  // (`maxMessageTokens` is for per-message caps on chat / tool
2842
2941
  // results, not for sharded bodyGroup composites.)
2843
2942
  const tokens = this.estimateTokens(content);
2844
- if (totalTokens + tokens > rejectionBudget) {
2943
+ if (totalTokens + tokens > prefixBudget) {
2845
2944
  currentRun = null;
2846
2945
  return false;
2847
2946
  }
@@ -2874,7 +2973,7 @@ export class AutobiographicalStrategy {
2874
2973
  sourceRelation: 'derived',
2875
2974
  };
2876
2975
  const pairTokens = this.estimateTokens(questionEntry.content) + this.estimateTokens(answerEntry.content);
2877
- if (totalTokens + pairTokens > rejectionBudget) {
2976
+ if (totalTokens + pairTokens > prefixBudget) {
2878
2977
  currentRun = null;
2879
2978
  return false;
2880
2979
  }
@@ -2945,7 +3044,7 @@ export class AutobiographicalStrategy {
2945
3044
  if (resolution === 0) {
2946
3045
  const content = msgCap > 0 ? this.truncateContent(msg.content, msgCap) : msg.content;
2947
3046
  const tokens = msgCap > 0 ? Math.min(pse[i], msgCap + 50) : pse[i];
2948
- if (totalTokens + tokens > rejectionBudget)
3047
+ if (totalTokens + tokens > prefixBudget)
2949
3048
  break;
2950
3049
  entries.push({
2951
3050
  index: entries.length,
@@ -2963,7 +3062,7 @@ export class AutobiographicalStrategy {
2963
3062
  if (!ancestor) {
2964
3063
  const content = msgCap > 0 ? this.truncateContent(msg.content, msgCap) : msg.content;
2965
3064
  const tokens = msgCap > 0 ? Math.min(pse[i], msgCap + 50) : pse[i];
2966
- if (totalTokens + tokens > rejectionBudget)
3065
+ if (totalTokens + tokens > prefixBudget)
2967
3066
  break;
2968
3067
  entries.push({
2969
3068
  index: entries.length,
@@ -2996,7 +3095,7 @@ export class AutobiographicalStrategy {
2996
3095
  sourceRelation: 'derived',
2997
3096
  };
2998
3097
  const pairTokens = this.estimateTokens(questionEntry.content) + this.estimateTokens(answerEntry.content);
2999
- if (totalTokens + pairTokens > rejectionBudget)
3098
+ if (totalTokens + pairTokens > prefixBudget)
3000
3099
  break;
3001
3100
  entries.push(questionEntry);
3002
3101
  entries.push(answerEntry);
@@ -3005,8 +3104,21 @@ export class AutobiographicalStrategy {
3005
3104
  i++;
3006
3105
  }
3007
3106
  }
3008
- // ----- 6. Emit tail entries newest-first eviction (matches existing behavior) -----
3107
+ // ----- 6. Emit the fully-reserved tail -----
3009
3108
  const tailStats = this.emitRecentNewestFirst(entries, store, messages, effectiveRecentStart, msgCap, rejectionBudget, totalTokens, pse);
3109
+ if (tailStats.messages !== messages.length - effectiveRecentStart) {
3110
+ throw new OverBudgetError({
3111
+ budget: rejectionBudget,
3112
+ actual: totalTokens + tailTokens,
3113
+ diagnostics: {
3114
+ headTokens,
3115
+ tailTokens,
3116
+ middleTokens: totalTokens - headTokens,
3117
+ middleChunkCount: pickerChunks.length - headMessageIds.size - tailMessageIds.size,
3118
+ deepestLevel,
3119
+ },
3120
+ });
3121
+ }
3010
3122
  this.rsRaw('tail', tailStats.tokens, tailStats.messages);
3011
3123
  // ----- 7. Post-process: merge consecutive raw entries from the same bodyGroup -----
3012
3124
  // Both head and tail emission paths emit shards as separate ContextEntries.
@@ -3027,6 +3139,30 @@ export class AutobiographicalStrategy {
3027
3139
  // Strip stale images BEFORE placing markers and committing stats, so both
3028
3140
  // describe the post-strip context the agent actually receives.
3029
3141
  this.applyImageStripping(merged, store);
3142
+ // The newest stored message is the triggering turn for this compile. A
3143
+ // structural repair may rewrite tool blocks, but it must never erase that
3144
+ // turn. Body-group shards merge under the first shard's source id, so any
3145
+ // surviving member of the same group proves the newest shard is present.
3146
+ const newest = messages[messages.length - 1];
3147
+ if (newest) {
3148
+ const newestGroupIds = newest.bodyGroupId
3149
+ ? new Set(messages.filter(m => m.bodyGroupId === newest.bodyGroupId).map(m => m.id))
3150
+ : new Set([newest.id]);
3151
+ const newestRetained = merged.some(entry => entry.sourceMessageId && newestGroupIds.has(entry.sourceMessageId));
3152
+ if (!newestRetained) {
3153
+ throw new OverBudgetError({
3154
+ budget: rejectionBudget,
3155
+ actual: totalTokens + tailTokens,
3156
+ diagnostics: {
3157
+ headTokens,
3158
+ tailTokens,
3159
+ middleTokens: totalTokens - headTokens,
3160
+ middleChunkCount: pickerChunks.length - headMessageIds.size - tailMessageIds.size,
3161
+ deepestLevel,
3162
+ },
3163
+ });
3164
+ }
3165
+ }
3030
3166
  // Place ≤4 cache breakpoints across the FINAL ordered entries so the
3031
3167
  // provider can reuse the stable folded prefix — not just the head. With a
3032
3168
  // single head marker the cache hit is ~2%; well-placed breakpoints take the
@@ -4367,11 +4503,61 @@ export class AutobiographicalStrategy {
4367
4503
  }
4368
4504
  /** Byte wall default: 20MB of base64 (API total-request cap is 32MB). */
4369
4505
  static DEFAULT_MAX_LIVE_IMAGE_BYTES = 20 * 1024 * 1024;
4506
+ /** Compression prompts carry head + recall frontier + raw chunk alongside
4507
+ * their images, so they get a tighter image budget than the live window. */
4508
+ static DEFAULT_MAX_COMPRESSION_IMAGE_BYTES = 12 * 1024 * 1024;
4370
4509
  /** Base64 payload size of an image block (0 for non-base64 sources). */
4371
4510
  static imageBlockBytes(b) {
4372
4511
  const src = b.source;
4373
4512
  return typeof src?.data === 'string' ? src.data.length : 0;
4374
4513
  }
4514
+ /**
4515
+ * Cap inline image bytes in a COMPRESSION prompt (2026-07-12). The main
4516
+ * window enforces `maxLiveImageBytes` through the strip policy; the
4517
+ * summarizer's raw-chunk replay had no such wall and leaned on membrane's
4518
+ * byte shed instead — which is a transport backstop, not a policy owner
4519
+ * (it fired at 27MB on a live merge). Keep images newest-first within the
4520
+ * budget; older ones become the same loud placeholder the window uses, so
4521
+ * the summarizer is told plainly that it is not seeing them.
4522
+ * Returns the number of images replaced.
4523
+ */
4524
+ capCompressionImageBytes(messages, capBytes) {
4525
+ if (capBytes <= 0)
4526
+ return 0;
4527
+ let kept = 0;
4528
+ let dropped = 0;
4529
+ // Recurse into tool_result content: an agent that drives a shell/plotter/
4530
+ // browser carries most of its image bytes NESTED in tool results, not as
4531
+ // top-level blocks. Capping only the top level left those untouched and
4532
+ // membrane's transport shed kept firing at 27MB (2026-07-12).
4533
+ const capBlocks = (blocks) => blocks.map((b) => {
4534
+ if (b.type === 'image') {
4535
+ const bytes = AutobiographicalStrategy.imageBlockBytes(b);
4536
+ if (kept + bytes <= capBytes) {
4537
+ kept += bytes;
4538
+ return b;
4539
+ }
4540
+ dropped++;
4541
+ return { type: 'text', text: AutobiographicalStrategy.IMAGE_PLACEHOLDER };
4542
+ }
4543
+ const nested = b.content;
4544
+ if (b.type === 'tool_result' && Array.isArray(nested)) {
4545
+ return { ...b, content: capBlocks(nested) };
4546
+ }
4547
+ return b;
4548
+ });
4549
+ for (let i = messages.length - 1; i >= 0; i--) {
4550
+ const m = messages[i];
4551
+ if (!Array.isArray(m.content))
4552
+ continue;
4553
+ m.content = capBlocks(m.content);
4554
+ }
4555
+ if (dropped > 0) {
4556
+ console.error(`[autobiographical] compression prompt: replaced ${dropped} older image(s) with placeholders ` +
4557
+ `to stay under the ${Math.round(capBytes / 1e6)}MB image-byte budget (kept ${Math.round(kept / 1e6)}MB, newest-first)`);
4558
+ }
4559
+ return dropped;
4560
+ }
4375
4561
  getRecentWindowStart(store) {
4376
4562
  const messages = store.getAll();
4377
4563
  const pse = this.postStripEstimates(store);