@strands-agents/sdk 1.4.0 → 1.6.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 (435) hide show
  1. package/README.md +11 -11
  2. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  3. package/dist/src/__fixtures__/agent-helpers.js +9 -0
  4. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  5. package/dist/src/__fixtures__/register-node-defaults.d.ts +2 -0
  6. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +1 -0
  7. package/dist/src/__fixtures__/register-node-defaults.js +6 -0
  8. package/dist/src/__fixtures__/register-node-defaults.js.map +1 -0
  9. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +1 -1
  10. package/dist/src/__fixtures__/test-sandbox.node.js +4 -3
  11. package/dist/src/__fixtures__/test-sandbox.node.js.map +1 -1
  12. package/dist/src/__tests__/default-slot.test.d.ts +2 -0
  13. package/dist/src/__tests__/default-slot.test.d.ts.map +1 -0
  14. package/dist/src/__tests__/default-slot.test.js +33 -0
  15. package/dist/src/__tests__/default-slot.test.js.map +1 -0
  16. package/dist/src/a2a/__tests__/async-lock.test.d.ts +2 -0
  17. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +1 -0
  18. package/dist/src/a2a/__tests__/async-lock.test.js +137 -0
  19. package/dist/src/a2a/__tests__/async-lock.test.js.map +1 -0
  20. package/dist/src/a2a/__tests__/executor.test.js +146 -8
  21. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  22. package/dist/src/a2a/__tests__/server.test.js +20 -0
  23. package/dist/src/a2a/__tests__/server.test.js.map +1 -1
  24. package/dist/src/a2a/async-lock.d.ts +22 -0
  25. package/dist/src/a2a/async-lock.d.ts.map +1 -0
  26. package/dist/src/a2a/async-lock.js +38 -0
  27. package/dist/src/a2a/async-lock.js.map +1 -0
  28. package/dist/src/a2a/executor.d.ts +59 -24
  29. package/dist/src/a2a/executor.d.ts.map +1 -1
  30. package/dist/src/a2a/executor.js +209 -32
  31. package/dist/src/a2a/executor.js.map +1 -1
  32. package/dist/src/a2a/index.d.ts +1 -1
  33. package/dist/src/a2a/index.d.ts.map +1 -1
  34. package/dist/src/a2a/index.js +1 -1
  35. package/dist/src/a2a/index.js.map +1 -1
  36. package/dist/src/a2a/server.d.ts +18 -2
  37. package/dist/src/a2a/server.d.ts.map +1 -1
  38. package/dist/src/a2a/server.js +13 -2
  39. package/dist/src/a2a/server.js.map +1 -1
  40. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +2 -0
  41. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +1 -0
  42. package/dist/src/agent/__tests__/agent.context-manager.test.js +107 -0
  43. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +1 -0
  44. package/dist/src/agent/__tests__/agent.stateful-model.test.js +2 -2
  45. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -1
  46. package/dist/src/agent/__tests__/agent.tracer.test.node.js +14 -0
  47. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  48. package/dist/src/agent/agent.d.ts +135 -2
  49. package/dist/src/agent/agent.d.ts.map +1 -1
  50. package/dist/src/agent/agent.js +506 -189
  51. package/dist/src/agent/agent.js.map +1 -1
  52. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +19 -0
  53. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts.map +1 -0
  54. package/dist/src/context-manager/modes/agentic/agentic-context.js +245 -0
  55. package/dist/src/context-manager/modes/agentic/agentic-context.js.map +1 -0
  56. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts +2 -0
  57. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts.map +1 -0
  58. package/dist/src/conversation-manager/__tests__/agentic-context.test.js +332 -0
  59. package/dist/src/conversation-manager/__tests__/agentic-context.test.js.map +1 -0
  60. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts +2 -0
  61. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts.map +1 -0
  62. package/dist/src/conversation-manager/__tests__/context-compression.test.js +176 -0
  63. package/dist/src/conversation-manager/__tests__/context-compression.test.js.map +1 -0
  64. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +2 -0
  65. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +1 -0
  66. package/dist/src/conversation-manager/__tests__/pin.test.js +119 -0
  67. package/dist/src/conversation-manager/__tests__/pin.test.js.map +1 -0
  68. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +49 -0
  69. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  70. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +58 -0
  71. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  72. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts +2 -0
  73. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts.map +1 -0
  74. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js +138 -0
  75. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js.map +1 -0
  76. package/dist/src/conversation-manager/compression/context-compression.d.ts +39 -0
  77. package/dist/src/conversation-manager/compression/context-compression.d.ts.map +1 -0
  78. package/dist/src/conversation-manager/compression/context-compression.js +150 -0
  79. package/dist/src/conversation-manager/compression/context-compression.js.map +1 -0
  80. package/dist/src/conversation-manager/compression/pin-message.d.ts +45 -0
  81. package/dist/src/conversation-manager/compression/pin-message.d.ts.map +1 -0
  82. package/dist/src/conversation-manager/compression/pin-message.js +106 -0
  83. package/dist/src/conversation-manager/compression/pin-message.js.map +1 -0
  84. package/dist/src/conversation-manager/conversation-manager.d.ts +2 -0
  85. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
  86. package/dist/src/conversation-manager/conversation-manager.js +2 -2
  87. package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
  88. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +7 -0
  89. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  90. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +30 -38
  91. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  92. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +7 -19
  93. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  94. package/dist/src/conversation-manager/summarizing-conversation-manager.js +20 -109
  95. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  96. package/dist/src/default-slot.d.ts +6 -0
  97. package/dist/src/default-slot.d.ts.map +1 -0
  98. package/dist/src/default-slot.js +18 -0
  99. package/dist/src/default-slot.js.map +1 -0
  100. package/dist/src/errors.d.ts +8 -0
  101. package/dist/src/errors.d.ts.map +1 -1
  102. package/dist/src/errors.js +11 -0
  103. package/dist/src/errors.js.map +1 -1
  104. package/dist/src/index.d.ts +8 -1
  105. package/dist/src/index.d.ts.map +1 -1
  106. package/dist/src/index.js +7 -1
  107. package/dist/src/index.js.map +1 -1
  108. package/dist/src/index.node.d.ts +2 -0
  109. package/dist/src/index.node.d.ts.map +1 -0
  110. package/dist/src/index.node.js +9 -0
  111. package/dist/src/index.node.js.map +1 -0
  112. package/dist/src/injection/__tests__/message-injection.test.d.ts +2 -0
  113. package/dist/src/injection/__tests__/message-injection.test.d.ts.map +1 -0
  114. package/dist/src/injection/__tests__/message-injection.test.js +200 -0
  115. package/dist/src/injection/__tests__/message-injection.test.js.map +1 -0
  116. package/dist/src/injection/index.d.ts +6 -0
  117. package/dist/src/injection/index.d.ts.map +1 -0
  118. package/dist/src/injection/index.js +2 -0
  119. package/dist/src/injection/index.js.map +1 -0
  120. package/dist/src/injection/message-injection.d.ts +65 -0
  121. package/dist/src/injection/message-injection.d.ts.map +1 -0
  122. package/dist/src/injection/message-injection.js +134 -0
  123. package/dist/src/injection/message-injection.js.map +1 -0
  124. package/dist/src/injection/types.d.ts +63 -0
  125. package/dist/src/injection/types.d.ts.map +1 -0
  126. package/dist/src/injection/types.js +2 -0
  127. package/dist/src/injection/types.js.map +1 -0
  128. package/dist/src/injection/xml.d.ts +27 -0
  129. package/dist/src/injection/xml.d.ts.map +1 -0
  130. package/dist/src/injection/xml.js +31 -0
  131. package/dist/src/injection/xml.js.map +1 -0
  132. package/dist/src/interrupt.d.ts +5 -1
  133. package/dist/src/interrupt.d.ts.map +1 -1
  134. package/dist/src/interrupt.js +6 -0
  135. package/dist/src/interrupt.js.map +1 -1
  136. package/dist/src/memory/__tests__/memory-manager.test.d.ts +2 -0
  137. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +1 -0
  138. package/dist/src/memory/__tests__/memory-manager.test.js +679 -0
  139. package/dist/src/memory/__tests__/memory-manager.test.js.map +1 -0
  140. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +2 -0
  141. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +1 -0
  142. package/dist/src/memory/extraction/__tests__/extraction.test.js +637 -0
  143. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +1 -0
  144. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +2 -0
  145. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +1 -0
  146. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +68 -0
  147. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +1 -0
  148. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +2 -0
  149. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +1 -0
  150. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +81 -0
  151. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +1 -0
  152. package/dist/src/memory/extraction/coordinator.d.ts +128 -0
  153. package/dist/src/memory/extraction/coordinator.d.ts.map +1 -0
  154. package/dist/src/memory/extraction/coordinator.js +245 -0
  155. package/dist/src/memory/extraction/coordinator.js.map +1 -0
  156. package/dist/src/memory/extraction/model-extractor.d.ts +32 -0
  157. package/dist/src/memory/extraction/model-extractor.d.ts.map +1 -0
  158. package/dist/src/memory/extraction/model-extractor.js +118 -0
  159. package/dist/src/memory/extraction/model-extractor.js.map +1 -0
  160. package/dist/src/memory/extraction/resolve-extraction-config.d.ts +46 -0
  161. package/dist/src/memory/extraction/resolve-extraction-config.d.ts.map +1 -0
  162. package/dist/src/memory/extraction/resolve-extraction-config.js +59 -0
  163. package/dist/src/memory/extraction/resolve-extraction-config.js.map +1 -0
  164. package/dist/src/memory/extraction/triggers.d.ts +41 -0
  165. package/dist/src/memory/extraction/triggers.d.ts.map +1 -0
  166. package/dist/src/memory/extraction/triggers.js +59 -0
  167. package/dist/src/memory/extraction/triggers.js.map +1 -0
  168. package/dist/src/memory/extraction/types.d.ts +133 -0
  169. package/dist/src/memory/extraction/types.d.ts.map +1 -0
  170. package/dist/src/memory/extraction/types.js +19 -0
  171. package/dist/src/memory/extraction/types.js.map +1 -0
  172. package/dist/src/memory/index.d.ts +10 -0
  173. package/dist/src/memory/index.d.ts.map +1 -0
  174. package/dist/src/memory/index.js +5 -0
  175. package/dist/src/memory/index.js.map +1 -0
  176. package/dist/src/memory/memory-manager.d.ts +178 -0
  177. package/dist/src/memory/memory-manager.d.ts.map +1 -0
  178. package/dist/src/memory/memory-manager.js +526 -0
  179. package/dist/src/memory/memory-manager.js.map +1 -0
  180. package/dist/src/memory/types.d.ts +278 -0
  181. package/dist/src/memory/types.d.ts.map +1 -0
  182. package/dist/src/memory/types.js +2 -0
  183. package/dist/src/memory/types.js.map +1 -0
  184. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +2 -0
  185. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +1 -0
  186. package/dist/src/middleware/__tests__/agent-middleware.test.js +1206 -0
  187. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +1 -0
  188. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts +2 -0
  189. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts.map +1 -0
  190. package/dist/src/middleware/__tests__/copy-on-input.test.js +379 -0
  191. package/dist/src/middleware/__tests__/copy-on-input.test.js.map +1 -0
  192. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +2 -0
  193. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +1 -0
  194. package/dist/src/middleware/__tests__/custom-stages.test.js +97 -0
  195. package/dist/src/middleware/__tests__/custom-stages.test.js.map +1 -0
  196. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +2 -0
  197. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +1 -0
  198. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +267 -0
  199. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +1 -0
  200. package/dist/src/middleware/__tests__/registry.test.d.ts +2 -0
  201. package/dist/src/middleware/__tests__/registry.test.d.ts.map +1 -0
  202. package/dist/src/middleware/__tests__/registry.test.js +525 -0
  203. package/dist/src/middleware/__tests__/registry.test.js.map +1 -0
  204. package/dist/src/middleware/index.d.ts +5 -0
  205. package/dist/src/middleware/index.d.ts.map +1 -0
  206. package/dist/src/middleware/index.js +3 -0
  207. package/dist/src/middleware/index.js.map +1 -0
  208. package/dist/src/middleware/registry.d.ts +58 -0
  209. package/dist/src/middleware/registry.d.ts.map +1 -0
  210. package/dist/src/middleware/registry.js +107 -0
  211. package/dist/src/middleware/registry.js.map +1 -0
  212. package/dist/src/middleware/stages.d.ts +145 -0
  213. package/dist/src/middleware/stages.d.ts.map +1 -0
  214. package/dist/src/middleware/stages.js +34 -0
  215. package/dist/src/middleware/stages.js.map +1 -0
  216. package/dist/src/middleware/types.d.ts +88 -0
  217. package/dist/src/middleware/types.d.ts.map +1 -0
  218. package/dist/src/middleware/types.js +2 -0
  219. package/dist/src/middleware/types.js.map +1 -0
  220. package/dist/src/models/__tests__/anthropic.test.js +16 -1
  221. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  222. package/dist/src/models/__tests__/bedrock.test.js +39 -0
  223. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  224. package/dist/src/models/__tests__/model.test.js +46 -3
  225. package/dist/src/models/__tests__/model.test.js.map +1 -1
  226. package/dist/src/models/anthropic.js +2 -2
  227. package/dist/src/models/anthropic.js.map +1 -1
  228. package/dist/src/models/bedrock.d.ts.map +1 -1
  229. package/dist/src/models/bedrock.js +12 -5
  230. package/dist/src/models/bedrock.js.map +1 -1
  231. package/dist/src/models/defaults.d.ts.map +1 -1
  232. package/dist/src/models/defaults.js +2 -0
  233. package/dist/src/models/defaults.js.map +1 -1
  234. package/dist/src/models/model.d.ts.map +1 -1
  235. package/dist/src/models/model.js +7 -3
  236. package/dist/src/models/model.js.map +1 -1
  237. package/dist/src/models/openai/__tests__/responses.test.js +8 -14
  238. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  239. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +2 -0
  240. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +1 -0
  241. package/dist/src/sandbox/__tests__/default.test.browser.js +11 -0
  242. package/dist/src/sandbox/__tests__/default.test.browser.js.map +1 -0
  243. package/dist/src/sandbox/__tests__/default.test.node.d.ts +2 -0
  244. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +1 -0
  245. package/dist/src/sandbox/__tests__/default.test.node.js +23 -0
  246. package/dist/src/sandbox/__tests__/default.test.node.js.map +1 -0
  247. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +2 -0
  248. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +1 -0
  249. package/dist/src/sandbox/__tests__/docker.test.node.js +89 -0
  250. package/dist/src/sandbox/__tests__/docker.test.node.js.map +1 -0
  251. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +2 -0
  252. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +1 -0
  253. package/dist/src/sandbox/__tests__/errors.test.node.js +33 -0
  254. package/dist/src/sandbox/__tests__/errors.test.node.js.map +1 -0
  255. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +2 -0
  256. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +1 -0
  257. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +124 -0
  258. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +1 -0
  259. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +50 -4
  260. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +1 -1
  261. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +2 -0
  262. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +1 -0
  263. package/dist/src/sandbox/__tests__/ssh.test.node.js +262 -0
  264. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +1 -0
  265. package/dist/src/sandbox/base.d.ts +17 -4
  266. package/dist/src/sandbox/base.d.ts.map +1 -1
  267. package/dist/src/sandbox/base.js +10 -2
  268. package/dist/src/sandbox/base.js.map +1 -1
  269. package/dist/src/sandbox/constants.d.ts +18 -0
  270. package/dist/src/sandbox/constants.d.ts.map +1 -1
  271. package/dist/src/sandbox/constants.js +20 -0
  272. package/dist/src/sandbox/constants.js.map +1 -1
  273. package/dist/src/sandbox/default.d.ts +3 -0
  274. package/dist/src/sandbox/default.d.ts.map +1 -0
  275. package/dist/src/sandbox/default.js +3 -0
  276. package/dist/src/sandbox/default.js.map +1 -0
  277. package/dist/src/sandbox/docker.d.ts +38 -0
  278. package/dist/src/sandbox/docker.d.ts.map +1 -0
  279. package/dist/src/sandbox/docker.js +61 -0
  280. package/dist/src/sandbox/docker.js.map +1 -0
  281. package/dist/src/sandbox/errors.d.ts +26 -0
  282. package/dist/src/sandbox/errors.d.ts.map +1 -0
  283. package/dist/src/sandbox/errors.js +35 -0
  284. package/dist/src/sandbox/errors.js.map +1 -0
  285. package/dist/src/sandbox/index.d.ts +5 -0
  286. package/dist/src/sandbox/index.d.ts.map +1 -0
  287. package/dist/src/sandbox/index.js +4 -0
  288. package/dist/src/sandbox/index.js.map +1 -0
  289. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts +16 -0
  290. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts.map +1 -0
  291. package/dist/src/sandbox/not-a-sandbox-local-environment.js +83 -0
  292. package/dist/src/sandbox/not-a-sandbox-local-environment.js.map +1 -0
  293. package/dist/src/sandbox/posix-shell.d.ts +21 -0
  294. package/dist/src/sandbox/posix-shell.d.ts.map +1 -1
  295. package/dist/src/sandbox/posix-shell.js +41 -3
  296. package/dist/src/sandbox/posix-shell.js.map +1 -1
  297. package/dist/src/sandbox/ssh.d.ts +56 -0
  298. package/dist/src/sandbox/ssh.d.ts.map +1 -0
  299. package/dist/src/sandbox/ssh.js +121 -0
  300. package/dist/src/sandbox/ssh.js.map +1 -0
  301. package/dist/src/sandbox/stream-process.d.ts.map +1 -1
  302. package/dist/src/sandbox/stream-process.js +3 -2
  303. package/dist/src/sandbox/stream-process.js.map +1 -1
  304. package/dist/src/tsconfig.tsbuildinfo +1 -1
  305. package/dist/src/types/agent.d.ts +21 -0
  306. package/dist/src/types/agent.d.ts.map +1 -1
  307. package/dist/src/types/agent.js.map +1 -1
  308. package/dist/src/types/messages.d.ts +9 -1
  309. package/dist/src/types/messages.d.ts.map +1 -1
  310. package/dist/src/types/messages.js +13 -1
  311. package/dist/src/types/messages.js.map +1 -1
  312. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts +2 -0
  313. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts.map +1 -0
  314. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js +675 -0
  315. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js.map +1 -0
  316. package/dist/src/vended-interventions/cedar/cedar.d.ts +102 -0
  317. package/dist/src/vended-interventions/cedar/cedar.d.ts.map +1 -0
  318. package/dist/src/vended-interventions/cedar/cedar.js +228 -0
  319. package/dist/src/vended-interventions/cedar/cedar.js.map +1 -0
  320. package/dist/src/vended-interventions/cedar/index.d.ts +3 -0
  321. package/dist/src/vended-interventions/cedar/index.d.ts.map +1 -0
  322. package/dist/src/vended-interventions/cedar/index.js +2 -0
  323. package/dist/src/vended-interventions/cedar/index.js.map +1 -0
  324. package/dist/src/vended-interventions/cedar/schema-generator.d.ts +10 -0
  325. package/dist/src/vended-interventions/cedar/schema-generator.d.ts.map +1 -0
  326. package/dist/src/vended-interventions/cedar/schema-generator.js +33 -0
  327. package/dist/src/vended-interventions/cedar/schema-generator.js.map +1 -0
  328. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts +2 -0
  329. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts.map +1 -0
  330. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js +611 -0
  331. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js.map +1 -0
  332. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts +2 -0
  333. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts.map +1 -0
  334. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js +2 -0
  335. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js.map +1 -0
  336. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts +230 -0
  337. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts.map +1 -0
  338. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js +370 -0
  339. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js.map +1 -0
  340. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts +2 -0
  341. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts.map +1 -0
  342. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js +96 -0
  343. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js.map +1 -0
  344. package/dist/src/vended-plugins/context-injector/index.d.ts +25 -0
  345. package/dist/src/vended-plugins/context-injector/index.d.ts.map +1 -0
  346. package/dist/src/vended-plugins/context-injector/index.js +23 -0
  347. package/dist/src/vended-plugins/context-injector/index.js.map +1 -0
  348. package/dist/src/vended-plugins/context-injector/plugin.d.ts +55 -0
  349. package/dist/src/vended-plugins/context-injector/plugin.d.ts.map +1 -0
  350. package/dist/src/vended-plugins/context-injector/plugin.js +41 -0
  351. package/dist/src/vended-plugins/context-injector/plugin.js.map +1 -0
  352. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +2 -0
  353. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +1 -0
  354. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +68 -0
  355. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +1 -0
  356. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +43 -4
  357. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -1
  358. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +2 -0
  359. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +1 -0
  360. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +93 -0
  361. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +1 -0
  362. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +68 -0
  363. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -1
  364. package/dist/src/vended-plugins/context-offloader/index.d.ts +1 -1
  365. package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -1
  366. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +4 -1
  367. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  368. package/dist/src/vended-plugins/context-offloader/plugin.js +40 -8
  369. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  370. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  371. package/dist/src/vended-plugins/context-offloader/search.js +3 -5
  372. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  373. package/dist/src/vended-plugins/context-offloader/storage.d.ts +58 -6
  374. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  375. package/dist/src/vended-plugins/context-offloader/storage.js +136 -14
  376. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  377. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +2 -0
  378. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +1 -0
  379. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +736 -0
  380. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +1 -0
  381. package/dist/src/vended-plugins/goal/index.d.ts +21 -0
  382. package/dist/src/vended-plugins/goal/index.d.ts.map +1 -0
  383. package/dist/src/vended-plugins/goal/index.js +20 -0
  384. package/dist/src/vended-plugins/goal/index.js.map +1 -0
  385. package/dist/src/vended-plugins/goal/judge.d.ts +41 -0
  386. package/dist/src/vended-plugins/goal/judge.d.ts.map +1 -0
  387. package/dist/src/vended-plugins/goal/judge.js +92 -0
  388. package/dist/src/vended-plugins/goal/judge.js.map +1 -0
  389. package/dist/src/vended-plugins/goal/plugin.d.ts +214 -0
  390. package/dist/src/vended-plugins/goal/plugin.d.ts.map +1 -0
  391. package/dist/src/vended-plugins/goal/plugin.js +287 -0
  392. package/dist/src/vended-plugins/goal/plugin.js.map +1 -0
  393. package/dist/src/vended-plugins/index.d.ts +3 -1
  394. package/dist/src/vended-plugins/index.d.ts.map +1 -1
  395. package/dist/src/vended-plugins/index.js +3 -1
  396. package/dist/src/vended-plugins/index.js.map +1 -1
  397. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +17 -7
  398. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  399. package/dist/src/vended-plugins/skills/agent-skills.d.ts +21 -7
  400. package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
  401. package/dist/src/vended-plugins/skills/agent-skills.js +144 -77
  402. package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
  403. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +44 -4
  404. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  405. package/dist/src/vended-tools/bash/bash.d.ts +3 -24
  406. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  407. package/dist/src/vended-tools/bash/bash.js +9 -9
  408. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  409. package/dist/src/vended-tools/bash/index.d.ts +3 -1
  410. package/dist/src/vended-tools/bash/index.d.ts.map +1 -1
  411. package/dist/src/vended-tools/bash/index.js +2 -1
  412. package/dist/src/vended-tools/bash/index.js.map +1 -1
  413. package/dist/src/vended-tools/bash/make-bash.d.ts +22 -0
  414. package/dist/src/vended-tools/bash/make-bash.d.ts.map +1 -0
  415. package/dist/src/vended-tools/bash/make-bash.js +40 -0
  416. package/dist/src/vended-tools/bash/make-bash.js.map +1 -0
  417. package/dist/src/vended-tools/bash/types.d.ts +1 -0
  418. package/dist/src/vended-tools/bash/types.d.ts.map +1 -1
  419. package/dist/src/vended-tools/bash/types.js +2 -0
  420. package/dist/src/vended-tools/bash/types.js.map +1 -1
  421. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +83 -1
  422. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  423. package/dist/src/vended-tools/file-editor/file-editor.d.ts +19 -10
  424. package/dist/src/vended-tools/file-editor/file-editor.d.ts.map +1 -1
  425. package/dist/src/vended-tools/file-editor/file-editor.js +188 -218
  426. package/dist/src/vended-tools/file-editor/file-editor.js.map +1 -1
  427. package/dist/src/vended-tools/file-editor/index.d.ts +2 -1
  428. package/dist/src/vended-tools/file-editor/index.d.ts.map +1 -1
  429. package/dist/src/vended-tools/file-editor/index.js +1 -1
  430. package/dist/src/vended-tools/file-editor/index.js.map +1 -1
  431. package/package.json +59 -6
  432. package/dist/src/utils/shell-quote.d.ts +0 -12
  433. package/dist/src/utils/shell-quote.d.ts.map +0 -1
  434. package/dist/src/utils/shell-quote.js +0 -14
  435. package/dist/src/utils/shell-quote.js.map +0 -1
