@strands-agents/sdk 0.5.0 → 0.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 (486) hide show
  1. package/README.md +64 -0
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +37 -4
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +31 -4
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/metrics-helpers.d.ts +55 -0
  7. package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -0
  8. package/dist/src/__fixtures__/metrics-helpers.js +57 -0
  9. package/dist/src/__fixtures__/metrics-helpers.js.map +1 -0
  10. package/dist/src/__fixtures__/mock-message-model.d.ts +8 -4
  11. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  12. package/dist/src/__fixtures__/mock-message-model.js +25 -7
  13. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  14. package/dist/src/__fixtures__/mock-meter.d.ts +32 -0
  15. package/dist/src/__fixtures__/mock-meter.d.ts.map +1 -0
  16. package/dist/src/__fixtures__/mock-meter.js +47 -0
  17. package/dist/src/__fixtures__/mock-meter.js.map +1 -0
  18. package/dist/src/__fixtures__/mock-plugin.d.ts +13 -0
  19. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -0
  20. package/dist/src/__fixtures__/{mock-hook-provider.js → mock-plugin.js} +8 -5
  21. package/dist/src/__fixtures__/mock-plugin.js.map +1 -0
  22. package/dist/src/__fixtures__/mock-storage-provider.d.ts +5 -0
  23. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -1
  24. package/dist/src/__fixtures__/mock-storage-provider.js +23 -6
  25. package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -1
  26. package/dist/src/__fixtures__/slim-types.d.ts +2 -1
  27. package/dist/src/__fixtures__/slim-types.d.ts.map +1 -1
  28. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  29. package/dist/src/__fixtures__/tool-helpers.js +5 -2
  30. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  31. package/dist/src/__tests__/index.test.js +21 -0
  32. package/dist/src/__tests__/index.test.js.map +1 -1
  33. package/dist/src/__tests__/mcp.test.js +45 -15
  34. package/dist/src/__tests__/mcp.test.js.map +1 -1
  35. package/dist/src/__tests__/mime.test.d.ts +2 -0
  36. package/dist/src/__tests__/mime.test.d.ts.map +1 -0
  37. package/dist/src/__tests__/mime.test.js +83 -0
  38. package/dist/src/__tests__/mime.test.js.map +1 -0
  39. package/dist/src/__tests__/state-store.test.d.ts +2 -0
  40. package/dist/src/__tests__/state-store.test.d.ts.map +1 -0
  41. package/dist/src/__tests__/{app-state.test.js → state-store.test.js} +86 -51
  42. package/dist/src/__tests__/state-store.test.js.map +1 -0
  43. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts +2 -0
  44. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts.map +1 -0
  45. package/dist/src/a2a/__tests__/a2a-agent.test.js +364 -0
  46. package/dist/src/a2a/__tests__/a2a-agent.test.js.map +1 -0
  47. package/dist/src/a2a/__tests__/adapters.test.d.ts +2 -0
  48. package/dist/src/a2a/__tests__/adapters.test.d.ts.map +1 -0
  49. package/dist/src/a2a/__tests__/adapters.test.js +151 -0
  50. package/dist/src/a2a/__tests__/adapters.test.js.map +1 -0
  51. package/dist/src/a2a/__tests__/executor.test.d.ts +2 -0
  52. package/dist/src/a2a/__tests__/executor.test.d.ts.map +1 -0
  53. package/dist/src/a2a/__tests__/executor.test.js +196 -0
  54. package/dist/src/a2a/__tests__/executor.test.js.map +1 -0
  55. package/dist/src/a2a/__tests__/server.test.d.ts +2 -0
  56. package/dist/src/a2a/__tests__/server.test.d.ts.map +1 -0
  57. package/dist/src/a2a/__tests__/server.test.js +51 -0
  58. package/dist/src/a2a/__tests__/server.test.js.map +1 -0
  59. package/dist/src/a2a/__tests__/server.test.node.d.ts +2 -0
  60. package/dist/src/a2a/__tests__/server.test.node.d.ts.map +1 -0
  61. package/dist/src/a2a/__tests__/server.test.node.js +110 -0
  62. package/dist/src/a2a/__tests__/server.test.node.js.map +1 -0
  63. package/dist/src/a2a/a2a-agent.d.ts +132 -0
  64. package/dist/src/a2a/a2a-agent.d.ts.map +1 -0
  65. package/dist/src/a2a/a2a-agent.js +255 -0
  66. package/dist/src/a2a/a2a-agent.js.map +1 -0
  67. package/dist/src/a2a/adapters.d.ts +27 -0
  68. package/dist/src/a2a/adapters.d.ts.map +1 -0
  69. package/dist/src/a2a/adapters.js +175 -0
  70. package/dist/src/a2a/adapters.js.map +1 -0
  71. package/dist/src/a2a/events.d.ts +42 -0
  72. package/dist/src/a2a/events.d.ts.map +1 -0
  73. package/dist/src/a2a/events.js +35 -0
  74. package/dist/src/a2a/events.js.map +1 -0
  75. package/dist/src/a2a/executor.d.ts +57 -0
  76. package/dist/src/a2a/executor.d.ts.map +1 -0
  77. package/dist/src/a2a/executor.js +130 -0
  78. package/dist/src/a2a/executor.js.map +1 -0
  79. package/dist/src/a2a/express-server.d.ts +67 -0
  80. package/dist/src/a2a/express-server.d.ts.map +1 -0
  81. package/dist/src/a2a/express-server.js +95 -0
  82. package/dist/src/a2a/express-server.js.map +1 -0
  83. package/dist/src/a2a/index.d.ts +16 -0
  84. package/dist/src/a2a/index.d.ts.map +1 -0
  85. package/dist/src/a2a/index.js +16 -0
  86. package/dist/src/a2a/index.js.map +1 -0
  87. package/dist/src/a2a/logging.d.ts +8 -0
  88. package/dist/src/a2a/logging.d.ts.map +1 -0
  89. package/dist/src/a2a/logging.js +15 -0
  90. package/dist/src/a2a/logging.js.map +1 -0
  91. package/dist/src/a2a/server.d.ts +67 -0
  92. package/dist/src/a2a/server.d.ts.map +1 -0
  93. package/dist/src/a2a/server.js +67 -0
  94. package/dist/src/a2a/server.js.map +1 -0
  95. package/dist/src/agent/__tests__/agent.hook.test.js +87 -51
  96. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  97. package/dist/src/agent/__tests__/agent.test.js +176 -101
  98. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  99. package/dist/src/agent/__tests__/agent.tracer.test.js +10 -10
  100. package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -1
  101. package/dist/src/agent/__tests__/snapshot.test.js +11 -11
  102. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  103. package/dist/src/agent/agent.d.ts +71 -58
  104. package/dist/src/agent/agent.d.ts.map +1 -1
  105. package/dist/src/agent/agent.js +177 -93
  106. package/dist/src/agent/agent.js.map +1 -1
  107. package/dist/src/agent/snapshot.d.ts.map +1 -1
  108. package/dist/src/agent/snapshot.js +3 -2
  109. package/dist/src/agent/snapshot.js.map +1 -1
  110. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +2 -0
  111. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +1 -0
  112. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +100 -0
  113. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -0
  114. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +26 -10
  115. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  116. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +84 -21
  117. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  118. package/dist/src/conversation-manager/conversation-manager.d.ts +87 -0
  119. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -0
  120. package/dist/src/conversation-manager/conversation-manager.js +59 -0
  121. package/dist/src/conversation-manager/conversation-manager.js.map +1 -0
  122. package/dist/src/conversation-manager/index.d.ts +1 -0
  123. package/dist/src/conversation-manager/index.d.ts.map +1 -1
  124. package/dist/src/conversation-manager/index.js +1 -0
  125. package/dist/src/conversation-manager/index.js.map +1 -1
  126. package/dist/src/conversation-manager/null-conversation-manager.d.ts +12 -8
  127. package/dist/src/conversation-manager/null-conversation-manager.d.ts.map +1 -1
  128. package/dist/src/conversation-manager/null-conversation-manager.js +13 -7
  129. package/dist/src/conversation-manager/null-conversation-manager.js.map +1 -1
  130. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +28 -19
  131. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  132. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +44 -36
  133. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  134. package/dist/src/errors.d.ts +6 -0
  135. package/dist/src/errors.d.ts.map +1 -1
  136. package/dist/src/errors.js +9 -0
  137. package/dist/src/errors.js.map +1 -1
  138. package/dist/src/hooks/__tests__/events.test.js +2 -0
  139. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  140. package/dist/src/hooks/__tests__/registry.test.js +10 -154
  141. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  142. package/dist/src/hooks/events.d.ts +60 -44
  143. package/dist/src/hooks/events.d.ts.map +1 -1
  144. package/dist/src/hooks/events.js +11 -11
  145. package/dist/src/hooks/events.js.map +1 -1
  146. package/dist/src/hooks/index.d.ts +4 -4
  147. package/dist/src/hooks/index.d.ts.map +1 -1
  148. package/dist/src/hooks/index.js +2 -2
  149. package/dist/src/hooks/registry.d.ts +1 -32
  150. package/dist/src/hooks/registry.d.ts.map +1 -1
  151. package/dist/src/hooks/registry.js +1 -47
  152. package/dist/src/hooks/registry.js.map +1 -1
  153. package/dist/src/hooks/types.d.ts +0 -31
  154. package/dist/src/hooks/types.d.ts.map +1 -1
  155. package/dist/src/index.d.ts +30 -15
  156. package/dist/src/index.d.ts.map +1 -1
  157. package/dist/src/index.js +21 -8
  158. package/dist/src/index.js.map +1 -1
  159. package/dist/src/mcp.d.ts +38 -0
  160. package/dist/src/mcp.d.ts.map +1 -1
  161. package/dist/src/mcp.js +23 -6
  162. package/dist/src/mcp.js.map +1 -1
  163. package/dist/src/mime.d.ts +24 -0
  164. package/dist/src/mime.d.ts.map +1 -0
  165. package/dist/src/mime.js +82 -0
  166. package/dist/src/mime.js.map +1 -0
  167. package/dist/src/models/__tests__/anthropic.test.js +78 -1
  168. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  169. package/dist/src/models/__tests__/bedrock.test.js +2050 -131
  170. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  171. package/dist/src/models/__tests__/gemini.test.js +100 -1
  172. package/dist/src/models/__tests__/gemini.test.js.map +1 -1
  173. package/dist/src/models/__tests__/model.test.js +131 -0
  174. package/dist/src/models/__tests__/model.test.js.map +1 -1
  175. package/dist/src/models/__tests__/openai.test.js +184 -32
  176. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  177. package/dist/src/models/__tests__/streaming.test.d.ts +2 -0
  178. package/dist/src/models/__tests__/streaming.test.d.ts.map +1 -0
  179. package/dist/src/models/__tests__/streaming.test.js +50 -0
  180. package/dist/src/models/__tests__/streaming.test.js.map +1 -0
  181. package/dist/src/models/anthropic.d.ts.map +1 -1
  182. package/dist/src/models/anthropic.js +6 -7
  183. package/dist/src/models/anthropic.js.map +1 -1
  184. package/dist/src/models/bedrock.d.ts +144 -11
  185. package/dist/src/models/bedrock.d.ts.map +1 -1
  186. package/dist/src/models/bedrock.js +416 -28
  187. package/dist/src/models/bedrock.js.map +1 -1
  188. package/dist/src/models/gemini/adapters.d.ts.map +1 -1
  189. package/dist/src/models/gemini/adapters.js +65 -14
  190. package/dist/src/models/gemini/adapters.js.map +1 -1
  191. package/dist/src/models/model.d.ts +18 -0
  192. package/dist/src/models/model.d.ts.map +1 -1
  193. package/dist/src/models/model.js +57 -11
  194. package/dist/src/models/model.js.map +1 -1
  195. package/dist/src/models/openai.d.ts +15 -0
  196. package/dist/src/models/openai.d.ts.map +1 -1
  197. package/dist/src/models/openai.js +108 -64
  198. package/dist/src/models/openai.js.map +1 -1
  199. package/dist/src/models/streaming.d.ts +88 -2
  200. package/dist/src/models/streaming.d.ts.map +1 -1
  201. package/dist/src/models/streaming.js +26 -0
  202. package/dist/src/models/streaming.js.map +1 -1
  203. package/dist/src/multiagent/__tests__/events.test.js +41 -8
  204. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  205. package/dist/src/multiagent/__tests__/graph.test.d.ts +2 -0
  206. package/dist/src/multiagent/__tests__/graph.test.d.ts.map +1 -0
  207. package/dist/src/multiagent/__tests__/graph.test.js +453 -0
  208. package/dist/src/multiagent/__tests__/graph.test.js.map +1 -0
  209. package/dist/src/multiagent/__tests__/nodes.test.js +34 -16
  210. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  211. package/dist/src/multiagent/__tests__/queue.test.js +22 -0
  212. package/dist/src/multiagent/__tests__/queue.test.js.map +1 -1
  213. package/dist/src/multiagent/__tests__/swarm.test.d.ts +2 -0
  214. package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +1 -0
  215. package/dist/src/multiagent/__tests__/swarm.test.js +264 -0
  216. package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -0
  217. package/dist/src/multiagent/edge.d.ts +9 -2
  218. package/dist/src/multiagent/edge.d.ts.map +1 -1
  219. package/dist/src/multiagent/events.d.ts +63 -15
  220. package/dist/src/multiagent/events.d.ts.map +1 -1
  221. package/dist/src/multiagent/events.js +28 -3
  222. package/dist/src/multiagent/events.js.map +1 -1
  223. package/dist/src/multiagent/graph.d.ts +135 -0
  224. package/dist/src/multiagent/graph.d.ts.map +1 -0
  225. package/dist/src/multiagent/graph.js +400 -0
  226. package/dist/src/multiagent/graph.js.map +1 -0
  227. package/dist/src/multiagent/index.d.ts +8 -3
  228. package/dist/src/multiagent/index.d.ts.map +1 -1
  229. package/dist/src/multiagent/index.js +3 -1
  230. package/dist/src/multiagent/index.js.map +1 -1
  231. package/dist/src/multiagent/multiagent.d.ts +41 -0
  232. package/dist/src/multiagent/multiagent.d.ts.map +1 -0
  233. package/dist/src/multiagent/multiagent.js +2 -0
  234. package/dist/src/multiagent/multiagent.js.map +1 -0
  235. package/dist/src/multiagent/nodes.d.ts +24 -25
  236. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  237. package/dist/src/multiagent/nodes.js +42 -15
  238. package/dist/src/multiagent/nodes.js.map +1 -1
  239. package/dist/src/multiagent/plugins.d.ts +70 -0
  240. package/dist/src/multiagent/plugins.d.ts.map +1 -0
  241. package/dist/src/multiagent/plugins.js +70 -0
  242. package/dist/src/multiagent/plugins.js.map +1 -0
  243. package/dist/src/multiagent/queue.d.ts +6 -0
  244. package/dist/src/multiagent/queue.d.ts.map +1 -1
  245. package/dist/src/multiagent/queue.js +13 -0
  246. package/dist/src/multiagent/queue.js.map +1 -1
  247. package/dist/src/multiagent/state.d.ts +4 -2
  248. package/dist/src/multiagent/state.d.ts.map +1 -1
  249. package/dist/src/multiagent/state.js +5 -2
  250. package/dist/src/multiagent/state.js.map +1 -1
  251. package/dist/src/multiagent/swarm.d.ts +112 -0
  252. package/dist/src/multiagent/swarm.d.ts.map +1 -0
  253. package/dist/src/multiagent/swarm.js +256 -0
  254. package/dist/src/multiagent/swarm.js.map +1 -0
  255. package/dist/src/plugins/__tests__/plugin.test.d.ts +2 -0
  256. package/dist/src/plugins/__tests__/plugin.test.d.ts.map +1 -0
  257. package/dist/src/plugins/__tests__/plugin.test.js +114 -0
  258. package/dist/src/plugins/__tests__/plugin.test.js.map +1 -0
  259. package/dist/src/plugins/__tests__/registry.test.d.ts +2 -0
  260. package/dist/src/plugins/__tests__/registry.test.d.ts.map +1 -0
  261. package/dist/src/plugins/__tests__/registry.test.js +147 -0
  262. package/dist/src/plugins/__tests__/registry.test.js.map +1 -0
  263. package/dist/src/plugins/index.d.ts +30 -0
  264. package/dist/src/plugins/index.d.ts.map +1 -0
  265. package/dist/src/plugins/index.js +30 -0
  266. package/dist/src/plugins/index.js.map +1 -0
  267. package/dist/src/plugins/plugin.d.ts +74 -0
  268. package/dist/src/plugins/plugin.d.ts.map +1 -0
  269. package/dist/src/plugins/plugin.js +8 -0
  270. package/dist/src/plugins/plugin.js.map +1 -0
  271. package/dist/src/plugins/registry.d.ts +25 -0
  272. package/dist/src/plugins/registry.d.ts.map +1 -0
  273. package/dist/src/plugins/registry.js +41 -0
  274. package/dist/src/plugins/registry.js.map +1 -0
  275. package/dist/src/registry/__tests__/tool-registry.test.d.ts +2 -0
  276. package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +1 -0
  277. package/dist/src/registry/__tests__/tool-registry.test.js +124 -0
  278. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -0
  279. package/dist/src/registry/tool-registry.d.ts +32 -20
  280. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  281. package/dist/src/registry/tool-registry.js +60 -158
  282. package/dist/src/registry/tool-registry.js.map +1 -1
  283. package/dist/src/session/__tests__/file-storage.test.node.js +75 -15
  284. package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -1
  285. package/dist/src/session/__tests__/s3-storage.test.d.ts +2 -0
  286. package/dist/src/session/__tests__/s3-storage.test.d.ts.map +1 -0
  287. package/dist/src/session/__tests__/{s3-storage.test.node.js → s3-storage.test.js} +161 -75
  288. package/dist/src/session/__tests__/s3-storage.test.js.map +1 -0
  289. package/dist/src/session/__tests__/session-manager.test.d.ts +2 -0
  290. package/dist/src/session/__tests__/session-manager.test.d.ts.map +1 -0
  291. package/dist/src/session/__tests__/session-manager.test.js +443 -0
  292. package/dist/src/session/__tests__/session-manager.test.js.map +1 -0
  293. package/dist/src/session/__tests__/validation.test.js +28 -1
  294. package/dist/src/session/__tests__/validation.test.js.map +1 -1
  295. package/dist/src/session/file-storage.d.ts +53 -27
  296. package/dist/src/session/file-storage.d.ts.map +1 -1
  297. package/dist/src/session/file-storage.js +103 -52
  298. package/dist/src/session/file-storage.js.map +1 -1
  299. package/dist/src/session/index.d.ts +6 -14
  300. package/dist/src/session/index.d.ts.map +1 -1
  301. package/dist/src/session/index.js +4 -13
  302. package/dist/src/session/index.js.map +1 -1
  303. package/dist/src/session/s3-storage.d.ts +49 -20
  304. package/dist/src/session/s3-storage.d.ts.map +1 -1
  305. package/dist/src/session/s3-storage.js +120 -35
  306. package/dist/src/session/s3-storage.js.map +1 -1
  307. package/dist/src/session/session-manager.d.ts +87 -0
  308. package/dist/src/session/session-manager.d.ts.map +1 -0
  309. package/dist/src/session/session-manager.js +128 -0
  310. package/dist/src/session/session-manager.js.map +1 -0
  311. package/dist/src/session/storage.d.ts +20 -12
  312. package/dist/src/session/storage.d.ts.map +1 -1
  313. package/dist/src/session/types.d.ts +8 -20
  314. package/dist/src/session/types.d.ts.map +1 -1
  315. package/dist/src/session/validation.d.ts +7 -0
  316. package/dist/src/session/validation.d.ts.map +1 -1
  317. package/dist/src/session/validation.js +12 -0
  318. package/dist/src/session/validation.js.map +1 -1
  319. package/dist/src/{app-state.d.ts → state-store.d.ts} +11 -11
  320. package/dist/src/state-store.d.ts.map +1 -0
  321. package/dist/src/{app-state.js → state-store.js} +8 -7
  322. package/dist/src/state-store.js.map +1 -0
  323. package/dist/src/structured-output/__tests__/context.test.js +13 -13
  324. package/dist/src/structured-output/__tests__/context.test.js.map +1 -1
  325. package/dist/src/structured-output/context.js +1 -1
  326. package/dist/src/structured-output/context.js.map +1 -1
  327. package/dist/src/telemetry/__tests__/config.test.d.ts +2 -0
  328. package/dist/src/telemetry/__tests__/config.test.d.ts.map +1 -0
  329. package/dist/src/telemetry/__tests__/config.test.js +64 -0
  330. package/dist/src/telemetry/__tests__/config.test.js.map +1 -0
  331. package/dist/src/telemetry/__tests__/config.test.node.js +66 -36
  332. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
  333. package/dist/src/telemetry/__tests__/meter.test.d.ts +2 -0
  334. package/dist/src/telemetry/__tests__/meter.test.d.ts.map +1 -0
  335. package/dist/src/telemetry/__tests__/meter.test.js +624 -0
  336. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -0
  337. package/dist/src/telemetry/__tests__/tracer.test.node.js +123 -2
  338. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -1
  339. package/dist/src/telemetry/config.d.ts +104 -23
  340. package/dist/src/telemetry/config.d.ts.map +1 -1
  341. package/dist/src/telemetry/config.js +152 -43
  342. package/dist/src/telemetry/config.js.map +1 -1
  343. package/dist/src/telemetry/index.d.ts +10 -7
  344. package/dist/src/telemetry/index.d.ts.map +1 -1
  345. package/dist/src/telemetry/index.js +9 -6
  346. package/dist/src/telemetry/index.js.map +1 -1
  347. package/dist/src/telemetry/meter.d.ts +296 -0
  348. package/dist/src/telemetry/meter.d.ts.map +1 -0
  349. package/dist/src/telemetry/meter.js +365 -0
  350. package/dist/src/telemetry/meter.js.map +1 -0
  351. package/dist/src/telemetry/tracer.d.ts +27 -0
  352. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  353. package/dist/src/telemetry/tracer.js +79 -4
  354. package/dist/src/telemetry/tracer.js.map +1 -1
  355. package/dist/src/telemetry/types.d.ts +2 -0
  356. package/dist/src/telemetry/types.d.ts.map +1 -1
  357. package/dist/src/telemetry/utils.d.ts +10 -0
  358. package/dist/src/telemetry/utils.d.ts.map +1 -0
  359. package/dist/src/telemetry/utils.js +13 -0
  360. package/dist/src/telemetry/utils.js.map +1 -0
  361. package/dist/src/tools/__tests__/tool-factory.test.d.ts +2 -0
  362. package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +1 -0
  363. package/dist/src/tools/__tests__/tool-factory.test.js +98 -0
  364. package/dist/src/tools/__tests__/tool-factory.test.js.map +1 -0
  365. package/dist/src/tools/__tests__/tool.test.js +22 -1
  366. package/dist/src/tools/__tests__/tool.test.js.map +1 -1
  367. package/dist/src/tools/__tests__/zod-tool.test-d.js +1 -1
  368. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -1
  369. package/dist/src/tools/__tests__/zod-tool.test.js +3 -4
  370. package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
  371. package/dist/src/tools/function-tool.d.ts +26 -3
  372. package/dist/src/tools/function-tool.d.ts.map +1 -1
  373. package/dist/src/tools/function-tool.js +88 -3
  374. package/dist/src/tools/function-tool.js.map +1 -1
  375. package/dist/src/tools/tool-factory.d.ts +22 -0
  376. package/dist/src/tools/tool-factory.d.ts.map +1 -0
  377. package/dist/src/tools/tool-factory.js +55 -0
  378. package/dist/src/tools/tool-factory.js.map +1 -0
  379. package/dist/src/tools/tool.d.ts +2 -2
  380. package/dist/src/tools/tool.d.ts.map +1 -1
  381. package/dist/src/tools/zod-tool.d.ts +55 -52
  382. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  383. package/dist/src/tools/zod-tool.js +7 -61
  384. package/dist/src/tools/zod-tool.js.map +1 -1
  385. package/dist/src/tsconfig.tsbuildinfo +1 -1
  386. package/dist/src/types/__tests__/agent.test.js +11 -0
  387. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  388. package/dist/src/types/__tests__/citations.test.d.ts +2 -0
  389. package/dist/src/types/__tests__/citations.test.d.ts.map +1 -0
  390. package/dist/src/types/__tests__/citations.test.js +104 -0
  391. package/dist/src/types/__tests__/citations.test.js.map +1 -0
  392. package/dist/src/types/__tests__/media.test.js +22 -16
  393. package/dist/src/types/__tests__/media.test.js.map +1 -1
  394. package/dist/src/types/__tests__/messages.test.js +26 -0
  395. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  396. package/dist/src/types/agent.d.ts +82 -7
  397. package/dist/src/types/agent.d.ts.map +1 -1
  398. package/dist/src/types/agent.js +9 -0
  399. package/dist/src/types/agent.js.map +1 -1
  400. package/dist/src/types/citations.d.ts +180 -0
  401. package/dist/src/types/citations.d.ts.map +1 -0
  402. package/dist/src/types/citations.js +45 -0
  403. package/dist/src/types/citations.js.map +1 -0
  404. package/dist/src/types/media.d.ts +27 -30
  405. package/dist/src/types/media.d.ts.map +1 -1
  406. package/dist/src/types/media.js +15 -56
  407. package/dist/src/types/media.js.map +1 -1
  408. package/dist/src/types/messages.d.ts +23 -5
  409. package/dist/src/types/messages.d.ts.map +1 -1
  410. package/dist/src/types/messages.js +26 -26
  411. package/dist/src/types/messages.js.map +1 -1
  412. package/dist/src/types/serializable.d.ts +34 -4
  413. package/dist/src/types/serializable.d.ts.map +1 -1
  414. package/dist/src/types/serializable.js +31 -2
  415. package/dist/src/types/serializable.js.map +1 -1
  416. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +5 -4
  417. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  418. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  419. package/dist/src/vended-tools/bash/bash.js +1 -2
  420. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  421. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts.map +1 -0
  422. package/dist/src/vended-tools/{file_editor → file-editor}/__tests__/file-editor.test.node.js +11 -4
  423. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -0
  424. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.d.ts +1 -1
  425. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.d.ts.map +1 -1
  426. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.js +3 -3
  427. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.js.map +1 -1
  428. package/dist/src/vended-tools/{file_editor → file-editor}/index.d.ts.map +1 -1
  429. package/dist/src/vended-tools/file-editor/index.js.map +1 -0
  430. package/dist/src/vended-tools/{file_editor → file-editor}/types.d.ts.map +1 -1
  431. package/dist/src/vended-tools/file-editor/types.js.map +1 -0
  432. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts.map +1 -0
  433. package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.js.map +1 -1
  434. package/dist/src/vended-tools/http-request/http-request.d.ts.map +1 -0
  435. package/dist/src/vended-tools/{http_request → http-request}/http-request.js +1 -2
  436. package/dist/src/vended-tools/http-request/http-request.js.map +1 -0
  437. package/dist/src/vended-tools/{http_request → http-request}/index.d.ts.map +1 -1
  438. package/dist/src/vended-tools/http-request/index.js.map +1 -0
  439. package/dist/src/vended-tools/{http_request → http-request}/types.d.ts.map +1 -1
  440. package/dist/src/vended-tools/http-request/types.js.map +1 -0
  441. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +5 -4
  442. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  443. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  444. package/dist/src/vended-tools/notebook/notebook.js +2 -2
  445. package/dist/src/vended-tools/notebook/notebook.js.map +1 -1
  446. package/package.json +66 -12
  447. package/dist/src/__fixtures__/mock-hook-provider.d.ts +0 -10
  448. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +0 -1
  449. package/dist/src/__fixtures__/mock-hook-provider.js.map +0 -1
  450. package/dist/src/__tests__/app-state.test.d.ts +0 -2
  451. package/dist/src/__tests__/app-state.test.d.ts.map +0 -1
  452. package/dist/src/__tests__/app-state.test.js.map +0 -1
  453. package/dist/src/app-state.d.ts.map +0 -1
  454. package/dist/src/app-state.js.map +0 -1
  455. package/dist/src/multiagent/base.d.ts +0 -25
  456. package/dist/src/multiagent/base.d.ts.map +0 -1
  457. package/dist/src/multiagent/base.js +0 -2
  458. package/dist/src/multiagent/base.js.map +0 -1
  459. package/dist/src/registry/registry.d.ts +0 -117
  460. package/dist/src/registry/registry.d.ts.map +0 -1
  461. package/dist/src/registry/registry.js +0 -298
  462. package/dist/src/registry/registry.js.map +0 -1
  463. package/dist/src/session/__tests__/s3-storage.test.node.d.ts +0 -2
  464. package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +0 -1
  465. package/dist/src/session/__tests__/s3-storage.test.node.js.map +0 -1
  466. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.d.ts.map +0 -1
  467. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +0 -1
  468. package/dist/src/vended-tools/file_editor/index.js.map +0 -1
  469. package/dist/src/vended-tools/file_editor/types.js.map +0 -1
  470. package/dist/src/vended-tools/http_request/__tests__/http-request.test.d.ts.map +0 -1
  471. package/dist/src/vended-tools/http_request/http-request.d.ts.map +0 -1
  472. package/dist/src/vended-tools/http_request/http-request.js.map +0 -1
  473. package/dist/src/vended-tools/http_request/index.js.map +0 -1
  474. package/dist/src/vended-tools/http_request/types.js.map +0 -1
  475. /package/dist/src/vended-tools/{file_editor → file-editor}/__tests__/file-editor.test.node.d.ts +0 -0
  476. /package/dist/src/vended-tools/{file_editor → file-editor}/index.d.ts +0 -0
  477. /package/dist/src/vended-tools/{file_editor → file-editor}/index.js +0 -0
  478. /package/dist/src/vended-tools/{file_editor → file-editor}/types.d.ts +0 -0
  479. /package/dist/src/vended-tools/{file_editor → file-editor}/types.js +0 -0
  480. /package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.d.ts +0 -0
  481. /package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.js +0 -0
  482. /package/dist/src/vended-tools/{http_request → http-request}/http-request.d.ts +0 -0
  483. /package/dist/src/vended-tools/{http_request → http-request}/index.d.ts +0 -0
  484. /package/dist/src/vended-tools/{http_request → http-request}/index.js +0 -0
  485. /package/dist/src/vended-tools/{http_request → http-request}/types.d.ts +0 -0
  486. /package/dist/src/vended-tools/{http_request → http-request}/types.js +0 -0
