@animalabs/context-manager 0.5.3 → 0.5.5

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 (123) hide show
  1. package/dist/src/adaptive/index.d.ts +6 -0
  2. package/dist/src/adaptive/index.d.ts.map +1 -1
  3. package/dist/src/adaptive/index.js +8 -0
  4. package/dist/src/adaptive/index.js.map +1 -1
  5. package/dist/src/adaptive/kv-cache-sim.d.ts +128 -0
  6. package/dist/src/adaptive/kv-cache-sim.d.ts.map +1 -0
  7. package/dist/src/adaptive/kv-cache-sim.js +0 -0
  8. package/dist/src/adaptive/kv-cache-sim.js.map +1 -0
  9. package/dist/src/adaptive/kv-control.d.ts +166 -0
  10. package/dist/src/adaptive/kv-control.d.ts.map +1 -0
  11. package/dist/src/adaptive/kv-control.js +434 -0
  12. package/dist/src/adaptive/kv-control.js.map +1 -0
  13. package/dist/src/adaptive/kv-replay.d.ts +76 -0
  14. package/dist/src/adaptive/kv-replay.d.ts.map +1 -0
  15. package/dist/src/adaptive/kv-replay.js +175 -0
  16. package/dist/src/adaptive/kv-replay.js.map +1 -0
  17. package/dist/src/adaptive/picker.d.ts +13 -0
  18. package/dist/src/adaptive/picker.d.ts.map +1 -1
  19. package/dist/src/adaptive/picker.js.map +1 -1
  20. package/dist/src/adaptive/render-offsets.d.ts +61 -0
  21. package/dist/src/adaptive/render-offsets.d.ts.map +1 -0
  22. package/dist/src/adaptive/render-offsets.js +88 -0
  23. package/dist/src/adaptive/render-offsets.js.map +1 -0
  24. package/dist/src/adaptive/strategies/kv-stable.d.ts +48 -0
  25. package/dist/src/adaptive/strategies/kv-stable.d.ts.map +1 -0
  26. package/dist/src/adaptive/strategies/kv-stable.js +153 -0
  27. package/dist/src/adaptive/strategies/kv-stable.js.map +1 -0
  28. package/dist/src/adaptive/summary-tree.d.ts +98 -0
  29. package/dist/src/adaptive/summary-tree.d.ts.map +1 -0
  30. package/dist/src/adaptive/summary-tree.js +214 -0
  31. package/dist/src/adaptive/summary-tree.js.map +1 -0
  32. package/dist/src/context-log.d.ts.map +1 -1
  33. package/dist/src/context-log.js +7 -2
  34. package/dist/src/context-log.js.map +1 -1
  35. package/dist/src/context-manager.d.ts +10 -5
  36. package/dist/src/context-manager.d.ts.map +1 -1
  37. package/dist/src/context-manager.js +9 -0
  38. package/dist/src/context-manager.js.map +1 -1
  39. package/dist/src/index.d.ts +1 -0
  40. package/dist/src/index.d.ts.map +1 -1
  41. package/dist/src/index.js +2 -0
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/message-store.js +1 -1
  44. package/dist/src/message-store.js.map +1 -1
  45. package/dist/src/phase-channel.d.ts +13 -0
  46. package/dist/src/phase-channel.d.ts.map +1 -0
  47. package/dist/src/phase-channel.js +55 -0
  48. package/dist/src/phase-channel.js.map +1 -0
  49. package/dist/src/strategies/autobiographical.d.ts +107 -44
  50. package/dist/src/strategies/autobiographical.d.ts.map +1 -1
  51. package/dist/src/strategies/autobiographical.js +437 -230
  52. package/dist/src/strategies/autobiographical.js.map +1 -1
  53. package/dist/src/types/index.d.ts +1 -1
  54. package/dist/src/types/index.d.ts.map +1 -1
  55. package/dist/src/types/index.js.map +1 -1
  56. package/dist/src/types/strategy.d.ts +70 -7
  57. package/dist/src/types/strategy.d.ts.map +1 -1
  58. package/dist/src/types/strategy.js +2 -0
  59. package/dist/src/types/strategy.js.map +1 -1
  60. package/dist/test/adaptive/kv-cache-sim.test.d.ts +16 -0
  61. package/dist/test/adaptive/kv-cache-sim.test.d.ts.map +1 -0
  62. package/dist/test/adaptive/kv-cache-sim.test.js +173 -0
  63. package/dist/test/adaptive/kv-cache-sim.test.js.map +1 -0
  64. package/dist/test/adaptive/kv-control.test.d.ts +14 -0
  65. package/dist/test/adaptive/kv-control.test.d.ts.map +1 -0
  66. package/dist/test/adaptive/kv-control.test.js +130 -0
  67. package/dist/test/adaptive/kv-control.test.js.map +1 -0
  68. package/dist/test/adaptive/kv-replay.test.d.ts +15 -0
  69. package/dist/test/adaptive/kv-replay.test.d.ts.map +1 -0
  70. package/dist/test/adaptive/kv-replay.test.js +112 -0
  71. package/dist/test/adaptive/kv-replay.test.js.map +1 -0
  72. package/dist/test/adaptive/kv-stable-strategy.test.d.ts +10 -0
  73. package/dist/test/adaptive/kv-stable-strategy.test.d.ts.map +1 -0
  74. package/dist/test/adaptive/kv-stable-strategy.test.js +89 -0
  75. package/dist/test/adaptive/kv-stable-strategy.test.js.map +1 -0
  76. package/dist/test/adaptive/pin-at-level.test.d.ts +16 -0
  77. package/dist/test/adaptive/pin-at-level.test.d.ts.map +1 -0
  78. package/dist/test/adaptive/pin-at-level.test.js +133 -0
  79. package/dist/test/adaptive/pin-at-level.test.js.map +1 -0
  80. package/dist/test/adaptive/render-offsets.test.d.ts +11 -0
  81. package/dist/test/adaptive/render-offsets.test.d.ts.map +1 -0
  82. package/dist/test/adaptive/render-offsets.test.js +85 -0
  83. package/dist/test/adaptive/render-offsets.test.js.map +1 -0
  84. package/dist/test/adaptive/summary-tree.test.d.ts +5 -0
  85. package/dist/test/adaptive/summary-tree.test.d.ts.map +1 -0
  86. package/dist/test/adaptive/summary-tree.test.js +72 -0
  87. package/dist/test/adaptive/summary-tree.test.js.map +1 -0
  88. package/dist/test/image-strip-render-stats.test.d.ts +2 -0
  89. package/dist/test/image-strip-render-stats.test.d.ts.map +1 -0
  90. package/dist/test/image-strip-render-stats.test.js +130 -0
  91. package/dist/test/image-strip-render-stats.test.js.map +1 -0
  92. package/dist/test/image-stripping.test.d.ts +13 -0
  93. package/dist/test/image-stripping.test.d.ts.map +1 -0
  94. package/dist/test/image-stripping.test.js +104 -0
  95. package/dist/test/image-stripping.test.js.map +1 -0
  96. package/dist/test/pins.test.js +40 -0
  97. package/dist/test/pins.test.js.map +1 -1
  98. package/dist/test/render-stats.test.d.ts +2 -0
  99. package/dist/test/render-stats.test.d.ts.map +1 -0
  100. package/dist/test/render-stats.test.js +91 -0
  101. package/dist/test/render-stats.test.js.map +1 -0
  102. package/dist/test/speculation-cap.test.d.ts +9 -3
  103. package/dist/test/speculation-cap.test.d.ts.map +1 -1
  104. package/dist/test/speculation-cap.test.js +175 -3
  105. package/dist/test/speculation-cap.test.js.map +1 -1
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/package.json +2 -2
  108. package/src/adaptive/index.ts +48 -0
  109. package/src/adaptive/kv-cache-sim.ts +0 -0
  110. package/src/adaptive/kv-control.ts +574 -0
  111. package/src/adaptive/kv-replay.ts +238 -0
  112. package/src/adaptive/picker.ts +13 -0
  113. package/src/adaptive/render-offsets.ts +116 -0
  114. package/src/adaptive/strategies/kv-stable.ts +161 -0
  115. package/src/adaptive/summary-tree.ts +252 -0
  116. package/src/context-log.ts +7 -2
  117. package/src/context-manager.ts +13 -2
  118. package/src/index.ts +3 -0
  119. package/src/message-store.ts +1 -1
  120. package/src/phase-channel.ts +57 -0
  121. package/src/strategies/autobiographical.ts +453 -282
  122. package/src/types/index.ts +1 -0
  123. package/src/types/strategy.ts +71 -3
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Session replay for measuring REAL KV-cache stability.
3
+ *
4
+ * `replaySession` is the BASELINE: the production-default `FlatProfileStrategy`
5
+ * (level-equalizing) run through the real `Picker`, replayed over a growing
6
+ * session. Compare it against `replayControlled` (the KV-stable controller) to
7
+ * see what minimizing prefix churn actually buys. (Prior to the half-life/λ
8
+ * solver's removal this line ran `solveStableFrontier`; the λ value model was
9
+ * retired — see docs/kv-stable-context-control.md.)
10
+ *
11
+ * At each step it:
12
+ * 1. exposes only the chunks/summaries that existed by that point
13
+ * (a summary is available once its youngest covered message has happened —
14
+ * `SummaryNode.lastSequence <= now`; compression is bottom-up over time);
15
+ * 2. folds the middle to a FIXED token cap, carrying F_prev forward, with the
16
+ * newest `rawTailTokens` pinned raw (the flat zone);
17
+ * 3. READS a PERSISTENT provider cache (`CacheStore`, Anthropic ≤4
18
+ * breakpoints) for the longest live stored prefix still byte-identical to
19
+ * this render — entries written ANY prior turn — then WRITES this render's
20
+ * breakpoints back. A prefix frozen many turns ago is still a hit today.
21
+ *
22
+ * Pure and deterministic.
23
+ */
24
+ import { SummaryTree } from './summary-tree.js';
25
+ import { Picker } from './picker.js';
26
+ import { FlatProfileStrategy } from './strategies/flat-profile.js';
27
+ import { renderLayout } from './render-offsets.js';
28
+ import { placeMarkers, CacheStore } from './kv-cache-sim.js';
29
+ /**
30
+ * Replay a full session (the exported PickerInputs snapshot) as growing
31
+ * history, measuring per-step provider-cache hit under a fixed budget.
32
+ */
33
+ export function replaySession(fullInputs, opts) {
34
+ const markerCount = opts.markerCount ?? 4;
35
+ const targetSteps = Math.max(1, opts.targetSteps ?? 120);
36
+ // Availability threshold per summary: youngest covered leaf sequence.
37
+ // Built once over the full tree; a summary is usable at `now` iff <= now.
38
+ const fullTree = new SummaryTree(fullInputs);
39
+ const availableAt = new Map();
40
+ for (const s of fullTree.allSummaries())
41
+ availableAt.set(s.id, s.lastSequence);
42
+ const allChunks = [...fullInputs.chunks].sort((a, b) => a.sequence - b.sequence);
43
+ const seqValues = allChunks.map((c) => c.sequence);
44
+ // Down-sample to ~targetSteps growth points (always include the final state).
45
+ const stride = Math.max(1, Math.ceil(seqValues.length / targetSteps));
46
+ const stepSeqs = [];
47
+ for (let i = 0; i < seqValues.length; i += stride)
48
+ stepSeqs.push(seqValues[i]);
49
+ const last = seqValues[seqValues.length - 1];
50
+ if (stepSeqs[stepSeqs.length - 1] !== last)
51
+ stepSeqs.push(last);
52
+ const steps = [];
53
+ let fprev = new Map();
54
+ const cache = new CacheStore({ ttlSteps: opts.cacheTtlSteps });
55
+ let totalRendered = 0;
56
+ let totalRecomputed = 0;
57
+ for (const now of stepSeqs) {
58
+ const visiblePlain = allChunks.filter((c) => c.sequence <= now);
59
+ const tailIds = rawTailSet(visiblePlain, opts.rawTailTokens ?? 0);
60
+ // Pin the flat zone so flat-profile won't fold it AND it renders as
61
+ // individual raw units — not collapsed into one fixed-key 'tail' unit,
62
+ // which would falsely match across turns in the cache.
63
+ const visible = visiblePlain.map((c) => (tailIds.has(c.id) ? { ...c, pinned: true } : c));
64
+ const summaries = new Map();
65
+ const recallPairTokens = new Map();
66
+ for (const [id, s] of fullInputs.summaries) {
67
+ const lastSeq = availableAt.get(id);
68
+ if (lastSeq !== undefined && lastSeq >= 0 && lastSeq <= now) {
69
+ summaries.set(id, s);
70
+ const rp = fullInputs.recallPairTokens?.get(id);
71
+ if (rp !== undefined)
72
+ recallPairTokens.set(id, rp);
73
+ }
74
+ }
75
+ const inputs = {
76
+ chunks: visible,
77
+ summaries,
78
+ recallPairTokens,
79
+ headTokens: 0,
80
+ tailTokens: 0,
81
+ headChunkIds: new Set(),
82
+ tailChunkIds: new Set(),
83
+ };
84
+ const tree = new SummaryTree(inputs);
85
+ // Baseline policy: the production default, FlatProfileStrategy, via the real
86
+ // Picker — folds the middle to the budget, leaving the pinned flat zone raw.
87
+ const result = new Picker(new FlatProfileStrategy()).run(inputs, {
88
+ totalBudget: opts.budgetTokens,
89
+ targetBudget: opts.budgetTokens,
90
+ slack: 0,
91
+ });
92
+ const resolutions = result.finalResolutions;
93
+ const layout = renderLayout(inputs, tree, resolutions);
94
+ // READ the persistent cache: longest live stored prefix that still matches.
95
+ const hit = cache.read(layout);
96
+ const recomputedTokens = layout.totalTokens - hit.cachedTokens;
97
+ // WRITE this render's breakpoints back (hinting at the earliest change vs
98
+ // F_prev), then advance the turn clock so future reads see this write.
99
+ const boundarySeq = earliestChangedSequence(fprev, resolutions, visible);
100
+ const boundaryUnitIndex = unitsBeforeSequence(layout, tree, boundarySeq);
101
+ cache.write(layout, placeMarkers(layout, markerCount, { boundaryUnitIndex }));
102
+ cache.tick();
103
+ let deepestLevel = 0;
104
+ for (const lvl of resolutions.values())
105
+ if (lvl > deepestLevel)
106
+ deepestLevel = lvl;
107
+ steps.push({
108
+ now,
109
+ numChunks: visible.length,
110
+ renderedTokens: layout.totalTokens,
111
+ cachedTokens: hit.cachedTokens,
112
+ recomputedTokens,
113
+ hitRate: layout.totalTokens > 0 ? hit.cachedTokens / layout.totalTokens : 0,
114
+ boundarySequence: boundarySeq,
115
+ overBudget: result.finalTokens > opts.budgetTokens,
116
+ deepestLevel,
117
+ cacheAgeSteps: hit.ageSteps,
118
+ });
119
+ totalRendered += layout.totalTokens;
120
+ totalRecomputed += recomputedTokens;
121
+ fprev = resolutions;
122
+ }
123
+ return {
124
+ steps,
125
+ totalRendered,
126
+ totalRecomputed,
127
+ overallHitRate: totalRendered > 0 ? (totalRendered - totalRecomputed) / totalRendered : 0,
128
+ };
129
+ }
130
+ // ---------------------------------------------------------------------------
131
+ /** Earliest source sequence whose resolution changed `prev → next` (the marker
132
+ * hint / churn boundary). MAX_SAFE_INTEGER when nothing changed. */
133
+ function earliestChangedSequence(prev, next, ordered) {
134
+ for (const c of ordered) {
135
+ if ((prev.get(c.id) ?? 0) !== (next.get(c.id) ?? 0))
136
+ return c.sequence;
137
+ }
138
+ return Number.MAX_SAFE_INTEGER;
139
+ }
140
+ /** Chunk ids within the newest `tailTokens` of raw content (kept non-foldable). */
141
+ function rawTailSet(orderedChunks, tailTokens) {
142
+ const s = new Set();
143
+ if (tailTokens <= 0)
144
+ return s;
145
+ let used = 0;
146
+ for (let i = orderedChunks.length - 1; i >= 0; i--) {
147
+ s.add(orderedChunks[i].id);
148
+ used += orderedChunks[i].rawTokens;
149
+ if (used >= tailTokens)
150
+ break;
151
+ }
152
+ return s;
153
+ }
154
+ /** Number of leading rendered units whose start sequence is < `boundary` (the
155
+ * frozen-prefix length → a natural cache breakpoint). */
156
+ function unitsBeforeSequence(layout, tree, boundary) {
157
+ let count = 0;
158
+ for (const u of layout.units) {
159
+ if (unitStartSeq(u, tree) < boundary)
160
+ count++;
161
+ else
162
+ break;
163
+ }
164
+ return count;
165
+ }
166
+ function unitStartSeq(u, tree) {
167
+ if (u.kind === 'raw')
168
+ return tree.leaf(u.key)?.sequence ?? 0;
169
+ if (u.kind === 'recall')
170
+ return tree.summary(u.key)?.firstSequence ?? 0;
171
+ if (u.kind === 'head')
172
+ return -1;
173
+ return Number.MAX_SAFE_INTEGER; // tail
174
+ }
175
+ //# sourceMappingURL=kv-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-replay.js","sourceRoot":"","sources":["../../../src/adaptive/kv-replay.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,19 @@ export interface PickerChunk {
54
54
  lockedByAgent: boolean;
