@strands-agents/sdk 1.16.0 → 1.18.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 (192) hide show
  1. package/README.md +1 -1
  2. package/dist/src/agent/agent-metadata.d.ts +12 -0
  3. package/dist/src/agent/agent-metadata.d.ts.map +1 -0
  4. package/dist/src/agent/agent-metadata.js +2 -0
  5. package/dist/src/agent/agent-metadata.js.map +1 -0
  6. package/dist/src/agent/agent.d.ts +11 -28
  7. package/dist/src/agent/agent.d.ts.map +1 -1
  8. package/dist/src/agent/agent.js +21 -54
  9. package/dist/src/agent/agent.js.map +1 -1
  10. package/dist/src/context-manager/context-manager.d.ts +47 -5
  11. package/dist/src/context-manager/context-manager.d.ts.map +1 -1
  12. package/dist/src/context-manager/context-manager.js +114 -16
  13. package/dist/src/context-manager/context-manager.js.map +1 -1
  14. package/dist/src/context-manager/methods/summarize.d.ts +8 -2
  15. package/dist/src/context-manager/methods/summarize.d.ts.map +1 -1
  16. package/dist/src/context-manager/methods/summarize.js +9 -2
  17. package/dist/src/context-manager/methods/summarize.js.map +1 -1
  18. package/dist/src/context-manager/methods/truncate.d.ts +2 -2
  19. package/dist/src/context-manager/methods/truncate.d.ts.map +1 -1
  20. package/dist/src/context-manager/methods/truncate.js +0 -2
  21. package/dist/src/context-manager/methods/truncate.js.map +1 -1
  22. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +2 -2
  23. package/dist/src/context-manager/presets.d.ts +42 -0
  24. package/dist/src/context-manager/presets.d.ts.map +1 -0
  25. package/dist/src/context-manager/presets.js +71 -0
  26. package/dist/src/context-manager/presets.js.map +1 -0
  27. package/dist/src/context-manager/retrieval-tool.d.ts +29 -0
  28. package/dist/src/context-manager/retrieval-tool.d.ts.map +1 -0
  29. package/dist/src/context-manager/retrieval-tool.js +116 -0
  30. package/dist/src/context-manager/retrieval-tool.js.map +1 -0
  31. package/dist/src/context-manager/stash.d.ts +107 -0
  32. package/dist/src/context-manager/stash.d.ts.map +1 -0
  33. package/dist/src/context-manager/stash.js +189 -0
  34. package/dist/src/context-manager/stash.js.map +1 -0
  35. package/dist/src/context-manager/strategies/offload/base.d.ts +23 -13
  36. package/dist/src/context-manager/strategies/offload/base.d.ts.map +1 -1
  37. package/dist/src/context-manager/strategies/offload/base.js +67 -25
  38. package/dist/src/context-manager/strategies/offload/base.js.map +1 -1
  39. package/dist/src/context-manager/strategies/offload/drop.d.ts +2 -2
  40. package/dist/src/context-manager/strategies/offload/drop.d.ts.map +1 -1
  41. package/dist/src/context-manager/strategies/offload/drop.js +6 -4
  42. package/dist/src/context-manager/strategies/offload/drop.js.map +1 -1
  43. package/dist/src/context-manager/strategies/offload/index.d.ts +1 -1
  44. package/dist/src/context-manager/strategies/offload/index.js +1 -1
  45. package/dist/src/context-manager/strategies/offload/summarize.d.ts +2 -2
  46. package/dist/src/context-manager/strategies/offload/summarize.d.ts.map +1 -1
  47. package/dist/src/context-manager/strategies/offload/summarize.js +22 -25
  48. package/dist/src/context-manager/strategies/offload/summarize.js.map +1 -1
  49. package/dist/src/context-manager/strategies/offload/truncate.d.ts +2 -2
  50. package/dist/src/context-manager/strategies/offload/truncate.d.ts.map +1 -1
  51. package/dist/src/context-manager/strategies/offload/truncate.js +34 -12
  52. package/dist/src/context-manager/strategies/offload/truncate.js.map +1 -1
  53. package/dist/src/context-manager/types.d.ts +46 -2
  54. package/dist/src/context-manager/types.d.ts.map +1 -1
  55. package/dist/src/experimental/index.d.ts +6 -0
  56. package/dist/src/experimental/index.d.ts.map +1 -1
  57. package/dist/src/experimental/index.js +3 -0
  58. package/dist/src/experimental/index.js.map +1 -1
  59. package/dist/src/index.d.ts +11 -3
  60. package/dist/src/index.d.ts.map +1 -1
  61. package/dist/src/index.js +2 -1
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/mcp/client.d.ts +3 -2
  64. package/dist/src/mcp/client.d.ts.map +1 -1
  65. package/dist/src/mcp/client.js +3 -2
  66. package/dist/src/mcp/client.js.map +1 -1
  67. package/dist/src/mcp/config.d.ts +11 -1
  68. package/dist/src/mcp/config.d.ts.map +1 -1
  69. package/dist/src/mcp/config.js.map +1 -1
  70. package/dist/src/mcp/config.node.d.ts +3 -2
  71. package/dist/src/mcp/config.node.d.ts.map +1 -1
  72. package/dist/src/mcp/config.node.js +6 -3
  73. package/dist/src/mcp/config.node.js.map +1 -1
  74. package/dist/src/mcp/index.d.ts +1 -1
  75. package/dist/src/mcp/index.d.ts.map +1 -1
  76. package/dist/src/models/defaults.d.ts.map +1 -1
  77. package/dist/src/models/defaults.js +1 -0
  78. package/dist/src/models/defaults.js.map +1 -1
  79. package/dist/src/models/model.d.ts +12 -2
  80. package/dist/src/models/model.d.ts.map +1 -1
  81. package/dist/src/models/model.js.map +1 -1
  82. package/dist/src/models/openai/cache.d.ts +38 -2
  83. package/dist/src/models/openai/cache.d.ts.map +1 -1
  84. package/dist/src/models/openai/cache.js +64 -14
  85. package/dist/src/models/openai/cache.js.map +1 -1
  86. package/dist/src/models/openai/chat-adapter.d.ts.map +1 -1
  87. package/dist/src/models/openai/chat-adapter.js +10 -4
  88. package/dist/src/models/openai/chat-adapter.js.map +1 -1
  89. package/dist/src/models/openai/mantle.js +1 -1
  90. package/dist/src/models/openai/mantle.js.map +1 -1
  91. package/dist/src/models/openai/responses-adapter.js +1 -1
  92. package/dist/src/models/openai/responses-adapter.js.map +1 -1
  93. package/dist/src/models/routing/classifier-strategy.d.ts +87 -0
  94. package/dist/src/models/routing/classifier-strategy.d.ts.map +1 -0
  95. package/dist/src/models/routing/classifier-strategy.js +285 -0
  96. package/dist/src/models/routing/classifier-strategy.js.map +1 -0
  97. package/dist/src/models/routing/index.d.ts +2 -0
  98. package/dist/src/models/routing/index.d.ts.map +1 -1
  99. package/dist/src/models/routing/index.js +1 -0
  100. package/dist/src/models/routing/index.js.map +1 -1
  101. package/dist/src/models/routing/router.d.ts +14 -2
  102. package/dist/src/models/routing/router.d.ts.map +1 -1
  103. package/dist/src/models/routing/router.js +43 -8
  104. package/dist/src/models/routing/router.js.map +1 -1
  105. package/dist/src/models/vercel.d.ts +9 -1
  106. package/dist/src/models/vercel.d.ts.map +1 -1
  107. package/dist/src/models/vercel.js +248 -7
  108. package/dist/src/models/vercel.js.map +1 -1
  109. package/dist/src/plugins/plugin.d.ts +1 -1
  110. package/dist/src/plugins/registry.js +1 -1
  111. package/dist/src/plugins/registry.js.map +1 -1
  112. package/dist/src/sandbox/errors.d.ts +5 -1
  113. package/dist/src/sandbox/errors.d.ts.map +1 -1
  114. package/dist/src/sandbox/errors.js +7 -1
  115. package/dist/src/sandbox/errors.js.map +1 -1
  116. package/dist/src/sandbox/stream-process.js +1 -1
  117. package/dist/src/sandbox/stream-process.js.map +1 -1
  118. package/dist/src/session/session-manager.d.ts +5 -1
  119. package/dist/src/session/session-manager.d.ts.map +1 -1
  120. package/dist/src/session/session-manager.js +51 -1
  121. package/dist/src/session/session-manager.js.map +1 -1
  122. package/dist/src/session/snapshot-storage-adapter.d.ts.map +1 -1
  123. package/dist/src/session/snapshot-storage-adapter.js +1 -0
  124. package/dist/src/session/snapshot-storage-adapter.js.map +1 -1
  125. package/dist/src/storage/in-memory-storage.d.ts +9 -0
  126. package/dist/src/storage/in-memory-storage.d.ts.map +1 -1
  127. package/dist/src/storage/in-memory-storage.js +18 -2
  128. package/dist/src/storage/in-memory-storage.js.map +1 -1
  129. package/dist/src/storage/local-file-storage.d.ts +9 -2
  130. package/dist/src/storage/local-file-storage.d.ts.map +1 -1
  131. package/dist/src/storage/local-file-storage.js +17 -4
  132. package/dist/src/storage/local-file-storage.js.map +1 -1
  133. package/dist/src/storage/s3-storage.d.ts +4 -0
  134. package/dist/src/storage/s3-storage.d.ts.map +1 -1
  135. package/dist/src/storage/s3-storage.js +8 -0
  136. package/dist/src/storage/s3-storage.js.map +1 -1
  137. package/dist/src/storage/search/qmd.d.ts +10 -6
  138. package/dist/src/storage/search/qmd.d.ts.map +1 -1
  139. package/dist/src/storage/search/qmd.js +4 -6
  140. package/dist/src/storage/search/qmd.js.map +1 -1
  141. package/dist/src/storage/search/types.d.ts +14 -2
  142. package/dist/src/storage/search/types.d.ts.map +1 -1
  143. package/dist/src/storage/storage.d.ts +8 -0
  144. package/dist/src/storage/storage.d.ts.map +1 -1
  145. package/dist/src/storage/storage.js +18 -0
  146. package/dist/src/storage/storage.js.map +1 -1
  147. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  148. package/dist/src/telemetry/tracer.js +4 -2
  149. package/dist/src/telemetry/tracer.js.map +1 -1
  150. package/dist/src/tsconfig.tsbuildinfo +1 -1
  151. package/dist/src/types/agent.d.ts +7 -0
  152. package/dist/src/types/agent.d.ts.map +1 -1
  153. package/dist/src/types/agent.js.map +1 -1
  154. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  155. package/dist/src/vended-plugins/context-offloader/search.js +4 -2
  156. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  157. package/dist/src/vended-tools/index.d.ts +5 -3
  158. package/dist/src/vended-tools/index.d.ts.map +1 -1
  159. package/dist/src/vended-tools/index.js +5 -3
  160. package/dist/src/vended-tools/index.js.map +1 -1
  161. package/dist/src/vended-tools/notebook/index.d.ts +2 -1
  162. package/dist/src/vended-tools/notebook/index.d.ts.map +1 -1
  163. package/dist/src/vended-tools/notebook/index.js +1 -1
  164. package/dist/src/vended-tools/notebook/index.js.map +1 -1
  165. package/dist/src/vended-tools/notebook/notebook.d.ts +38 -8
  166. package/dist/src/vended-tools/notebook/notebook.d.ts.map +1 -1
  167. package/dist/src/vended-tools/notebook/notebook.js +130 -79
  168. package/dist/src/vended-tools/notebook/notebook.js.map +1 -1
  169. package/dist/src/vended-tools/shell/make-shell.d.ts.map +1 -1
  170. package/dist/src/vended-tools/shell/make-shell.js +7 -3
  171. package/dist/src/vended-tools/shell/make-shell.js.map +1 -1
  172. package/dist/src/vended-tools/shell/types.d.ts +10 -5
  173. package/dist/src/vended-tools/shell/types.d.ts.map +1 -1
  174. package/dist/src/vended-tools/shell/types.js +7 -2
  175. package/dist/src/vended-tools/shell/types.js.map +1 -1
  176. package/dist/src/vended-tools/web-fetch/extract.d.ts +23 -0
  177. package/dist/src/vended-tools/web-fetch/extract.d.ts.map +1 -0
  178. package/dist/src/vended-tools/web-fetch/extract.js +130 -0
  179. package/dist/src/vended-tools/web-fetch/extract.js.map +1 -0
  180. package/dist/src/vended-tools/web-fetch/index.d.ts +9 -0
  181. package/dist/src/vended-tools/web-fetch/index.d.ts.map +1 -0
  182. package/dist/src/vended-tools/web-fetch/index.js +7 -0
  183. package/dist/src/vended-tools/web-fetch/index.js.map +1 -0
  184. package/dist/src/vended-tools/web-fetch/types.d.ts +40 -0
  185. package/dist/src/vended-tools/web-fetch/types.d.ts.map +1 -0
  186. package/dist/src/vended-tools/web-fetch/types.js +8 -0
  187. package/dist/src/vended-tools/web-fetch/types.js.map +1 -0
  188. package/dist/src/vended-tools/web-fetch/web-fetch.d.ts +14 -0
  189. package/dist/src/vended-tools/web-fetch/web-fetch.d.ts.map +1 -0
  190. package/dist/src/vended-tools/web-fetch/web-fetch.js +175 -0
  191. package/dist/src/vended-tools/web-fetch/web-fetch.js.map +1 -0
  192. package/package.json +18 -5
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Base offload strategy and shared infrastructure.
3
- *
4
- * @internal
5
3
  */