@@ -1,14 +1,23 @@
1
- import { S3Client, PutObjectCommand, GetObjectCommand, ListObjectsV2Command } from '@aws-sdk/client-s3';
1
+ import { S3Client, PutObjectCommand, GetObjectCommand, ListObjectsV2Command, DeleteObjectsCommand, } from '@aws-sdk/client-s3';
2
2
  import { SessionError } from '../errors.js';
3
- import { validateIdentifier } from './validation.js';
3
+ import { validateIdentifier, validateUuidV7 } from './validation.js';
4
4
  const MANIFEST = 'manifest.json';
5
5
  const SNAPSHOT_LATEST = 'snapshot_latest.json';
6
6
  const IMMUTABLE_HISTORY = 'immutable_history/';
7
- const SNAPSHOT_REGEX = /snapshot_(\d+)\.json$/;
8
7
  const SCHEMA_VERSION = '1.0';
9
- const DEFAULT_SNAPSHOT_ID = '1';
8
+ const SNAPSHOT_REGEX = /snapshot_([\w-]+)\.json$/;
9
+ const S3_PAGE_SIZE = 1000;
10
10
  /**
11
- * S3-based implementation of SnapshotStorage for persisting session snapshots
11
+ * S3-based implementation of SnapshotStorage.
12
+ * Persists session snapshots as JSON objects in an S3 bucket.
13
+ *
14
+ * Object key layout:
15
+ * ```
16
+ * [<prefix>/]<sessionId>/scopes/<scope>/<scopeId>/snapshots/
17
+ * snapshot_latest.json
18
+ * immutable_history/
19
+ * snapshot_<uuid7>.json
20
+ * ```
12
21
  */
