@strands-agents/sdk 1.9.0 → 1.11.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 (169) hide show
  1. package/README.md +1 -1
  2. package/dist/src/agent/agent.d.ts +22 -42
  3. package/dist/src/agent/agent.d.ts.map +1 -1
  4. package/dist/src/agent/agent.js +73 -426
  5. package/dist/src/agent/agent.js.map +1 -1
  6. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +2 -2
  7. package/dist/src/errors.d.ts +15 -0
  8. package/dist/src/errors.d.ts.map +1 -1
  9. package/dist/src/errors.js +18 -0
  10. package/dist/src/errors.js.map +1 -1
  11. package/dist/src/hooks/events.d.ts +5 -4
  12. package/dist/src/hooks/events.d.ts.map +1 -1
  13. package/dist/src/hooks/events.js +3 -3
  14. package/dist/src/hooks/events.js.map +1 -1
  15. package/dist/src/index.d.ts +4 -1
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +4 -1
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/index.node.d.ts.map +1 -1
  20. package/dist/src/index.node.js +2 -6
  21. package/dist/src/index.node.js.map +1 -1
  22. package/dist/src/middleware/interrupt.d.ts +18 -0
  23. package/dist/src/middleware/interrupt.d.ts.map +1 -0
  24. package/dist/src/middleware/interrupt.js +33 -0
  25. package/dist/src/middleware/interrupt.js.map +1 -0
  26. package/dist/src/models/bedrock.d.ts.map +1 -1
  27. package/dist/src/models/bedrock.js +23 -1
  28. package/dist/src/models/bedrock.js.map +1 -1
  29. package/dist/src/models/openai/errors.d.ts.map +1 -1
  30. package/dist/src/models/openai/errors.js +1 -0
  31. package/dist/src/models/openai/errors.js.map +1 -1
  32. package/dist/src/models/openai/mantle.d.ts +8 -3
  33. package/dist/src/models/openai/mantle.d.ts.map +1 -1
  34. package/dist/src/models/openai/mantle.js +41 -6
  35. package/dist/src/models/openai/mantle.js.map +1 -1
  36. package/dist/src/models/openai/model.d.ts.map +1 -1
  37. package/dist/src/models/openai/model.js +4 -3
  38. package/dist/src/models/openai/model.js.map +1 -1
  39. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -1
  40. package/dist/src/models/openai/responses-adapter.js +41 -9
  41. package/dist/src/models/openai/responses-adapter.js.map +1 -1
  42. package/dist/src/models/vercel.d.ts.map +1 -1
  43. package/dist/src/models/vercel.js +28 -1
  44. package/dist/src/models/vercel.js.map +1 -1
  45. package/dist/src/multiagent/graph.d.ts.map +1 -1
  46. package/dist/src/multiagent/graph.js +1 -1
  47. package/dist/src/multiagent/graph.js.map +1 -1
  48. package/dist/src/{multiagent/queue.d.ts → queue.d.ts} +12 -27
  49. package/dist/src/queue.d.ts.map +1 -0
  50. package/dist/src/{multiagent/queue.js → queue.js} +4 -2
  51. package/dist/src/queue.js.map +1 -0
  52. package/dist/src/register-node-defaults.d.ts +3 -0
  53. package/dist/src/register-node-defaults.d.ts.map +1 -0
  54. package/dist/src/register-node-defaults.js +10 -0
  55. package/dist/src/register-node-defaults.js.map +1 -0
  56. package/dist/src/sandbox/register-node-defaults.d.ts +3 -0
  57. package/dist/src/sandbox/register-node-defaults.d.ts.map +1 -0
  58. package/dist/src/sandbox/register-node-defaults.js +8 -0
  59. package/dist/src/sandbox/register-node-defaults.js.map +1 -0
  60. package/dist/src/session/file-storage.d.ts +3 -0
  61. package/dist/src/session/file-storage.d.ts.map +1 -1
  62. package/dist/src/session/file-storage.js +3 -0
  63. package/dist/src/session/file-storage.js.map +1 -1
  64. package/dist/src/session/s3-storage.d.ts +3 -0
  65. package/dist/src/session/s3-storage.d.ts.map +1 -1
  66. package/dist/src/session/s3-storage.js +3 -0
  67. package/dist/src/session/s3-storage.js.map +1 -1
  68. package/dist/src/session/session-manager.d.ts +11 -2
  69. package/dist/src/session/session-manager.d.ts.map +1 -1
  70. package/dist/src/session/session-manager.js +19 -8
  71. package/dist/src/session/session-manager.js.map +1 -1
  72. package/dist/src/session/snapshot-storage-adapter.d.ts +93 -0
  73. package/dist/src/session/snapshot-storage-adapter.d.ts.map +1 -0
  74. package/dist/src/session/snapshot-storage-adapter.js +157 -0
  75. package/dist/src/session/snapshot-storage-adapter.js.map +1 -0
  76. package/dist/src/session/storage.d.ts +3 -6
  77. package/dist/src/session/storage.d.ts.map +1 -1
  78. package/dist/src/storage/in-memory-storage.d.ts +64 -0
  79. package/dist/src/storage/in-memory-storage.d.ts.map +1 -0
  80. package/dist/src/storage/in-memory-storage.js +85 -0
  81. package/dist/src/storage/in-memory-storage.js.map +1 -0
  82. package/dist/src/storage/index.d.ts +20 -0
  83. package/dist/src/storage/index.d.ts.map +1 -0
  84. package/dist/src/storage/index.js +18 -0
  85. package/dist/src/storage/index.js.map +1 -0
  86. package/dist/src/storage/local-file-storage.d.ts +81 -0
  87. package/dist/src/storage/local-file-storage.d.ts.map +1 -0
  88. package/dist/src/storage/local-file-storage.js +244 -0
  89. package/dist/src/storage/local-file-storage.js.map +1 -0
  90. package/dist/src/storage/s3-storage.d.ts +73 -0
  91. package/dist/src/storage/s3-storage.d.ts.map +1 -0
  92. package/dist/src/storage/s3-storage.js +146 -0
  93. package/dist/src/storage/s3-storage.js.map +1 -0
  94. package/dist/src/storage/storage.d.ts +102 -0
  95. package/dist/src/storage/storage.d.ts.map +1 -0
  96. package/dist/src/storage/storage.js +68 -0
  97. package/dist/src/storage/storage.js.map +1 -0
  98. package/dist/src/telemetry/tracer.d.ts +18 -0
  99. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  100. package/dist/src/telemetry/tracer.js +31 -11
  101. package/dist/src/telemetry/tracer.js.map +1 -1
  102. package/dist/src/tools/executors/concurrent.d.ts +32 -0
  103. package/dist/src/tools/executors/concurrent.d.ts.map +1 -0
  104. package/dist/src/tools/executors/concurrent.js +128 -0
  105. package/dist/src/tools/executors/concurrent.js.map +1 -0
  106. package/dist/src/tools/executors/executor.d.ts +61 -0
  107. package/dist/src/tools/executors/executor.d.ts.map +1 -0
  108. package/dist/src/tools/executors/executor.js +190 -0
  109. package/dist/src/tools/executors/executor.js.map +1 -0
  110. package/dist/src/tools/executors/sequential.d.ts +30 -0
  111. package/dist/src/tools/executors/sequential.d.ts.map +1 -0
  112. package/dist/src/tools/executors/sequential.js +67 -0
  113. package/dist/src/tools/executors/sequential.js.map +1 -0
  114. package/dist/src/tsconfig.tsbuildinfo +1 -1
  115. package/dist/src/types/agent.d.ts +5 -4
  116. package/dist/src/types/agent.d.ts.map +1 -1
  117. package/dist/src/types/agent.js.map +1 -1
  118. package/dist/src/vended-memory-stores/test-memory-store/store.d.ts +32 -24
  119. package/dist/src/vended-memory-stores/test-memory-store/store.d.ts.map +1 -1
  120. package/dist/src/vended-memory-stores/test-memory-store/store.js +84 -91
  121. package/dist/src/vended-memory-stores/test-memory-store/store.js.map +1 -1
  122. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +37 -5
  123. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  124. package/dist/src/vended-plugins/context-offloader/plugin.js +116 -17
  125. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  126. package/dist/src/vended-plugins/context-offloader/storage.d.ts +23 -9
  127. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  128. package/dist/src/vended-plugins/context-offloader/storage.js +21 -6
  129. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  130. package/dist/src/vended-tools/index.d.ts +3 -1
  131. package/dist/src/vended-tools/index.d.ts.map +1 -1
  132. package/dist/src/vended-tools/index.js +3 -1
  133. package/dist/src/vended-tools/index.js.map +1 -1
  134. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  135. package/dist/src/vended-tools/sleep/index.d.ts +9 -0
  136. package/dist/src/vended-tools/sleep/index.d.ts.map +1 -0
  137. package/dist/src/vended-tools/sleep/index.js +7 -0
  138. package/dist/src/vended-tools/sleep/index.js.map +1 -0
  139. package/dist/src/vended-tools/sleep/make-sleep.d.ts +48 -0
  140. package/dist/src/vended-tools/sleep/make-sleep.d.ts.map +1 -0
  141. package/dist/src/vended-tools/sleep/make-sleep.js +81 -0
  142. package/dist/src/vended-tools/sleep/make-sleep.js.map +1 -0
  143. package/dist/src/vended-tools/sleep/sleep.d.ts +19 -0
  144. package/dist/src/vended-tools/sleep/sleep.d.ts.map +1 -0
  145. package/dist/src/vended-tools/sleep/sleep.js +20 -0
  146. package/dist/src/vended-tools/sleep/sleep.js.map +1 -0
  147. package/dist/src/vended-tools/sleep/types.d.ts +31 -0
  148. package/dist/src/vended-tools/sleep/types.d.ts.map +1 -0
  149. package/dist/src/vended-tools/sleep/types.js +22 -0
  150. package/dist/src/vended-tools/sleep/types.js.map +1 -0
  151. package/dist/src/vended-tools/stop/index.d.ts +8 -0
  152. package/dist/src/vended-tools/stop/index.d.ts.map +1 -0
  153. package/dist/src/vended-tools/stop/index.js +6 -0
  154. package/dist/src/vended-tools/stop/index.js.map +1 -0
  155. package/dist/src/vended-tools/stop/stop.d.ts +47 -0
  156. package/dist/src/vended-tools/stop/stop.d.ts.map +1 -0
  157. package/dist/src/vended-tools/stop/stop.js +85 -0
  158. package/dist/src/vended-tools/stop/stop.js.map +1 -0
  159. package/dist/src/vended-tools/stop/types.d.ts +54 -0
  160. package/dist/src/vended-tools/stop/types.d.ts.map +1 -0
  161. package/dist/src/vended-tools/stop/types.js +58 -0
  162. package/dist/src/vended-tools/stop/types.js.map +1 -0
  163. package/package.json +13 -2
  164. package/dist/src/conversation-manager/index.d.ts +0 -10
  165. package/dist/src/conversation-manager/index.d.ts.map +0 -1
  166. package/dist/src/conversation-manager/index.js +0 -10
  167. package/dist/src/conversation-manager/index.js.map +0 -1
  168. package/dist/src/multiagent/queue.d.ts.map +0 -1
  169. package/dist/src/multiagent/queue.js.map +0 -1
