@strands-agents/sdk 0.0.1

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 (423) hide show
  1. package/LICENSE +175 -0
  2. package/README.md +185 -0
  3. package/dist/__fixtures__/model-test-helpers.d.ts +56 -0
  4. package/dist/__fixtures__/model-test-helpers.d.ts.map +1 -0
  5. package/dist/__fixtures__/model-test-helpers.js +85 -0
  6. package/dist/__fixtures__/model-test-helpers.js.map +1 -0
  7. package/dist/__fixtures__/tool-helpers.d.ts +15 -0
  8. package/dist/__fixtures__/tool-helpers.d.ts.map +1 -0
  9. package/dist/__fixtures__/tool-helpers.js +22 -0
  10. package/dist/__fixtures__/tool-helpers.js.map +1 -0
  11. package/dist/__tests__/errors.test.d.ts +2 -0
  12. package/dist/__tests__/errors.test.d.ts.map +1 -0
  13. package/dist/__tests__/errors.test.js +20 -0
  14. package/dist/__tests__/errors.test.js.map +1 -0
  15. package/dist/__tests__/index.test.d.ts +2 -0
  16. package/dist/__tests__/index.test.d.ts.map +1 -0
  17. package/dist/__tests__/index.test.js +27 -0
  18. package/dist/__tests__/index.test.js.map +1 -0
  19. package/dist/errors.d.ts +22 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +25 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/index.d.ts +19 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/models/__tests__/bedrock.test.d.ts +2 -0
  28. package/dist/models/__tests__/bedrock.test.d.ts.map +1 -0
  29. package/dist/models/__tests__/bedrock.test.js +1161 -0
  30. package/dist/models/__tests__/bedrock.test.js.map +1 -0
  31. package/dist/models/__tests__/model.test.d.ts +2 -0
  32. package/dist/models/__tests__/model.test.d.ts.map +1 -0
  33. package/dist/models/__tests__/model.test.js +297 -0
  34. package/dist/models/__tests__/model.test.js.map +1 -0
  35. package/dist/models/__tests__/openai.test.d.ts +2 -0
  36. package/dist/models/__tests__/openai.test.d.ts.map +1 -0
  37. package/dist/models/__tests__/openai.test.js +1016 -0
  38. package/dist/models/__tests__/openai.test.js.map +1 -0
  39. package/dist/models/__tests__/test-utils.d.ts +10 -0
  40. package/dist/models/__tests__/test-utils.d.ts.map +1 -0
  41. package/dist/models/__tests__/test-utils.js +17 -0
  42. package/dist/models/__tests__/test-utils.js.map +1 -0
  43. package/dist/models/bedrock.d.ts +272 -0
  44. package/dist/models/bedrock.d.ts.map +1 -0
  45. package/dist/models/bedrock.js +679 -0
  46. package/dist/models/bedrock.js.map +1 -0
  47. package/dist/models/model.d.ts +89 -0
  48. package/dist/models/model.d.ts.map +1 -0
  49. package/dist/models/model.js +122 -0
  50. package/dist/models/model.js.map +1 -0
  51. package/dist/models/openai.d.ts +262 -0
  52. package/dist/models/openai.d.ts.map +1 -0
  53. package/dist/models/openai.js +625 -0
  54. package/dist/models/openai.js.map +1 -0
  55. package/dist/models/streaming.d.ts +226 -0
  56. package/dist/models/streaming.d.ts.map +1 -0
  57. package/dist/models/streaming.js +2 -0
  58. package/dist/models/streaming.js.map +1 -0
  59. package/dist/src/__fixtures__/agent-helpers.d.ts +29 -0
  60. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -0
  61. package/dist/src/__fixtures__/agent-helpers.js +19 -0
  62. package/dist/src/__fixtures__/agent-helpers.js.map +1 -0
  63. package/dist/src/__fixtures__/environment.d.ts +12 -0
  64. package/dist/src/__fixtures__/environment.d.ts.map +1 -0
  65. package/dist/src/__fixtures__/environment.js +12 -0
  66. package/dist/src/__fixtures__/environment.js.map +1 -0
  67. package/dist/src/__fixtures__/mock-hook-provider.d.ts +14 -0
  68. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -0
  69. package/dist/src/__fixtures__/mock-hook-provider.js +33 -0
  70. package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -0
  71. package/dist/src/__fixtures__/mock-message-model.d.ts +93 -0
  72. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -0
  73. package/dist/src/__fixtures__/mock-message-model.js +226 -0
  74. package/dist/src/__fixtures__/mock-message-model.js.map +1 -0
  75. package/dist/src/__fixtures__/model-test-helpers.d.ts +56 -0
  76. package/dist/src/__fixtures__/model-test-helpers.d.ts.map +1 -0
  77. package/dist/src/__fixtures__/model-test-helpers.js +85 -0
  78. package/dist/src/__fixtures__/model-test-helpers.js.map +1 -0
  79. package/dist/src/__fixtures__/tool-helpers.d.ts +37 -0
  80. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -0
  81. package/dist/src/__fixtures__/tool-helpers.js +78 -0
  82. package/dist/src/__fixtures__/tool-helpers.js.map +1 -0
  83. package/dist/src/__tests__/errors.test.d.ts +2 -0
  84. package/dist/src/__tests__/errors.test.d.ts.map +1 -0
  85. package/dist/src/__tests__/errors.test.js +64 -0
  86. package/dist/src/__tests__/errors.test.js.map +1 -0
  87. package/dist/src/__tests__/index.test.d.ts +2 -0
  88. package/dist/src/__tests__/index.test.d.ts.map +1 -0
  89. package/dist/src/__tests__/index.test.js +27 -0
  90. package/dist/src/__tests__/index.test.js.map +1 -0
  91. package/dist/src/__tests__/mcp.test.d.ts +2 -0
  92. package/dist/src/__tests__/mcp.test.d.ts.map +1 -0
  93. package/dist/src/__tests__/mcp.test.js +166 -0
  94. package/dist/src/__tests__/mcp.test.js.map +1 -0
  95. package/dist/src/agent/__tests__/agent.hook.test.d.ts +2 -0
  96. package/dist/src/agent/__tests__/agent.hook.test.d.ts.map +1 -0
  97. package/dist/src/agent/__tests__/agent.hook.test.js +250 -0
  98. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -0
  99. package/dist/src/agent/__tests__/agent.test.d.ts +2 -0
  100. package/dist/src/agent/__tests__/agent.test.d.ts.map +1 -0
  101. package/dist/src/agent/__tests__/agent.test.js +414 -0
  102. package/dist/src/agent/__tests__/agent.test.js.map +1 -0
  103. package/dist/src/agent/__tests__/printer.test.d.ts +2 -0
  104. package/dist/src/agent/__tests__/printer.test.d.ts.map +1 -0
  105. package/dist/src/agent/__tests__/printer.test.js +152 -0
  106. package/dist/src/agent/__tests__/printer.test.js.map +1 -0
  107. package/dist/src/agent/__tests__/state.test.d.ts +2 -0
  108. package/dist/src/agent/__tests__/state.test.d.ts.map +1 -0
  109. package/dist/src/agent/__tests__/state.test.js +231 -0
  110. package/dist/src/agent/__tests__/state.test.js.map +1 -0
  111. package/dist/src/agent/agent.d.ts +207 -0
  112. package/dist/src/agent/agent.d.ts.map +1 -0
  113. package/dist/src/agent/agent.js +481 -0
  114. package/dist/src/agent/agent.js.map +1 -0
  115. package/dist/src/agent/printer.d.ts +73 -0
  116. package/dist/src/agent/printer.d.ts.map +1 -0
  117. package/dist/src/agent/printer.js +145 -0
  118. package/dist/src/agent/printer.js.map +1 -0
  119. package/dist/src/agent/state.d.ts +102 -0
  120. package/dist/src/agent/state.d.ts.map +1 -0
  121. package/dist/src/agent/state.js +73 -0
  122. package/dist/src/agent/state.js.map +1 -0
  123. package/dist/src/agent/streaming.d.ts +91 -0
  124. package/dist/src/agent/streaming.d.ts.map +1 -0
  125. package/dist/src/agent/streaming.js +2 -0
  126. package/dist/src/agent/streaming.js.map +1 -0
  127. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +2 -0
  128. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +1 -0
  129. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +10 -0
  130. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -0
  131. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts +2 -0
  132. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts.map +1 -0
  133. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +35 -0
  134. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -0
  135. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts +2 -0
  136. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts.map +1 -0
  137. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +553 -0
  138. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -0
  139. package/dist/src/conversation-manager/conversation-manager.d.ts +73 -0
  140. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -0
  141. package/dist/src/conversation-manager/conversation-manager.js +24 -0
  142. package/dist/src/conversation-manager/conversation-manager.js.map +1 -0
  143. package/dist/src/conversation-manager/index.d.ts +8 -0
  144. package/dist/src/conversation-manager/index.d.ts.map +1 -0
  145. package/dist/src/conversation-manager/index.js +8 -0
  146. package/dist/src/conversation-manager/index.js.map +1 -0
  147. package/dist/src/conversation-manager/null-conversation-manager.d.ts +23 -0
  148. package/dist/src/conversation-manager/null-conversation-manager.d.ts.map +1 -0
  149. package/dist/src/conversation-manager/null-conversation-manager.js +23 -0
  150. package/dist/src/conversation-manager/null-conversation-manager.js.map +1 -0
  151. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +105 -0
  152. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -0
  153. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +212 -0
  154. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -0
  155. package/dist/src/errors.d.ts +83 -0
  156. package/dist/src/errors.d.ts.map +1 -0
  157. package/dist/src/errors.js +97 -0
  158. package/dist/src/errors.js.map +1 -0
  159. package/dist/src/hooks/__tests__/events.test.d.ts +2 -0
  160. package/dist/src/hooks/__tests__/events.test.d.ts.map +1 -0
  161. package/dist/src/hooks/__tests__/events.test.js +347 -0
  162. package/dist/src/hooks/__tests__/events.test.js.map +1 -0
  163. package/dist/src/hooks/__tests__/registry.test.d.ts +2 -0
  164. package/dist/src/hooks/__tests__/registry.test.d.ts.map +1 -0
  165. package/dist/src/hooks/__tests__/registry.test.js +154 -0
  166. package/dist/src/hooks/__tests__/registry.test.js.map +1 -0
  167. package/dist/src/hooks/events.d.ts +199 -0
  168. package/dist/src/hooks/events.d.ts.map +1 -0
  169. package/dist/src/hooks/events.js +191 -0
  170. package/dist/src/hooks/events.js.map +1 -0
  171. package/dist/src/hooks/index.d.ts +11 -0
  172. package/dist/src/hooks/index.d.ts.map +1 -0
  173. package/dist/src/hooks/index.js +11 -0
  174. package/dist/src/hooks/index.js.map +1 -0
  175. package/dist/src/hooks/registry.d.ts +65 -0
  176. package/dist/src/hooks/registry.d.ts.map +1 -0
  177. package/dist/src/hooks/registry.js +65 -0
  178. package/dist/src/hooks/registry.js.map +1 -0
  179. package/dist/src/hooks/types.d.ts +49 -0
  180. package/dist/src/hooks/types.d.ts.map +1 -0
  181. package/dist/src/hooks/types.js +2 -0
  182. package/dist/src/hooks/types.js.map +1 -0
  183. package/dist/src/index.d.ts +32 -0
  184. package/dist/src/index.d.ts.map +1 -0
  185. package/dist/src/index.js +29 -0
  186. package/dist/src/index.js.map +1 -0
  187. package/dist/src/mcp.d.ts +51 -0
  188. package/dist/src/mcp.d.ts.map +1 -0
  189. package/dist/src/mcp.js +91 -0
  190. package/dist/src/mcp.js.map +1 -0
  191. package/dist/src/models/__tests__/bedrock.test.d.ts +2 -0
  192. package/dist/src/models/__tests__/bedrock.test.d.ts.map +1 -0
  193. package/dist/src/models/__tests__/bedrock.test.js +1388 -0
  194. package/dist/src/models/__tests__/bedrock.test.js.map +1 -0
  195. package/dist/src/models/__tests__/model.test.d.ts +2 -0
  196. package/dist/src/models/__tests__/model.test.d.ts.map +1 -0
  197. package/dist/src/models/__tests__/model.test.js +342 -0
  198. package/dist/src/models/__tests__/model.test.js.map +1 -0
  199. package/dist/src/models/__tests__/openai.test.d.ts +2 -0
  200. package/dist/src/models/__tests__/openai.test.d.ts.map +1 -0
  201. package/dist/src/models/__tests__/openai.test.js +1189 -0
  202. package/dist/src/models/__tests__/openai.test.js.map +1 -0
  203. package/dist/src/models/__tests__/test-utils.d.ts +10 -0
  204. package/dist/src/models/__tests__/test-utils.d.ts.map +1 -0
  205. package/dist/src/models/__tests__/test-utils.js +17 -0
  206. package/dist/src/models/__tests__/test-utils.js.map +1 -0
  207. package/dist/src/models/bedrock.d.ts +289 -0
  208. package/dist/src/models/bedrock.d.ts.map +1 -0
  209. package/dist/src/models/bedrock.js +804 -0
  210. package/dist/src/models/bedrock.js.map +1 -0
  211. package/dist/src/models/model.d.ts +99 -0
  212. package/dist/src/models/model.d.ts.map +1 -0
  213. package/dist/src/models/model.js +169 -0
  214. package/dist/src/models/model.js.map +1 -0
  215. package/dist/src/models/openai.d.ts +262 -0
  216. package/dist/src/models/openai.d.ts.map +1 -0
  217. package/dist/src/models/openai.js +752 -0
  218. package/dist/src/models/openai.js.map +1 -0
  219. package/dist/src/models/streaming.d.ts +318 -0
  220. package/dist/src/models/streaming.d.ts.map +1 -0
  221. package/dist/src/models/streaming.js +122 -0
  222. package/dist/src/models/streaming.js.map +1 -0
  223. package/dist/src/registry/registry.d.ts +117 -0
  224. package/dist/src/registry/registry.d.ts.map +1 -0
  225. package/dist/src/registry/registry.js +298 -0
  226. package/dist/src/registry/registry.js.map +1 -0
  227. package/dist/src/registry/tool-registry.d.ts +34 -0
  228. package/dist/src/registry/tool-registry.d.ts.map +1 -0
  229. package/dist/src/registry/tool-registry.js +178 -0
  230. package/dist/src/registry/tool-registry.js.map +1 -0
  231. package/dist/src/tools/__tests__/tool.test.d.ts +2 -0
  232. package/dist/src/tools/__tests__/tool.test.d.ts.map +1 -0
  233. package/dist/src/tools/__tests__/tool.test.js +877 -0
  234. package/dist/src/tools/__tests__/tool.test.js.map +1 -0
  235. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts +2 -0
  236. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts.map +1 -0
  237. package/dist/src/tools/__tests__/zod-tool.test-d.js +227 -0
  238. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -0
  239. package/dist/src/tools/__tests__/zod-tool.test.d.ts +2 -0
  240. package/dist/src/tools/__tests__/zod-tool.test.d.ts.map +1 -0
  241. package/dist/src/tools/__tests__/zod-tool.test.js +372 -0
  242. package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -0
  243. package/dist/src/tools/function-tool.d.ts +146 -0
  244. package/dist/src/tools/function-tool.d.ts.map +1 -0
  245. package/dist/src/tools/function-tool.js +188 -0
  246. package/dist/src/tools/function-tool.js.map +1 -0
  247. package/dist/src/tools/mcp-tool.d.ts +36 -0
  248. package/dist/src/tools/mcp-tool.d.ts.map +1 -0
  249. package/dist/src/tools/mcp-tool.js +78 -0
  250. package/dist/src/tools/mcp-tool.js.map +1 -0
  251. package/dist/src/tools/tool.d.ts +167 -0
  252. package/dist/src/tools/tool.d.ts.map +1 -0
  253. package/dist/src/tools/tool.js +68 -0
  254. package/dist/src/tools/tool.js.map +1 -0
  255. package/dist/src/tools/types.d.ts +62 -0
  256. package/dist/src/tools/types.d.ts.map +1 -0
  257. package/dist/src/tools/types.js +2 -0
  258. package/dist/src/tools/types.js.map +1 -0
  259. package/dist/src/tools/zod-tool.d.ts +70 -0
  260. package/dist/src/tools/zod-tool.d.ts.map +1 -0
  261. package/dist/src/tools/zod-tool.js +149 -0
  262. package/dist/src/tools/zod-tool.js.map +1 -0
  263. package/dist/src/types/__tests__/agent.test.d.ts +2 -0
  264. package/dist/src/types/__tests__/agent.test.d.ts.map +1 -0
  265. package/dist/src/types/__tests__/agent.test.js +155 -0
  266. package/dist/src/types/__tests__/agent.test.js.map +1 -0
  267. package/dist/src/types/__tests__/json.test.d.ts +2 -0
  268. package/dist/src/types/__tests__/json.test.d.ts.map +1 -0
  269. package/dist/src/types/__tests__/json.test.js +298 -0
  270. package/dist/src/types/__tests__/json.test.js.map +1 -0
  271. package/dist/src/types/__tests__/media.test.d.ts +2 -0
  272. package/dist/src/types/__tests__/media.test.d.ts.map +1 -0
  273. package/dist/src/types/__tests__/media.test.js +257 -0
  274. package/dist/src/types/__tests__/media.test.js.map +1 -0
  275. package/dist/src/types/__tests__/messages.test.d.ts +2 -0
  276. package/dist/src/types/__tests__/messages.test.d.ts.map +1 -0
  277. package/dist/src/types/__tests__/messages.test.js +364 -0
  278. package/dist/src/types/__tests__/messages.test.js.map +1 -0
  279. package/dist/src/types/__tests__/validation.test.d.ts +2 -0
  280. package/dist/src/types/__tests__/validation.test.d.ts.map +1 -0
  281. package/dist/src/types/__tests__/validation.test.js +30 -0
  282. package/dist/src/types/__tests__/validation.test.js.map +1 -0
  283. package/dist/src/types/agent.d.ts +57 -0
  284. package/dist/src/types/agent.d.ts.map +1 -0
  285. package/dist/src/types/agent.js +47 -0
  286. package/dist/src/types/agent.js.map +1 -0
  287. package/dist/src/types/json.d.ts +55 -0
  288. package/dist/src/types/json.d.ts.map +1 -0
  289. package/dist/src/types/json.js +72 -0
  290. package/dist/src/types/json.js.map +1 -0
  291. package/dist/src/types/media.d.ts +249 -0
  292. package/dist/src/types/media.d.ts.map +1 -0
  293. package/dist/src/types/media.js +173 -0
  294. package/dist/src/types/media.js.map +1 -0
  295. package/dist/src/types/messages.d.ts +438 -0
  296. package/dist/src/types/messages.d.ts.map +1 -0
  297. package/dist/src/types/messages.js +286 -0
  298. package/dist/src/types/messages.js.map +1 -0
  299. package/dist/src/types/validation.d.ts +10 -0
  300. package/dist/src/types/validation.d.ts.map +1 -0
  301. package/dist/src/types/validation.js +15 -0
  302. package/dist/src/types/validation.js.map +1 -0
  303. package/dist/tools/__tests__/registry.test.d.ts +2 -0
  304. package/dist/tools/__tests__/registry.test.d.ts.map +1 -0
  305. package/dist/tools/__tests__/registry.test.js +253 -0
  306. package/dist/tools/__tests__/registry.test.js.map +1 -0
  307. package/dist/tools/__tests__/tool.test.d.ts +2 -0
  308. package/dist/tools/__tests__/tool.test.d.ts.map +1 -0
  309. package/dist/tools/__tests__/tool.test.js +761 -0
  310. package/dist/tools/__tests__/tool.test.js.map +1 -0
  311. package/dist/tools/__tests__/zod-tool.test-d.d.ts +2 -0
  312. package/dist/tools/__tests__/zod-tool.test-d.d.ts.map +1 -0
  313. package/dist/tools/__tests__/zod-tool.test-d.js +227 -0
  314. package/dist/tools/__tests__/zod-tool.test-d.js.map +1 -0
  315. package/dist/tools/__tests__/zod-tool.test.d.ts +2 -0
  316. package/dist/tools/__tests__/zod-tool.test.d.ts.map +1 -0
  317. package/dist/tools/__tests__/zod-tool.test.js +342 -0
  318. package/dist/tools/__tests__/zod-tool.test.js.map +1 -0
  319. package/dist/tools/function-tool.d.ts +156 -0
  320. package/dist/tools/function-tool.d.ts.map +1 -0
  321. package/dist/tools/function-tool.js +237 -0
  322. package/dist/tools/function-tool.js.map +1 -0
  323. package/dist/tools/registry.d.ts +43 -0
  324. package/dist/tools/registry.d.ts.map +1 -0
  325. package/dist/tools/registry.js +82 -0
  326. package/dist/tools/registry.js.map +1 -0
  327. package/dist/tools/tool.d.ts +157 -0
  328. package/dist/tools/tool.d.ts.map +1 -0
  329. package/dist/tools/tool.js +2 -0
  330. package/dist/tools/tool.js.map +1 -0
  331. package/dist/tools/types.d.ts +119 -0
  332. package/dist/tools/types.d.ts.map +1 -0
  333. package/dist/tools/types.js +2 -0
  334. package/dist/tools/types.js.map +1 -0
  335. package/dist/tools/zod-tool.d.ts +70 -0
  336. package/dist/tools/zod-tool.d.ts.map +1 -0
  337. package/dist/tools/zod-tool.js +96 -0
  338. package/dist/tools/zod-tool.js.map +1 -0
  339. package/dist/types/__tests__/json.test.d.ts +2 -0
  340. package/dist/types/__tests__/json.test.d.ts.map +1 -0
  341. package/dist/types/__tests__/json.test.js +129 -0
  342. package/dist/types/__tests__/json.test.js.map +1 -0
  343. package/dist/types/__tests__/validation.test.d.ts +2 -0
  344. package/dist/types/__tests__/validation.test.d.ts.map +1 -0
  345. package/dist/types/__tests__/validation.test.js +30 -0
  346. package/dist/types/__tests__/validation.test.js.map +1 -0
  347. package/dist/types/json.d.ts +45 -0
  348. package/dist/types/json.d.ts.map +1 -0
  349. package/dist/types/json.js +17 -0
  350. package/dist/types/json.js.map +1 -0
  351. package/dist/types/messages.d.ts +160 -0
  352. package/dist/types/messages.d.ts.map +1 -0
  353. package/dist/types/messages.js +2 -0
  354. package/dist/types/messages.js.map +1 -0
  355. package/dist/types/validation.d.ts +10 -0
  356. package/dist/types/validation.d.ts.map +1 -0
  357. package/dist/types/validation.js +15 -0
  358. package/dist/types/validation.js.map +1 -0
  359. package/dist/vended_tools/bash/__tests__/bash.test.d.ts +2 -0
  360. package/dist/vended_tools/bash/__tests__/bash.test.d.ts.map +1 -0
  361. package/dist/vended_tools/bash/__tests__/bash.test.js +333 -0
  362. package/dist/vended_tools/bash/__tests__/bash.test.js.map +1 -0
  363. package/dist/vended_tools/bash/bash.d.ts +33 -0
  364. package/dist/vended_tools/bash/bash.d.ts.map +1 -0
  365. package/dist/vended_tools/bash/bash.js +264 -0
  366. package/dist/vended_tools/bash/bash.js.map +1 -0
  367. package/dist/vended_tools/bash/index.d.ts +7 -0
  368. package/dist/vended_tools/bash/index.d.ts.map +1 -0
  369. package/dist/vended_tools/bash/index.js +6 -0
  370. package/dist/vended_tools/bash/index.js.map +1 -0
  371. package/dist/vended_tools/bash/types.d.ts +65 -0
  372. package/dist/vended_tools/bash/types.d.ts.map +1 -0
  373. package/dist/vended_tools/bash/types.js +22 -0
  374. package/dist/vended_tools/bash/types.js.map +1 -0
  375. package/dist/vended_tools/file_editor/__tests__/file-editor.test.d.ts +2 -0
  376. package/dist/vended_tools/file_editor/__tests__/file-editor.test.d.ts.map +1 -0
  377. package/dist/vended_tools/file_editor/__tests__/file-editor.test.js +359 -0
  378. package/dist/vended_tools/file_editor/__tests__/file-editor.test.js.map +1 -0
  379. package/dist/vended_tools/file_editor/file-editor.d.ts +31 -0
  380. package/dist/vended_tools/file_editor/file-editor.d.ts.map +1 -0
  381. package/dist/vended_tools/file_editor/file-editor.js +353 -0
  382. package/dist/vended_tools/file_editor/file-editor.js.map +1 -0
  383. package/dist/vended_tools/file_editor/index.d.ts +6 -0
  384. package/dist/vended_tools/file_editor/index.d.ts.map +1 -0
  385. package/dist/vended_tools/file_editor/index.js +5 -0
  386. package/dist/vended_tools/file_editor/index.js.map +1 -0
  387. package/dist/vended_tools/file_editor/types.d.ts +61 -0
  388. package/dist/vended_tools/file_editor/types.d.ts.map +1 -0
  389. package/dist/vended_tools/file_editor/types.js +2 -0
  390. package/dist/vended_tools/file_editor/types.js.map +1 -0
  391. package/dist/vended_tools/http_request/__tests__/http-request.test.d.ts +2 -0
  392. package/dist/vended_tools/http_request/__tests__/http-request.test.d.ts.map +1 -0
  393. package/dist/vended_tools/http_request/__tests__/http-request.test.js +189 -0
  394. package/dist/vended_tools/http_request/__tests__/http-request.test.js.map +1 -0
  395. package/dist/vended_tools/http_request/http-request.d.ts +35 -0
  396. package/dist/vended_tools/http_request/http-request.d.ts.map +1 -0
  397. package/dist/vended_tools/http_request/http-request.js +95 -0
  398. package/dist/vended_tools/http_request/http-request.js.map +1 -0
  399. package/dist/vended_tools/http_request/index.d.ts +6 -0
  400. package/dist/vended_tools/http_request/index.d.ts.map +1 -0
  401. package/dist/vended_tools/http_request/index.js +5 -0
  402. package/dist/vended_tools/http_request/index.js.map +1 -0
  403. package/dist/vended_tools/http_request/types.d.ts +47 -0
  404. package/dist/vended_tools/http_request/types.d.ts.map +1 -0
  405. package/dist/vended_tools/http_request/types.js +2 -0
  406. package/dist/vended_tools/http_request/types.js.map +1 -0
  407. package/dist/vended_tools/notebook/__tests__/notebook.test.d.ts +2 -0
  408. package/dist/vended_tools/notebook/__tests__/notebook.test.d.ts.map +1 -0
  409. package/dist/vended_tools/notebook/__tests__/notebook.test.js +371 -0
  410. package/dist/vended_tools/notebook/__tests__/notebook.test.js.map +1 -0
  411. package/dist/vended_tools/notebook/index.d.ts +6 -0
  412. package/dist/vended_tools/notebook/index.d.ts.map +1 -0
  413. package/dist/vended_tools/notebook/index.js +5 -0
  414. package/dist/vended_tools/notebook/index.js.map +1 -0
  415. package/dist/vended_tools/notebook/notebook.d.ts +29 -0
  416. package/dist/vended_tools/notebook/notebook.d.ts.map +1 -0
  417. package/dist/vended_tools/notebook/notebook.js +215 -0
  418. package/dist/vended_tools/notebook/notebook.js.map +1 -0
  419. package/dist/vended_tools/notebook/types.d.ts +79 -0
  420. package/dist/vended_tools/notebook/types.d.ts.map +1 -0
  421. package/dist/vended_tools/notebook/types.js +2 -0
  422. package/dist/vended_tools/notebook/types.js.map +1 -0
  423. package/package.json +112 -0