@@ -0,0 +1,370 @@
1
+ import { BedrockAgentRuntimeClient, RetrieveCommand } from '@aws-sdk/client-bedrock-agent-runtime';
2
+ import { BedrockAgentClient, IngestKnowledgeBaseDocumentsCommand, } from '@aws-sdk/client-bedrock-agent';
3
+ import { v7 as uuidv7 } from 'uuid';
4
+ import { logger } from '../../logging/logger.js';
5
+ const DEFAULT_MAX_SEARCH_RESULTS = 10;
6
+ /** Converts a caller metadata value into a Bedrock attribute value, or `undefined` if unsupported. */
7
+ function toAttributeValue(value) {
8
+ if (typeof value === 'string')
9
+ return { type: 'STRING', stringValue: value };
10
+ if (typeof value === 'number')
11
+ return { type: 'NUMBER', numberValue: value };
12
+ if (typeof value === 'boolean')
13
+ return { type: 'BOOLEAN', booleanValue: value };
14
+ if (Array.isArray(value) && value.length > 0 && value.every((item) => typeof item === 'string')) {
15
+ return { type: 'STRING_LIST', stringListValue: value };
16
+ }
17
+ return undefined;
18
+ }
19
+ /**
20
+ * A {@link MemoryStore} backed by Amazon Bedrock Knowledge Bases. Supports semantic search via
21
+ * Retrieve and document ingestion via IngestKnowledgeBaseDocuments for CUSTOM and S3 data sources.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * import { BedrockKnowledgeBaseStore } from '@strands-agents/sdk/vended-memory-stores/bedrock-knowledge-base'
26
+ *
27
+ * const store = new BedrockKnowledgeBaseStore({
28
+ * config: {
29
+ * knowledgeBaseId: 'KB123',
30
+ * dataSourceType: 'CUSTOM',
31
+ * dataSourceId: 'DS456',
32
+ * },
33
+ * scope: 'user-abc',
34
+ * writable: true,
35
+ * })
36
+ *
37
+ * const results = await store.search('what are my preferences?')
38
+ * const { documentId } = await store.add('User prefers dark mode')
39
+ * ```
40
+ */
41
+ export class BedrockKnowledgeBaseStore {
42
+ name;
43
+ description;
44
+ maxSearchResults;
45
+ writable;
46
+ extraction;
47
+ _runtimeClient;
48
+ _agentClient;
49
+ _s3Client;
50
+ _s3Config;
51
+ _knowledgeBaseId;
52
+ _dataSourceType;
53
+ _dataSourceId;
54
+ /**
55
+ * Logical namespace isolating documents: applied as a metadata filter on {@link search} and stamped
56
+ * on writes via {@link add}. Unlike {@link name}, it is not a store-identity field, so it never
57
+ * affects `MemoryManager` routing. For per-tenant isolation, construct one store per scope — cheap,
58
+ * since they can share a single {@link BedrockKnowledgeBaseConfig}.
59
+ */
60
+ scope;
61
+ /** Metadata attribute key used for scope-based filtering. */
62
+ scopeMetadataKey;
63
+ /**
64
+ * Explicit retrieval filter. When set, it overrides the scope-derived filter for {@link search}.
65
+ * Note the asymmetry: an explicit filter affects search only; writes always scope by {@link scope}.
66
+ */
67
+ filter;
68
+ constructor(options) {
69
+ const { config, scope, name, description, writable, maxSearchResults, filter, extraction } = options;
70
+ this.name = name;
71
+ if (description !== undefined)
72
+ this.description = description;
73
+ if (maxSearchResults !== undefined) {
74
+ if (maxSearchResults < 1) {
75
+ throw new Error('BedrockKnowledgeBaseStore: maxSearchResults must be at least 1.');
76
+ }
77
+ this.maxSearchResults = maxSearchResults;
78
+ }
79
+ this.writable = writable ?? false;
80
+ if (extraction !== undefined)
81
+ this.extraction = extraction;
82
+ this._runtimeClient = config.runtimeClient ?? new BedrockAgentRuntimeClient({});
83
+ this._agentClient = config.agentClient;
84
+ this._s3Client = config.s3?.client;
85
+ this._s3Config = config.s3;
86
+ this._knowledgeBaseId = config.knowledgeBaseId;
87
+ this._dataSourceType = config.dataSourceType;
88
+ this._dataSourceId = config.dataSourceId;
89
+ if (this.writable)
90
+ this._validateWriteConfig();
91
+ this.scope = scope;
92
+ this.scopeMetadataKey = config.scopeMetadataKey ?? 'namespace';
93
+ this.filter = filter;
94
+ }
95
+ /**
96
+ * Resolves the effective retrieval filter for a search: an explicit {@link filter} wins; otherwise
97
+ * one is derived from {@link scope} / {@link scopeMetadataKey}.
98
+ */
99
+ _resolveFilter() {
100
+ if (this.filter)
101
+ return this.filter;
102
+ if (this.scope)
103
+ return { equals: { key: this.scopeMetadataKey, value: this.scope } };
104
+ return undefined;
105
+ }
106
+ /**
107
+ * Searches the knowledge base for entries matching the query.
108
+ *
109
+ * @param query - The search query text
110
+ * @param options - Optional search configuration
111
+ * @returns Matching memory entries ordered by relevance. Each entry's `metadata` includes
112
+ * user-provided attributes plus two reserved synthetic keys: `_relevanceScore` (number) and
113
+ * `_sourceLocation` (Bedrock retrieval location object).
114
+ */
115
+ async search(query, options) {
116
+ if (options?.maxSearchResults !== undefined && options.maxSearchResults < 1) {
117
+ throw new Error('BedrockKnowledgeBaseStore: maxSearchResults must be at least 1.');
118
+ }
119
+ const limit = options?.maxSearchResults || this.maxSearchResults || DEFAULT_MAX_SEARCH_RESULTS;
120
+ const filter = this._resolveFilter();
121
+ let response;
122
+ try {
123
+ response = await this._runtimeClient.send(new RetrieveCommand({
124
+ knowledgeBaseId: this._knowledgeBaseId,
125
+ retrievalQuery: { text: query },
126
+ retrievalConfiguration: {
127
+ vectorSearchConfiguration: {
128
+ numberOfResults: limit,
129
+ ...(filter && { filter }),
130
+ },
131
+ },
132
+ }));
133
+ }
134
+ catch (error) {
135
+ logger.error(`store=<${this.name}>, knowledgeBaseId=<${this._knowledgeBaseId}>, error=<${error}> | knowledge base retrieve failed`, error);
136
+ throw error;
137
+ }
138
+ return (response.retrievalResults ?? []).map((result) => {
139
+ const metadata = {};
140
+ if (result.metadata) {
141
+ for (const [key, value] of Object.entries(result.metadata)) {
142
+ metadata[key] = value;
143
+ }
144
+ }
145
+ if (result.location) {
146
+ metadata._sourceLocation = result.location;
147
+ }
148
+ if (result.score != null) {
149
+ metadata._relevanceScore = result.score;
150
+ }
151
+ return {
152
+ content: result.content?.text ?? '',
153
+ metadata,
154
+ };
155
+ });
156
+ }
157
+ /**
158
+ * Ingests `content` (with optional `metadata`) into the knowledge base.
159
+ *
160
+ * Only `CUSTOM` and `S3` data sources support this — they are the sole `dataSourceType`s that
161
+ * accept direct ingestion (`IngestKnowledgeBaseDocuments`). `OTHER` backends sync from an external
162
+ * store or are query-only, so the store is read-only and `add` is unavailable. Requires
163
+ * `dataSourceId` (and, for `S3`, an `s3` config); see {@link BedrockKnowledgeBaseStoreConfig}.
164
+ *
165
+ * @param content - The text content to ingest
166
+ * @param metadata - Optional metadata attributes to attach to the document
167
+ * @returns The document identifier (UUID for CUSTOM, s3:// URI for S3)
168
+ */
169
+ async add(content, metadata) {
170
+ if (!this.writable) {
171
+ throw new Error('BedrockKnowledgeBaseStore: store is not writable. Set writable: true in config to enable add().');
172
+ }
173
+ if (!content.trim()) {
174
+ throw new Error('BedrockKnowledgeBaseStore: content must not be empty.');
175
+ }
176
+ const { dataSourceId, dataSourceType } = this._validateWriteConfig();
177
+ // S3 and CUSTOM data sources accept fundamentally different documents. S3 ingests objects, so
178
+ // its document references objects uploaded to S3 first; CUSTOM ingests the text inline. Either
179
+ // way the store mints the document's identifier (CUSTOM: a UUID; S3: the content object's URI)
180
+ // and returns it, so the caller has a stable handle to the document Bedrock now tracks.
181
+ let document;
182
+ let documentId;
183
+ if (dataSourceType === 'S3') {
184
+ const objectUris = await this._uploadS3Objects(content, metadata);
185
+ document = this._buildS3Document(objectUris);
186
+ documentId = objectUris.contentUri;
187
+ }
188
+ else {
189
+ documentId = uuidv7();
190
+ document = this._buildCustomDocument(documentId, content, metadata);
191
+ }
192
+ try {
193
+ await this._getAgentClient().send(new IngestKnowledgeBaseDocumentsCommand({
194
+ knowledgeBaseId: this._knowledgeBaseId,
195
+ dataSourceId,
196
+ documents: [document],
197
+ }));
198
+ }
199
+ catch (error) {
200
+ logger.error(`store=<${this.name}>, knowledgeBaseId=<${this._knowledgeBaseId}>, dataSourceId=<${dataSourceId}>, dataSourceType=<${dataSourceType}>, error=<${error}> | knowledge base document ingestion failed`, error);
201
+ throw error;
202
+ }
203
+ return { documentId };
204
+ }
205
+ /**
206
+ * Uploads the objects that back one S3 ingestion and returns their `s3://` URIs.
207
+ *
208
+ * A single `add` produces up to *two* objects — hence the plural name and the multi-URI return:
209
+ * - `contentUri`: the content itself, uploaded as a `.txt` object. Always written.
210
+ * - `sidecarUri`: a `<object-key>.metadata.json` sidecar carrying scope/metadata, written *only*
211
+ * when there is any to attach (so it's optional in the return). Unlike a `CUSTOM` document, an
212
+ * S3 document can't carry attributes inline, so the sidecar is Bedrock's out-of-band convention
213
+ * for attaching them: it sits beside the content object and Bedrock pairs the two by name.
214
+ *
215
+ * Bedrock reads and indexes these objects on ingestion.
216
+ *
217
+ * Note: uploads are not transactional. If the sidecar upload (or the subsequent ingestion) fails
218
+ * after the content object lands, the uploaded object(s) remain in the bucket un-ingested. They are
219
+ * inert — a later data-source sync may pick them up, or they can be cleaned up out of band.
220
+ */
221
+ async _uploadS3Objects(content, metadata) {
222
+ const s3 = this._s3Config;
223
+ const prefix = s3.prefix.endsWith('/') ? s3.prefix : `${s3.prefix}/`;
224
+ const key = `${prefix}${uuidv7()}.txt`;
225
+ const contentUri = await this._putObject(s3, key, content, 'text/plain; charset=utf-8');
226
+ const attributes = this._buildS3SidecarAttributes(metadata);
227
+ if (Object.keys(attributes).length === 0) {
228
+ return { contentUri };
229
+ }
230
+ // The sidecar must sit beside the source object and be named `<object-key>.metadata.json`.
231
+ const sidecar = JSON.stringify({ metadataAttributes: attributes });
232
+ const sidecarUri = await this._putObject(s3, `${key}.metadata.json`, sidecar, 'application/json');
233
+ return { contentUri, sidecarUri };
234
+ }
235
+ /** Uploads a single object to the configured bucket and returns its `s3://` URI. */
236
+ async _putObject(s3, key, body, contentType) {
237
+ try {
238
+ const { PutObjectCommand } = await import('@aws-sdk/client-s3');
239
+ const client = await this._getS3Client();
240
+ await client.send(new PutObjectCommand({ Bucket: s3.bucket, Key: key, Body: body, ContentType: contentType }));
241
+ }
242
+ catch (error) {
243
+ logger.error(`store=<${this.name}>, uri=<s3://${s3.bucket}/${key}>, error=<${error}> | S3 upload failed before ingestion`, error);
244
+ throw error;
245
+ }
246
+ return `s3://${s3.bucket}/${key}`;
247
+ }
248
+ /**
249
+ * Builds a document for an `S3` data source from the URIs produced by {@link _uploadS3Objects}.
250
+ *
251
+ * Takes both URIs because an S3 document references objects by location rather than carrying data
252
+ * inline: `contentUri` becomes the document's content (the object to index), and `sidecarUri`,
253
+ * when present, becomes its metadata (an `S3_LOCATION` pointing at the sidecar). With no
254
+ * scope/metadata there's no sidecar, so `sidecarUri` is omitted and the document carries no
255
+ * metadata.
256
+ */
257
+ _buildS3Document({ contentUri, sidecarUri, }) {
258
+ const document = {
259
+ content: {
260
+ dataSourceType: 'S3',
261
+ s3: { s3Location: { uri: contentUri } },
262
+ },
263
+ };
264
+ if (sidecarUri) {
265
+ document.metadata = {
266
+ type: 'S3_LOCATION',
267
+ s3Location: { uri: sidecarUri },
268
+ };
269
+ }
270
+ return document;
271
+ }
272
+ /**
273
+ * Resolves scope and caller metadata into a flat list of key-value pairs, handling collision
274
+ * detection and unsupported-type filtering. Shared by both CUSTOM (inline attributes) and S3
275
+ * (sidecar) document builders.
276
+ */
277
+ _resolveAttributes(metadata) {
278
+ const attrs = [];
279
+ if (this.scope) {
280
+ attrs.push({ key: this.scopeMetadataKey, value: { type: 'STRING', stringValue: this.scope } });
281
+ }
282
+ if (metadata) {
283
+ for (const [key, value] of Object.entries(metadata)) {
284
+ if (this.scope && key === this.scopeMetadataKey) {
285
+ logger.warn(`store=<${this.name}>, key=<${key}> | dropping metadata key that collides with scopeMetadataKey`);
286
+ continue;
287
+ }
288
+ const attributeValue = toAttributeValue(value);
289
+ if (attributeValue) {
290
+ attrs.push({ key, value: attributeValue });
291
+ }
292
+ else {
293
+ logger.debug(`store=<${this.name}>, key=<${key}> | dropping metadata value of unsupported type`);
294
+ }
295
+ }
296
+ }
297
+ return attrs;
298
+ }
299
+ /**
300
+ * Builds a document for a `CUSTOM` data source: the text ingested inline, with the scope and any
301
+ * caller metadata attached as inline attributes for retrieval filtering. The caller supplies
302
+ * `documentId` (so it can return that same id to its own caller) and it becomes the document's
303
+ * `customDocumentIdentifier`.
304
+ */
305
+ _buildCustomDocument(documentId, content, metadata) {
306
+ const attrs = this._resolveAttributes(metadata);
307
+ const document = {
308
+ content: {
309
+ dataSourceType: 'CUSTOM',
310
+ custom: {
311
+ customDocumentIdentifier: { id: documentId },
312
+ sourceType: 'IN_LINE',
313
+ inlineContent: {
314
+ type: 'TEXT',
315
+ textContent: { data: content },
316
+ },
317
+ },
318
+ },
319
+ };
320
+ if (attrs.length > 0) {
321
+ document.metadata = {
322
+ type: 'IN_LINE_ATTRIBUTE',
323
+ inlineAttributes: attrs.map(({ key, value }) => ({ key, value })),
324
+ };
325
+ }
326
+ return document;
327
+ }
328
+ /**
329
+ * Builds the `metadataAttributes` map for an S3 `.metadata.json` sidecar from the scope and caller
330
+ * metadata. Returns an empty map when there's nothing to attach — {@link _uploadS3Objects} treats
331
+ * that as "no sidecar" and skips writing the second object.
332
+ */
333
+ _buildS3SidecarAttributes(metadata) {
334
+ const attrs = this._resolveAttributes(metadata);
335
+ const attributes = {};
336
+ for (const { key, value } of attrs) {
337
+ attributes[key] = { value, includeForEmbedding: false };
338
+ }
339
+ return attributes;
340
+ }
341
+ _validateWriteConfig() {
342
+ if (this._dataSourceType !== 'CUSTOM' && this._dataSourceType !== 'S3') {
343
+ throw new Error(`BedrockKnowledgeBaseStore: add requires dataSourceType 'CUSTOM' or 'S3', but it is '${this._dataSourceType ?? 'undefined'}'. ` +
344
+ "'OTHER' backends are read-only.");
345
+ }
346
+ if (!this._dataSourceId) {
347
+ throw new Error('BedrockKnowledgeBaseStore: dataSourceId is required for write operations. ' +
348
+ 'Provide it in the config to enable add().');
349
+ }
350
+ if (this._dataSourceType === 'S3' && !this._s3Config) {
351
+ throw new Error("BedrockKnowledgeBaseStore: s3 config is required when dataSourceType is 'S3'. " +
352
+ 'Provide bucket and prefix to enable add().');
353
+ }
354
+ return { dataSourceId: this._dataSourceId, dataSourceType: this._dataSourceType };
355
+ }
356
+ async _getS3Client() {
357
+ if (!this._s3Client) {
358
+ const { S3Client: S3ClientImpl } = await import('@aws-sdk/client-s3');
359
+ this._s3Client = new S3ClientImpl({});
360
+ }
361
+ return this._s3Client;
362
+ }
363
+ _getAgentClient() {
364
+ if (!this._agentClient) {
365
+ this._agentClient = new BedrockAgentClient({});
366
+ }
367
+ return this._agentClient;
368
+ }
369
+ }
370
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/vended-memory-stores/bedrock-knowledge-base/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.d.ts","sourceRoot":"","sources":["../../../../../src/vended-plugins/context-injector/__tests__/plugin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { ContextInjector } from '../plugin.js';
3
+ import { InvokeModelStage } from '../../../middleware/index.js';
4
+ import { Message, TextBlock } from '../../../types/messages.js';
5
+ import { createMockAgent } from '../../../__fixtures__/agent-helpers.js';
6
+ const user = (text) => new Message({ role: 'user', content: [new TextBlock(text)] });
7
+ const assistant = (text) => new Message({ role: 'assistant', content: [new TextBlock(text)] });
8
+ // Builds a mock agent that captures addMiddleware registrations, with a real appState/cancelSignal.
9
+ function makeAgent() {
10
+ const addMiddleware = vi.fn();
11
+ const agent = createMockAgent({ extra: { addMiddleware } });
12
+ return { agent, addMiddleware };
13
+ }
14
+ describe('ContextInjector', () => {
15
+ describe('plugin interface', () => {
16
+ it('defaults to the strands:context-injector name', () => {
17
+ expect(new ContextInjector({ renderContent: async () => 'x' }).name).toBe('strands:context-injector');
18
+ });
19
+ it('honors a custom name (so multiple injectors can be told apart)', () => {
20
+ expect(new ContextInjector({ name: 'now', renderContent: async () => 'x' }).name).toBe('now');
21
+ });
22
+ it('registers an InvokeModelStage input middleware on initAgent', () => {
23
+ const { agent, addMiddleware } = makeAgent();
24
+ new ContextInjector({ renderContent: async () => 'x' }).initAgent(agent);
25
+ expect(addMiddleware).toHaveBeenCalledTimes(1);
26
+ expect(addMiddleware.mock.calls[0][0]).toBe(InvokeModelStage.Input);
27
+ expect(typeof addMiddleware.mock.calls[0][1]).toBe('function');
28
+ });
29
+ });
30
+ describe('registered handler', () => {
31
+ // Runs the handler the plugin registered, with a context backed by the mock agent.
32
+ async function run(plugin, messages) {
33
+ const { agent, addMiddleware } = makeAgent();
34
+ plugin.initAgent(agent);
35
+ const handler = addMiddleware.mock.calls[0][1];
36
+ return handler({ messages, agent });
37
+ }
38
+ it('folds renderContent() text into the latest user message', async () => {
39
+ const result = await run(new ContextInjector({ renderContent: async () => 'INJECTED' }), [
40
+ assistant('prior'),
41
+ user('ask'),
42
+ ]);
43
+ expect(result.messages.map((m) => m.toJSON())).toStrictEqual([
44
+ { role: 'assistant', content: [{ text: 'prior' }] },
45
+ { role: 'user', content: [{ text: 'INJECTED' }, { text: 'ask' }] },
46
+ ]);
47
+ });
48
+ it('skips on a non-user turn by default (userTurn trigger)', async () => {
49
+ const renderContent = vi.fn(async () => 'x');
50
+ const input = [user('ask'), assistant('reply')];
51
+ const result = await run(new ContextInjector({ renderContent }), input);
52
+ expect(renderContent).not.toHaveBeenCalled();
53
+ expect(result.messages).toBe(input);
54
+ });
55
+ it("'everyTurn' injects regardless of the latest role", async () => {
56
+ const result = await run(new ContextInjector({ trigger: 'everyTurn', renderContent: async () => 'INJECTED' }), [
57
+ user('ask'),
58
+ assistant('reply'),
59
+ ]);
60
+ // No later user message than index 0, so the fold targets it.
61
+ expect(result.messages.map((m) => m.toJSON())).toStrictEqual([
62
+ { role: 'user', content: [{ text: 'INJECTED' }, { text: 'ask' }] },
63
+ { role: 'assistant', content: [{ text: 'reply' }] },
64
+ ]);
65
+ });
66
+ it('exposes appState and the agent to renderContent', async () => {
67
+ const { agent, addMiddleware } = makeAgent();
68
+ let sawAgent = false;
69
+ let sawAppState = false;
70
+ new ContextInjector({
71
+ renderContent: async (ctx) => {
72
+ sawAgent = ctx.agent === agent;
73
+ sawAppState = ctx.appState === agent.appState;
74
+ return undefined;
75
+ },
76
+ }).initAgent(agent);
77
+ const handler = addMiddleware.mock.calls[0][1];
78
+ await handler({ messages: [user('ask')], agent });
79
+ expect(sawAgent).toBe(true);
80
+ expect(sawAppState).toBe(true);
81
+ });
82
+ it('fails open (passes context through) when renderContent throws', async () => {
83
+ const result = await run(new ContextInjector({
84
+ renderContent: async () => {
85
+ throw new Error('boom');
86
+ },
87
+ }), [assistant('prior'), user('ask')]);
88
+ // Unchanged: the original messages, no injected block.
89
+ expect(result.messages.map((m) => m.toJSON())).toStrictEqual([
90
+ { role: 'assistant', content: [{ text: 'prior' }] },
91
+ { role: 'user', content: [{ text: 'ask' }] },
92
+ ]);
93
+ });
94
+ });
95
+ });
96
+ //# sourceMappingURL=plugin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.js","sourceRoot":"","sources":["../../../../../src/vended-plugins/context-injector/__tests__/plugin.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Context-injection plugin for Strands Agents.
3
+ *
4
+ * Provides the {@link ContextInjector} plugin, which folds just-in-time text into the model input
5
+ * before each call without touching durable history.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Agent } from '@strands-agents/sdk'
10
+ * import { ContextInjector } from '@strands-agents/sdk/vended-plugins/context-injector'
11
+ *
12
+ * const agent = new Agent({
13
+ * model,
14
+ * plugins: [
15
+ * new ContextInjector({
16
+ * renderContent: async ({ messages }) => `<context>${derive(messages)}</context>`,
17
+ * }),
18
+ * ],
19
+ * })
20
+ * ```
21
+ */
22
+ export { ContextInjector } from './plugin.js';
23
+ export type { ContextInjectorConfig } from './plugin.js';
24
+ export type { InjectionTrigger, InjectionContext } from '../../injection/types.js';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vended-plugins/context-injector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Context-injection plugin for Strands Agents.
3
+ *
4
+ * Provides the {@link ContextInjector} plugin, which folds just-in-time text into the model input
5
+ * before each call without touching durable history.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Agent } from '@strands-agents/sdk'
10
+ * import { ContextInjector } from '@strands-agents/sdk/vended-plugins/context-injector'
11
+ *
12
+ * const agent = new Agent({
13
+ * model,
14
+ * plugins: [
15
+ * new ContextInjector({
16
+ * renderContent: async ({ messages }) => `<context>${derive(messages)}</context>`,
17
+ * }),
18
+ * ],
19
+ * })
20
+ * ```
21
+ */
22
+ export { ContextInjector } from './plugin.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/vended-plugins/context-injector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,55 @@
1
+ import type { Plugin } from '../../plugins/plugin.js';
2
+ import type { LocalAgent } from '../../types/agent.js';
3
+ import type { InjectionTrigger, InjectionContext } from '../../injection/types.js';
4
+ /** Configuration for the {@link ContextInjector} plugin. */
5
+ export interface ContextInjectorConfig {
6
+ /**
7
+ * Plugin name, for logging and duplicate detection. Defaults to `'strands:context-injector'`. Set a
8
+ * distinct name when registering more than one injector so they can be told apart.
9
+ */
10
+ name?: string;
11
+ /**
12
+ * When to inject. An {@link InjectionTrigger} name selects a built-in policy (`'userTurn'` —
13
+ * default — or `'everyTurn'`); a predicate over the {@link InjectionContext} is the escape hatch. A
14
+ * predicate that throws fails open (injection is skipped).
15
+ *
16
+ * @defaultValue 'userTurn'
17
+ */
18
+ trigger?: InjectionTrigger | ((context: InjectionContext) => boolean);
19
+ /**
20
+ * Renders the text to inject for this call, or `undefined`/`''` to skip. The text reaches the model
21
+ * verbatim, so it is a prompt-injection surface: escape any attacker-influenced fields yourself. A
22
+ * callback that throws fails open (injection is skipped, the model call proceeds).
23
+ */
24
+ renderContent: (context: InjectionContext) => Promise<string | undefined>;
25
+ }
26
+ /**
27
+ * Plugin that injects just-in-time context into the model input before each call.
28
+ *
29
+ * Before each model call, the plugin asks {@link ContextInjectorConfig.renderContent} for text and
30
+ * makes it available to the model for that call, gated by {@link ContextInjectorConfig.trigger}. The
31
+ * injected text is ephemeral: it augments the model input for that one call and never persists into the
32
+ * durable conversation or session.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * import { Agent } from '@strands-agents/sdk'
37
+ * import { ContextInjector } from '@strands-agents/sdk/vended-plugins/context-injector'
38
+ *
39
+ * const agent = new Agent({
40
+ * model,
41
+ * plugins: [new ContextInjector({ renderContent: async () => `<now>${new Date().toISOString()}</now>` })],
42
+ * })
43
+ * ```
44
+ *
45
+ * @remarks
46
+ * Multiple injectors may be registered; each contributes its text independently, in plugin-registration
47
+ * order.
48
+ */
49
+ export declare class ContextInjector implements Plugin {
50
+ readonly name: string;
51
+ private readonly _config;
52
+ constructor(config: ContextInjectorConfig);
53
+ initAgent(agent: LocalAgent): void;
54
+ }
55
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/vended-plugins/context-injector/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAElF,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAA;IACrE;;;;OAIG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAC1E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,MAAM,EAAE,qBAAqB;IAKzC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAUnC"}