@strands-agents/sdk 1.5.0 → 1.7.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 (232) hide show
  1. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  2. package/dist/src/__fixtures__/agent-helpers.js +3 -0
  3. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  4. package/dist/src/agent/__tests__/agent.context-manager.test.js +0 -1
  5. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +1 -1
  6. package/dist/src/agent/__tests__/agent.stateful-model.test.js +2 -2
  7. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -1
  8. package/dist/src/agent/agent.d.ts +8 -5
  9. package/dist/src/agent/agent.d.ts.map +1 -1
  10. package/dist/src/agent/agent.js +60 -33
  11. package/dist/src/agent/agent.js.map +1 -1
  12. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +19 -0
  13. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts.map +1 -0
  14. package/dist/src/context-manager/modes/agentic/agentic-context.js +245 -0
  15. package/dist/src/context-manager/modes/agentic/agentic-context.js.map +1 -0
  16. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts +2 -0
  17. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts.map +1 -0
  18. package/dist/src/conversation-manager/__tests__/agentic-context.test.js +332 -0
  19. package/dist/src/conversation-manager/__tests__/agentic-context.test.js.map +1 -0
  20. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts +2 -0
  21. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts.map +1 -0
  22. package/dist/src/conversation-manager/__tests__/context-compression.test.js +176 -0
  23. package/dist/src/conversation-manager/__tests__/context-compression.test.js.map +1 -0
  24. package/dist/src/conversation-manager/__tests__/pin.test.js +1 -1
  25. package/dist/src/conversation-manager/__tests__/pin.test.js.map +1 -1
  26. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +1 -1
  27. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  28. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +1 -1
  29. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  30. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts +2 -0
  31. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts.map +1 -0
  32. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js +138 -0
  33. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js.map +1 -0
  34. package/dist/src/conversation-manager/compression/context-compression.d.ts +39 -0
  35. package/dist/src/conversation-manager/compression/context-compression.d.ts.map +1 -0
  36. package/dist/src/conversation-manager/compression/context-compression.js +150 -0
  37. package/dist/src/conversation-manager/compression/context-compression.js.map +1 -0
  38. package/dist/src/conversation-manager/{pin-message.d.ts → compression/pin-message.d.ts} +1 -1
  39. package/dist/src/conversation-manager/compression/pin-message.d.ts.map +1 -0
  40. package/dist/src/conversation-manager/{pin-message.js → compression/pin-message.js} +1 -1
  41. package/dist/src/conversation-manager/compression/pin-message.js.map +1 -0
  42. package/dist/src/conversation-manager/conversation-manager.d.ts +2 -0
  43. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
  44. package/dist/src/conversation-manager/conversation-manager.js +2 -2
  45. package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
  46. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  47. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +4 -35
  48. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  49. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +0 -19
  50. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  51. package/dist/src/conversation-manager/summarizing-conversation-manager.js +4 -107
  52. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  53. package/dist/src/index.d.ts +3 -3
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +1 -1
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/injection/__tests__/message-injection.test.d.ts +2 -0
  58. package/dist/src/injection/__tests__/message-injection.test.d.ts.map +1 -0
  59. package/dist/src/injection/__tests__/message-injection.test.js +200 -0
  60. package/dist/src/injection/__tests__/message-injection.test.js.map +1 -0
  61. package/dist/src/injection/index.d.ts +6 -0
  62. package/dist/src/injection/index.d.ts.map +1 -0
  63. package/dist/src/injection/index.js +2 -0
  64. package/dist/src/injection/index.js.map +1 -0
  65. package/dist/src/injection/message-injection.d.ts +65 -0
  66. package/dist/src/injection/message-injection.d.ts.map +1 -0
  67. package/dist/src/injection/message-injection.js +134 -0
  68. package/dist/src/injection/message-injection.js.map +1 -0
  69. package/dist/src/injection/types.d.ts +63 -0
  70. package/dist/src/injection/types.d.ts.map +1 -0
  71. package/dist/src/injection/types.js +2 -0
  72. package/dist/src/injection/types.js.map +1 -0
  73. package/dist/src/injection/xml.d.ts +27 -0
  74. package/dist/src/injection/xml.d.ts.map +1 -0
  75. package/dist/src/injection/xml.js +31 -0
  76. package/dist/src/injection/xml.js.map +1 -0
  77. package/dist/src/memory/__tests__/memory-manager.test.js +188 -2
  78. package/dist/src/memory/__tests__/memory-manager.test.js.map +1 -1
  79. package/dist/src/memory/__tests__/memory-tracing.test.d.ts +2 -0
  80. package/dist/src/memory/__tests__/memory-tracing.test.d.ts.map +1 -0
  81. package/dist/src/memory/__tests__/memory-tracing.test.js +250 -0
  82. package/dist/src/memory/__tests__/memory-tracing.test.js.map +1 -0
  83. package/dist/src/memory/extraction/__tests__/extraction.test.js +41 -39
  84. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +1 -1
  85. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +37 -1
  86. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +1 -1
  87. package/dist/src/memory/extraction/coordinator.d.ts +6 -1
  88. package/dist/src/memory/extraction/coordinator.d.ts.map +1 -1
  89. package/dist/src/memory/extraction/coordinator.js +48 -10
  90. package/dist/src/memory/extraction/coordinator.js.map +1 -1
  91. package/dist/src/memory/extraction/model-extractor.d.ts.map +1 -1
  92. package/dist/src/memory/extraction/model-extractor.js +30 -9
  93. package/dist/src/memory/extraction/model-extractor.js.map +1 -1
  94. package/dist/src/memory/extraction/types.d.ts +7 -0
  95. package/dist/src/memory/extraction/types.d.ts.map +1 -1
  96. package/dist/src/memory/extraction/types.js.map +1 -1
  97. package/dist/src/memory/index.d.ts +2 -1
  98. package/dist/src/memory/index.d.ts.map +1 -1
  99. package/dist/src/memory/index.js.map +1 -1
  100. package/dist/src/memory/memory-manager.d.ts +64 -4
  101. package/dist/src/memory/memory-manager.d.ts.map +1 -1
  102. package/dist/src/memory/memory-manager.js +236 -36
  103. package/dist/src/memory/memory-manager.js.map +1 -1
  104. package/dist/src/memory/types.d.ts +72 -0
  105. package/dist/src/memory/types.d.ts.map +1 -1
  106. package/dist/src/middleware/__tests__/agent-middleware.test.js +0 -1
  107. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +1 -1
  108. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts +2 -0
  109. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts.map +1 -0
  110. package/dist/src/middleware/__tests__/copy-on-input.test.js +379 -0
  111. package/dist/src/middleware/__tests__/copy-on-input.test.js.map +1 -0
  112. package/dist/src/middleware/stages.d.ts +14 -7
  113. package/dist/src/middleware/stages.d.ts.map +1 -1
  114. package/dist/src/middleware/stages.js +3 -0
  115. package/dist/src/middleware/stages.js.map +1 -1
  116. package/dist/src/models/__tests__/google.test.js +41 -0
  117. package/dist/src/models/__tests__/google.test.js.map +1 -1
  118. package/dist/src/models/google/adapters.d.ts.map +1 -1
  119. package/dist/src/models/google/adapters.js +21 -3
  120. package/dist/src/models/google/adapters.js.map +1 -1
  121. package/dist/src/models/openai/__tests__/errors.test.js +9 -0
  122. package/dist/src/models/openai/__tests__/errors.test.js.map +1 -1
  123. package/dist/src/models/openai/__tests__/responses.test.js +47 -0
  124. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  125. package/dist/src/models/openai/errors.d.ts.map +1 -1
  126. package/dist/src/models/openai/errors.js +4 -1
  127. package/dist/src/models/openai/errors.js.map +1 -1
  128. package/dist/src/models/openai/responses-adapter.d.ts +1 -0
  129. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -1
  130. package/dist/src/models/openai/responses-adapter.js +24 -10
  131. package/dist/src/models/openai/responses-adapter.js.map +1 -1
  132. package/dist/src/multiagent/__tests__/graph.test.js +22 -1
  133. package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
  134. package/dist/src/multiagent/graph.d.ts.map +1 -1
  135. package/dist/src/multiagent/graph.js +4 -1
  136. package/dist/src/multiagent/graph.js.map +1 -1
  137. package/dist/src/sandbox/__tests__/docker.test.node.js +2 -2
  138. package/dist/src/sandbox/__tests__/docker.test.node.js.map +1 -1
  139. package/dist/src/sandbox/__tests__/ssh.test.node.js +2 -2
  140. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +1 -1
  141. package/dist/src/sandbox/base.d.ts +0 -5
  142. package/dist/src/sandbox/base.d.ts.map +1 -1
  143. package/dist/src/sandbox/base.js +0 -5
  144. package/dist/src/sandbox/base.js.map +1 -1
  145. package/dist/src/sandbox/docker.d.ts.map +1 -1
  146. package/dist/src/sandbox/docker.js +2 -0
  147. package/dist/src/sandbox/docker.js.map +1 -1
  148. package/dist/src/sandbox/ssh.d.ts.map +1 -1
  149. package/dist/src/sandbox/ssh.js +2 -0
  150. package/dist/src/sandbox/ssh.js.map +1 -1
  151. package/dist/src/telemetry/__tests__/tracer.test.node.js +207 -9
  152. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -1
  153. package/dist/src/telemetry/tracer.d.ts +82 -2
  154. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  155. package/dist/src/telemetry/tracer.js +242 -3
  156. package/dist/src/telemetry/tracer.js.map +1 -1
  157. package/dist/src/telemetry/types.d.ts +86 -1
  158. package/dist/src/telemetry/types.d.ts.map +1 -1
  159. package/dist/src/tsconfig.tsbuildinfo +1 -1
  160. package/dist/src/types/json.js +2 -2
  161. package/dist/src/types/json.js.map +1 -1
  162. package/dist/src/types/messages.d.ts +8 -0
  163. package/dist/src/types/messages.d.ts.map +1 -1
  164. package/dist/src/types/messages.js +13 -1
  165. package/dist/src/types/messages.js.map +1 -1
  166. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts +2 -0
  167. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts.map +1 -0
  168. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js +756 -0
  169. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js.map +1 -0
  170. package/dist/src/vended-interventions/cedar/cedar.d.ts +114 -0
  171. package/dist/src/vended-interventions/cedar/cedar.d.ts.map +1 -0
  172. package/dist/src/vended-interventions/cedar/cedar.js +239 -0
  173. package/dist/src/vended-interventions/cedar/cedar.js.map +1 -0
  174. package/dist/src/vended-interventions/cedar/index.d.ts +3 -0
  175. package/dist/src/vended-interventions/cedar/index.d.ts.map +1 -0
  176. package/dist/src/vended-interventions/cedar/index.js +2 -0
  177. package/dist/src/vended-interventions/cedar/index.js.map +1 -0
  178. package/dist/src/vended-interventions/cedar/schema-generator.d.ts +10 -0
  179. package/dist/src/vended-interventions/cedar/schema-generator.d.ts.map +1 -0
  180. package/dist/src/vended-interventions/cedar/schema-generator.js +38 -0
  181. package/dist/src/vended-interventions/cedar/schema-generator.js.map +1 -0
  182. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.d.ts +2 -0
  183. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.d.ts.map +1 -0
  184. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/{bedrock-knowledge-base-store.test.js → bedrock-knowledge-base-store.test.node.js} +154 -7
  185. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.js.map +1 -0
  186. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts +1 -1
  187. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts.map +1 -1
  188. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js.map +1 -1
  189. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts +57 -0
  190. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts.map +1 -1
  191. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js +86 -11
  192. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js.map +1 -1
  193. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts +2 -0
  194. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts.map +1 -0
  195. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js +96 -0
  196. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js.map +1 -0
  197. package/dist/src/vended-plugins/context-injector/index.d.ts +25 -0
  198. package/dist/src/vended-plugins/context-injector/index.d.ts.map +1 -0
  199. package/dist/src/vended-plugins/context-injector/index.js +23 -0
  200. package/dist/src/vended-plugins/context-injector/index.js.map +1 -0
  201. package/dist/src/vended-plugins/context-injector/plugin.d.ts +55 -0
  202. package/dist/src/vended-plugins/context-injector/plugin.d.ts.map +1 -0
  203. package/dist/src/vended-plugins/context-injector/plugin.js +41 -0
  204. package/dist/src/vended-plugins/context-injector/plugin.js.map +1 -0
  205. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +43 -4
  206. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -1
  207. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +5 -1
  208. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +1 -1
  209. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +68 -0
  210. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -1
  211. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  212. package/dist/src/vended-plugins/context-offloader/plugin.js +12 -2
  213. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  214. package/dist/src/vended-plugins/context-offloader/storage.d.ts +29 -1
  215. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  216. package/dist/src/vended-plugins/context-offloader/storage.js +76 -5
  217. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  218. package/dist/src/vended-plugins/index.d.ts +2 -1
  219. package/dist/src/vended-plugins/index.d.ts.map +1 -1
  220. package/dist/src/vended-plugins/index.js +2 -1
  221. package/dist/src/vended-plugins/index.js.map +1 -1
  222. package/dist/src/vended-plugins/skills/skill.d.ts.map +1 -1
  223. package/dist/src/vended-plugins/skills/skill.js +4 -2
  224. package/dist/src/vended-plugins/skills/skill.js.map +1 -1
  225. package/dist/src/vended-tools/http-request/http-request.js +1 -1
  226. package/dist/src/vended-tools/http-request/http-request.js.map +1 -1
  227. package/package.json +54 -36
  228. package/dist/src/conversation-manager/pin-message.d.ts.map +0 -1
  229. package/dist/src/conversation-manager/pin-message.js.map +0 -1
  230. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts +0 -2
  231. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts.map +0 -1
  232. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import type { MemoryStore } from '../types.js';