@@ -0,0 +1,298 @@
1
+ /**
2
+ * A generic, polymorphic resource registry for managing runtime resources.
3
+ *
4
+ * This abstract class provides methods to register, deregister, retrieve,
5
+ * and find items based on unique identifiers. Subclasses must implement
6
+ * methods for generating unique IDs and validating items before insertion.
7
+ *
8
+ * @typeParam T - The type of the items being stored.
9
+ * @typeParam I - The type of the identifier for the items.
10
+ */
11
+ /**
12
+ * Thrown when an item with a specific ID cannot be found.
13
+ * @typeParam I - The type of the item's identifier.
14
+ */
15
+ export class ItemNotFoundError extends Error {
16
+ constructor(id) {
17
+ super(`Item with id '${id}' not found`);
18
+ this.name = 'ItemNotFoundError';
19
+ }
20
+ }
21
+ /**
22
+ * Thrown when attempting to add an item with an ID that already exists.
23
+ * @typeParam I - The type of the item's identifier.
24
+ */
25
+ export class DuplicateItemError extends Error {
26
+ constructor(id) {
27
+ super(`An item with the ID '${id}' already exists.`);
28
+ this.name = 'DuplicateItemError';
29
+ }
30
+ }
31
+ /**
32
+ * Thrown when an item fails a validation check.
33
+ */
34
+ export class ValidationError extends Error {
35
+ constructor(message) {
36
+ super(message);
37
+ this.name = 'ValidationError';
38
+ }
39
+ }
40
+ /**
41
+ * A generic, polymorphic registry for managing runtime resources.
42
+ * @typeParam T - The type of the items being stored.
43
+ * @typeParam I - The type of the identifier for the items.
44
+ */
45
+ export class Registry {
46
+ _items;
47
+ constructor(items) {
48
+ this._items = new Map();
49
+ if (items) {
50
+ this.addAll(items);
51
+ }
52
+ }
53
+ /**
54
+ * Retrieves an item by its ID.
55
+ * @param id - The identifier of the item to retrieve.
56
+ * @returns The item if found, otherwise undefined.
57
+ */
58
+ get(id) {
59
+ return this._items.get(id);
60
+ }
61
+ /**
62
+ * Finds the first item that satisfies the provided predicate function.
63
+ * @param predicate - A function to test each item.
64
+ * @returns The first item that passes the predicate test, otherwise undefined.
65
+ */
66
+ find(predicate) {
67
+ for (const item of this._items.values()) {
68
+ if (predicate(item)) {
69
+ return item;
70
+ }
71
+ }
72
+ return undefined;
73
+ }
74
+ /**
75
+ * Returns an array of all keys (identifiers) in the registry.
76
+ * @returns An array of all keys.
77
+ */
78
+ keys() {
79
+ return Array.from(this._items.keys());
80
+ }
81
+ /**
82
+ * Returns an array of all values (items) in the registry.
83
+ * @returns An array of all values.
84
+ */
85
+ values() {
86
+ return Array.from(this._items.values());
87
+ }
88
+ /**
89
+ * Returns an array of all key-value pairs in the registry.
90
+ * @returns An array of [id, item] pairs.
91
+ */
92
+ pairs() {
93
+ return Array.from(this._items.entries());
94
+ }
95
+ /**
96
+ * Clears all items from the registry.
97
+ */
98
+ clear() {
99
+ this._items.clear();
100
+ }
101
+ /**
102
+ * Validates and adds a new item, assigning it a generated ID.
103
+ * @param item - The item to add.
104
+ * @returns The newly generated ID for the item.
105
+ * @throws DuplicateItemError If the generated ID already exists.
106
+ * @throws ValidationError If the item fails the validation check.
107
+ */
108
+ add(item) {
109
+ this.validate(item);
110
+ const id = this.generateId(item);
111
+ if (this._items.has(id)) {
112
+ throw new DuplicateItemError(id);
113
+ }
114
+ this._items.set(id, item);
115
+ return id;
116
+ }
117
+ /**
118
+ * Adds an array of items.
119
+ * @param items - An array of items to add.
120
+ * @returns An array of the new IDs for the added items.
121
+ */
122
+ addAll(items) {
123
+ return items.map((item) => this.add(item));
124
+ }
125
+ /**
126
+ * Removes an item from the registry by its ID.
127
+ * @param id - The ID of the item to remove.
128
+ * @returns The removed item.
129
+ * @throws ItemNotFoundError If no item with the given ID is found.
130
+ */
131
+ remove(id) {
132
+ const item = this._items.get(id);
133
+ if (item === undefined) {
134
+ throw new ItemNotFoundError(id);
135
+ }
136
+ this._items.delete(id);
137
+ return item;
138
+ }
139
+ /**
140
+ * Removes multiple items from the registry by their IDs.
141
+ * @param ids - An array of IDs of the items to remove.
142
+ * @returns An array of the removed items.
143
+ */
144
+ removeAll(ids) {
145
+ return ids.map((id) => this.remove(id));
146
+ }
147
+ /**
148
+ * Finds the first item matching the predicate, removes it, and returns it.
149
+ * @param predicate - A function to test each item.
150
+ * @returns The removed item if found, otherwise undefined.
151
+ */
152
+ findRemove(predicate) {
153
+ for (const [id, item] of this._items.entries()) {
154
+ if (predicate(item)) {
155
+ this._items.delete(id);
156
+ return item;
157
+ }
158
+ }
159
+ return undefined;
160
+ }
161
+ }
162
+ // Unit tests
163
+ if (import.meta.vitest) {
164
+ const { describe, it, expect, beforeEach, vi } = import.meta.vitest;
165
+ // A concrete implementation of the abstract Registry for testing purposes
166
+ class TestRegistry extends Registry {
167
+ nextId = 1;
168
+ generateId() {
169
+ return this.nextId++;
170
+ }
171
+ validate(item) {
172
+ if (item.length === 0) {
173
+ throw new ValidationError('Item cannot be an empty string.');
174
+ }
175
+ }
176
+ }
177
+ describe('Error Classes', () => {
178
+ it('ItemNotFoundError should have the correct name and message', () => {
179
+ const error = new ItemNotFoundError(123);
180
+ expect(error.name).toBe('ItemNotFoundError');
181
+ expect(error.message).toBe("Item with id '123' not found");
182
+ });
183
+ it('DuplicateItemError should have the correct name and message', () => {
184
+ const error = new DuplicateItemError('abc');
185
+ expect(error.name).toBe('DuplicateItemError');
186
+ expect(error.message).toBe("An item with the ID 'abc' already exists.");
187
+ });
188
+ it('ValidationError should have the correct name and message', () => {
189
+ const error = new ValidationError('Invalid item');
190
+ expect(error.name).toBe('ValidationError');
191
+ expect(error.message).toBe('Invalid item');
192
+ });
193
+ });
194
+ describe('Registry', () => {
195
+ let registry;
196
+ beforeEach(() => {
197
+ registry = new TestRegistry();
198
+ });
199
+ it('should register an item and return a new ID', () => {
200
+ const id = registry.add('test-item');
201
+ expect(id).toBe(1);
202
+ expect(registry.get(1)).toBe('test-item');
203
+ });
204
+ it('should throw DuplicateItemError when registering with an existing ID', () => {
205
+ // @ts-expect-error - Spying on protected 'generateId' to test duplicate handling.
206
+ const generateIdSpy = vi.spyOn(registry, 'generateId').mockReturnValue(1);
207
+ registry.add('test-item'); // This will register with ID 1.
208
+ expect(() => registry.add('another-item')).toThrow(DuplicateItemError);
209
+ generateIdSpy.mockRestore();
210
+ });
211
+ it('should deregister an item and return it', () => {
212
+ const id = registry.add('test-item');
213
+ const deregisteredItem = registry.remove(id);
214
+ expect(deregisteredItem).toBe('test-item');
215
+ expect(registry.get(id)).toBeUndefined();
216
+ });
217
+ it('should throw ItemNotFoundError when deregistering a non-existent item', () => {
218
+ expect(() => registry.remove(999)).toThrow(ItemNotFoundError);
219
+ });
220
+ it('should get an item by its ID', () => {
221
+ const id = registry.add('test-item');
222
+ const foundItem = registry.get(id);
223
+ expect(foundItem).toBe('test-item');
224
+ });
225
+ it('should return undefined when getting a non-existent item', () => {
226
+ const foundItem = registry.get(999);
227
+ expect(foundItem).toBeUndefined();
228
+ });
229
+ it('should find an item using a predicate', () => {
230
+ registry.add('item-a');
231
+ registry.add('item-b');
232
+ const foundItem = registry.find((item) => item.includes('b'));
233
+ expect(foundItem).toBe('item-b');
234
+ });
235
+ it('should return undefined when no item matches the predicate', () => {
236
+ registry.add('item-a');
237
+ const foundItem = registry.find((item) => item.includes('c'));
238
+ expect(foundItem).toBeUndefined();
239
+ });
240
+ it('should return all keys', () => {
241
+ registry.add('item-1');
242
+ registry.add('item-2');
243
+ expect(registry.keys()).toEqual([1, 2]);
244
+ });
245
+ it('should return all values', () => {
246
+ registry.add('item-1');
247
+ registry.add('item-2');
248
+ expect(registry.values()).toEqual(['item-1', 'item-2']);
249
+ });
250
+ it('should return all key-value pairs', () => {
251
+ registry.add('item-1');
252
+ registry.add('item-2');
253
+ expect(registry.pairs()).toEqual([
254
+ [1, 'item-1'],
255
+ [2, 'item-2'],
256
+ ]);
257
+ });
258
+ it('should clear all items from the registry', () => {
259
+ registry.add('item-1');
260
+ registry.clear();
261
+ expect(registry.keys()).toEqual([]);
262
+ expect(registry.values()).toEqual([]);
263
+ });
264
+ it('should register multiple items', () => {
265
+ const ids = registry.addAll(['item-a', 'item-b']);
266
+ expect(ids).toEqual([1, 2]);
267
+ expect(registry.values()).toEqual(['item-a', 'item-b']);
268
+ });
269
+ it('should deregister multiple items', () => {
270
+ const ids = registry.addAll(['item-a', 'item-b', 'item-c']);
271
+ const deregisteredItems = registry.removeAll([ids[0], ids[2]]);
272
+ expect(deregisteredItems).toEqual(['item-a', 'item-c']);
273
+ expect(registry.values()).toEqual(['item-b']);
274
+ });
275
+ it('should find and deregister an item', () => {
276
+ registry.add('item-a');
277
+ registry.add('item-b');
278
+ const deregisteredItem = registry.findRemove((item) => item.includes('a'));
279
+ expect(deregisteredItem).toBe('item-a');
280
+ expect(registry.values()).toEqual(['item-b']);
281
+ });
282
+ it('should return undefined from findRemove if no item matches', () => {
283
+ const removedItem = registry.findRemove((item) => item.includes('c'));
284
+ expect(removedItem).toBeUndefined();
285
+ });
286
+ it('should call the validate method on register', () => {
287
+ // @ts-expect-error - Spying on protected 'validate' to confirm it is called.
288
+ const validateSpy = vi.spyOn(registry, 'validate');
289
+ registry.add('a-valid-item');
290
+ expect(validateSpy).toHaveBeenCalledWith('a-valid-item');
291
+ validateSpy.mockRestore();
292
+ });
293
+ it('should throw a validation error for an invalid item', () => {
294
+ expect(() => registry.add('')).toThrow(ValidationError);
295
+ });
296
+ });
297
+ }
298
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { Registry } from './registry.js';
2
+ import type { Tool } from '../tools/tool.js';
3
+ /**
4
+ * A concrete implementation of the Registry for managing Tool instances.
5
+ * It adds validation for tool properties and ensures unique tool names.
6
+ */
7
+ export declare class ToolRegistry extends Registry<Tool, Tool> {
8
+ /**
9
+ * Generates a unique identifier for a Tool.
10
+ * @override
11
+ * @returns The tool itself as the identifier.
12
+ */
13
+ protected generateId(tool: Tool): Tool;
14
+ /**
15
+ * Validates a tool before it is registered.
16
+ * @override
17
+ * @param tool - The tool to be validated.
18
+ * @throws ValidationError If the tool's properties are invalid or its name is already registered.
19
+ */
20
+ protected validate(tool: Tool): void;
21
+ /**
22
+ * Retrieves the first tool that matches the given name.
23
+ * @param name - The name of the tool to retrieve.
24
+ * @returns The tool if found, otherwise undefined.
25
+ */
26
+ getByName(name: string): Tool | undefined;
27
+ /**
28
+ * Finds and removes the first tool that matches the given name.
29
+ * If multiple tools have the same name, only the first one found is removed.
30
+ * @param name - The name of the tool to remove.
31
+ */
32
+ removeByName(name: string): void;
33
+ }
34
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/registry/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,eAAe,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAuB,MAAM,kBAAkB,CAAA;AAIjE;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpD;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAItC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IA8BpC;;;;OAIG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIhD;;;;OAIG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGxC"}
@@ -0,0 +1,178 @@
1
+ import { Registry, ValidationError } from './registry.js';
2
+ import { ToolStreamEvent } from '../tools/tool.js';
3
+ import { ToolResultBlock } from '../types/messages.js';
4
+ /**
5
+ * A concrete implementation of the Registry for managing Tool instances.
6
+ * It adds validation for tool properties and ensures unique tool names.
7
+ */
8
+ export class ToolRegistry extends Registry {
9
+ /**
10
+ * Generates a unique identifier for a Tool.
11
+ * @override
12
+ * @returns The tool itself as the identifier.
13
+ */
14
+ generateId(tool) {
15
+ return tool;
16
+ }
17
+ /**
18
+ * Validates a tool before it is registered.
19
+ * @override
20
+ * @param tool - The tool to be validated.
21
+ * @throws ValidationError If the tool's properties are invalid or its name is already registered.
22
+ */
23
+ validate(tool) {
24
+ // Validate tool name is a string
25
+ if (typeof tool.name !== 'string') {
26
+ throw new ValidationError('Tool name must be a string');
27
+ }
28
+ // Validate tool name length (1-64 characters)
29
+ if (tool.name.length < 1 || tool.name.length > 64) {
30
+ throw new ValidationError('Tool name must be between 1 and 64 characters');
31
+ }
32
+ // Validate tool name pattern
33
+ const validNamePattern = /^[a-zA-Z0-9_-]+$/;
34
+ if (!validNamePattern.test(tool.name)) {
35
+ throw new ValidationError('Tool name must contain only alphanumeric characters, hyphens, and underscores');
36
+ }
37
+ // Validate tool description if present
38
+ if (tool.description !== undefined && tool.description !== null) {
39
+ if (typeof tool.description !== 'string' || tool.description.length < 1) {
40
+ throw new ValidationError('Tool description must be a non-empty string');
41
+ }
42
+ }
43
+ // Check for duplicate names
44
+ if (this.values().some((t) => t.name === tool.name)) {
45
+ throw new ValidationError(`Tool with name '${tool.name}' already registered`);
46
+ }
47
+ }
48
+ /**
49
+ * Retrieves the first tool that matches the given name.
50
+ * @param name - The name of the tool to retrieve.
51
+ * @returns The tool if found, otherwise undefined.
52
+ */
53
+ getByName(name) {
54
+ return this.values().find((tool) => tool.name === name);
55
+ }
56
+ /**
57
+ * Finds and removes the first tool that matches the given name.
58
+ * If multiple tools have the same name, only the first one found is removed.
59
+ * @param name - The name of the tool to remove.
60
+ */
61
+ removeByName(name) {
62
+ this.findRemove((tool) => tool.name === name);
63
+ }
64
+ }
65
+ // Unit tests
66
+ if (import.meta.vitest) {
67
+ const { describe, it, expect, beforeEach } = import.meta.vitest;
68
+ // Mock Tool definition for testing purposes
69
+ const createMockTool = (overrides = {}) => ({
70
+ name: 'valid-tool',
71
+ description: 'A valid tool description.',
72
+ toolSpec: {
73
+ name: 'valid-tool',
74
+ description: 'A valid tool description.',
75
+ inputSchema: { type: 'object', properties: {} },
76
+ },
77
+ stream: async function* () {
78
+ // Mock stream implementation
79
+ yield new ToolStreamEvent({ data: 'mock data' });
80
+ return new ToolResultBlock({ toolUseId: '', status: 'success', content: [] });
81
+ },
82
+ ...overrides,
83
+ });
84
+ describe('ToolRegistry', () => {
85
+ let registry;
86
+ beforeEach(() => {
87
+ registry = new ToolRegistry();
88
+ });
89
+ it('should register a valid tool successfully', () => {
90
+ const tool = createMockTool();
91
+ expect(() => registry.add(tool)).not.toThrow();
92
+ expect(registry.values()).toHaveLength(1);
93
+ expect(registry.values()[0]?.name).toBe('valid-tool');
94
+ });
95
+ it('should throw ValidationError for a duplicate tool name', () => {
96
+ const tool1 = createMockTool({ name: 'duplicate-name' });
97
+ const tool2 = createMockTool({ name: 'duplicate-name' });
98
+ registry.add(tool1);
99
+ expect(() => registry.add(tool2)).toThrow(ValidationError);
100
+ expect(() => registry.add(tool2)).toThrow("Tool with name 'duplicate-name' already registered");
101
+ });
102
+ it('should throw ValidationError for an invalid tool name pattern', () => {
103
+ const tool = createMockTool({ name: 'invalid name!' });
104
+ expect(() => registry.add(tool)).toThrow(ValidationError);
105
+ expect(() => registry.add(tool)).toThrow('Tool name must contain only alphanumeric characters, hyphens, and underscores');
106
+ });
107
+ it('should throw ValidationError for a tool name that is too long', () => {
108
+ const longName = 'a'.repeat(65);
109
+ const tool = createMockTool({ name: longName });
110
+ expect(() => registry.add(tool)).toThrow(ValidationError);
111
+ expect(() => registry.add(tool)).toThrow('Tool name must be between 1 and 64 characters');
112
+ });
113
+ it('should throw ValidationError for a tool name that is too short', () => {
114
+ const tool = createMockTool({ name: '' });
115
+ expect(() => registry.add(tool)).toThrow(ValidationError);
116
+ expect(() => registry.add(tool)).toThrow('Tool name must be between 1 and 64 characters');
117
+ });
118
+ it('should throw ValidationError for an invalid description', () => {
119
+ // @ts-expect-error - Testing invalid type for description
120
+ const tool = createMockTool({ description: 123 });
121
+ expect(() => registry.add(tool)).toThrow(ValidationError);
122
+ expect(() => registry.add(tool)).toThrow('Tool description must be a non-empty string');
123
+ });
124
+ it('should throw ValidationError for an empty string description', () => {
125
+ const tool = createMockTool({ description: '' });
126
+ expect(() => registry.add(tool)).toThrow(ValidationError);
127
+ expect(() => registry.add(tool)).toThrow('Tool description must be a non-empty string');
128
+ });
129
+ it('should allow a tool with a null or undefined description', () => {
130
+ const tool1 = createMockTool();
131
+ // @ts-expect-error - Testing explicit undefined description
132
+ tool1.description = undefined;
133
+ const tool2 = createMockTool();
134
+ tool2.name = 'another-valid-tool';
135
+ // @ts-expect-error - Testing explicit null description
136
+ tool2.description = null;
137
+ expect(() => registry.add(tool1)).not.toThrow();
138
+ expect(() => registry.add(tool2)).not.toThrow();
139
+ });
140
+ it('should retrieve a tool by its name', () => {
141
+ const tool = createMockTool({ name: 'find-me' });
142
+ registry.add(tool);
143
+ const foundTool = registry.getByName('find-me');
144
+ expect(foundTool).toBe(tool);
145
+ });
146
+ it('should return undefined when getting a tool by a name that does not exist', () => {
147
+ const foundTool = registry.getByName('non-existent');
148
+ expect(foundTool).toBeUndefined();
149
+ });
150
+ it('should remove a tool by its name', () => {
151
+ const tool = createMockTool({ name: 'remove-me' });
152
+ registry.add(tool);
153
+ expect(registry.getByName('remove-me')).toBeDefined();
154
+ registry.removeByName('remove-me');
155
+ expect(registry.getByName('remove-me')).toBeUndefined();
156
+ });
157
+ it('should not throw when removing a tool by a name that does not exist', () => {
158
+ expect(() => registry.removeByName('non-existent')).not.toThrow();
159
+ });
160
+ it('should generate a valid ToolIdentifier', () => {
161
+ const tool = createMockTool();
162
+ const id = registry['generateId'](tool);
163
+ expect(id).toBe(tool);
164
+ });
165
+ it('should register a tool with a name at the maximum length', () => {
166
+ const longName = 'a'.repeat(64);
167
+ const tool = createMockTool({ name: longName });
168
+ expect(() => registry.add(tool)).not.toThrow();
169
+ });
170
+ it('should throw ValidationError for a non-string tool name', () => {
171
+ // @ts-expect-error - Testing invalid type for name
172
+ const tool = createMockTool({ name: 123 });
173
+ expect(() => registry.add(tool)).toThrow(ValidationError);
174
+ expect(() => registry.add(tool)).toThrow('Tool name must be a string');
175
+ });
176
+ });
177
+ }
178
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/registry/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.test.d.ts","sourceRoot":"","sources":["../../../../src/tools/__tests__/tool.test.ts"],"names":[],"mappings":""}