@@ -203,10 +203,6 @@ export interface LocalAgent {
203
203
  * The unique identifier of the agent instance.
204
204
  */
205
205
  readonly id: string;
206
- /**
207
- * Read-only snapshot of accumulated agent metrics (cycles, token usage, tool stats).
208
- */
209
- readonly metrics: AgentMetrics;
210
206
  /**
211
207
  * App state storage accessible to tools and application logic.
212
208
  */
@@ -232,6 +228,11 @@ export interface LocalAgent {
232
228
  * environment (e.g. browsers, where no host default is registered).
233
229
  */
234
230
  readonly sandbox: Sandbox;
231
+ /**
232
+ * Aggregated metrics for the agent's loop execution.
233
+ * Tracks cycle counts, token usage, tool execution stats, and model latency.
234
+ */
235
+ readonly metrics: AgentMetrics;
235
236
  /**
236
237
  * The model provider used by the agent for inference.
237
238
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACnH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,YAAY,EAAE,GACd,gBAAgB,EAAE,GAClB,OAAO,EAAE,GACT,WAAW,EAAE,GACb,wBAAwB,EAAE,GAC1B,4BAA4B,EAAE,GAC9B,uBAAuB,CAAA;AAE3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAA;IAEpC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,YAAY,CAAC,EAAE,WAAW,CAAA;IAE1B;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE;QACP;;;;WAIG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;QAEd;;;;;;;;;;;;;WAaG;QACH,YAAY,CAAC,EAAE,MAAM,CAAA;QAErB;;;;;;;;;;WAUG;QACH,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAEvE;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;CACvG;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAA;AAEpD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAE9B;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAA;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAA;IAEnB;;;;OAIG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAA;IAElC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,CAAC,SAAS,aAAa,EAC7B,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACtC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,WAAW,CAAA;IAEd;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ,CAAA;IAEpD;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAEtC;;;;;;;OAOG;IACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACtD,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GACxC,MAAM,IAAI,CAAA;IACb,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACrD,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GACpD,MAAM,IAAI,CAAA;IACb,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACvD,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACxC,MAAM,IAAI,CAAA;IACb,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACjD,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GACpD,MAAM,IAAI,CAAA;CACd;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAS;IAEtC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAE7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IAE9B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAE/C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAE/B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IAEzC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IAEjC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;gBAEpB,IAAI,EAAE;QAChB,UAAU,EAAE,UAAU,CAAA;QACtB,WAAW,EAAE,OAAO,CAAA;QACpB,eAAe,EAAE,eAAe,CAAA;QAChC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;QACrB,OAAO,CAAC,EAAE,YAAY,CAAA;QACtB,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACtC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;QACxB,UAAU,CAAC,EAAE,UAAU,CAAA;KACxB;IAqBD;;;;OAIG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED;;;;OAIG;IACH,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED;;;;;;;;;OASG;IACI,MAAM,IAAI,MAAM;IAUvB;;;;;;;;;OASG;IACI,QAAQ,IAAI,MAAM;CAsC1B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,qBAAqB,GACrB,eAAe,GACf,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,gBAAgB,GAChB,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,GACd,gBAAgB,CAAA"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACnH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,YAAY,EAAE,GACd,gBAAgB,EAAE,GAClB,OAAO,EAAE,GACT,WAAW,EAAE,GACb,wBAAwB,EAAE,GAC1B,4BAA4B,EAAE,GAC9B,uBAAuB,CAAA;AAE3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAA;IAEpC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,YAAY,CAAC,EAAE,WAAW,CAAA;IAE1B;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE;QACP;;;;WAIG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;QAEd;;;;;;;;;;;;;WAaG;QACH,YAAY,CAAC,EAAE,MAAM,CAAA;QAErB;;;;;;;;;;WAUG;QACH,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAEvE;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;CACvG;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAA;AAEpD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAA;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAA;IAEnB;;;;OAIG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAE9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAA;IAElC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,CAAC,SAAS,aAAa,EAC7B,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACtC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,WAAW,CAAA;IAEd;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ,CAAA;IAEpD;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAEtC;;;;;;;OAOG;IACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACtD,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GACxC,MAAM,IAAI,CAAA;IACb,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACrD,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GACpD,MAAM,IAAI,CAAA;IACb,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACvD,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACxC,MAAM,IAAI,CAAA;IACb,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EACrC,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EACjD,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GACpD,MAAM,IAAI,CAAA;CACd;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAS;IAEtC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAE7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IAE9B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAE/C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAE/B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IAEzC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IAEjC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;gBAEpB,IAAI,EAAE;QAChB,UAAU,EAAE,UAAU,CAAA;QACtB,WAAW,EAAE,OAAO,CAAA;QACpB,eAAe,EAAE,eAAe,CAAA;QAChC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;QACrB,OAAO,CAAC,EAAE,YAAY,CAAA;QACtB,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACtC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;QACxB,UAAU,CAAC,EAAE,UAAU,CAAA;KACxB;IAqBD;;;;OAIG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED;;;;OAIG;IACH,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED;;;;;;;;;OASG;IACI,MAAM,IAAI,MAAM;IAUvB;;;;;;;;;OASG;IACI,QAAQ,IAAI,MAAM;CAsC1B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,qBAAqB,GACrB,eAAe,GACf,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,gBAAgB,GAChB,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,GACd,gBAAgB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,9 @@ export interface TestMemoryAddResult {
38
38
  * Each {@link add} rewrites the whole file, so this fits modest volumes, not fit for high volume
39
39
  * production workloads. Use a managed store like {@link BedrockKnowledgeBaseStore} for that.
40
40
  *
41
+ * Persistence is backed by the unified `Storage` interface: `persist: true` (the default) uses a
42
+ * `LocalFileStorage`, `persist: false` an ephemeral `InMemoryStorage`.
43
+ *
41
44
  * The on-disk format is shared with the Python SDK's `TestMemoryStore`: records use the same
42
45
  * camelCase keys (`id`, `content`, `metadata`, `createdAt`) and the same timestamp shape, so a
43
46
  * backing file written by either SDK can be read by the other.
@@ -60,18 +63,15 @@ export declare class TestMemoryStore implements MemoryStore {
60
63
  readonly writable: boolean;
61
64
  readonly extraction?: boolean | ExtractionConfig;
62
65
  private readonly _persist;
63
- /** Explicit `path` override from config, if any; the default path is resolved lazily in {@link _getPath}. */
66
+ /** Explicit `path` override from config, if any; the default path is resolved lazily in {@link _resolve}. */
64
67
  private readonly _explicitPath;
65
- private _resolvedPath;
66
- /** The loaded records once {@link _load} resolves; the working in-memory copy thereafter. */
67
- private _records;
68
68
  /**
69
- * Memoizes the first (async) load so concurrent `search`/`add` callers share a single file read
70
- * instead of each racing their own without it, a search interleaved with a first-use add could
71
- * overwrite the cache with a pre-write snapshot and drop the just-added record.
69
+ * The resolved `(storage, key)` pair, memoized on first use. Resolution is lazy because the
70
+ * default-path branch needs `node:os`/`node:path`, and deferring those dynamic imports keeps the
71
+ * module safe to bundle for the browser and construction free of filesystem I/O.
72
72
  */
73
- private _loadPromise;
74
- /** Serializes writes so concurrent `add`s never interleave the load-modify-flush cycle. */
73
+ private _resolved;
74
+ /** Serializes writes so concurrent `add`s never interleave the read-modify-write cycle. */
75
75
  private _writeChain;
76
76
  constructor(options: TestMemoryStoreConfig);
77
77
  /**
@@ -83,6 +83,9 @@ export declare class TestMemoryStore implements MemoryStore {
83
83
  * @returns Matching memory entries ordered by relevance. Each entry's `metadata` includes a
84
84
  * `_relevanceScore` key (the token-overlap count). An empty or token-less query returns
85
85
  * no results.
86
+ * @throws An `Error` if `options.maxSearchResults` is less than 1, or if the backing blob is
87
+ * malformed (invalid JSON, not an array, or a record missing required string fields).
88
+ * @throws {@link StorageError} if the backend read fails.
86
89
  */
87
90
  search(query: string, options?: SearchOptions): Promise<MemoryEntry[]>;
88
91
  /**
@@ -95,28 +98,33 @@ export declare class TestMemoryStore implements MemoryStore {
95
98
  * reserved: {@link search} populates it on results, so a value stored under it here is
96
99
  * overwritten in search output.
97
100
  * @returns The id of the stored (or already-present) record
101
+ * @throws An `Error` if the store is not writable, if `content` is empty or whitespace, or if
102
+ * the existing backing blob is malformed (invalid JSON, not an array, or a record missing
103
+ * required string fields).
104
+ * @throws {@link StorageError} if the backend read or write fails.
98
105
  */
99
106
  add(content: string, metadata?: Record<string, JSONValue>): Promise<TestMemoryAddResult>;
100
107
  /**
101
- * Resolves (and caches) the backing-file path: the explicit `path` from config, else
102
- * `~/.strands/memory/<sanitized-store-name>.json`. Returns `undefined` for ephemeral stores. The
103
- * `node:os`/`node:path` imports are dynamic so the module stays safe to bundle for the browser.
108
+ * Resolves (and memoizes) the `(storage, key)` pair whose on-disk location matches the
109
+ * pre-`Storage` behavior exactly: `persist: false` an in-memory backend; an explicit `path` →
110
+ * the file at `path` (backend rooted at its parent); the default `~/.strands/memory/<name>.json`.
111
+ * The `node:os`/`node:path` imports are dynamic so the module stays safe to bundle for the browser.
104
112
  */
105
- private _getPath;
113
+ private _resolve;
106
114
  /**
107
- * Loads records from disk on first use; ephemeral stores (and a missing file) start empty. The
108
- * first call's promise is memoized in {@link _loadPromise} so concurrent callers await one shared
109
- * read rather than each loading independently and racing to assign the cache.
115
+ * Reads and parses the backing file from storage; a missing key (or empty store) starts empty.
116
+ * Reads fresh on every call there is no in-memory cache, so a search always reflects the
117
+ * latest write.
118
+ *
119
+ * @throws An `Error` if the stored file is not valid JSON, is not an array, or holds a record
120
+ * missing the required string fields. A backend I/O failure surfaces as its own `StorageError`.
110
121
  */
111
- private _load;
112
- /** Reads and parses the backing file (or returns an empty list when ephemeral / missing). */
113
- private _readFromDisk;
122
+ private _read;
114
123
  /**
115
- * Persists `records` to disk with an atomic write (write to a `.tmp` file, then rename) so a
116
- * crash mid-write can never leave a partially written file. A no-op for ephemeral stores. Callers
117
- * serialize invocations via {@link _writeChain}. Throws with the target path (and the OS error as
118
- * `cause`) when the path is unreachable or not writable.
124
+ * Persists `records` as a single JSON file through the storage backend. Callers serialize
125
+ * invocations via {@link _writeChain}; atomicity is the backend's responsibility. A backend I/O
126
+ * failure surfaces as its own `StorageError`, naming the key.
119
127
  */
120
- private _flush;
128
+ private _write;
121
129
  }
122
130
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/vended-memory-stores/test-memory-store/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAmBpD;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAA;CACX;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAA;IAEhD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,6GAA6G;IAC7G,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,aAAa,CAAoB;IACzC,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAgC;IAChD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAyC;IAC7D,2FAA2F;IAC3F,OAAO,CAAC,WAAW,CAAsC;gBAE7C,OAAO,EAAE,qBAAqB;IAyB1C;;;;;;;;;OASG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA2B5E;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmC9F;;;;OAIG;YACW,QAAQ;IAatB;;;;OAIG;YACW,KAAK;IAanB,6FAA6F;YAC/E,aAAa;IAuC3B;;;;;OAKG;YACW,MAAM;CAerB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/vended-memory-stores/test-memory-store/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAoBpD;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAA;CACX;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAA;IAEhD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,6GAA6G;IAC7G,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAA+C;IAChE,2FAA2F;IAC3F,OAAO,CAAC,WAAW,CAAsC;gBAE7C,OAAO,EAAE,qBAAqB;IAyB1C;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA2B5E;;;;;;;;;;;;;;OAcG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiC9F;;;;;OAKG;YACW,QAAQ;IAqBtB;;;;;;;OAOG;YACW,KAAK;IA4CnB;;;;OAIG;YACW,MAAM;CAKrB"}
@@ -1,4 +1,6 @@
1
1
  import { v7 as uuidv7 } from 'uuid';
2
+ import { InMemoryStorage } from '../../storage/in-memory-storage.js';
3
+ import { LocalFileStorage } from '../../storage/local-file-storage.js';
2
4
  const DEFAULT_MAX_SEARCH_RESULTS = 10;
3
5
  /**
4
6
  * Metadata key holding the token-overlap relevance score on a search result.
@@ -50,6 +52,9 @@ function tokenOverlapScore(queryTokens, content) {
50
52
  * Each {@link add} rewrites the whole file, so this fits modest volumes, not fit for high volume
51
53
  * production workloads. Use a managed store like {@link BedrockKnowledgeBaseStore} for that.
52
54
  *
55
+ * Persistence is backed by the unified `Storage` interface: `persist: true` (the default) uses a
56
+ * `LocalFileStorage`, `persist: false` an ephemeral `InMemoryStorage`.
57
+ *
53
58
  * The on-disk format is shared with the Python SDK's `TestMemoryStore`: records use the same
54
59
  * camelCase keys (`id`, `content`, `metadata`, `createdAt`) and the same timestamp shape, so a
55
60
  * backing file written by either SDK can be read by the other.
@@ -72,18 +77,15 @@ export class TestMemoryStore {
72
77
  writable;
73
78
  extraction;
74
79
  _persist;
75
- /** Explicit `path` override from config, if any; the default path is resolved lazily in {@link _getPath}. */
80
+ /** Explicit `path` override from config, if any; the default path is resolved lazily in {@link _resolve}. */
76
81
  _explicitPath;
77
- _resolvedPath;
78
- /** The loaded records once {@link _load} resolves; the working in-memory copy thereafter. */
79
- _records;
80
82
  /**
81
- * Memoizes the first (async) load so concurrent `search`/`add` callers share a single file read
82
- * instead of each racing their own without it, a search interleaved with a first-use add could
83
- * overwrite the cache with a pre-write snapshot and drop the just-added record.
83
+ * The resolved `(storage, key)` pair, memoized on first use. Resolution is lazy because the
84
+ * default-path branch needs `node:os`/`node:path`, and deferring those dynamic imports keeps the
85
+ * module safe to bundle for the browser and construction free of filesystem I/O.
84
86
  */
85
- _loadPromise;
86
- /** Serializes writes so concurrent `add`s never interleave the load-modify-flush cycle. */
87
+ _resolved;
88
+ /** Serializes writes so concurrent `add`s never interleave the read-modify-write cycle. */
87
89
  _writeChain = Promise.resolve();
88
90
  constructor(options) {
89
91
  const { name, description, maxSearchResults, writable, extraction, persist, path } = options;
@@ -118,6 +120,9 @@ export class TestMemoryStore {
118
120
  * @returns Matching memory entries ordered by relevance. Each entry's `metadata` includes a
119
121
  * `_relevanceScore` key (the token-overlap count). An empty or token-less query returns
120
122
  * no results.
123
+ * @throws An `Error` if `options.maxSearchResults` is less than 1, or if the backing blob is
124
+ * malformed (invalid JSON, not an array, or a record missing required string fields).
125
+ * @throws {@link StorageError} if the backend read fails.
121
126
  */
122
127
  async search(query, options) {
123
128
  if (options?.maxSearchResults !== undefined && options.maxSearchResults < 1) {
@@ -127,7 +132,7 @@ export class TestMemoryStore {
127
132
  const queryTokens = tokenize(query);
128
133
  if (queryTokens.size === 0)
129
134
  return [];
130
- const records = await this._load();
135
+ const records = await this._read();
131
136
  const scored = [];
132
137
  for (const record of records) {
133
138
  const score = tokenOverlapScore(queryTokens, record.content);
@@ -150,6 +155,10 @@ export class TestMemoryStore {
150
155
  * reserved: {@link search} populates it on results, so a value stored under it here is
151
156
  * overwritten in search output.
152
157
  * @returns The id of the stored (or already-present) record
158
+ * @throws An `Error` if the store is not writable, if `content` is empty or whitespace, or if
159
+ * the existing backing blob is malformed (invalid JSON, not an array, or a record missing
160
+ * required string fields).
161
+ * @throws {@link StorageError} if the backend read or write fails.
153
162
  */
154
163
  async add(content, metadata) {
155
164
  if (!this.writable) {
@@ -158,10 +167,12 @@ export class TestMemoryStore {
158
167
  if (!content.trim()) {
159
168
  throw new Error('TestMemoryStore: content must not be empty.');
160
169
  }
161
- // Serialize the whole load-modify-flush cycle behind any in-flight write so concurrent `add`s
162
- // don't each load the same snapshot and clobber one another (last-write-wins).
170
+ // Serialize the whole read-modify-write cycle behind any in-flight write so concurrent `add`s on
171
+ // this instance don't each read the same snapshot and clobber one another. Reading inside the
172
+ // chained callback guarantees add #N sees add #N-1's write. Serialization is per instance; adds
173
+ // from separate instances/processes against a shared file remain last-write-wins.
163
174
  const run = this._writeChain.then(async () => {
164
- const records = await this._load();
175
+ const records = await this._read();
165
176
  const normalizedContent = content.trim();
166
177
  const existing = records.find((record) => record.content.trim() === normalizedContent);
167
178
  if (existing)
@@ -169,11 +180,7 @@ export class TestMemoryStore {
169
180
  const record = { id: uuidv7(), content, createdAt: new Date().toISOString() };
170
181
  if (metadata !== undefined)
171
182
  record.metadata = metadata;
172
- // Flush the candidate list first and only commit it to the in-memory cache once the write
173
- // succeeds, so a failed flush never leaves a phantom record that later writes resurrect.
174
- const next = [...records, record];
175
- await this._flush(next);
176
- this._records = next;
183
+ await this._write([...records, record]);
177
184
  return { id: record.id };
178
185
  });
179
186
  // Keep the chain alive even if this write rejects, so a failed write doesn't wedge later ones.
@@ -181,101 +188,87 @@ export class TestMemoryStore {
181
188
  return run;
182
189
  }
183
190
  /**
184
- * Resolves (and caches) the backing-file path: the explicit `path` from config, else
185
- * `~/.strands/memory/<sanitized-store-name>.json`. Returns `undefined` for ephemeral stores. The
186
- * `node:os`/`node:path` imports are dynamic so the module stays safe to bundle for the browser.
191
+ * Resolves (and memoizes) the `(storage, key)` pair whose on-disk location matches the
192
+ * pre-`Storage` behavior exactly: `persist: false` an in-memory backend; an explicit `path` →
193
+ * the file at `path` (backend rooted at its parent); the default `~/.strands/memory/<name>.json`.
194
+ * The `node:os`/`node:path` imports are dynamic so the module stays safe to bundle for the browser.
187
195
  */
188
- async _getPath() {
189
- if (!this._persist)
190
- return undefined;
191
- if (this._resolvedPath !== undefined)
192
- return this._resolvedPath;
193
- if (this._explicitPath !== undefined) {
194
- this._resolvedPath = this._explicitPath;
195
- return this._resolvedPath;
196
+ async _resolve() {
197
+ if (this._resolved !== undefined)
198
+ return this._resolved;
199
+ if (!this._persist) {
200
+ this._resolved = { storage: new InMemoryStorage(), key: `${sanitizeName(this.name)}.json` };
196
201
  }
197
- const os = await import('node:os');
198
- const path = await import('node:path');
199
- this._resolvedPath = path.join(os.homedir(), '.strands', 'memory', `${sanitizeName(this.name)}.json`);
200
- return this._resolvedPath;
201
- }
202
- /**
203
- * Loads records from disk on first use; ephemeral stores (and a missing file) start empty. The
204
- * first call's promise is memoized in {@link _loadPromise} so concurrent callers await one shared
205
- * read rather than each loading independently and racing to assign the cache.
206
- */
207
- async _load() {
208
- if (this._records !== undefined)
209
- return this._records;
210
- if (this._loadPromise !== undefined)
211
- return this._loadPromise;
212
- this._loadPromise = this._readFromDisk();
213
- try {
214
- this._records = await this._loadPromise;
202
+ else if (this._explicitPath !== undefined) {
203
+ const path = await import('node:path');
204
+ this._resolved = {
205
+ storage: new LocalFileStorage(path.dirname(this._explicitPath)),
206
+ key: path.basename(this._explicitPath),
207
+ };
215
208
  }
216
- finally {
217
- this._loadPromise = undefined;
209
+ else {
210
+ const os = await import('node:os');
211
+ const path = await import('node:path');
212
+ this._resolved = {
213
+ storage: new LocalFileStorage(path.join(os.homedir(), '.strands', 'memory')),
214
+ key: `${sanitizeName(this.name)}.json`,
215
+ };
218
216
  }
219
- return this._records;
217
+ return this._resolved;
220
218
  }
221
- /** Reads and parses the backing file (or returns an empty list when ephemeral / missing). */
222
- async _readFromDisk() {
223
- const filePath = await this._getPath();
224
- if (filePath === undefined)
219
+ /**
220
+ * Reads and parses the backing file from storage; a missing key (or empty store) starts empty.
221
+ * Reads fresh on every call — there is no in-memory cache, so a search always reflects the
222
+ * latest write.
223
+ *
224
+ * @throws An `Error` if the stored file is not valid JSON, is not an array, or holds a record
225
+ * missing the required string fields. A backend I/O failure surfaces as its own `StorageError`.
226
+ */
227
+ async _read() {
228
+ const { storage, key } = await this._resolve();
229
+ const bytes = await storage.read(key);
230
+ if (bytes === null)
225
231
  return [];
226
- const { readFile } = await import('node:fs/promises');
227
- let rawContent;
232
+ const rawContent = new TextDecoder().decode(bytes);
233
+ let parsedBlob;
228
234
  try {
229
- rawContent = await readFile(filePath, 'utf8');
235
+ parsedBlob = JSON.parse(rawContent);
230
236
  }
231
237
  catch (error) {
232
- if (error.code === 'ENOENT')
233
- return [];
234
- throw new Error(`TestMemoryStore: failed to read ${filePath}`, { cause: error });
238
+ throw new Error(`TestMemoryStore: invalid JSON in ${key}`, { cause: error });
235
239
  }
236
- let parsedFile;
237
- try {
238
- parsedFile = JSON.parse(rawContent);
240
+ if (!Array.isArray(parsedBlob)) {
241
+ throw new Error(`TestMemoryStore: invalid backing file ${key}: expected a JSON array of records`);
239
242
  }
240
- catch (error) {
241
- throw new Error(`TestMemoryStore: invalid JSON in ${filePath}`, { cause: error });
242
- }
243
- if (!Array.isArray(parsedFile)) {
244
- throw new Error(`TestMemoryStore: invalid backing file ${filePath}: expected a JSON array of records`);
245
- }
246
- for (const record of parsedFile) {
243
+ for (const record of parsedBlob) {
247
244
  if (record === null ||
248
245
  typeof record !== 'object' ||
249
246
  typeof record.id !== 'string' ||
250
247
  typeof record.content !== 'string' ||
251
248
  typeof record.createdAt !== 'string') {
252
- throw new Error(`TestMemoryStore: invalid backing file ${filePath}: ` +
249
+ throw new Error(`TestMemoryStore: invalid backing file ${key}: ` +
253
250
  "each record must have string 'id', 'content', and 'createdAt' fields");
254
251
  }
252
+ // A present, non-null metadata must be a plain object. `null` is accepted and treated as
253
+ // absent, matching the Python store (which maps JSON null to None and skips the check).
254
+ if (record.metadata !== undefined &&
255
+ record.metadata !== null &&
256
+ (typeof record.metadata !== 'object' || Array.isArray(record.metadata))) {
257
+ throw new Error(`TestMemoryStore: invalid backing file ${key}: ` +
258
+ "a record's 'metadata', when present, must be a JSON object");
259
+ }
255
260
  }
256
- return parsedFile;
261
+ return parsedBlob;
257
262
  }
258
263
  /**
259
- * Persists `records` to disk with an atomic write (write to a `.tmp` file, then rename) so a
260
- * crash mid-write can never leave a partially written file. A no-op for ephemeral stores. Callers
261
- * serialize invocations via {@link _writeChain}. Throws with the target path (and the OS error as
262
- * `cause`) when the path is unreachable or not writable.
264
+ * Persists `records` as a single JSON file through the storage backend. Callers serialize
265
+ * invocations via {@link _writeChain}; atomicity is the backend's responsibility. A backend I/O
266
+ * failure surfaces as its own `StorageError`, naming the key.
263
267
  */
264
- async _flush(records) {
265
- const filePath = await this._getPath();
266
- if (filePath === undefined)
267
- return;
268
- const { mkdir, writeFile, rename } = await import('node:fs/promises');
269
- const { dirname } = await import('node:path');
270
- try {
271
- await mkdir(dirname(filePath), { recursive: true });
272
- const tmpPath = `${filePath}.tmp`;
273
- await writeFile(tmpPath, JSON.stringify(records, null, 2), 'utf8');
274
- await rename(tmpPath, filePath);
275
- }
276
- catch (error) {
277
- throw new Error(`TestMemoryStore: failed to write ${filePath}`, { cause: error });
278
- }
268
+ async _write(records) {
269
+ const { storage, key } = await this._resolve();
270
+ const bytes = new TextEncoder().encode(JSON.stringify(records, null, 2));
271
+ await storage.write(key, bytes);
279
272
  }
280
273
  }
281
274
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/vended-memory-stores/test-memory-store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/vended-memory-stores/test-memory-store/store.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,36 @@
1
1
  import type { Plugin } from '../../plugins/plugin.js';
2
2
  import type { Tool } from '../../tools/tool.js';
3
3
  import type { LocalAgent } from '../../types/agent.js';
4
- import { type Storage } from './storage.js';
4
+ import { type Storage as OffloaderStorage } from './storage.js';
5
+ import { type Storage } from '../../storage/storage.js';
5
6
  /** Configuration for the {@link ContextOffloader} plugin. */
6
7
  export interface ContextOffloaderConfig {
7
- /** Storage backend for persisting offloaded content. */
8
- storage: Storage;
8
+ /**
9
+ * Storage backend for persisting offloaded content.
10
+ *
11
+ * Accepts either:
12
+ * - A unified `Storage` (from `@strands-agents/sdk/storage`) — each offloaded content block
13
+ * occupies exactly one key (content-type is framed into the stored bytes).
14
+ * - A legacy offloader `Storage` (deprecated, from this module).
15
+ *
16
+ * When a unified `Storage` is provided, the plugin auto-scopes keys under `offloader/`
17
+ * unless the storage is already namespaced. If the resolved storage exposes a
18
+ * `forSandbox(sandbox)` method (as `LocalFileStorage` and its namespace views do),
19
+ * the plugin auto-routes I/O through the agent's sandbox.
20
+ */
21
+ storage: Storage | OffloaderStorage;
9
22
  /** Token threshold above which tool results are offloaded. Defaults to 2,500. */
10
23
  maxResultTokens?: number;
11
24
  /** Number of tokens to keep as an inline preview. Defaults to 1,000. */
12
25
  previewTokens?: number;
13
26
  /** Whether to register the `retrieve_offloaded_content` tool. Defaults to true. */
14
27
  includeRetrievalTool?: boolean;
28
+ /**
29
+ * Number of agent loop cycles before an offloaded entry is evicted.
30
+ * Entries stored more than this many cycles ago are deleted.
31
+ * Defaults to 20. Set to `null` to disable eviction.
32
+ */
33
+ evictAfterCycles?: number | null;
15
34
  }
16
35
  /**
17
36
  * Plugin that offloads oversized tool results to reduce context consumption.
@@ -20,26 +39,39 @@ export interface ContextOffloaderConfig {
20
39
  * each content block to a storage backend and replaces the in-context result with
21
40
  * a truncated text preview plus per-block storage references.
22
41
  *
42
+ * ## Eviction behavior
43
+ *
44
+ * Offloaded entries are evicted after `evictAfterCycles` agent loop cycles (default 20).
45
+ * This applies to both unified `Storage` backends and legacy offloader storage.
46
+ *
23
47
  * @example
24
48
  * ```typescript
25
- * import { ContextOffloader, InMemoryStorage } from '@strands-agents/sdk/vended-plugins/context-offloader'
49
+ * import { ContextOffloader } from '@strands-agents/sdk/vended-plugins/context-offloader'
50
+ * import { InMemoryStorage } from '@strands-agents/sdk/storage'
26
51
  *
27
52
  * const agent = new Agent({
28
53
  * model,
29
- * plugins: [new ContextOffloader({ storage: new InMemoryStorage() })],
54
+ * plugins: [new ContextOffloader({
55
+ * storage: new InMemoryStorage(),
56
+ * })],
30
57
  * })
31
58
  * ```
32
59
  */
33
60
  export declare class ContextOffloader implements Plugin {
34
61
  readonly name = "strands:context-offloader";
62
+ private static readonly _DEFAULT_EVICT_AFTER_CYCLES;
63
+ private readonly _sandboxableStorage;
35
64
  private readonly _storage;
36
65
  private readonly _maxResultTokens;
37
66
  private readonly _previewTokens;
38
67
  private readonly _includeRetrievalTool;
68
+ private readonly _evictAfterCycles;
39
69
  private readonly _storageByAgent;
70
+ private readonly _keyStoredAt;
40
71
  private _retrievalTool;
41
72
  constructor(config: ContextOffloaderConfig);
42
73
  initAgent(agent: LocalAgent): void;
74
+ private _evict;
43
75
  getTools(): Tool[];
44
76
  private _storageForAgent;
45
77
  private _storageForToolContext;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/vended-plugins/context-offloader/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAUtD,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AA2FzE,6DAA6D;AAC7D,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAA;IAChB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,QAAQ,CAAC,IAAI,+BAA8B;IAE3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,cAAc,CAAkB;gBAE5B,MAAM,EAAE,sBAAsB;IAc1C,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAelC,QAAQ,IAAI,IAAI,EAAE;IAMlB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,oBAAoB;YAmDd,WAAW;IAkCzB,OAAO,CAAC,iBAAiB;YAiCX,iBAAiB;CA6DhC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/vended-plugins/context-offloader/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAWtD,OAAO,EAAyD,KAAK,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACtH,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAwI9E,6DAA6D;AAC7D,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;;;OAYG;IACH,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAA;IACnC,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,QAAQ,CAAC,IAAI,+BAA8B;IAE3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAK;IAExD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuD;IAC3F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwD;IACxF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,cAAc,CAAkB;gBAE5B,MAAM,EAAE,sBAAsB;IAiC1C,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAiBlC,OAAO,CAAC,MAAM;IAiBd,QAAQ,IAAI,IAAI,EAAE;IAMlB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,oBAAoB;YAmDd,WAAW;IAkCzB,OAAO,CAAC,iBAAiB;YAiCX,iBAAiB;CAkEhC"}