13
22
  export class S3Storage {
14
23
  /** S3 client instance */
@@ -30,7 +39,8 @@ export class S3Storage {
30
39
  this._s3 = config.s3Client ?? new S3Client({ region: config.region ?? 'us-east-1' });
31
40
  }
32
41
  /**
33
- * Generates S3 key path for session scope snapshots
42
+ * Resolves the full S3 object key for a given scope location and path.
43
+ * Validates sessionId and scopeId before constructing the key.
34
44
  */
35
45
  _getKey(location, path) {
36
46
  validateIdentifier(location.sessionId);
@@ -39,16 +49,31 @@ export class S3Storage {
39
49
  return `${base}${location.sessionId}/scopes/${location.scope}/${location.scopeId}/snapshots/${path}`;
40
50
  }
41
51
  /**
42
- * Saves snapshot to S3, optionally marking as latest
52
+ * Resolves the S3 key prefix for an entire session (`[<prefix>/]<sessionId>/`).
53
+ * Used by deleteSession to list and remove all objects under the session.
54
+ */
55
+ _getSessionPrefix(sessionId) {
56
+ validateIdentifier(sessionId);
57
+ const base = this._prefix ? `${this._prefix}/` : '';
58
+ return `${base}${sessionId}/`;
59
+ }
60
+ /**
61
+ * Persists a snapshot to S3.
62
+ * If `isLatest` is true, writes to `snapshot_latest.json` (overwriting any previous).
63
+ * Otherwise, writes to `immutable_history/snapshot_<snapshotId>.json`.
43
64
  */
44
65
  async saveSnapshot(params) {
45
- await this._writeJSON(this._getHistorySnapshotKey(params.location, params.snapshotId), params.snapshot);
46
- if (params.isLatest) {
66
+ if (!params.isLatest) {
67
+ await this._writeJSON(this._getHistorySnapshotKey(params.location, params.snapshotId), params.snapshot);
68
+ }
69
+ else {
47
70
  await this._writeJSON(this._getLatestSnapshotKey(params.location), params.snapshot);
48
71
  }
49
72
  }
50
73
  /**
51
- * Loads snapshot by ID or latest if undefined
74
+ * Loads a snapshot from S3.
75
+ * If `snapshotId` is omitted, loads `snapshot_latest.json`.
76
+ * Returns null if the object does not exist.
52
77
  */
53
78
  async loadSnapshot(params) {
54
79
  const key = params.snapshotId === undefined
@@ -57,54 +82,102 @@ export class S3Storage {
57
82
  return this._readJSON(key);
58
83
  }
59
84
  /**
60
- * Lists all snapshot IDs for a session scope.
61
- *
62
- * TODO: Add pagination support for long-running agents with many snapshots.
63
- * Future signature could be:
64
- * ```typescript
65
- * listSnapshots(params: {
66
- * sessionId: string
67
- * scope: Scope
68
- * limit?: number // Max results to return (e.g., 100)
69
- * startAfter?: string // Snapshot ID to start after (for cursor-based pagination)
70
- * }): Promise<{ snapshotIds: string[]; nextToken?: string }>
71
- * ```
85
+ * Lists immutable snapshot IDs for a scope, sorted chronologically.
86
+ * Since IDs are UUID v7, lexicographic sort equals chronological order.
87
+ * Pushes `startAfter` and `limit` down to S3 via `StartAfter` and `MaxKeys`
88
+ * to avoid fetching unnecessary objects.
89
+ * Returns an empty array if no snapshots exist yet.
72
90
  */
73
91
  async listSnapshotIds(params) {
92
+ if (params.limit !== undefined && params.limit <= 0)
93
+ return [];
94
+ if (params.startAfter)
95
+ validateUuidV7(params.startAfter);
74
96
  const prefix = this._getKey(params.location, IMMUTABLE_HISTORY);
97
+ // S3 StartAfter is a full object key; construct it from the UUID cursor.
98
+ // Exclusive: objects after this key are returned, matching our pagination contract.
99
+ const startAfterKey = params.startAfter
100
+ ? this._getHistorySnapshotKey(params.location, params.startAfter)
101
+ : undefined;
75
102
  try {
76
- const response = await this._s3.send(new ListObjectsV2Command({ Bucket: this._bucket, Prefix: prefix }));
77
- return (response.Contents ?? [])
78
- .map((obj) => obj.Key?.match(SNAPSHOT_REGEX)?.[1])
79
- .filter((id) => id !== undefined)
80
- .map((id) => String(parseInt(id)))
81
- .sort((a, b) => parseInt(a) - parseInt(b));
103
+ const ids = [];
104
+ let continuationToken;
105
+ do {
106
+ const response = await this._s3.send(new ListObjectsV2Command({
107
+ Bucket: this._bucket,
108
+ Prefix: prefix,
109
+ StartAfter: continuationToken ? undefined : startAfterKey,
110
+ MaxKeys: params.limit !== undefined ? Math.min(S3_PAGE_SIZE, params.limit - ids.length) : S3_PAGE_SIZE,
111
+ ContinuationToken: continuationToken,
112
+ }));
113
+ const page = (response.Contents ?? [])
114
+ .map((obj) => obj.Key?.match(SNAPSHOT_REGEX)?.[1])
115
+ .filter((id) => id !== undefined);
116
+ ids.push(...page);
117
+ if (response.IsTruncated) {
118
+ if (!response.NextContinuationToken) {
119
+ throw new SessionError('S3 returned truncated response without continuation token');
120
+ }
121
+ continuationToken = response.NextContinuationToken;
122
+ }
123
+ else {
124
+ continuationToken = undefined;
125
+ }
126
+ } while (continuationToken && (params.limit === undefined || ids.length < params.limit));
127
+ return params.limit !== undefined ? ids.slice(0, params.limit) : ids;
82
128
  }
83
129
  catch (error) {
130
+ if (error instanceof SessionError)
131
+ throw error;
132
+ if (this._isNotFoundError(error))
133
+ return [];
84
134
  throw new SessionError(`Failed to list snapshots for session ${params.location.sessionId}`, { cause: error });
85
135
  }
86
136
  }
87
137
  /**
88
- * Loads manifest or returns default if not found
138
+ * Deletes all S3 objects belonging to a session by listing and batch-deleting
139
+ * everything under `[<prefix>/]<sessionId>/`.
140
+ * Handles buckets with more than 1000 objects via continuation token pagination.
141
+ * No-ops if the session has no objects.
142
+ */
143
+ async deleteSession(params) {
144
+ const prefix = this._getSessionPrefix(params.sessionId);
145
+ try {
146
+ let continuationToken;
147
+ do {
148
+ const response = await this._s3.send(new ListObjectsV2Command({ Bucket: this._bucket, Prefix: prefix, ContinuationToken: continuationToken }));
149
+ const keys = (response.Contents ?? []).map((obj) => ({ Key: obj.Key }));
150
+ if (keys.length > 0) {
151
+ await this._s3.send(new DeleteObjectsCommand({ Bucket: this._bucket, Delete: { Objects: keys } }));
152
+ }
153
+ continuationToken = response.IsTruncated ? response.NextContinuationToken : undefined;
154
+ } while (continuationToken);
155
+ }
156
+ catch (error) {
157
+ throw new SessionError(`Failed to delete session ${params.sessionId}`, { cause: error });
158
+ }
159
+ }
160
+ /**
161
+ * Loads the snapshot manifest for a scope from S3.
162
+ * Returns a default manifest with the current timestamp if none exists yet.
89
163
  */
90
164
  async loadManifest(params) {
91
165
  const key = this._getKey(params.location, MANIFEST);
92
166
  const manifest = await this._readJSON(key);
93
167
  return (manifest ?? {
94
168
  schemaVersion: SCHEMA_VERSION,
95
- nextSnapshotId: DEFAULT_SNAPSHOT_ID,
96
169
  updatedAt: new Date().toISOString(),
97
170
  });
98
171
  }
99
172
  /**
100
- * Saves manifest to S3
173
+ * Persists the snapshot manifest for a scope to S3.
101
174
  */
102
175
  async saveManifest(params) {
103
176
  const key = this._getKey(params.location, MANIFEST);
104
177
  await this._writeJSON(key, params.manifest);
105
178
  }
106
179
  /**
107
- * Writes JSON data to S3
180
+ * Serializes data as JSON and writes it to S3 with `application/json` content type.
108
181
  */
109
182
  async _writeJSON(key, data) {
110
183
  try {
@@ -120,7 +193,8 @@ export class S3Storage {
120
193
  }
121
194
  }
122
195
  /**
123
- * Reads and parses JSON from S3
196
+ * Reads and parses a JSON object from S3. Returns null if the object does not exist.
197
+ * Throws SessionError on parse failure or unexpected S3 errors.
124
198
  */
125
199
  async _readJSON(key) {
126
200
  try {
@@ -131,7 +205,7 @@ export class S3Storage {
131
205
  return JSON.parse(body);
132
206
  }
133
207
  catch (error) {
134
- if (error && typeof error === 'object' && 'name' in error && error.name === 'NoSuchKey') {
208
+ if (this._isNotFoundError(error)) {
135
209
  return null;
136
210
  }
137
211
  if (error instanceof SyntaxError) {
@@ -140,11 +214,22 @@ export class S3Storage {
140
214
  throw new SessionError(`S3 error reading ${key}`, { cause: error });
141
215
  }
142
216
  }
217
+ /** Returns true if the error represents a missing S3 object (`NoSuchKey`) or bucket (`NoSuchBucket`). */
218
+ _isNotFoundError(error) {
219
+ return (error !== null &&
220
+ typeof error === 'object' &&
221
+ 'name' in error &&
222
+ typeof error.name === 'string' &&
223
+ (error.name === 'NoSuchKey' || error.name === 'NoSuchBucket'));
224
+ }
225
+ /** Returns the S3 key for `snapshot_latest.json` within the given scope. */
143
226
  _getLatestSnapshotKey(location) {
144
227
  return this._getKey(location, SNAPSHOT_LATEST);
145
228
  }
229
+ /** Returns the S3 key for an immutable snapshot in `immutable_history/`. Validates the snapshotId before constructing the key. */
146
230
  _getHistorySnapshotKey(location, snapshotId) {
147
- return this._getKey(location, `${IMMUTABLE_HISTORY}snapshot_${String(snapshotId).padStart(5, '0')}.json`);
231
+ validateIdentifier(snapshotId);
232
+ return this._getKey(location, `${IMMUTABLE_HISTORY}snapshot_${snapshotId}.json`);
148
233
  }
149
234
  }
150
235
  //# sourceMappingURL=s3-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3-storage.js","sourceRoot":"","sources":["../../../src/session/s3-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3-storage.js","sourceRoot":"","sources":["../../../src/session/s3-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEpE,MAAM,QAAQ,GAAG,eAAe,CAAA;AAChC,MAAM,eAAe,GAAG,sBAAsB,CAAA;AAC9C,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAC9C,MAAM,cAAc,GAAG,KAAK,CAAA;AAC5B,MAAM,cAAc,GAAG,0BAA0B,CAAA;AACjD,MAAM,YAAY,GAAG,IAAI,CAAA;AAgBzB;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,SAAS;IACpB,yBAAyB;IACR,GAAG,CAAU;IAC9B,qBAAqB;IACJ,OAAO,CAAQ;IAChC,iCAAiC;IAChB,OAAO,CAAQ;IAChC;;;OAGG;IACH,YAAY,MAAuB;QACjC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,YAAY,CAAC,oFAAoF,CAAC,CAAA;QAC9G,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC,CAAA;IACtF,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,QAA0B,EAAE,IAAY;QACtD,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACtC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACnD,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,SAAS,WAAW,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,cAAc,IAAI,EAAE,CAAA;IACtG,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,SAAiB;QACzC,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACnD,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,CAAA;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,MAKlB;QACC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QACzG,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,MAA2D;QAC5E,MAAM,GAAG,GACP,MAAM,CAAC,UAAU,KAAK,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,SAAS,CAAW,GAAG,CAAC,CAAA;IACtC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,MAIrB;QACC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QAC9D,IAAI,MAAM,CAAC,UAAU;YAAE,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAExD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;QAC/D,yEAAyE;QACzE,oFAAoF;QACpF,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;YACrC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;YACjE,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,CAAC;YACH,MAAM,GAAG,GAAa,EAAE,CAAA;YACxB,IAAI,iBAAqC,CAAA;YACzC,GAAG,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,IAAI,oBAAoB,CAAC;oBACvB,MAAM,EAAE,IAAI,CAAC,OAAO;oBACpB,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;oBACzD,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY;oBACtG,iBAAiB,EAAE,iBAAiB;iBACrC,CAAC,CACH,CAAA;gBACD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;qBACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBACjD,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;gBACjD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBACjB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzB,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;wBACpC,MAAM,IAAI,YAAY,CAAC,2DAA2D,CAAC,CAAA;oBACrF,CAAC;oBACD,iBAAiB,GAAG,QAAQ,CAAC,qBAAqB,CAAA;gBACpD,CAAC;qBAAM,CAAC;oBACN,iBAAiB,GAAG,SAAS,CAAA;gBAC/B,CAAC;YACH,CAAC,QAAQ,iBAAiB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAC;YACxF,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACtE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,YAAY;gBAAE,MAAM,KAAK,CAAA;YAC9C,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC3C,MAAM,IAAI,YAAY,CAAC,wCAAwC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/G,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,MAA6B;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACvD,IAAI,CAAC;YACH,IAAI,iBAAqC,CAAA;YACzC,GAAG,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC,CACzG,CAAA;gBACD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,EAAE,CAAC,CAAC,CAAA;gBACxE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;gBACpG,CAAC;gBACD,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAA;YACvF,CAAC,QAAQ,iBAAiB,EAAC;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CAAC,4BAA4B,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAsC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAmB,GAAG,CAAC,CAAA;QAE5D,OAAO,CACL,QAAQ,IAAI;YACV,aAAa,EAAE,cAAc;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAkE;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACnD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,IAAa;QACjD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACjB,IAAI,gBAAgB,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnC,WAAW,EAAE,kBAAkB;aAChC,CAAC,CACH,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CAAC,6BAA6B,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,SAAS,CAAI,GAAW;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAC9F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAA;YACrD,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAA;YACb,CAAC;YACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,YAAY,CAAC,6BAA6B,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;YAC9E,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,oBAAoB,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,yGAAyG;IACjG,gBAAgB,CAAC,KAAc;QACrC,OAAO,CACL,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,QAAQ;YACzB,MAAM,IAAI,KAAK;YACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;YACrD,CAAE,KAA0B,CAAC,IAAI,KAAK,WAAW,IAAK,KAA0B,CAAC,IAAI,KAAK,cAAc,CAAC,CAC1G,CAAA;IACH,CAAC;IAED,4EAA4E;IACpE,qBAAqB,CAAC,QAA0B;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;IAChD,CAAC;IAED,kIAAkI;IAC1H,sBAAsB,CAAC,QAA0B,EAAE,UAAkB;QAC3E,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,iBAAiB,YAAY,UAAU,OAAO,CAAC,CAAA;IAClF,CAAC;CACF"}
@@ -0,0 +1,87 @@
1
+ import type { SnapshotStorage } from './storage.js';
2
+ import type { SnapshotTriggerCallback } from './types.js';
3
+ import type { Plugin } from '../plugins/plugin.js';
4
+ import type { LocalAgent } from '../types/agent.js';
5
+ import type { Agent } from '../agent/agent.js';
6
+ /**
7
+ * Controls when `snapshot_latest` is saved automatically.
8
+ *
9
+ * There are two kinds of snapshots:
10
+ * - **`snapshot_latest`**: A single mutable snapshot that is overwritten on each save. Used to
11
+ * resume the most recent conversation state (e.g. after a crash or restart). Always reflects
12
+ * the last saved point in time.
13
+ * - **Immutable snapshots**: Append-only snapshots with unique IDs (UUID v7), created only when
14
+ * `snapshotTrigger` fires. Used for checkpointing — you can restore to any prior state, not
15
+ * just the latest.
16
+ *
17
+ * `SaveLatestStrategy` controls how frequently `snapshot_latest` is updated:
18
+ * - `'invocation'`: after every agent invocation completes (default; balances durability and I/O)
19
+ * - `'message'`: after every message added and after model calls with guardrail redactions (most durable, highest I/O)
20
+ * - `'trigger'`: only when a `snapshotTrigger` fires (or manually via `saveSnapshot`)
21
+ */
22
+ export type SaveLatestStrategy = 'message' | 'invocation' | 'trigger';
23
+ export interface SessionManagerConfig {
24
+ /** Pluggable storage backends for snapshot persistence. Defaults to FileStorage in Node.js; required in browser environments. */
25
+ storage: {
26
+ snapshot: SnapshotStorage;
27
+ };
28
+ /** Unique session identifier. Defaults to `'default-session'`. */
29
+ sessionId?: string;
30
+ /** When to save snapshot_latest. Default: `'invocation'` (after each agent invocation completes). See {@link SaveLatestStrategy} for details. */
31
+ saveLatestOn?: SaveLatestStrategy;
32
+ /** Callback invoked after each invocation to decide whether to create an immutable snapshot. */
33
+ snapshotTrigger?: SnapshotTriggerCallback;
34
+ }
35
+ /**
36
+ * Manages session persistence for agents, enabling conversation state
37
+ * to be saved and restored across invocations using pluggable storage backends.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * import { SessionManager, FileStorage } from '@strands-agents/sdk'
42
+ *
43
+ * const session = new SessionManager({
44
+ * sessionId: 'my-session',
45
+ * storage: { snapshot: new FileStorage() },
46
+ * })
47
+ * const agent = new Agent({ sessionManager: session })
48
+ * ```
49
+ */
50
+ export declare class SessionManager implements Plugin {
51
+ private readonly _sessionId;
52
+ private readonly _storage;
53
+ private readonly _saveLatestOn;
54
+ private readonly _snapshotTrigger?;
55
+ /**
56
+ * Unique identifier for this plugin.
57
+ */
58
+ get name(): string;
59
+ constructor(config: SessionManagerConfig);
60
+ /** Initializes the plugin by registering lifecycle hook callbacks. */
61
+ initAgent(agent: LocalAgent): void;
62
+ private _location;
63
+ saveSnapshot(params: {
64
+ target: Agent;
65
+ isLatest: boolean;
66
+ }): Promise<void>;
67
+ /** Deletes all snapshots and manifests for this session from storage. */
68
+ deleteSession(): Promise<void>;
69
+ /** Loads a snapshot from storage and restores it into the target agent. Returns false if no snapshot exists. */
70
+ restoreSnapshot(params: {
71
+ target: Agent;
72
+ snapshotId?: string;
73
+ }): Promise<boolean>;
74
+ /** Restores session state on agent initialization. */
75
+ private _onAgentInitialized;
76
+ /** Saves latest on invocation and fires the snapshot trigger if configured. */
77
+ private _onAfterAgentInvocation;
78
+ private _onMessageAdded;
79
+ /**
80
+ * Saves snapshot when a message is redacted after a model call.
81
+ * Critical for ensuring guardrail redactions are persisted immediately.
82
+ */
83
+ private _onAfterModelCall;
84
+ /** Captures one snapshot and writes it to both immutable history and snapshot_latest. */
85
+ private _saveImmutableAndLatest;
86
+ }
87
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/session/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,cAAc,CAAA;AAErE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAA;AAErE,MAAM,WAAW,oBAAoB;IACnC,iIAAiI;IACjI,OAAO,EAAE;QACP,QAAQ,EAAE,eAAe,CAAA;KAC1B,CAAA;IACD,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iJAAiJ;IACjJ,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,gGAAgG;IAChG,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAC1C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAqC;IAEvE;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAEW,MAAM,EAAE,oBAAoB;IAOxC,sEAAsE;IAC/D,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAmBzC,OAAO,CAAC,SAAS;IAIX,YAAY,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/E,yEAAyE;IACnE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,gHAAgH;IAC1G,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAWvF,sDAAsD;YACxC,mBAAmB;IAIjC,+EAA+E;YACjE,uBAAuB;YAYvB,eAAe;IAK7B;;;OAGG;YACW,iBAAiB;IAQ/B,yFAAyF;YAC3E,uBAAuB;CAatC"}
@@ -0,0 +1,128 @@
1
+ import { validateIdentifier } from './validation.js';
2
+ import { AfterInvocationEvent, AfterModelCallEvent, InitializedEvent, MessageAddedEvent } from '../hooks/events.js';
3
+ import { v7 as uuidV7 } from 'uuid';
4
+ import { takeSnapshot, loadSnapshot } from '../agent/snapshot.js';
5
+ /**
6
+ * Manages session persistence for agents, enabling conversation state
7
+ * to be saved and restored across invocations using pluggable storage backends.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { SessionManager, FileStorage } from '@strands-agents/sdk'
12
+ *
13
+ * const session = new SessionManager({
14
+ * sessionId: 'my-session',
15
+ * storage: { snapshot: new FileStorage() },
16
+ * })
17
+ * const agent = new Agent({ sessionManager: session })
18
+ * ```
19
+ */
20
+ export class SessionManager {
21
+ _sessionId;
22
+ _storage;
23
+ _saveLatestOn;
24
+ _snapshotTrigger;
25
+ /**
26
+ * Unique identifier for this plugin.
27
+ */
28
+ get name() {
29
+ return 'strands:session-manager';
30
+ }
31
+ constructor(config) {
32
+ this._sessionId = validateIdentifier(config.sessionId ?? 'default-session');
33
+ this._storage = { snapshot: config.storage.snapshot };
34
+ this._saveLatestOn = config.saveLatestOn ?? 'invocation';
35
+ this._snapshotTrigger = config.snapshotTrigger;
36
+ }
37
+ /** Initializes the plugin by registering lifecycle hook callbacks. */
38
+ initAgent(agent) {
39
+ agent.addHook(InitializedEvent, async (event) => {
40
+ await this._onAgentInitialized(event);
41
+ });
42
+ if (this._saveLatestOn === 'message') {
43
+ agent.addHook(MessageAddedEvent, async (event) => {
44
+ await this._onMessageAdded(event);
45
+ });
46
+ // Also listen to AfterModelCallEvent when saving per-message to ensure
47
+ // message modifications (e.g., guardrail redactions) are persisted immediately
48
+ agent.addHook(AfterModelCallEvent, async (event) => {
49
+ await this._onAfterModelCall(event);
50
+ });
51
+ }
52
+ agent.addHook(AfterInvocationEvent, async (event) => {
53
+ await this._onAfterAgentInvocation(event);
54
+ });
55
+ }
56
+ _location(agent) {
57
+ return { sessionId: this._sessionId, scope: 'agent', scopeId: agent.id };
58
+ }
59
+ async saveSnapshot(params) {
60
+ const snapshot = takeSnapshot(params.target, { preset: 'session' });
61
+ const snapshotId = params.isLatest ? 'latest' : uuidV7();
62
+ await this._storage.snapshot.saveSnapshot({
63
+ location: this._location(params.target),
64
+ snapshotId,
65
+ isLatest: params.isLatest,
66
+ snapshot,
67
+ });
68
+ }
69
+ /** Deletes all snapshots and manifests for this session from storage. */
70
+ async deleteSession() {
71
+ await this._storage.snapshot.deleteSession({ sessionId: this._sessionId });
72
+ }
73
+ /** Loads a snapshot from storage and restores it into the target agent. Returns false if no snapshot exists. */
74
+ async restoreSnapshot(params) {
75
+ const snapshot = await this._storage.snapshot.loadSnapshot({
76
+ location: this._location(params.target),
77
+ ...(params.snapshotId !== undefined && { snapshotId: params.snapshotId }),
78
+ });
79
+ if (!snapshot)
80
+ return false;
81
+ loadSnapshot(params.target, snapshot);
82
+ return true;
83
+ }
84
+ /** Restores session state on agent initialization. */
85
+ async _onAgentInitialized(event) {
86
+ await this.restoreSnapshot({ target: event.agent });
87
+ }
88
+ /** Saves latest on invocation and fires the snapshot trigger if configured. */
89
+ async _onAfterAgentInvocation(event) {
90
+ const agent = event.agent;
91
+ if (this._saveLatestOn === 'invocation') {
92
+ await this.saveSnapshot({ target: agent, isLatest: true });
93
+ }
94
+ if (this._snapshotTrigger?.({ agentData: agent })) {
95
+ await this._saveImmutableAndLatest(agent);
96
+ }
97
+ }
98
+ async _onMessageAdded(event) {
99
+ const agent = event.agent;
100
+ await this.saveSnapshot({ target: agent, isLatest: true });
101
+ }
102
+ /**
103
+ * Saves snapshot when a message is redacted after a model call.
104
+ * Critical for ensuring guardrail redactions are persisted immediately.
105
+ */
106
+ async _onAfterModelCall(event) {
107
+ // Only save if there was a redaction
108
+ if (event.stopData?.redaction) {
109
+ const agent = event.agent;
110
+ await this.saveSnapshot({ target: agent, isLatest: true });
111
+ }
112
+ }
113
+ /** Captures one snapshot and writes it to both immutable history and snapshot_latest. */
114
+ async _saveImmutableAndLatest(agent) {
115
+ const snapshot = takeSnapshot(agent, { preset: 'session' });
116
+ const snapshotId = uuidV7();
117
+ await Promise.all([
118
+ this._storage.snapshot.saveSnapshot({ location: this._location(agent), snapshotId, isLatest: false, snapshot }),
119
+ this._storage.snapshot.saveSnapshot({
120
+ location: this._location(agent),
121
+ snapshotId: 'latest',
122
+ isLatest: true,
123
+ snapshot,
124
+ }),
125
+ ]);
126
+ }
127
+ }
128
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export type SnapshotLocation = {
7
7
  sessionId: string;
8
8
  /** Scope of the snapshot (agent or multi-agent) */
9
9
  scope: Scope;
10
- /** Scope-specific identifier (agentId or multiAgentId) */
10
+ /** Scope-specific identifier (agent id or multi-agent id) */
11
11
  scopeId: string;
12
12
  };
13
13
  /**
@@ -35,10 +35,9 @@ export type SessionStorage = {
35
35
  * agent/<scope_id>/
36
36
  * snapshots/
37
37
  * snapshot_latest.json
38
- * manifest.json
39
38
  * immutable_history/
40
- * snapshot_00001.json
41
- * snapshot_00002.json
39
+ * snapshot_<uuid>.json
40
+ * snapshot_<uuid>.json
42
41
  * ```
43
42
  */
44
43
  export interface SnapshotStorage {
@@ -59,21 +58,30 @@ export interface SnapshotStorage {
59
58
  snapshotId?: string;
60
59
  }): Promise<Snapshot | null>;
61
60
  /**
62
- * Lists all available snapshot IDs for a session scope.
61
+ * Lists all available immutable snapshot IDs for a session scope, sorted chronologically.
62
+ * Snapshot IDs are UUID v7 strings vended by the SDK — callers should treat them as opaque
63
+ * handles and never construct them manually.
63
64
  *
64
- * TODO: Add pagination support for long-running agents with many snapshots.
65
- * Future signature could be:
65
+ * Typical pagination pattern:
66
66
  * ```typescript
67
- * listSnapshots(params: {
68
- * location: SnapshotLocation
69
- * limit?: number // Max results to return (e.g., 100)
70
- * startAfter?: string // Snapshot ID to start after (for cursor-based pagination)
71
- * }): Promise<{ snapshotIds: string[]; nextToken?: string }>
67
+ * const page1 = await storage.listSnapshotIds({ location })
68
+ * const page2 = await storage.listSnapshotIds({ location, startAfter: page1.at(-1) })
72
69
  * ```
70
+ *
71
+ * `limit` caps the number of returned IDs. `startAfter` is an exclusive cursor (the last ID
72
+ * from the previous page); it must be a UUID v7 obtained from a prior `listSnapshotIds` call.
73
73
  */
74
74
  listSnapshotIds(params: {
75
75
  location: SnapshotLocation;
76
+ limit?: number;
77
+ startAfter?: string;
76
78
  }): Promise<string[]>;
79
+ /**
80
+ * Deletes all snapshots and directories belonging to the session ID.
81
+ */
82
+ deleteSession(params: {
83
+ sessionId: string;
84
+ }): Promise<void>;
77
85
  /**
78
86
  * Loads the snapshot manifest.
79
87
  */
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/session/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEnE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,KAAK,EAAE,KAAK,CAAA;IACZ,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,eAAe,CAAA;CAE1B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,QAAQ,CAAA;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAEnG;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAE1E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE/E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChG"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/session/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEnE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,KAAK,EAAE,KAAK,CAAA;IACZ,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,eAAe,CAAA;CAE1B,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,QAAQ,CAAA;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAEnG;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAE/G;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3D;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE/E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChG"}
@@ -1,14 +1,12 @@
1
- import type { AgentData } from '../types/agent.js';
1
+ import type { LocalAgent } from '../types/agent.js';
2
2
  export type { Snapshot, Scope } from '../agent/snapshot.js';
3
3
  /**
4
- * Manifest tracks snapshot metadata and ID allocation.
5
- * Stored alongside snapshots to manage versioning.
4
+ * Manifest tracks snapshot metadata.
5
+ * Stored alongside snapshots to support versioning and future multi-agent patterns.
6
6
  */
7
7
  export interface SnapshotManifest {
8
8
  /** Schema version for forward/backward compatibility */
9
9
  schemaVersion: string;
10
- /** Next available snapshot ID for allocation */
11
- nextSnapshotId: string;
12
10
  /** ISO 8601 timestamp of last manifest update */
13
11
  updatedAt: string;
14
12
  }
@@ -16,12 +14,8 @@ export interface SnapshotManifest {
16
14
  * Parameters passed to SnapshotTriggerCallback to determine when to create snapshots.
17
15
  */
18
16
  export interface SnapshotTriggerParams {
19
- /** Number of agent invocations (turns) since session started */
20
- turnCount: number;
21
- /** Timestamp (ms) of last immutable snapshot creation, undefined if no snapshot yet */
22
- lastSnapshotAt?: number;
23
17
  /** Current agent data including messages and state */
24
- agentData: AgentData;
18
+ agentData: LocalAgent;
25
19
  }
26
20
  /**
27
21
  * Callback function to determine when to create immutable snapshots.
@@ -32,17 +26,11 @@ export interface SnapshotTriggerParams {
32
26
  *
33
27
  * @example
34
28
  * ```ts
35
- * // Snapshot every 5 turns
36
- * const trigger: SnapshotTriggerCallback = ({ turnCount }) => turnCount % 5 === 0
29
+ * // Snapshot every 10 messages
30
+ * const trigger: SnapshotTriggerCallback = ({ agentData }) => agentData.messages.length % 10 === 0
37
31
  *
38
- * // Snapshot every 60 seconds
39
- * const trigger: SnapshotTriggerCallback = ({ lastSnapshotAt }) => {
40
- * if (!lastSnapshotAt) return false
41
- * return Date.now() - lastSnapshotAt > 60000
42
- * }
43
- *
44
- * // Snapshot when conversation exceeds 10 messages
45
- * const trigger: SnapshotTriggerCallback = ({ agentData }) => agentData.messages.length > 10
32
+ * // Snapshot when conversation exceeds 20 messages
33
+ * const trigger: SnapshotTriggerCallback = ({ agentData }) => agentData.messages.length > 20
46
34
  * ```
47
35
  */
48
36
  export type SnapshotTriggerCallback = (params: SnapshotTriggerParams) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAA;IACrB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sDAAsD;IACtD,SAAS,EAAE,SAAS,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,SAAS,EAAE,UAAU,CAAA;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAA"}
@@ -7,4 +7,11 @@
7
7
  * @throws Error if identifier contains invalid characters
8
8
  */
9
9
  export declare function validateIdentifier(id: string): string;
10
+ /**
11
+ * Validates that a string is a UUID v7.
12
+ *
13
+ * @param id - The string to validate
14
+ * @throws Error if the string is not a valid UUID v7
15
+ */
16
+ export declare function validateUuidV7(id: string): void;
10
17
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/session/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMrD"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/session/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAK/C"}