2
2
  import type { MessageData } from '../../types/messages.js';
3
3
  import type { Model } from '../../models/model.js';
4
+ import type { Tracer } from '../../telemetry/tracer.js';
4
5
  import type { ResolvedExtractionConfig } from './resolve-extraction-config.js';
5
6
  /**
6
7
  * A store paired with its fully-resolved extraction config.
@@ -56,6 +57,7 @@ export declare class ExtractionCoordinator {
56
57
  /** Per store: its resolved extraction config (triggers, extractor, filter). */
57
58
  private readonly _storeToExtractionConfig;
58
59
  private readonly _defaultModel;
60
+ private readonly _tracer;
59
61
  /** The shared list of messages waiting to be saved, oldest first. Each is tagged with its `seq`. */
60
62
  private _pending;
61
63
  /** The number to give the next message added to the buffer. Only ever increases. */
@@ -71,8 +73,9 @@ export declare class ExtractionCoordinator {
71
73
  /**
72
74
  * @param stores - The extraction-configured stores this coordinator manages, each with its resolved config
73
75
  * @param defaultModel - The agent's model, passed to extractors that don't configure their own
76
+ * @param tracer - Tracer for extraction spans, shared with the {@link MemoryManager}
74
77
  */
75
- constructor(stores: ExtractionBinding[], defaultModel: Model);
78
+ constructor(stores: ExtractionBinding[], defaultModel: Model, tracer: Tracer);
76
79
  /** Adds a message to the buffer. */
77
80
  record(message: MessageData): void;
78
81
  /**
@@ -114,6 +117,8 @@ export declare class ExtractionCoordinator {
114
117
  *
115
118
  * Fact writes run in parallel. If any fails we throw, which makes the caller retry the whole batch
116
119
  * next time - so a fact that already saved may be written again (stores should expect duplicates).
120
+ *
121
+ * @returns The number of entries written (extracted facts, or raw messages).
117
122
  */
118
123
  private _write;
119
124
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../../src/memory/extraction/coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAIlD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE9E;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,KAAK,EAAE,WAAW,CAAA;IAClB,kFAAkF;IAClF,MAAM,EAAE,wBAAwB,CAAA;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAsCvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAmD;IAC5F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAO;IACrC,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAwB;IACxC,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAI;IACpB,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,qGAAqG;IACrG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAiC;IACtE,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAElE;;;OAGG;gBACS,MAAM,EAAE,iBAAiB,EAAE,EAAE,YAAY,EAAE,KAAK;IAS5D,oCAAoC;IACpC,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1C,8FAA8F;IAC9F,OAAO,CAAC,QAAQ;IAOhB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAcd,QAAQ;IA+BtB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;;;OAOG;YACW,MAAM;IAqBpB;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;CAUd"}
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../../src/memory/extraction/coordinator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAGlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE9E;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,KAAK,EAAE,WAAW,CAAA;IAClB,kFAAkF;IAClF,MAAM,EAAE,wBAAwB,CAAA;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAsCvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAmD;IAC5F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAO;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAwB;IACxC,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAI;IACpB,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,qGAAqG;IACrG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAiC;IACtE,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAElE;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAU5E,oCAAoC;IACpC,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,8FAA8F;IAC9F,OAAO,CAAC,QAAQ;IAOhB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAcd,QAAQ;IAwDtB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;;;;;OASG;YACW,MAAM;IAyBpB;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;CAUd"}
@@ -1,3 +1,4 @@
1
+ import { context, trace } from '@opentelemetry/api';
1
2
  import { logger } from '../../logging/logger.js';
2
3
  import { normalizeError } from '../../errors.js';
3
4
  /**
@@ -73,6 +74,7 @@ export class ExtractionCoordinator {
73
74
  /** Per store: its resolved extraction config (triggers, extractor, filter). */
74
75
  _storeToExtractionConfig = new Map();
75
76
  _defaultModel;
77
+ _tracer;
76
78
  /** The shared list of messages waiting to be saved, oldest first. Each is tagged with its `seq`. */
77
79
  _pending = [];
78
80
  /** The number to give the next message added to the buffer. Only ever increases. */
@@ -88,10 +90,12 @@ export class ExtractionCoordinator {
88
90
  /**
89
91
  * @param stores - The extraction-configured stores this coordinator manages, each with its resolved config
90
92
  * @param defaultModel - The agent's model, passed to extractors that don't configure their own
93
+ * @param tracer - Tracer for extraction spans, shared with the {@link MemoryManager}
91
94
  */
92
- constructor(stores, defaultModel) {
95
+ constructor(stores, defaultModel, tracer) {
93
96
  this._stores = stores.map((s) => s.store);
94
97
  this._defaultModel = defaultModel;
98
+ this._tracer = tracer;
95
99
  for (const { store, config } of stores) {
96
100
  this._storeToExtractionConfig.set(store, config);
97
101
  this._marks.set(store, -1);
@@ -110,12 +114,15 @@ export class ExtractionCoordinator {
110
114
  if (!this._shouldAttempt(store)) {
111
115
  return Promise.resolve();
112
116
  }
113
- return this._enqueue(store);
117
+ // Capture the agent span synchronously: this runs inside the live agent span (via the trigger
118
+ // hook), but the save itself runs detached after that span may have ended.
119
+ const linkContext = this._tracer.currentSpanContext();
120
+ return this._enqueue(store, linkContext);
114
121
  }
115
122
  /** Queues a save for the store behind its previous one, so saves never overlap or reorder. */
116
- _enqueue(store) {
123
+ _enqueue(store, linkContext) {
117
124
  const previous = this._chains.get(store) ?? Promise.resolve();
118
- const next = previous.then(() => this._extract(store));
125
+ const next = previous.then(() => this._extract(store, linkContext));
119
126
  this._chains.set(store, next);
120
127
  return next;
121
128
  }
@@ -154,7 +161,7 @@ export class ExtractionCoordinator {
154
161
  }
155
162
  }
156
163
  }
157
- async _extract(store) {
164
+ async _extract(store, linkContext) {
158
165
  const mark = this._marks.get(store) ?? -1;
159
166
  const fresh = this._pending.filter((buffered) => buffered.seq > mark);
160
167
  if (fresh.length === 0) {
@@ -164,11 +171,22 @@ export class ExtractionCoordinator {
164
171
  // pick them up again. If the save fails we put the mark back (below) and they retry.
165
172
  const highestSeq = fresh[fresh.length - 1].seq;
166
173
  this._marks.set(store, highestSeq);
167
- const filter = this._storeToExtractionConfig.get(store).filter;
168
- const filtered = _filterMessages(fresh, filter);
174
+ const config = this._storeToExtractionConfig.get(store);
175
+ const filtered = _filterMessages(fresh, config.filter);
176
+ const span = this._tracer.startMemoryExtractSpan({
177
+ storeName: store.name,
178
+ messageCount: filtered.length,
179
+ filteredCount: fresh.length - filtered.length,
180
+ ...(config.extractor && { extractor: config.extractor.constructor.name }),
181
+ ...(linkContext && { agentSpanContext: linkContext }),
182
+ });
183
+ let saveError;
184
+ let entryCount = 0;
169
185
  try {
170
186
  if (filtered.length > 0) {
171
- await this._write(store, filtered);
187
+ // Set the extract span active so the model-extractor's invoke span parents under it.
188
+ const write = () => this._write(store, filtered);
189
+ entryCount = span ? await context.with(trace.setSpan(context.active(), span), write) : await write();
172
190
  // A successful write clears the failure streak and ends any backoff. Only a real write counts
173
191
  // as recovery - a fully-filtered (empty) turn never touched the backend, so it leaves backoff
174
192
  // state untouched (it still advances the mark above; those messages had nothing to save).
@@ -177,11 +195,25 @@ export class ExtractionCoordinator {
177
195
  }
178
196
  }
179
197
  catch (err) {
198
+ saveError = err;
180
199
  this._onSaveFailed(store, mark, err);
181
200
  }
182
201
  finally {
183
202
  this._trim();
184
203
  }
204
+ // End the span after the save resolves and best-effort, so span bookkeeping is decoupled from the
205
+ // save outcome and can never break this detached background task.
206
+ try {
207
+ if (saveError === undefined) {
208
+ this._tracer.endMemoryExtractSpan(span, { entryCount });
209
+ }
210
+ else {
211
+ this._tracer.endMemoryExtractSpan(span, { error: normalizeError(saveError) });
212
+ }
213
+ }
214
+ catch (err) {
215
+ logger.debug(`store=<${store.name}>, reason=<${normalizeError(err).message}> | memory extract span end failed`);
216
+ }
185
217
  }
186
218
  /**
187
219
  * Handles a failed save. Puts the mark back so the messages retry next time. Once a store has failed
@@ -208,21 +240,27 @@ export class ExtractionCoordinator {
208
240
  *
209
241
  * Fact writes run in parallel. If any fails we throw, which makes the caller retry the whole batch
210
242
  * next time - so a fact that already saved may be written again (stores should expect duplicates).
243
+ *
244
+ * @returns The number of entries written (extracted facts, or raw messages).
211
245
  */
212
246
  async _write(store, buffered) {
213
247
  const extractor = this._storeToExtractionConfig.get(store).extractor;
214
248
  const messages = buffered.map((buffer) => buffer.message);
215
249
  if (extractor) {
216
- const entries = await extractor.extract(messages, { defaultModel: this._defaultModel });
250
+ const entries = await extractor.extract(messages, {
251
+ defaultModel: this._defaultModel,
252
+ tracer: this._tracer,
253
+ });
217
254
  const settled = await Promise.allSettled(entries.map((entry) => store.add(entry.content, entry.metadata)));
218
255
  const failures = settled.filter((r) => r.status === 'rejected');
219
256
  if (failures.length > 0) {
220
257
  throw new AggregateError(failures.map((failure) => failure.reason), `failed to write ${failures.length} of ${entries.length} extracted entries`);
221
258
  }
222
- return;
259
+ return entries.length;
223
260
  }
224
261
  // Pass each message's sequence number so a store can build an idempotency key surviving retries.
225
262
  await store.addMessages(messages, { sequenceNumbers: buffered.map((buffer) => buffer.seq) });
263
+ return messages.length;
226
264
  }
227
265
  /**
228
266
  * Removes messages from the buffer once every store has saved them (so none still needs them).
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../../src/memory/extraction/coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../../src/memory/extraction/coordinator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-extractor.d.ts","sourceRoot":"","sources":["../../../../src/memory/extraction/model-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAO/E,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,qGAAqG;IACrG,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,kGAAkG;IAClG,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;gBAE1B,OAAO,GAAE,qBAA0B;IAOzC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAsChG"}
1
+ {"version":3,"file":"model-extractor.d.ts","sourceRoot":"","sources":["../../../../src/memory/extraction/model-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAO/E,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,qGAAqG;IACrG,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,kGAAkG;IAClG,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;gBAE1B,OAAO,GAAE,qBAA0B;IAOzC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CA6DhG"}
@@ -1,5 +1,6 @@
1
1
  import { Message, TextBlock } from '../../types/messages.js';
2
2
  import { logger } from '../../logging/logger.js';
3
+ import { normalizeError } from '../../errors.js';
3
4
  /** Default instruction guiding the model to emit discrete, durable facts as a JSON array. */
4
5
  const DEFAULT_SYSTEM_PROMPT = `You extract durable facts worth remembering across future conversations from a transcript.
5
6
 
@@ -45,19 +46,39 @@ export class ModelExtractor {
45
46
  content: [new TextBlock(`Extract facts from the following transcript:\n\n${transcript}`)],
46
47
  }),
47
48
  ];
48
- const stream = model.streamAggregated(promptMessages, { systemPrompt: this._systemPrompt });
49
- // Manual .next() loop: streamAggregated returns its result as the generator return value
50
- // (done:true), which for-await-of discards.
49
+ const span = context?.tracer?.startModelInvokeSpan({
50
+ messages: promptMessages,
51
+ ...(model.modelId !== undefined && { modelId: model.modelId }),
52
+ systemPrompt: this._systemPrompt,
53
+ }) ?? null;
51
54
  let result;
52
- for (;;) {
53
- result = await stream.next();
54
- if (result.done)
55
- break;
55
+ try {
56
+ const stream = model.streamAggregated(promptMessages, { systemPrompt: this._systemPrompt });
57
+ // Manual .next() loop: streamAggregated returns its result as the generator return value
58
+ // (done:true), which for-await-of discards.
59
+ for (;;) {
60
+ result = await stream.next();
61
+ if (result.done)
62
+ break;
63
+ }
64
+ }
65
+ catch (error) {
66
+ context?.tracer?.endModelInvokeSpan(span, { error: normalizeError(error) });
67
+ throw error;
56
68
  }
57
69
  if (!result?.done || !result.value) {
58
- throw new Error('ModelExtractor: model returned no response');
70
+ const noResponseError = new Error('ModelExtractor: model returned no response');
71
+ context?.tracer?.endModelInvokeSpan(span, { error: noResponseError });
72
+ throw noResponseError;
59
73
  }
60
- const text = result.value.message.content
74
+ const { message, stopReason, metadata } = result.value;
75
+ context?.tracer?.endModelInvokeSpan(span, {
76
+ output: message,
77
+ stopReason,
78
+ ...(metadata?.usage !== undefined && { usage: metadata.usage }),
79
+ ...(metadata?.metrics !== undefined && { metrics: metadata.metrics }),
80
+ });
81
+ const text = message.content
61
82
  .map((block) => ('text' in block ? block.text : ''))
62
83
  .join('')
63
84
  .trim();
@@ -1 +1 @@
1
- {"version":3,"file":"model-extractor.js","sourceRoot":"","sources":["../../../../src/memory/extraction/model-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-extractor.js","sourceRoot":"","sources":["../../../../src/memory/extraction/model-extractor.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { JSONValue } from '../../types/json.js';
2
2
  import type { MessageData, ContentBlockData } from '../../types/messages.js';
3
3
  import type { Model } from '../../models/model.js';
4
4
  import type { LocalAgent } from '../../types/agent.js';
5
+ import type { Tracer } from '../../telemetry/tracer.js';
5
6
  type DistributedKeyof<Union> = Union extends unknown ? keyof Union : never;
6
7
  /**
7
8
  * Content block kinds that {@link MemoryMessageFilter} can exclude before messages reach an
@@ -44,6 +45,12 @@ export interface ExtractionResult {
44
45
  export interface ExtractorContext {
45
46
  /** The agent's model, supplied so an extractor can default to it. */
46
47
  defaultModel?: Model;
48
+ /**
49
+ * Tracer for wrapping the extractor's model call in a span, parented to the active extraction
50
+ * span. Supplied by the {@link ExtractionCoordinator}; omitted for direct/standalone use.
51
+ * @internal
52
+ */
53
+ tracer?: Tracer;
47
54
  }
48
55
  /**
49
56
  * Transforms conversation messages into discrete, searchable entries.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/memory/extraction/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAItD,KAAK,gBAAgB,CAAC,KAAK,IAAI,KAAK,SAAS,OAAO,GAAG,MAAM,KAAK,GAAG,KAAK,CAAA;AAE1E;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;AAEvE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAClC;AAED,6FAA6F;AAC7F,eAAO,MAAM,6BAA6B,EAAE,mBAE3C,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,KAAK,EAAE,UAAU,CAAA;IACjB,sMAAsM;IACtM,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,iBAAiB;IACrC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAE9B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CACzD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;IACjD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/memory/extraction/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,KAAK,gBAAgB,CAAC,KAAK,IAAI,KAAK,SAAS,OAAO,GAAG,MAAM,KAAK,GAAG,KAAK,CAAA;AAE1E;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;AAEvE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAClC;AAED,6FAA6F;AAC7F,eAAO,MAAM,6BAA6B,EAAE,mBAE3C,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,KAAK,EAAE,UAAU,CAAA;IACjB,sMAAsM;IACtM,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,iBAAiB;IACrC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAE9B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CACzD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;IACjD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/memory/extraction/types.ts"],"names":[],"mappings":"AA+BA,6FAA6F;AAC7F,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;CACnC,CAAA;AAsDD;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,iBAAiB;CAatC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/memory/extraction/types.ts"],"names":[],"mappings":"AAgCA,6FAA6F;AAC7F,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;CACnC,CAAA;AA4DD;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,iBAAiB;CAatC"}
@@ -1,5 +1,6 @@
1
1
  export { MemoryManager } from './memory-manager.js';
2
- export type { MemoryEntry, MemoryStore, MemoryStoreConfig, SearchOptions, AddMessagesContext, MemorySearchOptions, MemoryAddOptions, MemoryToolConfig, MemoryAddToolConfig, MemoryManagerConfig, } from './types.js';
2
+ export type { MemoryEntry, MemoryStore, MemoryStoreConfig, SearchOptions, AddMessagesContext, MemorySearchOptions, MemoryAddOptions, MemoryToolConfig, MemoryAddToolConfig, MemoryManagerConfig, MemoryInjectionConfig, } from './types.js';
3
+ export type { InjectionConfig, InjectionTrigger, InjectionContext } from '../injection/index.js';
3
4
  export { ExtractionTrigger } from './extraction/types.js';
4
5
  export { InvocationTrigger, IntervalTrigger } from './extraction/triggers.js';
5
6
  export type { IntervalTriggerOptions } from './extraction/triggers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAEhG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAcnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAgBnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA"}
@@ -43,6 +43,15 @@ export declare class MemoryManager implements Plugin {
43
43
  private readonly _extractionStores;
44
44
  /** Background extraction coordinator, created in {@link initAgent} when extraction is configured. */
45
45
  private _coordinator;
46
+ /** Resolved injection config, or `false` when injection is disabled. */
47
+ private readonly _injectionConfig;
48
+ /**
49
+ * Tracer for memory operation spans, shared with the extraction coordinator. A per-instance
50
+ * Tracer is intentional: it wraps the same global OTel provider, and parent-child nesting is
51
+ * established via OTel context (context.active() / context.with()), not instance hierarchy — so a
52
+ * fresh instance routes spans to the same exporter and parents correctly without fragmenting traces.
53
+ */
54
+ private readonly _tracer;
46
55
  constructor(config: MemoryManagerConfig);
47
56
  /**
48
57
  * Resolves the writable stores the `add_memory` tool may write to. When `stores` is given, each
@@ -53,12 +62,39 @@ export declare class MemoryManager implements Plugin {
53
62
  /**
54
63
  * Initializes the plugin with the agent.
55
64
  *
56
- * Wires up automatic extraction for any store configured with {@link ExtractionConfig}: buffers
57
- * conversation messages and attaches each store's triggers. A no-op when no store uses extraction.
65
+ * Wires up two independent behaviors:
66
+ * - **Extraction**: for any store configured with {@link ExtractionConfig}, buffers conversation
67
+ * messages and attaches each store's triggers. A no-op when no store uses extraction.
68
+ * - **Injection**: when enabled, registers an `InvokeModelStage` middleware that folds retrieved
69
+ * memory into the model input for each call without touching durable history. See
70
+ * {@link _provideMemoryContext}, the `renderContent` callback the middleware invokes.
58
71
  *
59
72
  * @param agent - The agent this plugin is being attached to
60
73
  */
61
- initAgent(agent: LocalAgent): void;
74
+ initAgent(agent: LocalAgent): Promise<void>;
75
+ /** Call `initialize()` on each store that implements it. */
76
+ private _initStores;
77
+ /** Wires background extraction for stores configured with {@link ExtractionConfig}. */
78
+ private _initExtraction;
79
+ /**
80
+ * Registers the injection middleware when injection is enabled. Folds retrieved memory into the
81
+ * model input for each call via {@link _provideMemoryContext}, without touching durable history. A
82
+ * no-op when injection is disabled.
83
+ */
84
+ private _initInjection;
85
+ /**
86
+ * Produces the memory context text to inject for a model call, or `undefined` to skip. This is the
87
+ * `renderContent` callback the injection middleware invokes (see {@link initAgent}).
88
+ *
89
+ * Derives a query (the configured callback or an adaptive default), searches memory, and renders the
90
+ * top entries. Skips silently (returns `undefined`) when no query can be derived or the search
91
+ * returns nothing. The rendering callback throwing fails open (returns `undefined`).
92
+ *
93
+ * @param messages - The current conversation, as data
94
+ * @param config - The resolved injection configuration
95
+ * @returns The injected text, or `undefined` when there is nothing to inject
96
+ */
97
+ private _provideMemoryContext;
62
98
  /**
63
99
  * Saves every store's remaining messages and waits for all saves to finish. No-op when no store has
64
100
  * extraction configured.
@@ -72,6 +108,26 @@ export declare class MemoryManager implements Plugin {
72
108
  * defeats the trigger's schedule.
73
109
  */
74
110
  flush(): Promise<void>;
111
+ /**
112
+ * Derives the injection search query. Uses the configured `query` callback when provided (a throw
113
+ * fails open, skipping injection); otherwise an adaptive default: the latest user message's text on
114
+ * a user turn, or the most recent assistant message's text otherwise (the previous autonomous step).
115
+ *
116
+ * @param messages - The current conversation, as data
117
+ * @param config - The resolved injection configuration
118
+ * @returns The query string, or `undefined` when none is available
119
+ */
120
+ private _resolveInjectionQuery;
121
+ /**
122
+ * Default injection format: a `<memory>` block with one `<entry>` per result. Each entry carries a
123
+ * `source` attribute naming the originating store (when known) so the model can attribute memories.
124
+ *
125
+ * @param entries - The retrieved memory entries to render
126
+ * @returns The rendered `<memory>` block
127
+ */
128
+ private _defaultInjectionFormat;
129
+ /** Returns the index of the last element matching `predicate`, or -1. */
130
+ private _findLastIndex;
75
131
  /**
76
132
  * Returns tools registered by this plugin.
77
133
  *
@@ -110,8 +166,12 @@ export declare class MemoryManager implements Plugin {
110
166
  *
111
167
  * @param content - The text content to add
112
168
  * @param options - Optional metadata and store name filter
169
+ * @param detached - Internal. When the write runs detached from the call that scheduled it (the
170
+ * fire-and-forget add tool path), start the span as a trace root rather than parenting to a
171
+ * possibly-ended span.
172
+ * @internal
113
173
  */
114
- add(content: string, options?: MemoryAddOptions): Promise<void>;
174
+ add(content: string, options?: MemoryAddOptions, detached?: boolean): Promise<void>;
115
175
  /**
116
176
  * Resolves the store names that a tool callback should target against the tool's scoped set.
117
177
  *
@@ -1 +1 @@
1
- {"version":3,"file":"memory-manager.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EAEnB,gBAAgB,EAGjB,MAAM,YAAY,CAAA;AAgBnB;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAe3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,QAAQ,CAAC,IAAI,4BAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,2GAA2G;IAC3G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,qGAAqG;IACrG,OAAO,CAAC,YAAY,CAAmC;gBAE3C,MAAM,EAAE,mBAAmB;IAoEvC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoBlC;;;;;;;;;;;OAWG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI,EAAE;IAmBlB;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA2ClF;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CrE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,cAAc;CAsDvB"}
1
+ {"version":3,"file":"memory-manager.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EACV,WAAW,EAEX,mBAAmB,EACnB,mBAAmB,EAEnB,gBAAgB,EAGjB,MAAM,YAAY,CAAA;AAsBnB;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAyB3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,QAAQ,CAAC,IAAI,4BAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,2GAA2G;IAC3G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,qGAAqG;IACrG,OAAO,CAAC,YAAY,CAAmC;IACvD,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,MAAM,EAAE,mBAAmB;IAuEvC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,4DAA4D;YAC9C,WAAW;IAQzB,uFAAuF;IACvF,OAAO,CAAC,eAAe;IAoBvB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IActB;;;;;;;;;;;OAWG;YACW,qBAAqB;IA+CnC;;;;;;;;;;;OAWG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAS/B,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAStB;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI,EAAE;IAmBlB;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA4DlF;;;;;;;;;;;;;;;OAeG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DvF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,cAAc;CAsDvB"}