55
55
  bodyGroupId?: string;
56
56
  pinned: boolean;
57
+ /**
58
+ * V2 dynamic pin — fix this chunk at EXACTLY this fold level (0 = raw). Set
59
+ * from a `ProtectedRange.level`. Such a chunk is NOT `pinned` (the controller
60
+ * must be able to move it to its level), but the KV-stable controller holds it
61
+ * there and never folds/un-folds it. Ignored by non-kv-stable strategies.
62
+ */
63
+ pinLevel?: number;
64
+ /**
65
+ * V2 dynamic pin — this chunk may fold no deeper than this level (hard cap).
66
+ * Set from a `ProtectedRange.maxLevel`. Honored only by the KV-stable
67
+ * controller (in normal and emergency shedding). Ignored elsewhere.
68
+ */
69
+ pinMaxLevel?: number;
57
70
  /**
58
71
  * The L1 summary covering this chunk, if any. Higher levels are derived
59
72
  * by walking parentId pointers in the summary tree.
@@ -1 +1 @@
1
- {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/adaptive/picker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACb,MAAM,EAEN,OAAO,EACP,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;gBAEU,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;KAC7C;CAcF;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,oCAAoC;IACpC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAChD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClD,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,6DAA6D;IAC7D,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAuBD,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEtD,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY;CA0C/D"}
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/adaptive/picker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACb,MAAM,EAEN,OAAO,EACP,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;gBAEU,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;KAC7C;CAcF;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,oCAAoC;IACpC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAChD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClD,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,6DAA6D;IAC7D,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAuBD,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEtD,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY;CA0C/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"picker.js","sourceRoot":"","sources":["../../../src/adaptive/picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker.js","sourceRoot":"","sources":["../../../src/adaptive/picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Rendered-unit / offset accounting for the adaptive compiled context.
3
+ *
4
+ * `render.ts` reconstructs content byte-faithfully but exposes no token
5
+ * positions. The V2 best-fit KV term needs them: KV cost is governed by the
6
+ * EARLIEST position at which a new frontier diverges from the previous one —
7
+ * the provider caches the longest byte-identical prefix, so every token after
8
+ * the first divergence is recomputed (`docs/best-fit-frontier-resolution.md`
9
+ * §4, §4.1).
10
+ *
11
+ * `renderLayout` produces the ordered sequence of rendered units (head,
12
+ * per-chunk raw/recall in source order, tail) with cumulative token offsets,
13
+ * matching `MutableFoldingState.computeTokens` exactly:
14
+ * - head/tail are fixed blocks;
15
+ * - pinned chunks render raw (L0) regardless of resolution;
16
+ * - a folded chunk emits its L_k ancestor's recall pair, once per distinct
17
+ * ancestor (siblings share one recall pair);
18
+ * - a resolution whose ancestor summary is missing falls back to raw.
19
+ *
20
+ * Pure and deterministic.
21
+ */
22
+ import type { ChunkId } from './folding-strategy.js';
23
+ import type { PickerInputs } from './picker.js';
24
+ import type { SummaryTree } from './summary-tree.js';
25
+ /** Resolution map: chunkId → display level (0 = raw). */
26
+ export type Frontier = ReadonlyMap<ChunkId, number>;
27
+ export interface RenderedUnit {
28
+ kind: 'head' | 'raw' | 'recall' | 'tail';
29
+ /**
30
+ * Stable identity for prefix comparison. Two units are byte-identical iff
31
+ * they share (kind, key): 'head'/'tail' for the fixed blocks, the chunk id
32
+ * for a raw shard, the summary id for a recall pair.
33
+ */
34
+ key: string;
35
+ tokens: number;
36
+ /** Cumulative tokens BEFORE this unit (its start offset in the prefix). */
37
+ offset: number;
38
+ }
39
+ export interface RenderLayout {
40
+ units: RenderedUnit[];
41
+ totalTokens: number;
42
+ }
43
+ /**
44
+ * Build the ordered rendered-unit layout for a frontier. `totalTokens` equals
45
+ * `MutableFoldingState.computeTokens` for the same resolutions.
46
+ */
47
+ export declare function renderLayout(inputs: PickerInputs, tree: SummaryTree, frontier: Frontier): RenderLayout;
48
+ /**
49
+ * Earliest index at which two unit sequences differ (by kind+key).
50
+ * Returns -1 when the sequences are identical; otherwise the first differing
51
+ * index (which may be `min(len)` when one is a strict prefix of the other).
52
+ */
53
+ export declare function earliestDivergenceIndex(a: RenderedUnit[], b: RenderedUnit[]): number;
54
+ /**
55
+ * KV cost of moving from `prev` to `next`: the number of tokens in `next` that
56
+ * must be recomputed — everything from the earliest divergence onward. 0 when
57
+ * `next`'s units are an exact prefix of (or identical to) `prev`'s, since the
58
+ * whole of `next` is then a cached prefix.
59
+ */
60
+ export declare function kvCost(prev: RenderLayout, next: RenderLayout): number;
61
+ //# sourceMappingURL=render-offsets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-offsets.d.ts","sourceRoot":"","sources":["../../../src/adaptive/render-offsets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,QAAQ,GACjB,YAAY,CAkCd;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,CAMpF;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAKrE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Rendered-unit / offset accounting for the adaptive compiled context.
3
+ *
4
+ * `render.ts` reconstructs content byte-faithfully but exposes no token
5
+ * positions. The V2 best-fit KV term needs them: KV cost is governed by the
6
+ * EARLIEST position at which a new frontier diverges from the previous one —
7
+ * the provider caches the longest byte-identical prefix, so every token after
8
+ * the first divergence is recomputed (`docs/best-fit-frontier-resolution.md`
9
+ * §4, §4.1).
10
+ *
11
+ * `renderLayout` produces the ordered sequence of rendered units (head,
12
+ * per-chunk raw/recall in source order, tail) with cumulative token offsets,
13
+ * matching `MutableFoldingState.computeTokens` exactly:
14
+ * - head/tail are fixed blocks;
15
+ * - pinned chunks render raw (L0) regardless of resolution;
16
+ * - a folded chunk emits its L_k ancestor's recall pair, once per distinct
17
+ * ancestor (siblings share one recall pair);
18
+ * - a resolution whose ancestor summary is missing falls back to raw.
19
+ *
20
+ * Pure and deterministic.
21
+ */
22
+ /**
23
+ * Build the ordered rendered-unit layout for a frontier. `totalTokens` equals
24
+ * `MutableFoldingState.computeTokens` for the same resolutions.
25
+ */
26
+ export function renderLayout(inputs, tree, frontier) {
27
+ const units = [];
28
+ let offset = 0;
29
+ const push = (kind, key, tokens) => {
30
+ units.push({ kind, key, tokens, offset });
31
+ offset += tokens;
32
+ };
33
+ if (inputs.headTokens > 0)
34
+ push('head', 'head', inputs.headTokens);
35
+ const ordered = [...inputs.chunks].sort((a, b) => a.sequence - b.sequence);
36
+ const renderedSummaries = new Set();
37
+ for (const c of ordered) {
38
+ if (inputs.headChunkIds.has(c.id) || inputs.tailChunkIds.has(c.id))
39
+ continue;
40
+ const effective = c.pinned ? 0 : frontier.get(c.id) ?? 0;
41
+ if (effective === 0) {
42
+ push('raw', c.id, c.rawTokens);
43
+ continue;
44
+ }
45
+ const ancestor = tree.ancestorAt(c.id, effective);
46
+ if (!ancestor) {
47
+ // Resolution set but summary missing — render raw (renderer makes the
48
+ // same call). Matches computeTokens' fallback.
49
+ push('raw', c.id, c.rawTokens);
50
+ continue;
51
+ }
52
+ if (renderedSummaries.has(ancestor.id))
53
+ continue; // sibling shares the pair
54
+ renderedSummaries.add(ancestor.id);
55
+ push('recall', ancestor.id, ancestor.recallTokens);
56
+ }
57
+ if (inputs.tailTokens > 0)
58
+ push('tail', 'tail', inputs.tailTokens);
59
+ return { units, totalTokens: offset };
60
+ }
61
+ /**
62
+ * Earliest index at which two unit sequences differ (by kind+key).
63
+ * Returns -1 when the sequences are identical; otherwise the first differing
64
+ * index (which may be `min(len)` when one is a strict prefix of the other).
65
+ */
66
+ export function earliestDivergenceIndex(a, b) {
67
+ const n = Math.min(a.length, b.length);
68
+ for (let i = 0; i < n; i++) {
69
+ if (a[i].kind !== b[i].kind || a[i].key !== b[i].key)
70
+ return i;
71
+ }
72
+ return a.length === b.length ? -1 : n;
73
+ }
74
+ /**
75
+ * KV cost of moving from `prev` to `next`: the number of tokens in `next` that
76
+ * must be recomputed — everything from the earliest divergence onward. 0 when
77
+ * `next`'s units are an exact prefix of (or identical to) `prev`'s, since the
78
+ * whole of `next` is then a cached prefix.
79
+ */
80
+ export function kvCost(prev, next) {
81
+ const d = earliestDivergenceIndex(prev.units, next.units);
82
+ if (d === -1)
83
+ return 0; // identical
84
+ if (d >= next.units.length)
85
+ return 0; // next is a prefix of prev → fully cached
86
+ return next.totalTokens - next.units[d].offset;
87
+ }
88
+ //# sourceMappingURL=render-offsets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-offsets.js","sourceRoot":"","sources":["../../../src/adaptive/render-offsets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * KvStableStrategy — the KV-stable context controller plugged into the existing
3
+ * picker (see `docs/kv-stable-context-control.md`).
4
+ *
5
+ * Same "solve-once-then-walk" bridge as `BestFitStrategy`: on the first
6
+ * `selectNextFold` it computes a target frontier with `planControlledFrontier`
7
+ * (the *same* policy the replay harness measures), memoizes it, then emits one
8
+ * `raise`/`lower` op per call to walk the live state toward it, returning `null`
9
+ * once reached. The picker already applies raise/lower — no picker change.
10
+ *
11
+ * Unlike `BestFitStrategy` (which maximizes value − λ·KVcost over a half-life
12
+ * recency model), this minimizes real prefix churn directly: it holds the flat
13
+ * zone (head/tail/pinned) raw, never folds locked chunks, and sheds the foldable
14
+ * middle oldest-first/leveled under a per-turn divergence **reach cap** (the
15
+ * perturbation cap P), bounded by per-chunk log-age saliency caps, yielding the
16
+ * reach cap only as far as needed to stay under the hard wall (`totalBudget`).
17
+ * No λ, no recency half-life.
18
+ *
19
+ * Like `BestFitStrategy`, it does not emit `produce` ops — deeper folding than
20
+ * has been produced is the speculative pre-producer's job; the controller only
21
+ * targets levels whose summaries already exist. Deterministic.
22
+ */
23
+ import type { FoldingStrategy, FoldingState, FoldingBudget, FoldOp, ChunkId } from '../folding-strategy.js';
24
+ import type { PickerInputs } from '../picker.js';
25
+ export interface KvStableOptions {
26
+ /** Per-turn divergence reach — the structural perturbation cap P, in tokens.
27
+ * Smaller = gentler per-turn KV churn (shallow divergence) but less efficient
28
+ * compression. Exceeded only to stay under the hard wall. Default: the hard
29
+ * budget (effectively unbounded within the window). */
30
+ reachTokens?: number;
31
+ /** Base-k summary grouping (matches the strategy's mergeThreshold). Default 6. */
32
+ mergeThreshold?: number;
33
+ }
34
+ export declare class KvStableStrategy implements FoldingStrategy {
35
+ readonly name = "kv-stable";
36
+ private readonly inputs;
37
+ private readonly opts;
38
+ private readonly fPrev;
39
+ private target;
40
+ constructor(inputs: PickerInputs, opts?: KvStableOptions);
41
+ selectNextFold(state: FoldingState, budget: FoldingBudget): FoldOp | null;
42
+ /** Target frontier this run is walking toward (null before the first call). */
43
+ targetFrontier(): ReadonlyMap<ChunkId, number> | null;
44
+ private solve;
45
+ /** Emit one op moving the live state toward the target frontier. */
46
+ private nextOp;
47
+ }
48
+ //# sourceMappingURL=kv-stable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-stable.d.ts","sourceRoot":"","sources":["../../../../src/adaptive/strategies/kv-stable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,MAAM,EACN,OAAO,EACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,MAAM,WAAW,eAAe;IAC9B;;;4DAGwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,eAAe;IAE5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,MAAM,CAAqC;gBAEvC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,eAAoB;IAM5D,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;IAKzE,+EAA+E;IAC/E,cAAc,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAIrD,OAAO,CAAC,KAAK;IAwEb,oEAAoE;IACpE,OAAO,CAAC,MAAM;CAmBf"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * KvStableStrategy — the KV-stable context controller plugged into the existing
3
+ * picker (see `docs/kv-stable-context-control.md`).
4
+ *
5
+ * Same "solve-once-then-walk" bridge as `BestFitStrategy`: on the first
6
+ * `selectNextFold` it computes a target frontier with `planControlledFrontier`
7
+ * (the *same* policy the replay harness measures), memoizes it, then emits one
8
+ * `raise`/`lower` op per call to walk the live state toward it, returning `null`
9
+ * once reached. The picker already applies raise/lower — no picker change.
10
+ *
11
+ * Unlike `BestFitStrategy` (which maximizes value − λ·KVcost over a half-life
12
+ * recency model), this minimizes real prefix churn directly: it holds the flat
13
+ * zone (head/tail/pinned) raw, never folds locked chunks, and sheds the foldable
14
+ * middle oldest-first/leveled under a per-turn divergence **reach cap** (the
15
+ * perturbation cap P), bounded by per-chunk log-age saliency caps, yielding the
16
+ * reach cap only as far as needed to stay under the hard wall (`totalBudget`).
17
+ * No λ, no recency half-life.
18
+ *
19
+ * Like `BestFitStrategy`, it does not emit `produce` ops — deeper folding than
20
+ * has been produced is the speculative pre-producer's job; the controller only
21
+ * targets levels whose summaries already exist. Deterministic.
22
+ */
23
+ import { SummaryTree } from '../summary-tree.js';
24
+ import { planControlledFrontier } from '../kv-control.js';
25
+ export class KvStableStrategy {
26
+ name = 'kv-stable';
27
+ inputs;
28
+ opts;
29
+ fPrev;
30
+ target = null;
31
+ constructor(inputs, opts = {}) {
32
+ this.inputs = inputs;
33
+ this.opts = opts;
34
+ this.fPrev = new Map(inputs.chunks.map((c) => [c.id, c.currentResolution]));
35
+ }
36
+ selectNextFold(state, budget) {
37
+ if (!this.target)
38
+ this.target = this.solve(budget);
39
+ return this.nextOp(state);
40
+ }
41
+ /** Target frontier this run is walking toward (null before the first call). */
42
+ targetFrontier() {
43
+ return this.target;
44
+ }
45
+ solve(budget) {
46
+ const tree = new SummaryTree(this.inputs);
47
+ // Flat zone (forced raw, never folded): head, tail, classic pins. Frozen
48
+ // (kept at their carried resolution, never folded): locked. V2 dynamic pins
49
+ // (`pinLevel` / `pinMaxLevel`) are honored as a fixed level or a hard fold-
50
+ // depth cap — see `planControlledFrontier`.
51
+ const rawZone = new Set();
52
+ const frozen = new Set();
53
+ const fixedLevels = new Map();
54
+ const pinCaps = new Map();
55
+ const fixedPins = [];
56
+ let now = 0;
57
+ for (const c of this.inputs.chunks) {
58
+ if (c.sequence > now)
59
+ now = c.sequence;
60
+ if (this.inputs.headChunkIds.has(c.id) || this.inputs.tailChunkIds.has(c.id) || c.pinned) {
61
+ rawZone.add(c.id);
62
+ }
63
+ else if (c.pinLevel !== undefined) {
64
+ // Pin-at-level-k: fix exactly at k (0 = raw). k=0 is equivalent to a
65
+ // classic raw pin, so route it through the raw zone; k>0 is resolved to
66
+ // its whole L_k node below (group-consistent — see the loop after).
67
+ if (c.pinLevel <= 0)
68
+ rawZone.add(c.id);
69
+ else
70
+ fixedPins.push({ id: c.id, level: c.pinLevel });
71
+ }
72
+ else if (c.pinMaxLevel !== undefined) {
73
+ // Pin-max-level: a hard fold-depth cap. maxLevel 0 ≡ classic raw pin.
74
+ if (c.pinMaxLevel <= 0)
75
+ rawZone.add(c.id);
76
+ else
77
+ pinCaps.set(c.id, c.pinMaxLevel);
78
+ if (c.lockedByAgent)
79
+ frozen.add(c.id);
80
+ }
81
+ else if (c.lockedByAgent) {
82
+ frozen.add(c.id);
83
+ }
84
+ }
85
+ // Group-consistency for pin-at-level-k: an L_k recall pair is atomic over
86
+ // its whole covered range, so "cut through the L_k node" (design §7) fixes
87
+ // EVERY leaf under that node at k — not just the addressed chunk. Fixing a
88
+ // single sub-chunk while its siblings render raw is an unrenderable (and
89
+ // non-converging) frontier. Clamp k to the deepest produced level for the
90
+ // chunk; if none exists, fall back to fixing just the chunk (the controller
91
+ // clamps it further). Skip leaves already forced raw (head/tail/classic pin).
92
+ for (const { id, level } of fixedPins) {
93
+ const eff = Math.min(level, tree.maxLevel(id));
94
+ if (eff <= 0) {
95
+ rawZone.add(id);
96
+ continue;
97
+ }
98
+ const node = tree.ancestorAt(id, eff);
99
+ if (!node) {
100
+ fixedLevels.set(id, eff);
101
+ continue;
102
+ }
103
+ for (const leaf of node.leafChunkIds) {
104
+ if (rawZone.has(leaf))
105
+ continue;
106
+ // Finest requirement wins if two pins overlap a leaf.
107
+ const prev = fixedLevels.get(leaf);
108
+ fixedLevels.set(leaf, prev === undefined ? eff : Math.min(prev, eff));
109
+ }
110
+ }
111
+ return planControlledFrontier(this.inputs, tree, {
112
+ previous: this.fPrev,
113
+ // Bidirectional within the slack band: fold when over the hard budget,
114
+ // un-fold to use headroom when under the soft target. Both reach-bounded;
115
+ // [targetBudget, totalBudget] is the quiet dead band.
116
+ foldAtTokens: budget.totalBudget,
117
+ expandAtTokens: budget.targetBudget,
118
+ targetTokens: budget.targetBudget,
119
+ windowTokens: budget.totalBudget,
120
+ reachTokens: this.opts.reachTokens,
121
+ rawZone,
122
+ frozen,
123
+ fixedLevels,
124
+ pinCaps,
125
+ now,
126
+ mergeThreshold: this.opts.mergeThreshold,
127
+ }).resolutions;
128
+ }
129
+ /** Emit one op moving the live state toward the target frontier. */
130
+ nextOp(state) {
131
+ const target = this.target;
132
+ for (const c of state.chunks()) {
133
+ if (c.inHead || c.inTail || c.pinned || c.lockedByAgent)
134
+ continue;
135
+ const cur = c.currentResolution;
136
+ const tgt = target.get(c.id) ?? 0;
137
+ if (cur === tgt)
138
+ continue;
139
+ if (cur < tgt) {
140
+ const summary = c.ancestorAt(tgt);
141
+ if (!summary)
142
+ continue; // unrealizable target (summary not produced) — skip
143
+ return { kind: 'raise', groupRoot: summary.id };
144
+ }
145
+ const summary = c.ancestorAt(cur);
146
+ if (!summary)
147
+ continue;
148
+ return { kind: 'lower', groupRoot: summary.id };
149
+ }
150
+ return null;
151
+ }
152
+ }
153
+ //# sourceMappingURL=kv-stable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-stable.js","sourceRoot":"","sources":["../../../../src/adaptive/strategies/kv-stable.ts"],"names":[],"mappings":"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"}