@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,46 +1,104 @@
1
1
  /**
2
2
  * OpenTelemetry configuration and setup utilities for Strands agents.
3
3
  *
4
- * This module provides centralized configuration and initialization functionality
5
- * for OpenTelemetry components and other telemetry infrastructure shared across Strands applications.
4
+ * Provides {@link setupTracer} for distributed tracing and {@link setupMeter}
5
+ * for OTEL metrics export. Both use the global OTel API so any provider
6
+ * registered here (or by the user) is automatically picked up by the Agent.
7
+ *
8
+ * This module is only loaded when the user explicitly imports and calls
9
+ * {@link setupTracer} or {@link setupMeter}. The core agent loop
10
+ * (tracer.ts, meter.ts) does not depend on this module.
11
+ *
12
+ * Uses NodeTracerProvider when available for async context propagation
13
+ * across MCP server boundaries. Falls back to BasicTracerProvider in
14
+ * environments without async_hooks support.
6
15
  */
16
+ import { metrics as otelMetrics, trace } from '@opentelemetry/api';
7
17
  import { Resource, envDetectorSync } from '@opentelemetry/resources';
8
- import { NodeTracerProvider, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node';
9
- import { SimpleSpanProcessor, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
18
+ import { BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor, BatchSpanProcessor, } from '@opentelemetry/sdk-trace-base';
19
+ import { MeterProvider, PeriodicExportingMetricReader, ConsoleMetricExporter } from '@opentelemetry/sdk-metrics';
10
20
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
21
+ import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
11
22
  import { logger } from '../logging/index.js';
12
- const DEFAULT_SERVICE_NAME = 'strands-agents';
23
+ import { getServiceName } from './utils.js';
24
+ let DefaultTracerProvider = BasicTracerProvider;
25
+ if (typeof globalThis.process?.getBuiltinModule === 'function') {
26
+ try {
27
+ const nodeModule = globalThis.process.getBuiltinModule('node:module');
28
+ if (nodeModule) {
29
+ const req = nodeModule.createRequire(import.meta.url);
30
+ DefaultTracerProvider = req('@opentelemetry/sdk-trace-node').NodeTracerProvider;
31
+ }
32
+ }
33
+ catch {
34
+ logger.info('sdk-trace-node not available; using BasicTracerProvider without async context propagation');
35
+ }
36
+ }
13
37
  const DEFAULT_SERVICE_NAMESPACE = 'strands';
14
38
  const DEFAULT_DEPLOYMENT_ENVIRONMENT = 'development';
15
39
  /**
16
- * Get the service name, respecting the OTEL_SERVICE_NAME environment variable.
40
+ * Get an OpenTelemetry Tracer instance.
41
+ *
42
+ * Wraps the OTel trace API to provide a consistent tracer scoped to the
43
+ * configured service name.
44
+ *
45
+ * @returns An OTel Tracer instance from the global tracer provider
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * import { setupTracer, getTracer } from '@strands-agents/sdk/telemetry'
50
+ *
51
+ * // Set up telemetry first (or register your own NodeTracerProvider)
52
+ * setupTracer({ exporters: { otlp: true } })
53
+ *
54
+ * // Get a tracer and create custom spans
55
+ * const tracer = getTracer()
56
+ * const span = tracer.startSpan('my-custom-operation')
57
+ * span.setAttribute('custom.key', 'value')
17
58
  *
18
- * @returns The service name from OTEL_SERVICE_NAME or the default 'strands-agents'
59
+ * // ........
60
+ *
61
+ * span.end()
62
+ * ```
63
+ */
64
+ export function getTracer() {
65
+ return trace.getTracer(getServiceName());
66
+ }
67
+ /**
68
+ * Get an OpenTelemetry Meter instance.
69
+ *
70
+ * Wraps the OTel metrics API to provide a consistent meter scoped to the
71
+ * configured service name. Returns a no-op meter until a MeterProvider is
72
+ * registered (either via {@link setupMeter} or by the user directly).
73
+ *
74
+ * @returns An OTel Meter instance from the global meter provider
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * import { setupMeter, getMeter } from '@strands-agents/sdk/telemetry'
79
+ *
80
+ * setupMeter({ exporters: { otlp: true } })
81
+ *
82
+ * const meter = getMeter()
83
+ * const counter = meter.createCounter('my.custom.counter')
84
+ * counter.add(1)
85
+ * ```
19
86
  */
20
- export function getServiceName() {
21
- return globalThis?.process?.env?.OTEL_SERVICE_NAME || DEFAULT_SERVICE_NAME;
87
+ export function getMeter() {
88
+ return otelMetrics.getMeter(getServiceName());
22
89
  }
23
90
  let _provider = null;
24
91
  /**
25
92
  * Set up the tracer provider with the given configuration.
26
93
  *
27
94
  * @param config - Tracer configuration options
28
- * @returns The configured NodeTracerProvider
95
+ * @returns The configured tracer provider
29
96
  *
30
97
  * @example
31
98
  * ```typescript
32
- * import { telemetry } from '@strands-agents/sdk'
33
- *
34
- * // Simple setup with defaults
35
- * const provider = telemetry.setupTracer({
36
- * exporters: { otlp: true }
37
- * })
38
- *
39
- * // Custom provider
40
- * telemetry.setupTracer({
41
- * provider: new NodeTracerProvider({ resource: myResource }),
42
- * exporters: { otlp: true, console: true }
43
- * })
99
+ * import { telemetry } from '\@strands-agents/sdk'
100
+ *
101
+ * telemetry.setupTracer({ exporters: { otlp: true } })
44
102
  * ```
45
103
  */
46
104
  export function setupTracer(config = {}) {
@@ -48,45 +106,97 @@ export function setupTracer(config = {}) {
48
106
  logger.warn('tracer provider already initialized, returning existing provider');
49
107
  return _provider;
50
108
  }
51
- // Use provided provider or create default
52
- _provider = config.provider ?? new NodeTracerProvider({ resource: getOtelResource() });
53
- // Add exporters if requested
109
+ _provider = config.provider ?? new DefaultTracerProvider({ resource: getOtelResource() });
110
+ // Exporters are additive — if a custom provider already has processors, these append to them.
54
111
  if (config.exporters?.otlp)
55
- addOtlpExporter(_provider);
112
+ addOtlpTraceExporter(_provider);
56
113
  if (config.exporters?.console)
57
- addConsoleExporter(_provider);
58
- // register() sets up global tracer provider, context manager, and propagators
114
+ addConsoleTraceExporter(_provider);
59
115
  _provider.register();
60
- // Flush pending spans on exit for short-lived scripts using BatchSpanProcessor
61
- process.once('beforeExit', () => {
62
- if (_provider) {
63
- _provider.forceFlush().catch((err) => {
64
- logger.warn(`error=<${err}> | failed to flush tracer provider on exit`);
65
- });
66
- }
67
- });
116
+ if (typeof globalThis.process?.once === 'function') {
117
+ globalThis.process.once('beforeExit', () => {
118
+ if (_provider) {
119
+ _provider.forceFlush().catch((err) => {
120
+ logger.warn(`error=<${err}> | failed to flush tracer provider on exit`);
121
+ });
122
+ }
123
+ });
124
+ }
68
125
  return _provider;
69
126
  }
70
- function addOtlpExporter(provider) {
127
+ let _meterProvider = null;
128
+ /**
129
+ * Set up the OTEL meter provider with the given configuration.
130
+ *
131
+ * @param config - Meter configuration options
132
+ * @returns The configured meter provider
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * import { telemetry } from '\@strands-agents/sdk'
137
+ *
138
+ * telemetry.setupMeter({ exporters: { otlp: true } })
139
+ * ```
140
+ */
141
+ export function setupMeter(config = {}) {
142
+ if (_meterProvider) {
143
+ logger.warn('meter provider already initialized, returning existing provider');
144
+ return _meterProvider;
145
+ }
146
+ _meterProvider = config.provider ?? new MeterProvider({ resource: getOtelResource() });
147
+ // Exporters are additive — if a custom provider already has readers, these append to them.
148
+ if (config.exporters?.otlp)
149
+ addOtlpMetricReader(_meterProvider);
150
+ if (config.exporters?.console)
151
+ addConsoleMetricReader(_meterProvider);
152
+ otelMetrics.setGlobalMeterProvider(_meterProvider);
153
+ if (typeof globalThis.process?.once === 'function') {
154
+ globalThis.process.once('beforeExit', () => {
155
+ if (_meterProvider) {
156
+ _meterProvider.forceFlush().catch((err) => {
157
+ logger.warn(`error=<${err}> | failed to flush meter provider on exit`);
158
+ });
159
+ }
160
+ });
161
+ }
162
+ return _meterProvider;
163
+ }
164
+ function addOtlpTraceExporter(provider) {
71
165
  try {
72
166
  provider.addSpanProcessor(new BatchSpanProcessor(new OTLPTraceExporter()));
73
167
  }
74
168
  catch (error) {
75
- logger.warn(`error=<${error}> | failed to configure otlp exporter`);
169
+ logger.warn(`error=<${error}> | failed to configure otlp trace exporter`);
76
170
  }
77
171
  }
78
- function addConsoleExporter(provider) {
172
+ function addConsoleTraceExporter(provider) {
79
173
  try {
80
174
  provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
81
175
  }
82
176
  catch (error) {
83
- logger.warn(`error=<${error}> | failed to configure console exporter`);
177
+ logger.warn(`error=<${error}> | failed to configure console trace exporter`);
178
+ }
179
+ }
180
+ function addOtlpMetricReader(provider) {
181
+ try {
182
+ provider.addMetricReader(new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter() }));
183
+ }
184
+ catch (error) {
185
+ logger.warn(`error=<${error}> | failed to configure otlp metric exporter`);
186
+ }
187
+ }
188
+ function addConsoleMetricReader(provider) {
189
+ try {
190
+ provider.addMetricReader(new PeriodicExportingMetricReader({ exporter: new ConsoleMetricExporter() }));
191
+ }
192
+ catch (error) {
193
+ logger.warn(`error=<${error}> | failed to configure console metric exporter`);
84
194
  }
85
195
  }
86
196
  function getOtelResource() {
87
197
  const serviceName = getServiceName();
88
- const serviceNamespace = process.env.OTEL_SERVICE_NAMESPACE || DEFAULT_SERVICE_NAMESPACE;
89
- const deploymentEnvironment = process.env.OTEL_DEPLOYMENT_ENVIRONMENT || DEFAULT_DEPLOYMENT_ENVIRONMENT;
198
+ const serviceNamespace = globalThis.process?.env?.OTEL_SERVICE_NAMESPACE || DEFAULT_SERVICE_NAMESPACE;
199
+ const deploymentEnvironment = globalThis.process?.env?.OTEL_DEPLOYMENT_ENVIRONMENT || DEFAULT_DEPLOYMENT_ENVIRONMENT;
90
200
  const defaultResource = new Resource({
91
201
  'service.name': serviceName,
92
202
  'service.namespace': serviceNamespace,
@@ -94,7 +204,6 @@ function getOtelResource() {
94
204
  'telemetry.sdk.name': 'opentelemetry',
95
205
  'telemetry.sdk.language': 'typescript',
96
206
  });
97
- // Merge with OTEL_RESOURCE_ATTRIBUTES env var (env attrs take precedence)
98
207
  const envResource = envDetectorSync.detect();
99
208
  return defaultResource.merge(envResource);
100
209
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/telemetry/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/telemetry/config.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,20 @@
2
2
  * OpenTelemetry telemetry support for Strands Agents SDK.
3
3
  *
4
4
  * This module provides `setupTracer()` to configure a NodeTracerProvider
5
- * with OTLP or console exporters. The Agent class handles tracing internally
6
- * once telemetry is configured.
5
+ * with OTLP or console exporters, and `setupMeter()` to configure a
6
+ * MeterProvider for OTEL metrics export. The Agent class handles tracing
7
+ * and metrics internally once telemetry is configured.
7
8
  *
8
9
  * @example Basic setup with OTLP exporter
9
10
  * ```typescript
10
- * import { telemetry, Agent } from '@strands-agents/sdk'
11
+ * import { Agent } from '@strands-agents/sdk'
12
+ * import { setupTracer, setupMeter } from '@strands-agents/sdk/telemetry'
11
13
  *
12
14
  * // Configure telemetry with OTLP exporter
13
- * telemetry.setupTracer({ exporters: { otlp: true } })
15
+ * setupTracer({ exporters: { otlp: true } })
16
+ * setupMeter({ exporters: { otlp: true } })
14
17
  *
15
- * // Agent automatically traces invocations
18
+ * // Agent automatically traces invocations and emits metrics
16
19
  * const agent = new Agent()
17
20
  * ```
18
21
  *
@@ -29,6 +32,6 @@
29
32
  * const agent = new Agent()
30
33
  * ```
31
34
  */
32
- export { setupTracer } from './config.js';
33
- export type { TracerConfig } from './config.js';
35
+ export { setupTracer, getTracer, setupMeter, getMeter } from './config.js';
36
+ export type { TracerConfig, MeterConfig } from './config.js';
34
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC1E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
@@ -2,17 +2,20 @@
2
2
  * OpenTelemetry telemetry support for Strands Agents SDK.
3
3
  *
4
4
  * This module provides `setupTracer()` to configure a NodeTracerProvider
5
- * with OTLP or console exporters. The Agent class handles tracing internally
6
- * once telemetry is configured.
5
+ * with OTLP or console exporters, and `setupMeter()` to configure a
6
+ * MeterProvider for OTEL metrics export. The Agent class handles tracing
7
+ * and metrics internally once telemetry is configured.
7
8
  *
8
9
  * @example Basic setup with OTLP exporter
9
10
  * ```typescript
10
- * import { telemetry, Agent } from '@strands-agents/sdk'
11
+ * import { Agent } from '@strands-agents/sdk'
12
+ * import { setupTracer, setupMeter } from '@strands-agents/sdk/telemetry'
11
13
  *
12
14
  * // Configure telemetry with OTLP exporter
13
- * telemetry.setupTracer({ exporters: { otlp: true } })
15
+ * setupTracer({ exporters: { otlp: true } })
16
+ * setupMeter({ exporters: { otlp: true } })
14
17
  *
15
- * // Agent automatically traces invocations
18
+ * // Agent automatically traces invocations and emits metrics
16
19
  * const agent = new Agent()
17
20
  * ```
18
21
  *
@@ -29,5 +32,5 @@
29
32
  * const agent = new Agent()
30
33
  * ```
31
34
  */
32
- export { setupTracer } from './config.js';
35
+ export { setupTracer, getTracer, setupMeter, getMeter } from './config.js';
33
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Agent loop metrics tracking.
3
+ *
4
+ * The {@link Meter} accumulates local metrics during agent invocation and
5
+ * provides them as a read-only {@link AgentMetrics} snapshot via the
6
+ * {@link Meter.metrics} getter for inclusion in {@link AgentResult}.
7
+ *
8
+ * When an OTEL MeterProvider is registered (via {@link setupMeter} or
9
+ * directly), the Meter also emits counters and histograms through the
10
+ * global OTEL metrics API, enabling export to OTLP backends.
11
+ */
12
+ import type { Usage, Metrics, ModelMetadataEventData } from '../models/streaming.js';
13
+ import type { ToolUse } from '../tools/types.js';
14
+ import type { JSONSerializable } from '../types/json.js';
15
+ /**
16
+ * Per-tool execution metrics.
17
+ */
18
+ export interface ToolMetricsData {
19
+ /**
20
+ * Total number of calls to this tool.
21
+ */
22
+ callCount: number;
23
+ /**
24
+ * Number of successful calls.
25
+ */
26
+ successCount: number;
27
+ /**
28
+ * Number of failed calls.
29
+ */
30
+ errorCount: number;
31
+ /**
32
+ * Total execution time in milliseconds.
33
+ */
34
+ totalTime: number;
35
+ }
36
+ /**
37
+ * Per-cycle usage tracking.
38
+ */
39
+ export interface AgentLoopMetricsData {
40
+ /**
41
+ * Unique identifier for this cycle.
42
+ */
43
+ cycleId: string;
44
+ /**
45
+ * Duration of this cycle in milliseconds.
46
+ */
47
+ duration: number;
48
+ /**
49
+ * Token usage for this cycle.
50
+ */
51
+ usage: Usage;
52
+ }
53
+ /**
54
+ * Per-invocation metrics tracking.
55
+ */
56
+ export interface InvocationMetricsData {
57
+ /**
58
+ * Cycle metrics for this invocation.
59
+ */
60
+ cycles: AgentLoopMetricsData[];
61
+ /**
62
+ * Accumulated token usage for this invocation.
63
+ */
64
+ usage: Usage;
65
+ }
66
+ /**
67
+ * JSON-serializable representation of AgentMetrics.
68
+ */
69
+ export interface AgentMetricsData {
70
+ /**
71
+ * Number of agent loop cycles executed.
72
+ */
73
+ cycleCount: number;
74
+ /**
75
+ * Accumulated token usage across all model invocations.
76
+ */
77
+ accumulatedUsage: Usage;
78
+ /**
79
+ * Accumulated performance metrics across all model invocations.
80
+ */
81
+ accumulatedMetrics: Metrics;
82
+ /**
83
+ * Per-invocation metrics.
84
+ */
85
+ agentInvocations: InvocationMetricsData[];
86
+ /**
87
+ * Per-tool execution metrics keyed by tool name.
88
+ */
89
+ toolMetrics: Record<string, ToolMetricsData>;
90
+ }
91
+ /**
92
+ * Options for recording tool usage.
93
+ */
94
+ interface ToolUsageOptions {
95
+ /**
96
+ * The tool that was used.
97
+ */
98
+ tool: ToolUse;
99
+ /**
100
+ * Execution duration in milliseconds.
101
+ */
102
+ duration: number;
103
+ /**
104
+ * Whether the tool call succeeded.
105
+ */
106
+ success: boolean;
107
+ }
108
+ /**
109
+ * Read-only snapshot of aggregated agent metrics.
110
+ *
111
+ * Returned by {@link Meter.metrics} and stored on {@link AgentResult}.
112
+ * Provides access to cycle counts, tool usage, token consumption,
113
+ * and per-invocation breakdowns. Supports serialization via {@link toJSON}.
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const result = await agent.invoke('Hello')
118
+ * console.log(result.metrics?.cycleCount)
119
+ * console.log(result.metrics?.totalDuration)
120
+ * console.log(result.metrics?.accumulatedData)
121
+ * console.log(result.metrics?.toolMetrics)
122
+ * console.log(JSON.stringify(result.metrics))
123
+ * ```
124
+ */
125
+ export declare class AgentMetrics implements JSONSerializable<AgentMetricsData> {
126
+ /**
127
+ * Number of agent loop cycles executed.
128
+ */
129
+ readonly cycleCount: number;
130
+ /**
131
+ * Accumulated token usage across all model invocations.
132
+ */
133
+ readonly accumulatedUsage: Usage;
134
+ /**
135
+ * Accumulated performance metrics across all model invocations.
136
+ */
137
+ readonly accumulatedMetrics: Metrics;
138
+ /**
139
+ * Per-invocation metrics.
140
+ */
141
+ readonly agentInvocations: InvocationMetricsData[];
142
+ /**
143
+ * Per-tool execution metrics keyed by tool name.
144
+ */
145
+ readonly toolMetrics: Record<string, ToolMetricsData>;
146
+ constructor(data?: Partial<AgentMetricsData>);
147
+ /**
148
+ * The most recent agent invocation, or undefined if none exist.
149
+ */
150
+ get latestAgentInvocation(): InvocationMetricsData | undefined;
151
+ /**
152
+ * Accumulated usage and performance metrics across all model invocations.
153
+ */
154
+ get accumulatedData(): {
155
+ usage: Usage;
156
+ metrics: Metrics;
157
+ };
158
+ /**
159
+ * Total duration of all cycles in milliseconds.
160
+ */
161
+ get totalDuration(): number;
162
+ /**
163
+ * Average cycle duration in milliseconds, or 0 if no cycles exist.
164
+ */
165
+ get averageCycleTime(): number;
166
+ /**
167
+ * Per-tool execution statistics with computed averages and rates.
168
+ */
169
+ get toolUsage(): Record<string, ToolMetricsData & {
170
+ averageTime: number;
171
+ successRate: number;
172
+ }>;
173
+ /**
174
+ * Returns a JSON-serializable representation of all collected metrics.
175
+ * Called automatically by JSON.stringify().
176
+ *
177
+ * @returns A plain object suitable for round-trip serialization
178
+ */
179
+ toJSON(): AgentMetricsData;
180
+ }
181
+ /**
182
+ * Accumulates local metrics during agent invocation.
183
+ *
184
+ * Tracks cycle counts, token usage, tool execution stats, and model latency.
185
+ * Use the {@link metrics} getter to obtain a read-only {@link AgentMetrics}
186
+ * snapshot for inclusion in {@link AgentResult}.
187
+ *
188
+ * When an OTEL MeterProvider is registered, the same data is also emitted
189
+ * as OTEL counters and histograms via the global metrics API. If no
190
+ * provider is registered the OTEL meter is a no-op and adds no overhead.
191
+ */
192
+ export declare class Meter {
193
+ /**
194
+ * Number of agent loop cycles executed.
195
+ */
196
+ private _cycleCount;
197
+ /**
198
+ * Accumulated token usage across all model invocations.
199
+ */
200
+ private readonly _accumulatedUsage;
201
+ /**
202
+ * Accumulated performance metrics across all model invocations.
203
+ */
204
+ private readonly _accumulatedMetrics;
205
+ /**
206
+ * Per-invocation metrics.
207
+ */
208
+ private readonly _agentInvocations;
209
+ /**
210
+ * Per-tool execution metrics keyed by tool name.
211
+ */
212
+ private readonly _toolMetrics;
213
+ private readonly _otelMeter;
214
+ private readonly _otelCycleCounter;
215
+ private readonly _otelInvocationCounter;
216
+ private readonly _otelCycleDuration;
217
+ private readonly _otelToolCallCounter;
218
+ private readonly _otelToolErrorCounter;
219
+ private readonly _otelToolDuration;
220
+ private readonly _otelInputTokens;
221
+ private readonly _otelOutputTokens;
222
+ private readonly _otelModelLatency;
223
+ private readonly _otelTimeToFirstToken;
224
+ constructor();
225
+ /**
226
+ * Begin tracking a new agent invocation.
227
+ * Creates a new InvocationMetricsData entry for per-invocation metrics.
228
+ */
229
+ startNewInvocation(): void;
230
+ /**
231
+ * Start a new agent loop cycle.
232
+ *
233
+ * @returns The cycle id and start time
234
+ */
235
+ startCycle(): {
236
+ cycleId: string;
237
+ startTime: number;
238
+ };
239
+ /**
240
+ * End the current agent loop cycle and record its duration.
241
+ *
242
+ * @param startTime - The timestamp when the cycle started (milliseconds since epoch)
243
+ */
244
+ endCycle(startTime: number): void;
245
+ /**
246
+ * Record metrics for a completed tool invocation.
247
+ *
248
+ * @param options - Tool usage recording options
249
+ */
250
+ endToolCall(options: ToolUsageOptions): void;
251
+ /**
252
+ * Update loop-level metrics from a model response.
253
+ *
254
+ * Call this after each model invocation within a cycle to
255
+ * accumulate usage and latency.
256
+ *
257
+ * @param metadata - The metadata event from a model invocation, or undefined if unavailable
258
+ */
259
+ updateCycle(metadata?: ModelMetadataEventData): void;
260
+ /**
261
+ * Read-only snapshot of the accumulated metrics.
262
+ * Returns an AgentMetrics instance suitable for inclusion in AgentResult.
263
+ */
264
+ get metrics(): AgentMetrics;
265
+ /**
266
+ * The most recent agent invocation, or undefined if none exist.
267
+ */
268
+ private get _latestAgentInvocation();
269
+ /**
270
+ * Update accumulated usage and metrics from a model metadata event.
271
+ *
272
+ * @param metadata - The metadata event from a model invocation
273
+ */
274
+ private _updateFromMetadata;
275
+ /**
276
+ * Update the accumulated token usage with new usage data.
277
+ *
278
+ * @param usage - The usage data to accumulate
279
+ */
280
+ private _updateUsage;
281
+ /**
282
+ * Creates an empty Usage object with all counters set to zero.
283
+ *
284
+ * @returns A Usage object with zeroed counters
285
+ */
286
+ private static _createEmptyUsage;
287
+ /**
288
+ * Accumulates token usage from a source into a target Usage object.
289
+ *
290
+ * @param target - The Usage object to accumulate into (mutated in place)
291
+ * @param source - The Usage object to accumulate from
292
+ */
293
+ private static _accumulateUsage;
294
+ }
295
+ export {};
296
+ //# sourceMappingURL=meter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../../src/telemetry/meter.ts"],"names":[],"mappings":"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"}