6
4
  import { logger } from '../../../logging/logger.js';
7
5
  import { MessageAddedEvent } from '../../../hooks/events.js';
8
- import { Message, TextBlock, ToolResultBlock, ToolUseBlock } from '../../../types/messages.js';
6
+ import { Message, TextBlock, ToolResultBlock, ToolUseBlock, CachePointBlock, ReasoningBlock, } from '../../../types/messages.js';
7
+ import { RETRIEVAL_TOOL_NAME } from '../../retrieval-tool.js';
8
+ import { isPinned } from '../../../conversation-manager/compression/pin-message.js';
9
9
  // --- Shared helpers ---
10
10
  function finiteOrUndefined(value) {
11
11
  return typeof value === 'number' && Number.isFinite(value) ? Math.max(0, value) : undefined;
@@ -69,11 +69,14 @@ export function messageMatchesTarget(message, target, toolNameMap, toolIncludeFi
69
69
  return false;
70
70
  }
71
71
  /**
72
- * Returns target-matching messages excluding the N most recent matches.
73
- * First filters to only messages that match the target, then removes the last N from that set.
72
+ * Returns target-matching messages excluding the most recent matches.
73
+ * First filters to only messages that match the target, then removes the tail.
74
+ *
75
+ * @param preserveRecent - Integer (1 or above): absolute count. Decimal (between 0 and 1 exclusive): ratio of matches to keep.
74
76
  */
75
- export function getOldestMatches(messages, target, count, toolNameMap, toolIncludeFilter, toolExcludeFilter) {
77
+ export function getOldestMatches(messages, target, preserveRecent, toolNameMap, toolIncludeFilter, toolExcludeFilter) {
76
78
  const matching = messages.filter((message) => messageMatchesTarget(message, target, toolNameMap, toolIncludeFilter, toolExcludeFilter));
79
+ const count = preserveRecent > 0 && preserveRecent < 1 ? Math.ceil(matching.length * preserveRecent) : Math.floor(preserveRecent);
77
80
  if (count >= matching.length)
78
81
  return [];
79
82
  return matching.slice(0, -count);
@@ -148,9 +151,12 @@ export function repairAlternation(messages) {
148
151
  const current = messages[readIndex];
149
152
  if (writeIndex > 0 && messages[writeIndex - 1].role === current.role) {
150
153
  const prev = messages[writeIndex - 1];
154
+ const pinned = prev.metadata?.custom?.pinned === true || current.metadata?.custom?.pinned === true;
151
155
  messages[writeIndex - 1] = new Message({
152
156
  role: prev.role,
153
157
  content: [...prev.content, ...current.content],
158
+ trackingId: prev.trackingId,
159
+ ...(pinned ? { metadata: { custom: { pinned: true } } } : {}),
154
160
  });
155
161
  }
156
162
  else {
@@ -199,9 +205,9 @@ export class BaseOffloadStrategy {
199
205
  _threshold;
200
206
  _utilizationThreshold;
201
207
  _preserveRecent;
202
- _removalRatio = 0.3;
203
208
  _includeFilter;
204
209
  _excludeFilter;
210
+ _stash;
205
211
  constructor(target, conditions) {
206
212
  if (Array.isArray(target) && target.length === 0) {
207
213
  throw new Error('Empty array target matches nothing — provide at least one target');
@@ -209,7 +215,7 @@ export class BaseOffloadStrategy {
209
215
  this._target = target;
210
216
  this._threshold = finiteOrUndefined(conditions?.threshold);
211
217
  this._utilizationThreshold = finiteOrUndefined(conditions?.utilization);
212
- this._preserveRecent = Math.floor(finiteOrUndefined(conditions?.preserveRecent) ?? 0);
218
+ this._preserveRecent = finiteOrUndefined(conditions?.preserveRecent) ?? 0;
213
219
  const resolved = resolveToolFilter(target);
214
220
  this._includeFilter = resolved.include;
215
221
  this._excludeFilter = resolved.exclude;
@@ -218,20 +224,26 @@ export class BaseOffloadStrategy {
218
224
  get _isMessageLevel() {
219
225
  return this._utilizationThreshold !== undefined;
220
226
  }
221
- init(agent) {
227
+ init(agent, stash) {
228
+ this._stash = stash;
222
229
  if (this._isMessageLevel)
223
230
  return;
224
231
  if (this._preserveRecent > 0)
225
232
  return;
226
233
  agent.addHook(MessageAddedEvent, async (event) => {
227
234
  const messages = event.agent.messages;
235
+ const index = messages.indexOf(event.message);
236
+ if (index >= 0 && isPinned(messages, index))
237
+ return;
228
238
  const toolNameMap = buildToolNameMap(messages);
229
239
  await this._transformBlocks(event.message, messages, toolNameMap, event.agent);
230
240
  });
231
241
  }
232
242
  async apply(context) {
243
+ if (context.stash)
244
+ this._stash = context.stash;
233
245
  if (this._isMessageLevel) {
234
- if (context.utilization < this._utilizationThreshold)
246
+ if (!context.overflow && context.utilization < this._utilizationThreshold)
235
247
  return false;
236
248
  return this._applyPerMessage(context);
237
249
  }
@@ -246,13 +258,16 @@ export class BaseOffloadStrategy {
246
258
  : messages;
247
259
  let acted = false;
248
260
  for (const message of eligible) {
261
+ const index = messages.indexOf(message);
262
+ if (isPinned(messages, index))
263
+ continue;
249
264
  if (await this._transformBlocks(message, messages, toolNameMap, agent)) {
250
265
  acted = true;
251
266
  }
252
267
  }
253
268
  return acted;
254
269
  }
255
- /** Message-level execution: remove oldest 30% of eligible messages with pair safety. */
270
+ /** Message-level execution: remove eligible messages with pair safety. */
256
271
  async _applyPerMessage(context) {
257
272
  const { messages } = context;
258
273
  if (messages.length <= 1)
@@ -260,9 +275,7 @@ export class BaseOffloadStrategy {
260
275
  const eligible = await this._getEligibleMessages(context);
261
276
  if (eligible.length === 0)
262
277
  return false;
263
- const targetRemoval = Math.max(1, Math.floor(eligible.length * this._removalRatio));
264
- const toRemove = eligible.slice(0, targetRemoval);
265
- const { removed, lowestIndex } = spliceWithPairs(messages, toRemove);
278
+ const { removed, lowestIndex } = spliceWithPairs(messages, eligible);
266
279
  if (removed === 0)
267
280
  return false;
268
281
  const marker = this._makeRemovalMarker(removed);
@@ -279,12 +292,22 @@ export class BaseOffloadStrategy {
279
292
  }
280
293
  /** Whether a block is eligible for offload given the current target and filters. */
281
294
  _blockMatchesTarget(block, message, toolNameMap) {
295
+ if (block instanceof ToolUseBlock)
296
+ return false;
297
+ if (block instanceof CachePointBlock)
298
+ return false;
299
+ if (block instanceof ReasoningBlock)
300
+ return false;
282
301
  if (block instanceof TextBlock)
283
302
  return targetMatchesMessage(this._target, message);
284
303
  if (block instanceof ToolResultBlock) {
304
+ if (this._stash && toolNameMap.get(block.toolUseId) === RETRIEVAL_TOOL_NAME)
305
+ return false;
285
306
  return (this._target === undefined ||
286
307
  toolMatchesTarget(block, this._target, toolNameMap, this._includeFilter, this._excludeFilter));
287
308
  }
309
+ if (this._target === '*' || this._target === undefined)
310
+ return true;
288
311
  return false;
289
312
  }
290
313
  /** Process eligible blocks in a message. */
@@ -298,10 +321,9 @@ export class BaseOffloadStrategy {
298
321
  const tokens = await agent.model.countTokens([new Message({ role: message.role, content: [block] })]);
299
322
  if (tokens <= effectiveThreshold)
300
323
  continue;
301
- const replacement = await this._replaceBlock(block, tokens, message, agent);
324
+ const stashRefs = this._stash?.refsFor(block, message, blockIndex) ?? [];
325
+ const replacement = await this._replaceBlock(block, tokens, message, agent, stashRefs);
302
326
  if (replacement && replacement !== block) {
303
- // Intentional in-place mutation: per-block replacement shrinks existing message content
304
- // rather than constructing a new Message (unlike message-level removal which uses new objects).
305
327
  ;
306
328
  message.content[blockIndex] = replacement;
307
329
  acted = true;
@@ -315,10 +337,14 @@ export class BaseOffloadStrategy {
315
337
  const toolNameMap = buildToolNameMap(messages);
316
338
  let candidates;
317
339
  if (this._preserveRecent > 0) {
318
- candidates = getOldestMatches(messages, this._target, this._preserveRecent, toolNameMap, this._includeFilter, this._excludeFilter).filter((message) => messages.indexOf(message) > 0);
340
+ candidates = getOldestMatches(messages, this._target, this._preserveRecent, toolNameMap, this._includeFilter, this._excludeFilter).filter((message) => {
341
+ const index = messages.indexOf(message);
342
+ return index > 0 && !isPinned(messages, index);
343
+ });
319
344
  }
320
345
  else {
321
346
  candidates = messages.filter((message, index) => index > 0 &&
347
+ !isPinned(messages, index) &&
322
348
  messageMatchesTarget(message, this._target, toolNameMap, this._includeFilter, this._excludeFilter));
323
349
  }
324
350
  if (this._threshold === undefined)
@@ -342,6 +368,7 @@ export class BaseOffloadStrategy {
342
368
  }
343
369
  }
344
370
  // --- Emergency truncation strategy ---
371
+ const EMERGENCY_REMOVAL_RATIO = 0.2;
345
372
  /**
346
373
  * Last-resort strategy that recomputes utilization and drops the oldest 20% of messages
347
374
  * when the context window is still overflowing after all user-configured strategies have run.
@@ -353,21 +380,36 @@ export class BaseOffloadStrategy {
353
380
  */
354
381
  export class EmergencyTruncateStrategy extends BaseOffloadStrategy {
355
382
  name = 'offload:emergency-truncate';
356
- _removalRatio = 0.2;
357
383
  constructor() {
358
384
  super('*');
359
385
  }
360
- init() {
361
- // No eager hooks — this only fires on overflow
386
+ init(_agent, stash) {
387
+ this._stash = stash;
362
388
  }
363
389
  async apply(context) {
364
390
  if (context.messages.length <= 3)
365
391
  return false;
366
- const tokens = await context.agent.model.countTokens(context.messages);
367
- const utilization = context.agent.model.estimateUtilization(tokens);
368
- if (utilization < 1.0)
392
+ if (!context.overflow) {
393
+ const tokens = await context.agent.model.countTokens(context.messages);
394
+ const utilization = context.agent.model.estimateUtilization(tokens);
395
+ if (utilization < 1.0)
396
+ return false;
397
+ }
398
+ return this._applyPerMessage(context);
399
+ }
400
+ /** Drop the oldest 20% of non-head messages each pass. */
401
+ async _applyPerMessage(context) {
402
+ const { messages } = context;
403
+ if (messages.length <= 3)
369
404
  return false;
370
- return this._applyPerMessage({ ...context, utilization });
405
+ const removable = messages.filter((_, index) => index > 0);
406
+ const removeCount = Math.max(1, Math.floor(removable.length * EMERGENCY_REMOVAL_RATIO));
407
+ const toRemove = removable.slice(0, removeCount);
408
+ const { removed } = spliceWithPairs(messages, toRemove);
409
+ if (removed === 0)
410
+ return false;
411
+ repairAlternation(messages);
412
+ return true;
371
413
  }
372
414
  async _replaceBlock() {
373
415
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/base.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @internal
5
5
  */
6
- import { Message, TextBlock, ToolResultBlock } from '../../../types/messages.js';
6
+ import { Message } from '../../../types/messages.js';
7
7
  import type { ContentBlock } from '../../../types/messages.js';
8
8
  import type { LocalAgent } from '../../../types/agent.js';
9
9
  import type { ContextStrategy } from '../../types.js';
@@ -14,6 +14,6 @@ export declare class DropStrategy extends BaseOffloadStrategy {
14
14
  readonly name = "offload:drop";
15
15
  when(conditions: OffloadConditions): ContextStrategy;
16
16
  protected _makeRemovalMarker(count: number): string;
17
- protected _replaceBlock(block: TextBlock | ToolResultBlock, _tokens: number, message: Message, _agent: LocalAgent): Promise<ContentBlock | null>;
17
+ protected _replaceBlock(block: ContentBlock, _tokens: number, message: Message, _agent: LocalAgent, stashRefs: string[]): Promise<ContentBlock | null>;
18
18
  }
19
19
  //# sourceMappingURL=drop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/drop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,QAAQ,CAAC,IAAI,kBAAiB;IAE9B,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe;cAIjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAI5C,aAAa,CAC3B,KAAK,EAAE,SAAS,GAAG,eAAe,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAYhC"}
1
+ {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/drop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAA8B,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,QAAQ,CAAC,IAAI,kBAAiB;IAE9B,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe;cAIjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAI5C,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAchC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { logger } from '../../../logging/logger.js';
7
7
  import { Message, TextBlock, ToolResultBlock } from '../../../types/messages.js';
8
+ import { formatStashRefs } from '../../stash.js';
8
9
  import { BaseOffloadStrategy } from './base.js';
9
10
  export const DROPPED_MARKER = '[Dropped]';
10
11
  export class DropStrategy extends BaseOffloadStrategy {
@@ -15,17 +16,18 @@ export class DropStrategy extends BaseOffloadStrategy {
15
16
  _makeRemovalMarker(count) {
16
17
  return `[Dropped: ${count} ${count === 1 ? 'message' : 'messages'}]`;
17
18
  }
18
- async _replaceBlock(block, _tokens, message, _agent) {
19
+ async _replaceBlock(block, _tokens, message, _agent, stashRefs) {
20
+ const marker = `${DROPPED_MARKER}${formatStashRefs(stashRefs)}`;
19
21
  if (block instanceof ToolResultBlock) {
20
22
  logger.debug(`toolUseId=<${block.toolUseId}> | dropped tool result from context window`);
21
23
  return new ToolResultBlock({
22
24
  toolUseId: block.toolUseId,
23
25
  status: block.status,
24
- content: [new TextBlock(DROPPED_MARKER)],
26
+ content: [new TextBlock(marker)],
25
27
  });
26
28
  }
27
- logger.debug(`trackingId=<${message.trackingId}> | dropped text block from context window`);
28
- return new TextBlock(DROPPED_MARKER);
29
+ logger.debug(`trackingId=<${message.trackingId}> | dropped block from context window`);
30
+ return new TextBlock(marker);
29
31
  }
30
32
  }
31
33
  //# sourceMappingURL=drop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/drop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAIhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAA;AAEzC,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IAC1C,IAAI,GAAG,cAAc,CAAA;IAE9B,IAAI,CAAC,UAA6B;QAChC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACnD,CAAC;IAEkB,kBAAkB,CAAC,KAAa;QACjD,OAAO,aAAa,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAA;IACtE,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,KAAkC,EAClC,OAAe,EACf,OAAgB,EAChB,MAAkB;QAElB,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,SAAS,6CAA6C,CAAC,CAAA;YACxF,OAAO,IAAI,eAAe,CAAC;gBACzB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;aACzC,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,UAAU,4CAA4C,CAAC,CAAA;QAC3F,OAAO,IAAI,SAAS,CAAC,cAAc,CAAC,CAAA;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/drop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAIhF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAA;AAEzC,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IAC1C,IAAI,GAAG,cAAc,CAAA;IAE9B,IAAI,CAAC,UAA6B;QAChC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACnD,CAAC;IAEkB,kBAAkB,CAAC,KAAa;QACjD,OAAO,aAAa,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAA;IACtE,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,KAAmB,EACnB,OAAe,EACf,OAAgB,EAChB,MAAkB,EAClB,SAAmB;QAEnB,MAAM,MAAM,GAAG,GAAG,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,CAAA;QAE/D,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,SAAS,6CAA6C,CAAC,CAAA;YACxF,OAAO,IAAI,eAAe,CAAC;gBACzB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;aACjC,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,UAAU,uCAAuC,CAAC,CAAA;QACtF,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Offload strategies — reduce content in the context window.
3
3
  *
4
- * @internal
4
+ * @experimental
5
5
  */
6
6
  import type { TruncateConfig } from '../../methods/truncate.js';
7
7
  import type { SummarizeConfig } from '../../methods/summarize.js';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Offload strategies — reduce content in the context window.
3
3
  *
4
- * @internal
4
+ * @experimental
5
5
  */
6
6
  import { DropStrategy } from './drop.js';
7
7
  import { TruncateStrategy } from './truncate.js';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @internal
5
5
  */
6
- import { Message, TextBlock, ToolResultBlock } from '../../../types/messages.js';
6
+ import { Message } from '../../../types/messages.js';
7
7
  import type { ContentBlock } from '../../../types/messages.js';
8
8
  import type { LocalAgent } from '../../../types/agent.js';
9
9
  import type { ContextStrategy, ContextState } from '../../types.js';
@@ -16,7 +16,7 @@ export declare class SummarizeStrategy extends BaseOffloadStrategy {
16
16
  when(conditions: OffloadConditions): ContextStrategy;
17
17
  apply(context: ContextState): Promise<boolean>;
18
18
  protected _applyPerMessage(context: ContextState): Promise<boolean>;
19
- protected _replaceBlock(block: TextBlock | ToolResultBlock, tokens: number, message: Message, agent: LocalAgent): Promise<ContentBlock | null>;
19
+ protected _replaceBlock(block: ContentBlock, tokens: number, message: Message, agent: LocalAgent, stashRefs: string[]): Promise<ContentBlock | null>;
20
20
  private _resolveModel;
21
21
  }
22
22
  //# sourceMappingURL=summarize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/summarize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,mBAAmB,EAGnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAElB,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,QAAQ,CAAC,IAAI,uBAAsB;IAEnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAE7B,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,iBAAiB;IAK5F,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe;IAIrC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;cAQpC,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;cAwDlE,aAAa,CAC3B,KAAK,EAAE,SAAS,GAAG,eAAe,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAuB/B,OAAO,CAAC,aAAa;CAGtB"}
1
+ {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/summarize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAA8B,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,mBAAmB,EAInB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAElB,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,QAAQ,CAAC,IAAI,uBAAsB;IAEnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAE7B,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,iBAAiB;IAK5F,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe;IAIrC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;cAQpC,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;cA0ClE,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkC/B,OAAO,CAAC,aAAa;CAGtB"}
@@ -5,8 +5,9 @@
5
5
  */
6
6
  import { logger } from '../../../logging/logger.js';
7
7
  import { Message, TextBlock, ToolResultBlock } from '../../../types/messages.js';
8
- import { flattenMessagesToContent, SUMMARIZED_PREFIX, summarizeContent, toolResultToContentBlocks, } from '../../methods/summarize.js';
9
- import { BaseOffloadStrategy, collectRemovableWithPair, repairAlternation, } from './base.js';
8
+ import { flattenMessagesToContent, formatSummarized, summarizeContent, toolResultToContentBlocks, } from '../../methods/summarize.js';
9
+ import { formatStashRefs } from '../../stash.js';
10
+ import { BaseOffloadStrategy, collectRemovableWithPair, spliceWithPairs, repairAlternation, } from './base.js';
10
11
  export class SummarizeStrategy extends BaseOffloadStrategy {
11
12
  name = 'offload:summarize';
12
13
  _config;
@@ -34,11 +35,9 @@ export class SummarizeStrategy extends BaseOffloadStrategy {
34
35
  const eligible = await this._getEligibleMessages(context);
35
36
  if (eligible.length === 0)
36
37
  return false;
37
- const summarizeCount = Math.max(1, Math.floor(eligible.length * this._removalRatio));
38
- const toSummarize = eligible.slice(0, summarizeCount);
39
38
  // Expand to include paired messages so we don't orphan tool pairs
40
39
  const safeSet = new Set();
41
- for (const message of toSummarize) {
40
+ for (const message of eligible) {
42
41
  const index = messages.indexOf(message);
43
42
  if (index === -1)
44
43
  continue;
@@ -56,27 +55,16 @@ export class SummarizeStrategy extends BaseOffloadStrategy {
56
55
  const totalTokens = await model.countTokens(safe);
57
56
  const summaryMessage = new Message({
58
57
  role: 'user',
59
- content: [
60
- new TextBlock(`${SUMMARIZED_PREFIX} ${safe.length} messages, ~${totalTokens.toLocaleString()} tokens]\n\n${summary}`),
61
- ],
58
+ content: [new TextBlock(formatSummarized(`${safe.length} messages`, totalTokens, summary))],
62
59
  });
63
- // Remove summarized messages, tracking the lowest removal point for insertion
64
- let lowestIndex = messages.length;
65
- for (const message of safe) {
66
- const index = messages.indexOf(message);
67
- if (index === -1)
68
- continue;
69
- if (index < lowestIndex)
70
- lowestIndex = index;
71
- messages.splice(index, 1);
72
- }
60
+ const { lowestIndex } = spliceWithPairs(messages, safe);
73
61
  const insertIndex = Math.max(1, Math.min(lowestIndex, messages.length));
74
62
  messages.splice(insertIndex, 0, summaryMessage);
75
63
  repairAlternation(messages);
76
64
  logger.debug(`summarized=<${safe.length}>, tokens=<${totalTokens}> | batched summarization complete`);
77
65
  return true;
78
66
  }
79
- async _replaceBlock(block, tokens, message, agent) {
67
+ async _replaceBlock(block, tokens, message, agent, stashRefs) {
80
68
  const model = this._resolveModel(agent);
81
69
  if (!model)
82
70
  return null;
@@ -88,14 +76,23 @@ export class SummarizeStrategy extends BaseOffloadStrategy {
88
76
  return new ToolResultBlock({
89
77
  toolUseId: block.toolUseId,
90
78
  status: block.status,
91
- content: [new TextBlock(`${SUMMARIZED_PREFIX} ~${tokens.toLocaleString()} tokens]\n\n${summary}`)],
79
+ content: [new TextBlock(`${formatSummarized('tool result', tokens, summary)}${formatStashRefs(stashRefs)}`)],
92
80
  });
93
81
  }
94
- const summary = await summarizeContent([new TextBlock(block.text)], model, this._config);
95
- if (!summary)
96
- return null;
97
- logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | summarized text block`);
98
- return new TextBlock(`${SUMMARIZED_PREFIX} ~${tokens.toLocaleString()} tokens]\n\n${summary}`);
82
+ if (block instanceof TextBlock) {
83
+ const summary = await summarizeContent([new TextBlock(block.text)], model, this._config);
84
+ if (!summary)
85
+ return null;
86
+ logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | summarized text block`);
87
+ return new TextBlock(`${formatSummarized('text block', tokens, summary)}${formatStashRefs(stashRefs)}`);
88
+ }
89
+ const summary = await summarizeContent([block], model, this._config);
90
+ if (summary) {
91
+ logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | summarized media block`);
92
+ return new TextBlock(`${formatSummarized('media block', tokens, summary)}${formatStashRefs(stashRefs)}`);
93
+ }
94
+ logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | offloaded media block`);
95
+ return new TextBlock(`[Offloaded: ~${tokens} tokens]${formatStashRefs(stashRefs)}`);
99
96
  }
100
97
  _resolveModel(agent) {
101
98
  return this._config.model ?? agent.model;
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/summarize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/summarize.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @internal
5
5
  */
6
- import { Message, TextBlock, ToolResultBlock } from '../../../types/messages.js';
6
+ import { Message } from '../../../types/messages.js';
7
7
  import type { ContentBlock } from '../../../types/messages.js';
8
8
  import type { LocalAgent } from '../../../types/agent.js';
9
9
  import type { ContextStrategy, ContextState } from '../../types.js';
@@ -16,6 +16,6 @@ export declare class TruncateStrategy extends BaseOffloadStrategy {
16
16
  when(conditions: OffloadConditions): ContextStrategy;
17
17
  protected _makeRemovalMarker(count: number): string;
18
18
  protected _applyPerMessage(context: ContextState): Promise<boolean>;
19
- protected _replaceBlock(block: TextBlock | ToolResultBlock, tokens: number, message: Message, _agent: LocalAgent): Promise<ContentBlock | null>;
19
+ protected _replaceBlock(block: ContentBlock, tokens: number, message: Message, _agent: LocalAgent, stashRefs: string[]): Promise<ContentBlock | null>;
20
20
  }
21
21
  //# sourceMappingURL=truncate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/truncate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAA8C,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC3G,OAAO,EACL,mBAAmB,EAGnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAElB,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,QAAQ,CAAC,IAAI,sBAAqB;IAElC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;gBAEpC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,iBAAiB;IAmB3F,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe;cAIjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAInC,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;cA+BlE,aAAa,CAC3B,KAAK,EAAE,SAAS,GAAG,eAAe,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAQhC"}
1
+ {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../../../src/context-manager/strategies/offload/truncate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAA8B,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAA8C,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE3G,OAAO,EACL,mBAAmB,EAGnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAElB,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,QAAQ,CAAC,IAAI,sBAAqB;IAElC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;gBAEpC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,iBAAiB;IAmB3F,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe;cAIjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAInC,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;cAsBlE,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAkBhC"}
@@ -6,6 +6,7 @@
6
6
  import { logger } from '../../../logging/logger.js';
7
7
  import { Message, TextBlock, ToolResultBlock } from '../../../types/messages.js';
8
8
  import { truncateToolResultBlock, truncateTextBlock } from '../../methods/truncate.js';
9
+ import { formatStashRefs } from '../../stash.js';
9
10
  import { BaseOffloadStrategy, spliceWithPairs, repairAlternation, } from './base.js';
10
11
  export class TruncateStrategy extends BaseOffloadStrategy {
11
12
  name = 'offload:truncate';
@@ -35,14 +36,7 @@ export class TruncateStrategy extends BaseOffloadStrategy {
35
36
  const eligible = await this._getEligibleMessages(context);
36
37
  if (eligible.length === 0)
37
38
  return false;
38
- // Determine head/tail split based on config (default: favor tail — 30% head, 70% tail)
39
- const previewMode = this._truncateConfig.preview ?? 'headTail';
40
- const headShare = { head: 1, tail: 0, headTail: 0.3 }[previewMode];
41
- const targetRemoval = Math.max(1, Math.floor(eligible.length * this._removalRatio));
42
- const keepCount = eligible.length - targetRemoval;
43
- const headKeep = Math.floor(keepCount * headShare);
44
- const tailKeep = keepCount - headKeep;
45
- const middleMessages = eligible.slice(headKeep, eligible.length - tailKeep);
39
+ const middleMessages = eligible;
46
40
  if (middleMessages.length === 0)
47
41
  return false;
48
42
  const { removed, lowestIndex } = spliceWithPairs(messages, middleMessages);
@@ -54,13 +48,41 @@ export class TruncateStrategy extends BaseOffloadStrategy {
54
48
  repairAlternation(messages);
55
49
  return true;
56
50
  }
57
- async _replaceBlock(block, tokens, message, _agent) {
51
+ async _replaceBlock(block, tokens, message, _agent, stashRefs) {
58
52
  if (block instanceof ToolResultBlock) {
59
53
  logger.debug(`toolUseId=<${block.toolUseId}>, tokens=<${tokens}> | truncated tool result`);
60
- return truncateToolResultBlock(block, this._truncateConfig);
54
+ const truncated = truncateToolResultBlock(block, this._truncateConfig);
55
+ if (truncated !== block) {
56
+ return appendStashRefs(truncated, stashRefs);
57
+ }
58
+ return truncated;
59
+ }
60
+ if (block instanceof TextBlock) {
61
+ logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | truncated text block`);
62
+ const truncated = truncateTextBlock(block, this._truncateConfig);
63
+ const refs = formatStashRefs(stashRefs);
64
+ return refs ? new TextBlock(`${truncated.text}\n\n[Stashed]${refs}`) : truncated;
65
+ }
66
+ logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | offloaded media block`);
67
+ return new TextBlock(`[Offloaded: ~${tokens} tokens]${formatStashRefs(stashRefs)}`);
68
+ }
69
+ }
70
+ function appendStashRefs(block, stashRefs) {
71
+ const refs = formatStashRefs(stashRefs);
72
+ if (!refs)
73
+ return block;
74
+ const content = [...block.content];
75
+ for (let index = 0; index < content.length; index++) {
76
+ const item = content[index];
77
+ if (item instanceof TextBlock) {
78
+ content[index] = new TextBlock(`${item.text}\n\n[Stashed]${refs}`);
79
+ return new ToolResultBlock({
80
+ toolUseId: block.toolUseId,
81
+ status: block.status,
82
+ content,
83
+ });
61
84
  }
62
- logger.debug(`trackingId=<${message.trackingId}>, tokens=<${tokens}> | truncated text block`);
63
- return truncateTextBlock(block, this._truncateConfig);
64
85
  }
86
+ return block;
65
87
  }
66
88
  //# sourceMappingURL=truncate.js.map