@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.
- package/dist/src/strategies/autobiographical.d.ts +16 -0
- package/dist/src/strategies/autobiographical.d.ts.map +1 -1
- package/dist/src/strategies/autobiographical.js +217 -31
- package/dist/src/strategies/autobiographical.js.map +1 -1
- package/dist/src/types/strategy.d.ts +10 -3
- package/dist/src/types/strategy.d.ts.map +1 -1
- package/dist/src/types/strategy.js.map +1 -1
- package/dist/test/adaptive/hard-fail.test.js +81 -0
- package/dist/test/adaptive/hard-fail.test.js.map +1 -1
- package/dist/test/merge-contiguity.test.js +10 -2
- package/dist/test/merge-contiguity.test.js.map +1 -1
- package/dist/test/strategy-persistence.test.js +41 -0
- package/dist/test/strategy-persistence.test.js.map +1 -1
- package/dist/test/summary-log-consistency.test.d.ts +5 -6
- package/dist/test/summary-log-consistency.test.d.ts.map +1 -1
- package/dist/test/summary-log-consistency.test.js +15 -10
- package/dist/test/summary-log-consistency.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/strategies/autobiographical.ts +245 -30
- package/src/types/strategy.ts +11 -3
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
2154
|
+
if (run.length > 0)
|
|
2155
|
+
runs.push(run);
|
|
2156
|
+
if (runs.length === 0)
|
|
2097
2157
|
return null;
|
|
2098
|
-
|
|
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
|
|
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
|
|
2787
|
-
//
|
|
2788
|
-
//
|
|
2789
|
-
|
|
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 >
|
|
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 >
|
|
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 >
|
|
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 >
|
|
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 >
|
|
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
|
|
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);
|