@tambo-ai/react 0.65.2 → 0.66.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 (710) hide show
  1. package/README.md +174 -81
  2. package/dist/context-helpers/context-helpers-provider.test.d.ts.map +1 -0
  3. package/dist/context-helpers/{__tests__/context-helpers-provider.test.js → context-helpers-provider.test.js} +2 -2
  4. package/dist/context-helpers/context-helpers-provider.test.js.map +1 -0
  5. package/dist/context-helpers/context-helpers.test.d.ts.map +1 -0
  6. package/dist/context-helpers/{__tests__/context-helpers.test.js → context-helpers.test.js} +1 -1
  7. package/dist/context-helpers/context-helpers.test.js.map +1 -0
  8. package/{esm/providers → dist}/hoc/with-tambo-interactable.d.ts +2 -2
  9. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -0
  10. package/dist/{providers/hoc → hoc}/with-tambo-interactable.js +29 -2
  11. package/dist/hoc/with-tambo-interactable.js.map +1 -0
  12. package/dist/hoc/with-tambo-interactable.test.d.ts +2 -0
  13. package/dist/hoc/with-tambo-interactable.test.d.ts.map +1 -0
  14. package/dist/hoc/with-tambo-interactable.test.js +192 -0
  15. package/dist/hoc/with-tambo-interactable.test.js.map +1 -0
  16. package/dist/hooks/index.d.ts +1 -1
  17. package/dist/hooks/index.d.ts.map +1 -1
  18. package/dist/hooks/index.js +2 -1
  19. package/dist/hooks/index.js.map +1 -1
  20. package/dist/hooks/use-component-state.d.ts +11 -24
  21. package/dist/hooks/use-component-state.d.ts.map +1 -1
  22. package/dist/hooks/use-component-state.js +14 -5
  23. package/dist/hooks/use-component-state.js.map +1 -1
  24. package/dist/hooks/use-component-state.test.d.ts.map +1 -0
  25. package/dist/hooks/{__tests__/use-component-state.test.js → use-component-state.test.js} +7 -7
  26. package/dist/hooks/use-component-state.test.js.map +1 -0
  27. package/dist/hooks/use-current-message.d.ts +51 -7
  28. package/dist/hooks/use-current-message.d.ts.map +1 -1
  29. package/dist/hooks/use-current-message.js +50 -6
  30. package/dist/hooks/use-current-message.js.map +1 -1
  31. package/dist/hooks/use-current-message.test.d.ts +2 -0
  32. package/dist/hooks/use-current-message.test.d.ts.map +1 -0
  33. package/dist/hooks/use-current-message.test.js +264 -0
  34. package/dist/hooks/use-current-message.test.js.map +1 -0
  35. package/dist/hooks/use-message-images.test.d.ts.map +1 -0
  36. package/dist/hooks/{__tests__/use-message-images.test.js → use-message-images.test.js} +1 -1
  37. package/dist/hooks/use-message-images.test.js.map +1 -0
  38. package/dist/hooks/use-streaming-props.d.ts +7 -19
  39. package/dist/hooks/use-streaming-props.d.ts.map +1 -1
  40. package/dist/hooks/use-streaming-props.js +7 -19
  41. package/dist/hooks/use-streaming-props.js.map +1 -1
  42. package/dist/hooks/use-suggestions.d.ts +1 -1
  43. package/dist/hooks/use-suggestions.d.ts.map +1 -1
  44. package/dist/hooks/use-suggestions.js.map +1 -1
  45. package/dist/hooks/use-suggestions.test.d.ts.map +1 -0
  46. package/dist/hooks/{__tests__/use-suggestions.test.js → use-suggestions.test.js} +36 -29
  47. package/dist/hooks/use-suggestions.test.js.map +1 -0
  48. package/dist/hooks/use-tambo-stream-status.d.ts +9 -8
  49. package/dist/hooks/use-tambo-stream-status.d.ts.map +1 -1
  50. package/dist/hooks/use-tambo-stream-status.js +9 -8
  51. package/dist/hooks/use-tambo-stream-status.js.map +1 -1
  52. package/dist/hooks/use-tambo-stream-status.test.d.ts.map +1 -0
  53. package/dist/hooks/{__tests__/use-tambo-stream-status.test.js → use-tambo-stream-status.test.js} +6 -6
  54. package/dist/hooks/use-tambo-stream-status.test.js.map +1 -0
  55. package/dist/hooks/use-tambo-threads.test.d.ts.map +1 -0
  56. package/dist/hooks/{__tests__/use-tambo-threads.test.js → use-tambo-threads.test.js} +3 -3
  57. package/dist/hooks/use-tambo-threads.test.js.map +1 -0
  58. package/dist/index.d.ts +10 -8
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +7 -3
  61. package/dist/index.js.map +1 -1
  62. package/dist/mcp/elicitation.d.ts +10 -2
  63. package/dist/mcp/elicitation.d.ts.map +1 -1
  64. package/dist/mcp/elicitation.js +19 -1
  65. package/dist/mcp/elicitation.js.map +1 -1
  66. package/dist/mcp/elicitation.test.d.ts.map +1 -0
  67. package/dist/mcp/{__tests__/elicitation.test.js → elicitation.test.js} +1 -1
  68. package/dist/mcp/elicitation.test.js.map +1 -0
  69. package/dist/mcp/index.d.ts +11 -2
  70. package/dist/mcp/index.d.ts.map +1 -1
  71. package/dist/mcp/index.js +11 -1
  72. package/dist/mcp/index.js.map +1 -1
  73. package/dist/mcp/mcp-client.d.ts +29 -10
  74. package/dist/mcp/mcp-client.d.ts.map +1 -1
  75. package/dist/mcp/mcp-client.test.d.ts.map +1 -0
  76. package/dist/mcp/{__tests__/mcp-client.test.js → mcp-client.test.js} +1 -1
  77. package/dist/mcp/mcp-client.test.js.map +1 -0
  78. package/dist/mcp/mcp-hooks.d.ts +129 -25
  79. package/dist/mcp/mcp-hooks.d.ts.map +1 -1
  80. package/dist/mcp/mcp-hooks.js +104 -40
  81. package/dist/mcp/mcp-hooks.js.map +1 -1
  82. package/dist/mcp/mcp-hooks.test.d.ts.map +1 -0
  83. package/dist/mcp/{__tests__/mcp-hooks.test.js → mcp-hooks.test.js} +90 -51
  84. package/dist/mcp/mcp-hooks.test.js.map +1 -0
  85. package/dist/mcp/tambo-mcp-provider.d.ts +2 -0
  86. package/dist/mcp/tambo-mcp-provider.d.ts.map +1 -1
  87. package/dist/mcp/tambo-mcp-provider.js +60 -13
  88. package/dist/mcp/tambo-mcp-provider.js.map +1 -1
  89. package/dist/mcp/tambo-mcp-provider.test.d.ts.map +1 -0
  90. package/dist/mcp/{__tests__/tambo-mcp-provider.test.js → tambo-mcp-provider.test.js} +9 -25
  91. package/dist/mcp/tambo-mcp-provider.test.js.map +1 -0
  92. package/dist/mcp/use-mcp-servers.test.d.ts.map +1 -0
  93. package/dist/mcp/{__tests__/use-mcp-servers.test.js → use-mcp-servers.test.js} +5 -11
  94. package/dist/mcp/use-mcp-servers.test.js.map +1 -0
  95. package/dist/model/component-metadata.d.ts +444 -14
  96. package/dist/model/component-metadata.d.ts.map +1 -1
  97. package/dist/model/component-metadata.js.map +1 -1
  98. package/dist/model/generate-component-response.d.ts +12 -1
  99. package/dist/model/generate-component-response.d.ts.map +1 -1
  100. package/dist/model/generate-component-response.js.map +1 -1
  101. package/dist/model/mcp-server-info.d.ts +3 -1
  102. package/dist/model/mcp-server-info.d.ts.map +1 -1
  103. package/dist/model/mcp-server-info.js.map +1 -1
  104. package/dist/model/resource-info.d.ts +55 -0
  105. package/dist/model/resource-info.d.ts.map +1 -0
  106. package/dist/model/resource-info.js +3 -0
  107. package/dist/model/resource-info.js.map +1 -0
  108. package/dist/model/tambo-thread.d.ts +6 -1
  109. package/dist/model/tambo-thread.d.ts.map +1 -1
  110. package/dist/model/tambo-thread.js.map +1 -1
  111. package/dist/providers/hooks/use-tambo-session-token.test.d.ts.map +1 -0
  112. package/dist/providers/hooks/{__tests__/use-tambo-session-token.test.js → use-tambo-session-token.test.js} +1 -1
  113. package/dist/providers/hooks/use-tambo-session-token.test.js.map +1 -0
  114. package/dist/providers/index.d.ts +1 -1
  115. package/dist/providers/index.d.ts.map +1 -1
  116. package/dist/providers/index.js.map +1 -1
  117. package/dist/providers/tambo-client-provider.d.ts +0 -4
  118. package/dist/providers/tambo-client-provider.d.ts.map +1 -1
  119. package/dist/providers/tambo-client-provider.js +0 -3
  120. package/dist/providers/tambo-client-provider.js.map +1 -1
  121. package/dist/providers/tambo-component-provider.d.ts +4 -4
  122. package/dist/providers/tambo-component-provider.d.ts.map +1 -1
  123. package/dist/providers/tambo-component-provider.js.map +1 -1
  124. package/dist/providers/tambo-context-attachment-provider.test.d.ts.map +1 -0
  125. package/dist/providers/{__tests__/tambo-context-attachment-provider.test.js → tambo-context-attachment-provider.test.js} +2 -2
  126. package/dist/providers/tambo-context-attachment-provider.test.js.map +1 -0
  127. package/dist/providers/tambo-context-helpers-provider.test.d.ts.map +1 -0
  128. package/dist/providers/{__tests__/tambo-context-helpers-provider.test.js → tambo-context-helpers-provider.test.js} +2 -2
  129. package/dist/providers/tambo-context-helpers-provider.test.js.map +1 -0
  130. package/dist/providers/tambo-interactable-provider-partial-updates.test.d.ts.map +1 -0
  131. package/dist/providers/{__tests__/tambo-interactable-provider-partial-updates.test.js → tambo-interactable-provider-partial-updates.test.js} +91 -91
  132. package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -0
  133. package/dist/providers/tambo-interactable-provider.d.ts +2 -3
  134. package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
  135. package/dist/providers/tambo-interactable-provider.js +47 -41
  136. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  137. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.d.ts.map +1 -0
  138. package/dist/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.js → tambo-interactables-additional-context-edge-cases.test.js} +17 -17
  139. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -0
  140. package/dist/providers/tambo-interactables-additional-context.test.d.ts.map +1 -0
  141. package/dist/providers/{__tests__/tambo-interactables-additional-context.test.js → tambo-interactables-additional-context.test.js} +19 -19
  142. package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -0
  143. package/dist/providers/tambo-mcp-token-provider.d.ts +20 -13
  144. package/dist/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  145. package/dist/providers/tambo-mcp-token-provider.js +122 -10
  146. package/dist/providers/tambo-mcp-token-provider.js.map +1 -1
  147. package/dist/providers/tambo-prop-stream-provider.test.d.ts.map +1 -0
  148. package/dist/providers/{__tests__/tambo-prop-stream-provider.test.js → tambo-prop-stream-provider.test.js} +32 -25
  149. package/dist/providers/tambo-prop-stream-provider.test.js.map +1 -0
  150. package/dist/providers/tambo-provider.d.ts +2 -2
  151. package/dist/providers/tambo-provider.d.ts.map +1 -1
  152. package/dist/providers/tambo-provider.js +5 -7
  153. package/dist/providers/tambo-provider.js.map +1 -1
  154. package/dist/providers/tambo-registry-provider.d.ts +28 -7
  155. package/dist/providers/tambo-registry-provider.d.ts.map +1 -1
  156. package/dist/providers/tambo-registry-provider.js +70 -181
  157. package/dist/providers/tambo-registry-provider.js.map +1 -1
  158. package/dist/providers/tambo-registry-provider.test.d.ts.map +1 -0
  159. package/dist/providers/{__tests__/tambo-registry-provider.test.js → tambo-registry-provider.test.js} +153 -31
  160. package/dist/providers/tambo-registry-provider.test.js.map +1 -0
  161. package/dist/providers/tambo-registry-schema-compat.test.d.ts +2 -0
  162. package/dist/providers/tambo-registry-schema-compat.test.d.ts.map +1 -0
  163. package/dist/providers/tambo-registry-schema-compat.test.js +616 -0
  164. package/dist/providers/tambo-registry-schema-compat.test.js.map +1 -0
  165. package/dist/providers/tambo-stubs.d.ts +2 -2
  166. package/dist/providers/tambo-stubs.d.ts.map +1 -1
  167. package/dist/providers/tambo-stubs.js +9 -2
  168. package/dist/providers/tambo-stubs.js.map +1 -1
  169. package/dist/providers/tambo-stubs.test.d.ts.map +1 -0
  170. package/dist/providers/{__tests__/tambo-stubs.test.js → tambo-stubs.test.js} +2 -2
  171. package/dist/providers/tambo-stubs.test.js.map +1 -0
  172. package/dist/providers/tambo-thread-input-provider.d.ts +2 -1
  173. package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
  174. package/dist/providers/tambo-thread-input-provider.js +3 -3
  175. package/dist/providers/tambo-thread-input-provider.js.map +1 -1
  176. package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts.map +1 -0
  177. package/dist/providers/{__tests__/tambo-thread-provider-initial-messages.test.js → tambo-thread-provider-initial-messages.test.js} +7 -9
  178. package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +1 -0
  179. package/dist/providers/tambo-thread-provider.d.ts +8 -0
  180. package/dist/providers/tambo-thread-provider.d.ts.map +1 -1
  181. package/dist/providers/tambo-thread-provider.js +82 -19
  182. package/dist/providers/tambo-thread-provider.js.map +1 -1
  183. package/dist/providers/tambo-thread-provider.test.d.ts.map +1 -0
  184. package/dist/providers/{__tests__/tambo-thread-provider.test.js → tambo-thread-provider.test.js} +42 -78
  185. package/dist/providers/tambo-thread-provider.test.js.map +1 -0
  186. package/dist/schema/index.d.ts +6 -0
  187. package/dist/schema/index.d.ts.map +1 -0
  188. package/dist/schema/index.js +18 -0
  189. package/dist/schema/index.js.map +1 -0
  190. package/dist/schema/json-schema.d.ts +35 -0
  191. package/dist/schema/json-schema.d.ts.map +1 -0
  192. package/dist/schema/json-schema.js +103 -0
  193. package/dist/schema/json-schema.js.map +1 -0
  194. package/dist/schema/schema.d.ts +66 -0
  195. package/dist/schema/schema.d.ts.map +1 -0
  196. package/dist/schema/schema.js +192 -0
  197. package/dist/schema/schema.js.map +1 -0
  198. package/dist/schema/schema.test.d.ts +2 -0
  199. package/dist/schema/schema.test.d.ts.map +1 -0
  200. package/dist/schema/schema.test.js +41 -0
  201. package/dist/schema/schema.test.js.map +1 -0
  202. package/dist/schema/standard-schema.d.ts +21 -0
  203. package/dist/schema/standard-schema.d.ts.map +1 -0
  204. package/dist/schema/standard-schema.js +37 -0
  205. package/dist/schema/standard-schema.js.map +1 -0
  206. package/dist/schema/validate.d.ts +14 -0
  207. package/dist/schema/validate.d.ts.map +1 -0
  208. package/dist/schema/validate.js +148 -0
  209. package/dist/schema/validate.js.map +1 -0
  210. package/dist/schema/validate.test.d.ts +2 -0
  211. package/dist/schema/validate.test.d.ts.map +1 -0
  212. package/dist/schema/validate.test.js +128 -0
  213. package/dist/schema/validate.test.js.map +1 -0
  214. package/dist/schema/zod.d.ts +54 -0
  215. package/dist/schema/zod.d.ts.map +1 -0
  216. package/dist/schema/zod.js +135 -0
  217. package/dist/schema/zod.js.map +1 -0
  218. package/dist/testing/tools.d.ts +29 -15
  219. package/dist/testing/tools.d.ts.map +1 -1
  220. package/dist/testing/tools.js +64 -19
  221. package/dist/testing/tools.js.map +1 -1
  222. package/dist/util/content-parts.test.d.ts.map +1 -0
  223. package/dist/util/{__tests__/content-parts.test.js → content-parts.test.js} +1 -1
  224. package/dist/util/content-parts.test.js.map +1 -0
  225. package/dist/util/generate-component.d.ts.map +1 -1
  226. package/dist/util/generate-component.js +3 -3
  227. package/dist/util/generate-component.js.map +1 -1
  228. package/dist/util/mcp-server-utils.d.ts +23 -0
  229. package/dist/util/mcp-server-utils.d.ts.map +1 -0
  230. package/dist/util/mcp-server-utils.js +107 -0
  231. package/dist/util/mcp-server-utils.js.map +1 -0
  232. package/dist/util/mcp-server-utils.test.d.ts +2 -0
  233. package/dist/util/mcp-server-utils.test.d.ts.map +1 -0
  234. package/dist/util/mcp-server-utils.test.js +287 -0
  235. package/dist/util/mcp-server-utils.test.js.map +1 -0
  236. package/dist/util/message-builder.d.ts +4 -3
  237. package/dist/util/message-builder.d.ts.map +1 -1
  238. package/dist/util/message-builder.js +83 -8
  239. package/dist/util/message-builder.js.map +1 -1
  240. package/dist/util/message-builder.test.d.ts.map +1 -0
  241. package/dist/util/message-builder.test.js +678 -0
  242. package/dist/util/message-builder.test.js.map +1 -0
  243. package/dist/util/query-utils.d.ts.map +1 -1
  244. package/dist/util/query-utils.js +49 -31
  245. package/dist/util/query-utils.js.map +1 -1
  246. package/dist/util/registry-validators.d.ts +26 -0
  247. package/dist/util/registry-validators.d.ts.map +1 -0
  248. package/dist/util/registry-validators.js +105 -0
  249. package/dist/util/registry-validators.js.map +1 -0
  250. package/dist/util/registry-validators.test.d.ts +2 -0
  251. package/dist/util/registry-validators.test.d.ts.map +1 -0
  252. package/dist/util/registry-validators.test.js +235 -0
  253. package/dist/util/registry-validators.test.js.map +1 -0
  254. package/dist/util/registry.d.ts +35 -7
  255. package/dist/util/registry.d.ts.map +1 -1
  256. package/dist/util/registry.js +60 -77
  257. package/dist/util/registry.js.map +1 -1
  258. package/dist/util/registry.test.d.ts +2 -0
  259. package/dist/util/registry.test.d.ts.map +1 -0
  260. package/dist/util/registry.test.js +204 -0
  261. package/dist/util/registry.test.js.map +1 -0
  262. package/dist/util/resource-validators.d.ts +16 -0
  263. package/dist/util/resource-validators.d.ts.map +1 -0
  264. package/dist/util/resource-validators.js +34 -0
  265. package/dist/util/resource-validators.js.map +1 -0
  266. package/dist/util/tool-caller.d.ts +2 -2
  267. package/dist/util/tool-caller.d.ts.map +1 -1
  268. package/dist/util/tool-caller.js +12 -4
  269. package/dist/util/tool-caller.js.map +1 -1
  270. package/esm/context-helpers/context-helpers-provider.test.d.ts.map +1 -0
  271. package/esm/context-helpers/{__tests__/context-helpers-provider.test.js → context-helpers-provider.test.js} +2 -2
  272. package/esm/context-helpers/context-helpers-provider.test.js.map +1 -0
  273. package/esm/context-helpers/context-helpers.test.d.ts.map +1 -0
  274. package/esm/context-helpers/{__tests__/context-helpers.test.js → context-helpers.test.js} +1 -1
  275. package/esm/context-helpers/context-helpers.test.js.map +1 -0
  276. package/{dist/providers → esm}/hoc/with-tambo-interactable.d.ts +2 -2
  277. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -0
  278. package/esm/{providers/hoc → hoc}/with-tambo-interactable.js +29 -2
  279. package/esm/hoc/with-tambo-interactable.js.map +1 -0
  280. package/esm/hoc/with-tambo-interactable.test.d.ts +2 -0
  281. package/esm/hoc/with-tambo-interactable.test.d.ts.map +1 -0
  282. package/esm/hoc/with-tambo-interactable.test.js +187 -0
  283. package/esm/hoc/with-tambo-interactable.test.js.map +1 -0
  284. package/esm/hooks/index.d.ts +1 -1
  285. package/esm/hooks/index.d.ts.map +1 -1
  286. package/esm/hooks/index.js +1 -1
  287. package/esm/hooks/index.js.map +1 -1
  288. package/esm/hooks/use-component-state.d.ts +11 -24
  289. package/esm/hooks/use-component-state.d.ts.map +1 -1
  290. package/esm/hooks/use-component-state.js +14 -5
  291. package/esm/hooks/use-component-state.js.map +1 -1
  292. package/esm/hooks/use-component-state.test.d.ts.map +1 -0
  293. package/esm/hooks/{__tests__/use-component-state.test.js → use-component-state.test.js} +7 -7
  294. package/esm/hooks/use-component-state.test.js.map +1 -0
  295. package/esm/hooks/use-current-message.d.ts +51 -7
  296. package/esm/hooks/use-current-message.d.ts.map +1 -1
  297. package/esm/hooks/use-current-message.js +48 -5
  298. package/esm/hooks/use-current-message.js.map +1 -1
  299. package/esm/hooks/use-current-message.test.d.ts +2 -0
  300. package/esm/hooks/use-current-message.test.d.ts.map +1 -0
  301. package/esm/hooks/use-current-message.test.js +259 -0
  302. package/esm/hooks/use-current-message.test.js.map +1 -0
  303. package/esm/hooks/use-message-images.test.d.ts.map +1 -0
  304. package/esm/hooks/{__tests__/use-message-images.test.js → use-message-images.test.js} +1 -1
  305. package/esm/hooks/use-message-images.test.js.map +1 -0
  306. package/esm/hooks/use-streaming-props.d.ts +7 -19
  307. package/esm/hooks/use-streaming-props.d.ts.map +1 -1
  308. package/esm/hooks/use-streaming-props.js +7 -19
  309. package/esm/hooks/use-streaming-props.js.map +1 -1
  310. package/esm/hooks/use-suggestions.d.ts +1 -1
  311. package/esm/hooks/use-suggestions.d.ts.map +1 -1
  312. package/esm/hooks/use-suggestions.js.map +1 -1
  313. package/esm/hooks/use-suggestions.test.d.ts.map +1 -0
  314. package/esm/hooks/{__tests__/use-suggestions.test.js → use-suggestions.test.js} +36 -29
  315. package/esm/hooks/use-suggestions.test.js.map +1 -0
  316. package/esm/hooks/use-tambo-stream-status.d.ts +9 -8
  317. package/esm/hooks/use-tambo-stream-status.d.ts.map +1 -1
  318. package/esm/hooks/use-tambo-stream-status.js +9 -8
  319. package/esm/hooks/use-tambo-stream-status.js.map +1 -1
  320. package/esm/hooks/use-tambo-stream-status.test.d.ts.map +1 -0
  321. package/esm/hooks/{__tests__/use-tambo-stream-status.test.js → use-tambo-stream-status.test.js} +6 -6
  322. package/esm/hooks/use-tambo-stream-status.test.js.map +1 -0
  323. package/esm/hooks/use-tambo-threads.test.d.ts.map +1 -0
  324. package/esm/hooks/{__tests__/use-tambo-threads.test.js → use-tambo-threads.test.js} +3 -3
  325. package/esm/hooks/use-tambo-threads.test.js.map +1 -0
  326. package/esm/index.d.ts +10 -8
  327. package/esm/index.d.ts.map +1 -1
  328. package/esm/index.js +4 -2
  329. package/esm/index.js.map +1 -1
  330. package/esm/mcp/elicitation.d.ts +10 -2
  331. package/esm/mcp/elicitation.d.ts.map +1 -1
  332. package/esm/mcp/elicitation.js +19 -1
  333. package/esm/mcp/elicitation.js.map +1 -1
  334. package/esm/mcp/elicitation.test.d.ts.map +1 -0
  335. package/esm/mcp/{__tests__/elicitation.test.js → elicitation.test.js} +1 -1
  336. package/esm/mcp/elicitation.test.js.map +1 -0
  337. package/esm/mcp/index.d.ts +11 -2
  338. package/esm/mcp/index.d.ts.map +1 -1
  339. package/esm/mcp/index.js +10 -1
  340. package/esm/mcp/index.js.map +1 -1
  341. package/esm/mcp/mcp-client.d.ts +29 -10
  342. package/esm/mcp/mcp-client.d.ts.map +1 -1
  343. package/esm/mcp/mcp-client.test.d.ts.map +1 -0
  344. package/esm/mcp/{__tests__/mcp-client.test.js → mcp-client.test.js} +1 -1
  345. package/esm/mcp/mcp-client.test.js.map +1 -0
  346. package/esm/mcp/mcp-hooks.d.ts +129 -25
  347. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  348. package/esm/mcp/mcp-hooks.js +103 -40
  349. package/esm/mcp/mcp-hooks.js.map +1 -1
  350. package/esm/mcp/mcp-hooks.test.d.ts.map +1 -0
  351. package/esm/mcp/{__tests__/mcp-hooks.test.js → mcp-hooks.test.js} +90 -51
  352. package/esm/mcp/mcp-hooks.test.js.map +1 -0
  353. package/esm/mcp/tambo-mcp-provider.d.ts +2 -0
  354. package/esm/mcp/tambo-mcp-provider.d.ts.map +1 -1
  355. package/esm/mcp/tambo-mcp-provider.js +60 -13
  356. package/esm/mcp/tambo-mcp-provider.js.map +1 -1
  357. package/esm/mcp/tambo-mcp-provider.test.d.ts.map +1 -0
  358. package/esm/mcp/{__tests__/tambo-mcp-provider.test.js → tambo-mcp-provider.test.js} +9 -25
  359. package/esm/mcp/tambo-mcp-provider.test.js.map +1 -0
  360. package/esm/mcp/use-mcp-servers.test.d.ts.map +1 -0
  361. package/esm/mcp/{__tests__/use-mcp-servers.test.js → use-mcp-servers.test.js} +5 -11
  362. package/esm/mcp/use-mcp-servers.test.js.map +1 -0
  363. package/esm/model/component-metadata.d.ts +444 -14
  364. package/esm/model/component-metadata.d.ts.map +1 -1
  365. package/esm/model/component-metadata.js.map +1 -1
  366. package/esm/model/generate-component-response.d.ts +12 -1
  367. package/esm/model/generate-component-response.d.ts.map +1 -1
  368. package/esm/model/generate-component-response.js.map +1 -1
  369. package/esm/model/mcp-server-info.d.ts +3 -1
  370. package/esm/model/mcp-server-info.d.ts.map +1 -1
  371. package/esm/model/mcp-server-info.js.map +1 -1
  372. package/esm/model/resource-info.d.ts +55 -0
  373. package/esm/model/resource-info.d.ts.map +1 -0
  374. package/esm/model/resource-info.js +2 -0
  375. package/esm/model/resource-info.js.map +1 -0
  376. package/esm/model/tambo-thread.d.ts +6 -1
  377. package/esm/model/tambo-thread.d.ts.map +1 -1
  378. package/esm/model/tambo-thread.js.map +1 -1
  379. package/esm/providers/hooks/use-tambo-session-token.test.d.ts.map +1 -0
  380. package/esm/providers/hooks/{__tests__/use-tambo-session-token.test.js → use-tambo-session-token.test.js} +1 -1
  381. package/esm/providers/hooks/use-tambo-session-token.test.js.map +1 -0
  382. package/esm/providers/index.d.ts +1 -1
  383. package/esm/providers/index.d.ts.map +1 -1
  384. package/esm/providers/index.js.map +1 -1
  385. package/esm/providers/tambo-client-provider.d.ts +0 -4
  386. package/esm/providers/tambo-client-provider.d.ts.map +1 -1
  387. package/esm/providers/tambo-client-provider.js +0 -3
  388. package/esm/providers/tambo-client-provider.js.map +1 -1
  389. package/esm/providers/tambo-component-provider.d.ts +4 -4
  390. package/esm/providers/tambo-component-provider.d.ts.map +1 -1
  391. package/esm/providers/tambo-component-provider.js.map +1 -1
  392. package/esm/providers/tambo-context-attachment-provider.test.d.ts.map +1 -0
  393. package/esm/providers/{__tests__/tambo-context-attachment-provider.test.js → tambo-context-attachment-provider.test.js} +2 -2
  394. package/esm/providers/tambo-context-attachment-provider.test.js.map +1 -0
  395. package/esm/providers/tambo-context-helpers-provider.test.d.ts.map +1 -0
  396. package/esm/providers/{__tests__/tambo-context-helpers-provider.test.js → tambo-context-helpers-provider.test.js} +2 -2
  397. package/esm/providers/tambo-context-helpers-provider.test.js.map +1 -0
  398. package/esm/providers/tambo-interactable-provider-partial-updates.test.d.ts.map +1 -0
  399. package/esm/providers/{__tests__/tambo-interactable-provider-partial-updates.test.js → tambo-interactable-provider-partial-updates.test.js} +5 -5
  400. package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -0
  401. package/esm/providers/tambo-interactable-provider.d.ts +2 -3
  402. package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
  403. package/esm/providers/tambo-interactable-provider.js +44 -38
  404. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  405. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.d.ts.map +1 -0
  406. package/esm/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.js → tambo-interactables-additional-context-edge-cases.test.js} +10 -10
  407. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -0
  408. package/esm/providers/tambo-interactables-additional-context.test.d.ts.map +1 -0
  409. package/esm/providers/{__tests__/tambo-interactables-additional-context.test.js → tambo-interactables-additional-context.test.js} +10 -10
  410. package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -0
  411. package/esm/providers/tambo-mcp-token-provider.d.ts +20 -13
  412. package/esm/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  413. package/esm/providers/tambo-mcp-token-provider.js +123 -11
  414. package/esm/providers/tambo-mcp-token-provider.js.map +1 -1
  415. package/esm/providers/tambo-prop-stream-provider.test.d.ts.map +1 -0
  416. package/esm/providers/{__tests__/tambo-prop-stream-provider.test.js → tambo-prop-stream-provider.test.js} +32 -25
  417. package/esm/providers/tambo-prop-stream-provider.test.js.map +1 -0
  418. package/esm/providers/tambo-provider.d.ts +2 -2
  419. package/esm/providers/tambo-provider.d.ts.map +1 -1
  420. package/esm/providers/tambo-provider.js +5 -7
  421. package/esm/providers/tambo-provider.js.map +1 -1
  422. package/esm/providers/tambo-registry-provider.d.ts +28 -7
  423. package/esm/providers/tambo-registry-provider.d.ts.map +1 -1
  424. package/esm/providers/tambo-registry-provider.js +67 -175
  425. package/esm/providers/tambo-registry-provider.js.map +1 -1
  426. package/esm/providers/tambo-registry-provider.test.d.ts.map +1 -0
  427. package/esm/providers/{__tests__/tambo-registry-provider.test.js → tambo-registry-provider.test.js} +149 -27
  428. package/esm/providers/tambo-registry-provider.test.js.map +1 -0
  429. package/esm/providers/tambo-registry-schema-compat.test.d.ts +2 -0
  430. package/esm/providers/tambo-registry-schema-compat.test.d.ts.map +1 -0
  431. package/esm/providers/tambo-registry-schema-compat.test.js +578 -0
  432. package/esm/providers/tambo-registry-schema-compat.test.js.map +1 -0
  433. package/esm/providers/tambo-stubs.d.ts +2 -2
  434. package/esm/providers/tambo-stubs.d.ts.map +1 -1
  435. package/esm/providers/tambo-stubs.js +9 -2
  436. package/esm/providers/tambo-stubs.js.map +1 -1
  437. package/esm/providers/tambo-stubs.test.d.ts.map +1 -0
  438. package/esm/providers/{__tests__/tambo-stubs.test.js → tambo-stubs.test.js} +2 -2
  439. package/esm/providers/tambo-stubs.test.js.map +1 -0
  440. package/esm/providers/tambo-thread-input-provider.d.ts +2 -1
  441. package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
  442. package/esm/providers/tambo-thread-input-provider.js +3 -3
  443. package/esm/providers/tambo-thread-input-provider.js.map +1 -1
  444. package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts.map +1 -0
  445. package/esm/providers/{__tests__/tambo-thread-provider-initial-messages.test.js → tambo-thread-provider-initial-messages.test.js} +7 -9
  446. package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +1 -0
  447. package/esm/providers/tambo-thread-provider.d.ts +8 -0
  448. package/esm/providers/tambo-thread-provider.d.ts.map +1 -1
  449. package/esm/providers/tambo-thread-provider.js +82 -19
  450. package/esm/providers/tambo-thread-provider.js.map +1 -1
  451. package/esm/providers/tambo-thread-provider.test.d.ts.map +1 -0
  452. package/esm/providers/{__tests__/tambo-thread-provider.test.js → tambo-thread-provider.test.js} +34 -70
  453. package/esm/providers/tambo-thread-provider.test.js.map +1 -0
  454. package/esm/schema/index.d.ts +6 -0
  455. package/esm/schema/index.d.ts.map +1 -0
  456. package/esm/schema/index.js +6 -0
  457. package/esm/schema/index.js.map +1 -0
  458. package/esm/schema/json-schema.d.ts +35 -0
  459. package/esm/schema/json-schema.d.ts.map +1 -0
  460. package/esm/schema/json-schema.js +98 -0
  461. package/esm/schema/json-schema.js.map +1 -0
  462. package/esm/schema/schema.d.ts +66 -0
  463. package/esm/schema/schema.d.ts.map +1 -0
  464. package/esm/schema/schema.js +185 -0
  465. package/esm/schema/schema.js.map +1 -0
  466. package/esm/schema/schema.test.d.ts +2 -0
  467. package/esm/schema/schema.test.d.ts.map +1 -0
  468. package/esm/schema/schema.test.js +39 -0
  469. package/esm/schema/schema.test.js.map +1 -0
  470. package/esm/schema/standard-schema.d.ts +21 -0
  471. package/esm/schema/standard-schema.d.ts.map +1 -0
  472. package/esm/schema/standard-schema.js +34 -0
  473. package/esm/schema/standard-schema.js.map +1 -0
  474. package/esm/schema/validate.d.ts +14 -0
  475. package/esm/schema/validate.d.ts.map +1 -0
  476. package/esm/schema/validate.js +145 -0
  477. package/esm/schema/validate.js.map +1 -0
  478. package/esm/schema/validate.test.d.ts +2 -0
  479. package/esm/schema/validate.test.d.ts.map +1 -0
  480. package/esm/schema/validate.test.js +126 -0
  481. package/esm/schema/validate.test.js.map +1 -0
  482. package/esm/schema/zod.d.ts +54 -0
  483. package/esm/schema/zod.d.ts.map +1 -0
  484. package/esm/schema/zod.js +124 -0
  485. package/esm/schema/zod.js.map +1 -0
  486. package/esm/testing/tools.d.ts +29 -15
  487. package/esm/testing/tools.d.ts.map +1 -1
  488. package/esm/testing/tools.js +62 -16
  489. package/esm/testing/tools.js.map +1 -1
  490. package/esm/util/content-parts.test.d.ts.map +1 -0
  491. package/esm/util/{__tests__/content-parts.test.js → content-parts.test.js} +1 -1
  492. package/esm/util/content-parts.test.js.map +1 -0
  493. package/esm/util/generate-component.d.ts.map +1 -1
  494. package/esm/util/generate-component.js +3 -3
  495. package/esm/util/generate-component.js.map +1 -1
  496. package/esm/util/mcp-server-utils.d.ts +23 -0
  497. package/esm/util/mcp-server-utils.d.ts.map +1 -0
  498. package/esm/util/mcp-server-utils.js +102 -0
  499. package/esm/util/mcp-server-utils.js.map +1 -0
  500. package/esm/util/mcp-server-utils.test.d.ts +2 -0
  501. package/esm/util/mcp-server-utils.test.d.ts.map +1 -0
  502. package/esm/util/mcp-server-utils.test.js +285 -0
  503. package/esm/util/mcp-server-utils.test.js.map +1 -0
  504. package/esm/util/message-builder.d.ts +4 -3
  505. package/esm/util/message-builder.d.ts.map +1 -1
  506. package/esm/util/message-builder.js +83 -8
  507. package/esm/util/message-builder.js.map +1 -1
  508. package/esm/util/message-builder.test.d.ts.map +1 -0
  509. package/esm/util/message-builder.test.js +676 -0
  510. package/esm/util/message-builder.test.js.map +1 -0
  511. package/esm/util/query-utils.d.ts.map +1 -1
  512. package/esm/util/query-utils.js +49 -31
  513. package/esm/util/query-utils.js.map +1 -1
  514. package/esm/util/registry-validators.d.ts +26 -0
  515. package/esm/util/registry-validators.d.ts.map +1 -0
  516. package/esm/util/registry-validators.js +100 -0
  517. package/esm/util/registry-validators.js.map +1 -0
  518. package/esm/util/registry-validators.test.d.ts +2 -0
  519. package/esm/util/registry-validators.test.d.ts.map +1 -0
  520. package/esm/util/registry-validators.test.js +233 -0
  521. package/esm/util/registry-validators.test.js.map +1 -0
  522. package/esm/util/registry.d.ts +35 -7
  523. package/esm/util/registry.d.ts.map +1 -1
  524. package/esm/util/registry.js +57 -73
  525. package/esm/util/registry.js.map +1 -1
  526. package/esm/util/registry.test.d.ts +2 -0
  527. package/esm/util/registry.test.d.ts.map +1 -0
  528. package/esm/util/registry.test.js +169 -0
  529. package/esm/util/registry.test.js.map +1 -0
  530. package/esm/util/resource-validators.d.ts +16 -0
  531. package/esm/util/resource-validators.d.ts.map +1 -0
  532. package/esm/util/resource-validators.js +30 -0
  533. package/esm/util/resource-validators.js.map +1 -0
  534. package/esm/util/tool-caller.d.ts +2 -2
  535. package/esm/util/tool-caller.d.ts.map +1 -1
  536. package/esm/util/tool-caller.js +12 -4
  537. package/esm/util/tool-caller.js.map +1 -1
  538. package/package.json +30 -11
  539. package/dist/__tests__/util/validate-zod-schema.test.d.ts +0 -2
  540. package/dist/__tests__/util/validate-zod-schema.test.d.ts.map +0 -1
  541. package/dist/__tests__/util/validate-zod-schema.test.js +0 -96
  542. package/dist/__tests__/util/validate-zod-schema.test.js.map +0 -1
  543. package/dist/context-helpers/__tests__/context-helpers-provider.test.d.ts.map +0 -1
  544. package/dist/context-helpers/__tests__/context-helpers-provider.test.js.map +0 -1
  545. package/dist/context-helpers/__tests__/context-helpers.test.d.ts.map +0 -1
  546. package/dist/context-helpers/__tests__/context-helpers.test.js.map +0 -1
  547. package/dist/hooks/__tests__/use-component-state.test.d.ts.map +0 -1
  548. package/dist/hooks/__tests__/use-component-state.test.js.map +0 -1
  549. package/dist/hooks/__tests__/use-message-images.test.d.ts.map +0 -1
  550. package/dist/hooks/__tests__/use-message-images.test.js.map +0 -1
  551. package/dist/hooks/__tests__/use-suggestions.test.d.ts.map +0 -1
  552. package/dist/hooks/__tests__/use-suggestions.test.js.map +0 -1
  553. package/dist/hooks/__tests__/use-tambo-stream-status.test.d.ts.map +0 -1
  554. package/dist/hooks/__tests__/use-tambo-stream-status.test.js.map +0 -1
  555. package/dist/hooks/__tests__/use-tambo-threads.test.d.ts.map +0 -1
  556. package/dist/hooks/__tests__/use-tambo-threads.test.js.map +0 -1
  557. package/dist/mcp/__tests__/elicitation.test.d.ts.map +0 -1
  558. package/dist/mcp/__tests__/elicitation.test.js.map +0 -1
  559. package/dist/mcp/__tests__/mcp-client.test.d.ts.map +0 -1
  560. package/dist/mcp/__tests__/mcp-client.test.js.map +0 -1
  561. package/dist/mcp/__tests__/mcp-hooks.test.d.ts.map +0 -1
  562. package/dist/mcp/__tests__/mcp-hooks.test.js.map +0 -1
  563. package/dist/mcp/__tests__/tambo-mcp-provider.test.d.ts.map +0 -1
  564. package/dist/mcp/__tests__/tambo-mcp-provider.test.js.map +0 -1
  565. package/dist/mcp/__tests__/use-mcp-servers.test.d.ts.map +0 -1
  566. package/dist/mcp/__tests__/use-mcp-servers.test.js.map +0 -1
  567. package/dist/providers/__tests__/tambo-context-attachment-provider.test.d.ts.map +0 -1
  568. package/dist/providers/__tests__/tambo-context-attachment-provider.test.js.map +0 -1
  569. package/dist/providers/__tests__/tambo-context-helpers-provider.test.d.ts.map +0 -1
  570. package/dist/providers/__tests__/tambo-context-helpers-provider.test.js.map +0 -1
  571. package/dist/providers/__tests__/tambo-interactable-provider-partial-updates.test.d.ts.map +0 -1
  572. package/dist/providers/__tests__/tambo-interactable-provider-partial-updates.test.js.map +0 -1
  573. package/dist/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts.map +0 -1
  574. package/dist/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.js.map +0 -1
  575. package/dist/providers/__tests__/tambo-interactables-additional-context.test.d.ts.map +0 -1
  576. package/dist/providers/__tests__/tambo-interactables-additional-context.test.js.map +0 -1
  577. package/dist/providers/__tests__/tambo-prop-stream-provider.test.d.ts.map +0 -1
  578. package/dist/providers/__tests__/tambo-prop-stream-provider.test.js.map +0 -1
  579. package/dist/providers/__tests__/tambo-registry-provider.test.d.ts.map +0 -1
  580. package/dist/providers/__tests__/tambo-registry-provider.test.js.map +0 -1
  581. package/dist/providers/__tests__/tambo-stubs.test.d.ts.map +0 -1
  582. package/dist/providers/__tests__/tambo-stubs.test.js.map +0 -1
  583. package/dist/providers/__tests__/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  584. package/dist/providers/__tests__/tambo-thread-provider-initial-messages.test.js.map +0 -1
  585. package/dist/providers/__tests__/tambo-thread-provider.test.d.ts.map +0 -1
  586. package/dist/providers/__tests__/tambo-thread-provider.test.js.map +0 -1
  587. package/dist/providers/hoc/with-tambo-interactable.d.ts.map +0 -1
  588. package/dist/providers/hoc/with-tambo-interactable.js.map +0 -1
  589. package/dist/providers/hooks/__tests__/use-tambo-session-token.test.d.ts.map +0 -1
  590. package/dist/providers/hooks/__tests__/use-tambo-session-token.test.js.map +0 -1
  591. package/dist/util/__tests__/content-parts.test.d.ts.map +0 -1
  592. package/dist/util/__tests__/content-parts.test.js.map +0 -1
  593. package/dist/util/__tests__/message-builder.test.d.ts.map +0 -1
  594. package/dist/util/__tests__/message-builder.test.js +0 -191
  595. package/dist/util/__tests__/message-builder.test.js.map +0 -1
  596. package/dist/util/validate-zod-schema.d.ts +0 -10
  597. package/dist/util/validate-zod-schema.d.ts.map +0 -1
  598. package/dist/util/validate-zod-schema.js +0 -100
  599. package/dist/util/validate-zod-schema.js.map +0 -1
  600. package/esm/__tests__/util/validate-zod-schema.test.d.ts +0 -2
  601. package/esm/__tests__/util/validate-zod-schema.test.d.ts.map +0 -1
  602. package/esm/__tests__/util/validate-zod-schema.test.js +0 -94
  603. package/esm/__tests__/util/validate-zod-schema.test.js.map +0 -1
  604. package/esm/context-helpers/__tests__/context-helpers-provider.test.d.ts.map +0 -1
  605. package/esm/context-helpers/__tests__/context-helpers-provider.test.js.map +0 -1
  606. package/esm/context-helpers/__tests__/context-helpers.test.d.ts.map +0 -1
  607. package/esm/context-helpers/__tests__/context-helpers.test.js.map +0 -1
  608. package/esm/hooks/__tests__/use-component-state.test.d.ts.map +0 -1
  609. package/esm/hooks/__tests__/use-component-state.test.js.map +0 -1
  610. package/esm/hooks/__tests__/use-message-images.test.d.ts.map +0 -1
  611. package/esm/hooks/__tests__/use-message-images.test.js.map +0 -1
  612. package/esm/hooks/__tests__/use-suggestions.test.d.ts.map +0 -1
  613. package/esm/hooks/__tests__/use-suggestions.test.js.map +0 -1
  614. package/esm/hooks/__tests__/use-tambo-stream-status.test.d.ts.map +0 -1
  615. package/esm/hooks/__tests__/use-tambo-stream-status.test.js.map +0 -1
  616. package/esm/hooks/__tests__/use-tambo-threads.test.d.ts.map +0 -1
  617. package/esm/hooks/__tests__/use-tambo-threads.test.js.map +0 -1
  618. package/esm/mcp/__tests__/elicitation.test.d.ts.map +0 -1
  619. package/esm/mcp/__tests__/elicitation.test.js.map +0 -1
  620. package/esm/mcp/__tests__/mcp-client.test.d.ts.map +0 -1
  621. package/esm/mcp/__tests__/mcp-client.test.js.map +0 -1
  622. package/esm/mcp/__tests__/mcp-hooks.test.d.ts.map +0 -1
  623. package/esm/mcp/__tests__/mcp-hooks.test.js.map +0 -1
  624. package/esm/mcp/__tests__/tambo-mcp-provider.test.d.ts.map +0 -1
  625. package/esm/mcp/__tests__/tambo-mcp-provider.test.js.map +0 -1
  626. package/esm/mcp/__tests__/use-mcp-servers.test.d.ts.map +0 -1
  627. package/esm/mcp/__tests__/use-mcp-servers.test.js.map +0 -1
  628. package/esm/providers/__tests__/tambo-context-attachment-provider.test.d.ts.map +0 -1
  629. package/esm/providers/__tests__/tambo-context-attachment-provider.test.js.map +0 -1
  630. package/esm/providers/__tests__/tambo-context-helpers-provider.test.d.ts.map +0 -1
  631. package/esm/providers/__tests__/tambo-context-helpers-provider.test.js.map +0 -1
  632. package/esm/providers/__tests__/tambo-interactable-provider-partial-updates.test.d.ts.map +0 -1
  633. package/esm/providers/__tests__/tambo-interactable-provider-partial-updates.test.js.map +0 -1
  634. package/esm/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts.map +0 -1
  635. package/esm/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.js.map +0 -1
  636. package/esm/providers/__tests__/tambo-interactables-additional-context.test.d.ts.map +0 -1
  637. package/esm/providers/__tests__/tambo-interactables-additional-context.test.js.map +0 -1
  638. package/esm/providers/__tests__/tambo-prop-stream-provider.test.d.ts.map +0 -1
  639. package/esm/providers/__tests__/tambo-prop-stream-provider.test.js.map +0 -1
  640. package/esm/providers/__tests__/tambo-registry-provider.test.d.ts.map +0 -1
  641. package/esm/providers/__tests__/tambo-registry-provider.test.js.map +0 -1
  642. package/esm/providers/__tests__/tambo-stubs.test.d.ts.map +0 -1
  643. package/esm/providers/__tests__/tambo-stubs.test.js.map +0 -1
  644. package/esm/providers/__tests__/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  645. package/esm/providers/__tests__/tambo-thread-provider-initial-messages.test.js.map +0 -1
  646. package/esm/providers/__tests__/tambo-thread-provider.test.d.ts.map +0 -1
  647. package/esm/providers/__tests__/tambo-thread-provider.test.js.map +0 -1
  648. package/esm/providers/hoc/with-tambo-interactable.d.ts.map +0 -1
  649. package/esm/providers/hoc/with-tambo-interactable.js.map +0 -1
  650. package/esm/providers/hooks/__tests__/use-tambo-session-token.test.d.ts.map +0 -1
  651. package/esm/providers/hooks/__tests__/use-tambo-session-token.test.js.map +0 -1
  652. package/esm/util/__tests__/content-parts.test.d.ts.map +0 -1
  653. package/esm/util/__tests__/content-parts.test.js.map +0 -1
  654. package/esm/util/__tests__/message-builder.test.d.ts.map +0 -1
  655. package/esm/util/__tests__/message-builder.test.js +0 -189
  656. package/esm/util/__tests__/message-builder.test.js.map +0 -1
  657. package/esm/util/validate-zod-schema.d.ts +0 -10
  658. package/esm/util/validate-zod-schema.d.ts.map +0 -1
  659. package/esm/util/validate-zod-schema.js +0 -97
  660. package/esm/util/validate-zod-schema.js.map +0 -1
  661. /package/dist/context-helpers/{__tests__/context-helpers-provider.test.d.ts → context-helpers-provider.test.d.ts} +0 -0
  662. /package/dist/context-helpers/{__tests__/context-helpers.test.d.ts → context-helpers.test.d.ts} +0 -0
  663. /package/dist/hooks/{__tests__/use-component-state.test.d.ts → use-component-state.test.d.ts} +0 -0
  664. /package/dist/hooks/{__tests__/use-message-images.test.d.ts → use-message-images.test.d.ts} +0 -0
  665. /package/dist/hooks/{__tests__/use-suggestions.test.d.ts → use-suggestions.test.d.ts} +0 -0
  666. /package/dist/hooks/{__tests__/use-tambo-stream-status.test.d.ts → use-tambo-stream-status.test.d.ts} +0 -0
  667. /package/dist/hooks/{__tests__/use-tambo-threads.test.d.ts → use-tambo-threads.test.d.ts} +0 -0
  668. /package/dist/mcp/{__tests__/elicitation.test.d.ts → elicitation.test.d.ts} +0 -0
  669. /package/dist/mcp/{__tests__/mcp-client.test.d.ts → mcp-client.test.d.ts} +0 -0
  670. /package/dist/mcp/{__tests__/mcp-hooks.test.d.ts → mcp-hooks.test.d.ts} +0 -0
  671. /package/dist/mcp/{__tests__/tambo-mcp-provider.test.d.ts → tambo-mcp-provider.test.d.ts} +0 -0
  672. /package/dist/mcp/{__tests__/use-mcp-servers.test.d.ts → use-mcp-servers.test.d.ts} +0 -0
  673. /package/dist/providers/hooks/{__tests__/use-tambo-session-token.test.d.ts → use-tambo-session-token.test.d.ts} +0 -0
  674. /package/dist/providers/{__tests__/tambo-context-attachment-provider.test.d.ts → tambo-context-attachment-provider.test.d.ts} +0 -0
  675. /package/dist/providers/{__tests__/tambo-context-helpers-provider.test.d.ts → tambo-context-helpers-provider.test.d.ts} +0 -0
  676. /package/dist/providers/{__tests__/tambo-interactable-provider-partial-updates.test.d.ts → tambo-interactable-provider-partial-updates.test.d.ts} +0 -0
  677. /package/dist/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts → tambo-interactables-additional-context-edge-cases.test.d.ts} +0 -0
  678. /package/dist/providers/{__tests__/tambo-interactables-additional-context.test.d.ts → tambo-interactables-additional-context.test.d.ts} +0 -0
  679. /package/dist/providers/{__tests__/tambo-prop-stream-provider.test.d.ts → tambo-prop-stream-provider.test.d.ts} +0 -0
  680. /package/dist/providers/{__tests__/tambo-registry-provider.test.d.ts → tambo-registry-provider.test.d.ts} +0 -0
  681. /package/dist/providers/{__tests__/tambo-stubs.test.d.ts → tambo-stubs.test.d.ts} +0 -0
  682. /package/dist/providers/{__tests__/tambo-thread-provider-initial-messages.test.d.ts → tambo-thread-provider-initial-messages.test.d.ts} +0 -0
  683. /package/dist/providers/{__tests__/tambo-thread-provider.test.d.ts → tambo-thread-provider.test.d.ts} +0 -0
  684. /package/dist/util/{__tests__/content-parts.test.d.ts → content-parts.test.d.ts} +0 -0
  685. /package/dist/util/{__tests__/message-builder.test.d.ts → message-builder.test.d.ts} +0 -0
  686. /package/esm/context-helpers/{__tests__/context-helpers-provider.test.d.ts → context-helpers-provider.test.d.ts} +0 -0
  687. /package/esm/context-helpers/{__tests__/context-helpers.test.d.ts → context-helpers.test.d.ts} +0 -0
  688. /package/esm/hooks/{__tests__/use-component-state.test.d.ts → use-component-state.test.d.ts} +0 -0
  689. /package/esm/hooks/{__tests__/use-message-images.test.d.ts → use-message-images.test.d.ts} +0 -0
  690. /package/esm/hooks/{__tests__/use-suggestions.test.d.ts → use-suggestions.test.d.ts} +0 -0
  691. /package/esm/hooks/{__tests__/use-tambo-stream-status.test.d.ts → use-tambo-stream-status.test.d.ts} +0 -0
  692. /package/esm/hooks/{__tests__/use-tambo-threads.test.d.ts → use-tambo-threads.test.d.ts} +0 -0
  693. /package/esm/mcp/{__tests__/elicitation.test.d.ts → elicitation.test.d.ts} +0 -0
  694. /package/esm/mcp/{__tests__/mcp-client.test.d.ts → mcp-client.test.d.ts} +0 -0
  695. /package/esm/mcp/{__tests__/mcp-hooks.test.d.ts → mcp-hooks.test.d.ts} +0 -0
  696. /package/esm/mcp/{__tests__/tambo-mcp-provider.test.d.ts → tambo-mcp-provider.test.d.ts} +0 -0
  697. /package/esm/mcp/{__tests__/use-mcp-servers.test.d.ts → use-mcp-servers.test.d.ts} +0 -0
  698. /package/esm/providers/hooks/{__tests__/use-tambo-session-token.test.d.ts → use-tambo-session-token.test.d.ts} +0 -0
  699. /package/esm/providers/{__tests__/tambo-context-attachment-provider.test.d.ts → tambo-context-attachment-provider.test.d.ts} +0 -0
  700. /package/esm/providers/{__tests__/tambo-context-helpers-provider.test.d.ts → tambo-context-helpers-provider.test.d.ts} +0 -0
  701. /package/esm/providers/{__tests__/tambo-interactable-provider-partial-updates.test.d.ts → tambo-interactable-provider-partial-updates.test.d.ts} +0 -0
  702. /package/esm/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts → tambo-interactables-additional-context-edge-cases.test.d.ts} +0 -0
  703. /package/esm/providers/{__tests__/tambo-interactables-additional-context.test.d.ts → tambo-interactables-additional-context.test.d.ts} +0 -0
  704. /package/esm/providers/{__tests__/tambo-prop-stream-provider.test.d.ts → tambo-prop-stream-provider.test.d.ts} +0 -0
  705. /package/esm/providers/{__tests__/tambo-registry-provider.test.d.ts → tambo-registry-provider.test.d.ts} +0 -0
  706. /package/esm/providers/{__tests__/tambo-stubs.test.d.ts → tambo-stubs.test.d.ts} +0 -0
  707. /package/esm/providers/{__tests__/tambo-thread-provider-initial-messages.test.d.ts → tambo-thread-provider-initial-messages.test.d.ts} +0 -0
  708. /package/esm/providers/{__tests__/tambo-thread-provider.test.d.ts → tambo-thread-provider.test.d.ts} +0 -0
  709. /package/esm/util/{__tests__/content-parts.test.d.ts → content-parts.test.d.ts} +0 -0
  710. /package/esm/util/{__tests__/message-builder.test.d.ts → message-builder.test.d.ts} +0 -0
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const v3_1 = require("zod/v3");
4
+ const registry_validators_1 = require("./registry-validators");
5
+ describe("validateTool", () => {
6
+ it("should validate tool with valid name", () => {
7
+ const tool = {
8
+ name: "valid-tool-name",
9
+ description: "A valid tool",
10
+ tool: () => "result",
11
+ toolSchema: v3_1.z.function().args().returns(v3_1.z.string()),
12
+ };
13
+ expect(() => (0, registry_validators_1.validateTool)(tool)).not.toThrow();
14
+ });
15
+ it("should throw when tool name contains invalid characters", () => {
16
+ const tool = {
17
+ name: "invalid tool name",
18
+ description: "A tool",
19
+ tool: () => "result",
20
+ toolSchema: v3_1.z.function().args().returns(v3_1.z.string()),
21
+ };
22
+ expect(() => (0, registry_validators_1.validateTool)(tool)).toThrow('tool "invalid tool name" must only contain letters, numbers, underscores, and hyphens.');
23
+ });
24
+ it("should throw when tool name contains special characters", () => {
25
+ const tool = {
26
+ name: "tool@name",
27
+ description: "A tool",
28
+ tool: () => "result",
29
+ toolSchema: v3_1.z.function().args().returns(v3_1.z.string()),
30
+ };
31
+ expect(() => (0, registry_validators_1.validateTool)(tool)).toThrow('tool "tool@name" must only contain letters, numbers, underscores, and hyphens.');
32
+ });
33
+ it("should validate tool with valid Zod schema", () => {
34
+ const tool = {
35
+ name: "valid-tool",
36
+ description: "A tool",
37
+ tool: () => "result",
38
+ toolSchema: v3_1.z.function().args().returns(v3_1.z.string()),
39
+ };
40
+ expect(() => (0, registry_validators_1.validateTool)(tool)).not.toThrow();
41
+ });
42
+ it("should throw when tool schema contains z.record()", () => {
43
+ const tool = {
44
+ name: "invalid-tool",
45
+ description: "A tool",
46
+ tool: () => "result",
47
+ toolSchema: v3_1.z
48
+ .function()
49
+ .args(v3_1.z.object({
50
+ metadata: v3_1.z.record(v3_1.z.string()),
51
+ }))
52
+ .returns(v3_1.z.string()),
53
+ };
54
+ expect(() => (0, registry_validators_1.validateTool)(tool)).toThrow('Record types (objects with dynamic keys) are not supported in toolSchema of tool "invalid-tool".');
55
+ });
56
+ it("should allow tool with JSON Schema (non-Zod)", () => {
57
+ const tool = {
58
+ name: "tool-with-json-schema",
59
+ description: "A tool",
60
+ tool: () => "result",
61
+ toolSchema: {
62
+ type: "object",
63
+ properties: {
64
+ query: { type: "string" },
65
+ },
66
+ },
67
+ };
68
+ expect(() => (0, registry_validators_1.validateTool)(tool)).not.toThrow();
69
+ });
70
+ it("should validate tool with inputSchema (new interface)", () => {
71
+ const tool = {
72
+ name: "tool-with-input-schema",
73
+ description: "A tool with input schema",
74
+ tool: (input) => input.query,
75
+ inputSchema: v3_1.z.object({
76
+ query: v3_1.z.string(),
77
+ }),
78
+ outputSchema: v3_1.z.string(),
79
+ };
80
+ expect(() => (0, registry_validators_1.validateTool)(tool)).not.toThrow();
81
+ });
82
+ });
83
+ describe("validateAndPrepareComponent", () => {
84
+ it("should validate component with propsSchema", () => {
85
+ const component = {
86
+ name: "valid-component",
87
+ description: "A valid component",
88
+ component: () => null,
89
+ propsSchema: v3_1.z.object({
90
+ title: v3_1.z.string(),
91
+ count: v3_1.z.number(),
92
+ }),
93
+ };
94
+ const result = (0, registry_validators_1.validateAndPrepareComponent)(component);
95
+ expect(result.props).toBeDefined();
96
+ expect(result.props.type).toBe("object");
97
+ expect(result.props.properties).toBeDefined();
98
+ });
99
+ it("should validate component with propsDefinition", () => {
100
+ const component = {
101
+ name: "valid-component",
102
+ description: "A valid component",
103
+ component: () => null,
104
+ propsDefinition: {
105
+ type: "object",
106
+ properties: {
107
+ title: { type: "string" },
108
+ },
109
+ },
110
+ };
111
+ const result = (0, registry_validators_1.validateAndPrepareComponent)(component);
112
+ expect(result.props).toEqual(component.propsDefinition);
113
+ });
114
+ it("should throw when component name contains invalid characters", () => {
115
+ const component = {
116
+ name: "invalid component name",
117
+ description: "A component",
118
+ component: () => null,
119
+ propsSchema: v3_1.z.object({}),
120
+ };
121
+ expect(() => (0, registry_validators_1.validateAndPrepareComponent)(component)).toThrow('component "invalid component name" must only contain letters, numbers, underscores, and hyphens.');
122
+ });
123
+ it("should throw when neither propsSchema nor propsDefinition is provided", () => {
124
+ const component = {
125
+ name: "component-without-props",
126
+ description: "A component",
127
+ component: () => null,
128
+ };
129
+ expect(() => (0, registry_validators_1.validateAndPrepareComponent)(component)).toThrow("Component component-without-props must have either propsSchema (recommended) or propsDefinition defined");
130
+ });
131
+ it("should throw when both propsSchema and propsDefinition are provided", () => {
132
+ const component = {
133
+ name: "component-with-both",
134
+ description: "A component",
135
+ component: () => null,
136
+ propsSchema: v3_1.z.object({}),
137
+ propsDefinition: {
138
+ type: "object",
139
+ properties: {},
140
+ },
141
+ };
142
+ expect(() => (0, registry_validators_1.validateAndPrepareComponent)(component)).toThrow("Component component-with-both cannot have both propsSchema and propsDefinition defined. Use only one. We recommend using propsSchema.");
143
+ });
144
+ it("should throw when propsSchema contains z.record()", () => {
145
+ const component = {
146
+ name: "component-with-record",
147
+ description: "A component",
148
+ component: () => null,
149
+ propsSchema: v3_1.z.object({
150
+ metadata: v3_1.z.record(v3_1.z.string()),
151
+ }),
152
+ };
153
+ expect(() => (0, registry_validators_1.validateAndPrepareComponent)(component)).toThrow('Record types (objects with dynamic keys) are not supported in propsSchema of component "component-with-record".');
154
+ });
155
+ it("should convert Zod schema to JSON Schema", () => {
156
+ const component = {
157
+ name: "component-with-zod",
158
+ description: "A component",
159
+ component: () => null,
160
+ propsSchema: v3_1.z.object({
161
+ title: v3_1.z.string().describe("The title"),
162
+ count: v3_1.z.number().int().min(0),
163
+ tags: v3_1.z.array(v3_1.z.string()),
164
+ }),
165
+ };
166
+ const result = (0, registry_validators_1.validateAndPrepareComponent)(component);
167
+ expect(result.props).toBeDefined();
168
+ expect(result.props.type).toBe("object");
169
+ expect(result.props.properties).toBeDefined();
170
+ expect(result.props.properties.title).toBeDefined();
171
+ expect(result.props.properties.count).toBeDefined();
172
+ expect(result.props.properties.tags).toBeDefined();
173
+ });
174
+ it("should handle complex Zod schema", () => {
175
+ const component = {
176
+ name: "component-complex",
177
+ description: "A component",
178
+ component: () => null,
179
+ propsSchema: v3_1.z.object({
180
+ user: v3_1.z.object({
181
+ name: v3_1.z.string(),
182
+ age: v3_1.z.number(),
183
+ }),
184
+ items: v3_1.z.array(v3_1.z.object({
185
+ id: v3_1.z.string(),
186
+ value: v3_1.z.number(),
187
+ })),
188
+ }),
189
+ };
190
+ const result = (0, registry_validators_1.validateAndPrepareComponent)(component);
191
+ expect(result.props).toBeDefined();
192
+ expect(result.props.type).toBe("object");
193
+ });
194
+ it("should allow JSON Schema (non-Zod) without validation", () => {
195
+ const component = {
196
+ name: "component-json-schema",
197
+ description: "A component",
198
+ component: () => null,
199
+ propsSchema: {
200
+ type: "object",
201
+ properties: {
202
+ title: { type: "string" },
203
+ },
204
+ },
205
+ };
206
+ const result = (0, registry_validators_1.validateAndPrepareComponent)(component);
207
+ expect(result.props).toEqual(component.propsSchema);
208
+ });
209
+ });
210
+ describe("validateToolAssociation", () => {
211
+ it("should validate valid tool association", () => {
212
+ expect(() => (0, registry_validators_1.validateToolAssociation)("valid-component", "valid-tool", true, true)).not.toThrow();
213
+ });
214
+ it("should throw when component name is invalid", () => {
215
+ expect(() => (0, registry_validators_1.validateToolAssociation)("invalid component", "valid-tool", true, true)).toThrow('component "invalid component" must only contain letters, numbers, underscores, and hyphens.');
216
+ });
217
+ it("should throw when tool name is invalid", () => {
218
+ expect(() => (0, registry_validators_1.validateToolAssociation)("valid-component", "invalid tool", true, true)).toThrow('tool "invalid tool" must only contain letters, numbers, underscores, and hyphens.');
219
+ });
220
+ it("should throw when component does not exist", () => {
221
+ expect(() => (0, registry_validators_1.validateToolAssociation)("missing-component", "valid-tool", false, true)).toThrow("Component missing-component not found in registry");
222
+ });
223
+ it("should throw when tool does not exist", () => {
224
+ expect(() => (0, registry_validators_1.validateToolAssociation)("valid-component", "missing-tool", true, false)).toThrow("Tool missing-tool not found in registry");
225
+ });
226
+ it("should throw when both component and tool do not exist", () => {
227
+ expect(() => {
228
+ (0, registry_validators_1.validateToolAssociation)("missing-component", "missing-tool", false, false);
229
+ }).toThrow("Component missing-component not found in registry");
230
+ });
231
+ it("should validate with valid names containing underscores and hyphens", () => {
232
+ expect(() => (0, registry_validators_1.validateToolAssociation)("my_component-123", "my_tool-456", true, true)).not.toThrow();
233
+ });
234
+ });
235
+ //# sourceMappingURL=registry-validators.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-validators.test.js","sourceRoot":"","sources":["../../src/util/registry-validators.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod/v3\";\nimport type {\n TamboComponent,\n TamboTool,\n TamboToolWithToolSchema,\n} from \"../model/component-metadata\";\nimport {\n validateAndPrepareComponent,\n validateTool,\n validateToolAssociation,\n} from \"./registry-validators\";\n\ndescribe(\"validateTool\", () => {\n it(\"should validate tool with valid name\", () => {\n const tool: TamboToolWithToolSchema = {\n name: \"valid-tool-name\",\n description: \"A valid tool\",\n tool: () => \"result\",\n toolSchema: z.function().args().returns(z.string()),\n };\n\n expect(() => validateTool(tool)).not.toThrow();\n });\n\n it(\"should throw when tool name contains invalid characters\", () => {\n const tool: TamboToolWithToolSchema = {\n name: \"invalid tool name\",\n description: \"A tool\",\n tool: () => \"result\",\n toolSchema: z.function().args().returns(z.string()),\n };\n\n expect(() => validateTool(tool)).toThrow(\n 'tool \"invalid tool name\" must only contain letters, numbers, underscores, and hyphens.',\n );\n });\n\n it(\"should throw when tool name contains special characters\", () => {\n const tool: TamboToolWithToolSchema = {\n name: \"tool@name\",\n description: \"A tool\",\n tool: () => \"result\",\n toolSchema: z.function().args().returns(z.string()),\n };\n\n expect(() => validateTool(tool)).toThrow(\n 'tool \"tool@name\" must only contain letters, numbers, underscores, and hyphens.',\n );\n });\n\n it(\"should validate tool with valid Zod schema\", () => {\n const tool: TamboToolWithToolSchema = {\n name: \"valid-tool\",\n description: \"A tool\",\n tool: () => \"result\",\n toolSchema: z.function().args().returns(z.string()),\n };\n\n expect(() => validateTool(tool)).not.toThrow();\n });\n\n it(\"should throw when tool schema contains z.record()\", () => {\n const tool: TamboToolWithToolSchema = {\n name: \"invalid-tool\",\n description: \"A tool\",\n tool: () => \"result\",\n toolSchema: z\n .function()\n .args(\n z.object({\n metadata: z.record(z.string()),\n }),\n )\n .returns(z.string()),\n };\n\n expect(() => validateTool(tool)).toThrow(\n 'Record types (objects with dynamic keys) are not supported in toolSchema of tool \"invalid-tool\".',\n );\n });\n\n it(\"should allow tool with JSON Schema (non-Zod)\", () => {\n const tool: TamboToolWithToolSchema = {\n name: \"tool-with-json-schema\",\n description: \"A tool\",\n tool: () => \"result\",\n toolSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\" },\n },\n },\n };\n\n expect(() => validateTool(tool)).not.toThrow();\n });\n\n it(\"should validate tool with inputSchema (new interface)\", () => {\n const tool: TamboTool = {\n name: \"tool-with-input-schema\",\n description: \"A tool with input schema\",\n tool: (input: { query: string }) => input.query,\n inputSchema: z.object({\n query: z.string(),\n }),\n outputSchema: z.string(),\n };\n\n expect(() => validateTool(tool)).not.toThrow();\n });\n});\n\ndescribe(\"validateAndPrepareComponent\", () => {\n it(\"should validate component with propsSchema\", () => {\n const component: TamboComponent = {\n name: \"valid-component\",\n description: \"A valid component\",\n component: () => null,\n propsSchema: z.object({\n title: z.string(),\n count: z.number(),\n }),\n };\n\n const result = validateAndPrepareComponent(component);\n\n expect(result.props).toBeDefined();\n expect(result.props.type).toBe(\"object\");\n expect(result.props.properties).toBeDefined();\n });\n\n it(\"should validate component with propsDefinition\", () => {\n const component: TamboComponent = {\n name: \"valid-component\",\n description: \"A valid component\",\n component: () => null,\n propsDefinition: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n },\n },\n };\n\n const result = validateAndPrepareComponent(component);\n\n expect(result.props).toEqual(component.propsDefinition);\n });\n\n it(\"should throw when component name contains invalid characters\", () => {\n const component: TamboComponent = {\n name: \"invalid component name\",\n description: \"A component\",\n component: () => null,\n propsSchema: z.object({}),\n };\n\n expect(() => validateAndPrepareComponent(component)).toThrow(\n 'component \"invalid component name\" must only contain letters, numbers, underscores, and hyphens.',\n );\n });\n\n it(\"should throw when neither propsSchema nor propsDefinition is provided\", () => {\n const component: TamboComponent = {\n name: \"component-without-props\",\n description: \"A component\",\n component: () => null,\n };\n\n expect(() => validateAndPrepareComponent(component)).toThrow(\n \"Component component-without-props must have either propsSchema (recommended) or propsDefinition defined\",\n );\n });\n\n it(\"should throw when both propsSchema and propsDefinition are provided\", () => {\n const component: TamboComponent = {\n name: \"component-with-both\",\n description: \"A component\",\n component: () => null,\n propsSchema: z.object({}),\n propsDefinition: {\n type: \"object\",\n properties: {},\n },\n };\n\n expect(() => validateAndPrepareComponent(component)).toThrow(\n \"Component component-with-both cannot have both propsSchema and propsDefinition defined. Use only one. We recommend using propsSchema.\",\n );\n });\n\n it(\"should throw when propsSchema contains z.record()\", () => {\n const component: TamboComponent = {\n name: \"component-with-record\",\n description: \"A component\",\n component: () => null,\n propsSchema: z.object({\n metadata: z.record(z.string()),\n }),\n };\n\n expect(() => validateAndPrepareComponent(component)).toThrow(\n 'Record types (objects with dynamic keys) are not supported in propsSchema of component \"component-with-record\".',\n );\n });\n\n it(\"should convert Zod schema to JSON Schema\", () => {\n const component: TamboComponent = {\n name: \"component-with-zod\",\n description: \"A component\",\n component: () => null,\n propsSchema: z.object({\n title: z.string().describe(\"The title\"),\n count: z.number().int().min(0),\n tags: z.array(z.string()),\n }),\n };\n\n const result = validateAndPrepareComponent(component);\n\n expect(result.props).toBeDefined();\n expect(result.props.type).toBe(\"object\");\n expect((result.props as any).properties).toBeDefined();\n expect((result.props as any).properties.title).toBeDefined();\n expect((result.props as any).properties.count).toBeDefined();\n expect((result.props as any).properties.tags).toBeDefined();\n });\n\n it(\"should handle complex Zod schema\", () => {\n const component: TamboComponent = {\n name: \"component-complex\",\n description: \"A component\",\n component: () => null,\n propsSchema: z.object({\n user: z.object({\n name: z.string(),\n age: z.number(),\n }),\n items: z.array(\n z.object({\n id: z.string(),\n value: z.number(),\n }),\n ),\n }),\n };\n\n const result = validateAndPrepareComponent(component);\n\n expect(result.props).toBeDefined();\n expect(result.props.type).toBe(\"object\");\n });\n\n it(\"should allow JSON Schema (non-Zod) without validation\", () => {\n const component: TamboComponent = {\n name: \"component-json-schema\",\n description: \"A component\",\n component: () => null,\n propsSchema: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n },\n },\n };\n\n const result = validateAndPrepareComponent(component);\n\n expect(result.props).toEqual(component.propsSchema);\n });\n});\n\ndescribe(\"validateToolAssociation\", () => {\n it(\"should validate valid tool association\", () => {\n expect(() =>\n validateToolAssociation(\"valid-component\", \"valid-tool\", true, true),\n ).not.toThrow();\n });\n\n it(\"should throw when component name is invalid\", () => {\n expect(() =>\n validateToolAssociation(\"invalid component\", \"valid-tool\", true, true),\n ).toThrow(\n 'component \"invalid component\" must only contain letters, numbers, underscores, and hyphens.',\n );\n });\n\n it(\"should throw when tool name is invalid\", () => {\n expect(() =>\n validateToolAssociation(\"valid-component\", \"invalid tool\", true, true),\n ).toThrow(\n 'tool \"invalid tool\" must only contain letters, numbers, underscores, and hyphens.',\n );\n });\n\n it(\"should throw when component does not exist\", () => {\n expect(() =>\n validateToolAssociation(\"missing-component\", \"valid-tool\", false, true),\n ).toThrow(\"Component missing-component not found in registry\");\n });\n\n it(\"should throw when tool does not exist\", () => {\n expect(() =>\n validateToolAssociation(\"valid-component\", \"missing-tool\", true, false),\n ).toThrow(\"Tool missing-tool not found in registry\");\n });\n\n it(\"should throw when both component and tool do not exist\", () => {\n expect(() => {\n validateToolAssociation(\n \"missing-component\",\n \"missing-tool\",\n false,\n false,\n );\n }).toThrow(\"Component missing-component not found in registry\");\n });\n\n it(\"should validate with valid names containing underscores and hyphens\", () => {\n expect(() =>\n validateToolAssociation(\"my_component-123\", \"my_tool-456\", true, true),\n ).not.toThrow();\n });\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import TamboAI from "@tambo-ai/typescript-sdk";
2
- import { ComponentContextToolMetadata, ComponentRegistry, RegisteredComponent, TamboTool, TamboToolAssociations, TamboToolRegistry } from "../model/component-metadata";
2
+ import { ComponentContextToolMetadata, ComponentRegistry, DefineToolFn, RegisteredComponent, TamboTool, TamboToolAssociations, TamboToolRegistry, TamboToolWithToolSchema } from "../model/component-metadata";
3
3
  /**
4
4
  * Get all the available components from the component registry
5
5
  * @param componentRegistry - The component registry
@@ -14,13 +14,19 @@ export declare const getAvailableComponents: (componentRegistry: ComponentRegist
14
14
  * @param toolAssociations - The tool associations
15
15
  * @returns The tools that are not associated with any component
16
16
  */
17
- export declare const getUnassociatedTools: (toolRegistry: TamboToolRegistry, toolAssociations: TamboToolAssociations) => TamboTool[];
17
+ export declare const getUnassociatedTools: (toolRegistry: TamboToolRegistry, toolAssociations: TamboToolAssociations) => (TamboTool | TamboToolWithToolSchema)[];
18
18
  /**
19
- * Helper function to convert component props from Zod schema to JSON Schema
19
+ * Helper function to convert component props from Standard Schema or JSON Schema
20
20
  * @param component - The component to convert
21
- * @returns The converted props
21
+ * @returns The converted props as JSON Schema
22
22
  */
23
- export declare const convertPropsToJsonSchema: (component: RegisteredComponent) => any;
23
+ export declare const convertPropsToJsonSchema: (component: RegisteredComponent) => unknown;
24
+ /**
25
+ * Adapt a Tambo tool defined with function schema to a standard Tambo tool
26
+ * @param tool - The Tambo tool with function schema
27
+ * @returns The adapted Tambo tool
28
+ */
29
+ export declare function adaptToolFromFnSchema(tool: TamboTool | TamboToolWithToolSchema): TamboTool;
24
30
  /**
25
31
  * Get a component by name from the component registry
26
32
  * @param componentName - The name of the component to get
@@ -30,8 +36,30 @@ export declare const convertPropsToJsonSchema: (component: RegisteredComponent)
30
36
  export declare const getComponentFromRegistry: (componentName: string, componentRegistry: ComponentRegistry) => RegisteredComponent;
31
37
  /**
32
38
  * Map a Tambo tool to a context tool
33
- * @param tool - The tool to map
39
+ * @param tool - The tool to map (supports both new inputSchema and deprecated toolSchema interfaces)
34
40
  * @returns The context tool
35
41
  */
36
- export declare const mapTamboToolToContextTool: (tool: TamboTool) => ComponentContextToolMetadata;
42
+ export declare const mapTamboToolToContextTool: (tool: TamboTool | TamboToolWithToolSchema) => ComponentContextToolMetadata;
43
+ /**
44
+ * Provides type safety for defining a Tambo Tool.
45
+ *
46
+ * Tambo uses the [standard-schema.dev](https://standard-schema.dev) spec which means you can use any Standard Schema
47
+ * compliant validator (Zod, Valibot, ArkType, etc.). This ensures the tool function args and output types are correctly
48
+ * inferred from the provided schemas.
49
+ * @example
50
+ * ```typescript
51
+ * import { z } from "zod/v4";
52
+ *
53
+ * const myTool = defineTamboTool({
54
+ * inputSchema: z.tuple([z.string()]),
55
+ * outputSchema: z.number(),
56
+ * tool: yourToolFunction,
57
+ * // ^-- (input: [string]) => number | Promise<number>
58
+ * // Types are inferred from and must match inputSchema/outputSchema definitions
59
+ * });
60
+ * ```
61
+ * @param tool The tool definition to register
62
+ * @returns The registered tool definition
63
+ */
64
+ export declare const defineTool: DefineToolFn;
37
65
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAG/C,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EAGjB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,mBAAmB,iBAAiB,EACpC,cAAc,iBAAiB,EAC/B,kBAAkB,qBAAqB,KACtC,OAAO,CAAC,kBAAkB,EAuB5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,iBAAiB,EAC/B,kBAAkB,qBAAqB,KACtC,SAAS,EAKX,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,WAAW,mBAAmB,KAC7B,GAYF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,mBAAmB,iBAAiB,KACnC,mBAUF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,SAAS,KACd,4BAQF,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AASrC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,mBAAmB,iBAAiB,EACpC,cAAc,iBAAiB,EAC/B,kBAAkB,qBAAqB,KACtC,OAAO,CAAC,kBAAkB,EAuB5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,iBAAiB,EAC/B,kBAAkB,qBAAqB,KACtC,CAAC,SAAS,GAAG,uBAAuB,CAAC,EAKvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,WAAW,mBAAmB,KAC7B,OAYF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,GAAG,uBAAuB,GACxC,SAAS,CAYX;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,mBAAmB,iBAAiB,KACnC,mBAUF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,SAAS,GAAG,uBAAuB,KACxC,4BAQF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU,EAAE,YAExB,CAAC"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mapTamboToolToContextTool = exports.getComponentFromRegistry = exports.convertPropsToJsonSchema = exports.getUnassociatedTools = exports.getAvailableComponents = void 0;
7
- const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
3
+ exports.defineTool = exports.mapTamboToolToContextTool = exports.getComponentFromRegistry = exports.convertPropsToJsonSchema = exports.getUnassociatedTools = exports.getAvailableComponents = void 0;
4
+ exports.adaptToolFromFnSchema = adaptToolFromFnSchema;
5
+ const schema_1 = require("../schema");
8
6
  /**
9
7
  * Get all the available components from the component registry
10
8
  * @param componentRegistry - The component registry
@@ -16,14 +14,14 @@ const getAvailableComponents = (componentRegistry, toolRegistry, toolAssociation
16
14
  const availableComponents = [];
17
15
  for (const [name, componentEntry] of Object.entries(componentRegistry)) {
18
16
  const associatedToolNames = toolAssociations[name] || [];
19
- const contextTools = [
20
- ...associatedToolNames.map((toolName) => {
21
- const tool = toolRegistry[toolName];
22
- if (!tool)
23
- return null;
24
- return (0, exports.mapTamboToolToContextTool)(tool);
25
- }),
26
- ].filter((tool) => tool !== null);
17
+ const contextTools = associatedToolNames
18
+ .map((toolName) => {
19
+ const tool = toolRegistry[toolName];
20
+ if (!tool)
21
+ return null;
22
+ return (0, exports.mapTamboToolToContextTool)(tool);
23
+ })
24
+ .filter((tool) => tool !== null);
27
25
  availableComponents.push({
28
26
  name: componentEntry.name,
29
27
  description: componentEntry.description,
@@ -48,22 +46,39 @@ const getUnassociatedTools = (toolRegistry, toolAssociations) => {
48
46
  };
49
47
  exports.getUnassociatedTools = getUnassociatedTools;
50
48
  /**
51
- * Helper function to convert component props from Zod schema to JSON Schema
49
+ * Helper function to convert component props from Standard Schema or JSON Schema
52
50
  * @param component - The component to convert
53
- * @returns The converted props
51
+ * @returns The converted props as JSON Schema
54
52
  */
55
53
  const convertPropsToJsonSchema = (component) => {
56
54
  if (!component.props) {
57
55
  return component.props;
58
56
  }
59
- // Check if props is a Zod schema (we can't directly check the type, so we check for _def)
60
- if (component.props._def && typeof component.props.parse === "function") {
61
- // Use two-step type assertion for safety
62
- return (0, zod_to_json_schema_1.default)(component.props);
57
+ // Check if props is a Standard Schema (Zod, Valibot, ArkType, etc.)
58
+ if ((0, schema_1.isStandardSchema)(component.props)) {
59
+ return (0, schema_1.schemaToJsonSchema)(component.props);
63
60
  }
61
+ // Already JSON Schema or unknown format - return as-is
64
62
  return component.props;
65
63
  };
66
64
  exports.convertPropsToJsonSchema = convertPropsToJsonSchema;
65
+ /**
66
+ * Adapt a Tambo tool defined with function schema to a standard Tambo tool
67
+ * @param tool - The Tambo tool with function schema
68
+ * @returns The adapted Tambo tool
69
+ */
70
+ function adaptToolFromFnSchema(tool) {
71
+ if (!("toolSchema" in tool)) {
72
+ return tool;
73
+ }
74
+ return {
75
+ name: tool.name,
76
+ description: tool.description,
77
+ tool: tool.tool,
78
+ inputSchema: (0, schema_1.getZodFunctionArgs)(tool.toolSchema),
79
+ outputSchema: (0, schema_1.getZodFunctionReturns)(tool.toolSchema),
80
+ };
81
+ }
67
82
  /**
68
83
  * Get a component by name from the component registry
69
84
  * @param componentName - The name of the component to get
@@ -80,11 +95,11 @@ const getComponentFromRegistry = (componentName, componentRegistry) => {
80
95
  exports.getComponentFromRegistry = getComponentFromRegistry;
81
96
  /**
82
97
  * Map a Tambo tool to a context tool
83
- * @param tool - The tool to map
98
+ * @param tool - The tool to map (supports both new inputSchema and deprecated toolSchema interfaces)
84
99
  * @returns The context tool
85
100
  */
86
101
  const mapTamboToolToContextTool = (tool) => {
87
- const parameters = getParametersFromZodFunction(tool.toolSchema);
102
+ const parameters = (0, schema_1.getParametersFromToolSchema)(tool);
88
103
  return {
89
104
  name: tool.name,
90
105
  description: tool.description,
@@ -92,61 +107,29 @@ const mapTamboToolToContextTool = (tool) => {
92
107
  };
93
108
  };
94
109
  exports.mapTamboToolToContextTool = mapTamboToolToContextTool;
95
- function isJsonSchema(schema) {
96
- return (typeof schema === "object" &&
97
- schema !== null &&
98
- "type" in schema &&
99
- typeof schema.type === "string" &&
100
- schema.type === "object");
101
- }
102
- const getParametersFromZodFunction = (schema) => {
103
- if (isJsonSchema(schema)) {
104
- return [
105
- {
106
- name: "args",
107
- type: "object",
108
- description: schema.description ?? "",
109
- isRequired: true,
110
- schema: schema,
111
- },
112
- ];
113
- }
114
- const parameters = schema.parameters();
115
- return parameters.items.map((param, index) => {
116
- const name = `param${index + 1}`;
117
- const type = getZodBaseType(param);
118
- const description = param.description ?? "";
119
- const isRequired = !param.isOptional();
120
- const schema = (0, zod_to_json_schema_1.default)(param);
121
- return {
122
- name,
123
- type,
124
- description,
125
- isRequired,
126
- schema,
127
- };
128
- });
129
- };
130
- const getZodBaseType = (schema) => {
131
- const typeName = schema._def.typeName;
132
- switch (typeName) {
133
- case "ZodString":
134
- return "string";
135
- case "ZodNumber":
136
- return "number";
137
- case "ZodBoolean":
138
- return "boolean";
139
- case "ZodArray":
140
- return "array";
141
- case "ZodEnum":
142
- return "enum";
143
- case "ZodDate":
144
- return "date";
145
- case "ZodObject":
146
- return "object";
147
- default:
148
- console.warn("falling back to string for", typeName);
149
- return "string";
150
- }
110
+ /**
111
+ * Provides type safety for defining a Tambo Tool.
112
+ *
113
+ * Tambo uses the [standard-schema.dev](https://standard-schema.dev) spec which means you can use any Standard Schema
114
+ * compliant validator (Zod, Valibot, ArkType, etc.). This ensures the tool function args and output types are correctly
115
+ * inferred from the provided schemas.
116
+ * @example
117
+ * ```typescript
118
+ * import { z } from "zod/v4";
119
+ *
120
+ * const myTool = defineTamboTool({
121
+ * inputSchema: z.tuple([z.string()]),
122
+ * outputSchema: z.number(),
123
+ * tool: yourToolFunction,
124
+ * // ^-- (input: [string]) => number | Promise<number>
125
+ * // Types are inferred from and must match inputSchema/outputSchema definitions
126
+ * });
127
+ * ```
128
+ * @param tool The tool definition to register
129
+ * @returns The registered tool definition
130
+ */
131
+ const defineTool = (tool) => {
132
+ return tool;
151
133
  };
134
+ exports.defineTool = defineTool;
152
135
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":";;;;;;AAEA,4EAAiD;AAYjD;;;;;;GAMG;AACI,MAAM,sBAAsB,GAAG,CACpC,iBAAoC,EACpC,YAA+B,EAC/B,gBAAuC,EACT,EAAE;IAChC,MAAM,mBAAmB,GAAiC,EAAE,CAAC;IAE7D,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvE,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEzD,MAAM,YAAY,GAAG;YACnB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACtC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACvB,OAAO,IAAA,iCAAyB,EAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC;SACH,CAAC,MAAM,CAAC,CAAC,IAAI,EAAwC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAExE,mBAAmB,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AA3BW,QAAA,sBAAsB,0BA2BjC;AAEF;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,CAClC,YAA+B,EAC/B,gBAAuC,EAC1B,EAAE;IACf,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACjD,yEAAyE;QACzE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AARW,QAAA,oBAAoB,wBAQ/B;AAEF;;;;GAIG;AACI,MAAM,wBAAwB,GAAG,CACtC,SAA8B,EACzB,EAAE;IACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,0FAA0F;IAC1F,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACxE,yCAAyC;QACzC,OAAO,IAAA,4BAAe,EAAC,SAAS,CAAC,KAAgC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC,CAAC;AAdW,QAAA,wBAAwB,4BAcnC;AAEF;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CACtC,aAAqB,EACrB,iBAAoC,EACf,EAAE;IACvB,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,gCAAgC,aAAa,yBAAyB,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAbW,QAAA,wBAAwB,4BAanC;AAEF;;;;GAIG;AACI,MAAM,yBAAyB,GAAG,CACvC,IAAe,EACe,EAAE;IAChC,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEjE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,yBAAyB,6BAUpC;AAEF,SAAS,YAAY,CACnB,MAAe;IAEf,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,MAAM,IAAI,MAAM;QAChB,OAAQ,MAA4B,CAAC,IAAI,KAAK,QAAQ;QACrD,MAA2B,CAAC,IAAI,KAAK,QAAQ,CAC/C,CAAC;AACJ,CAAC;AAED,MAAM,4BAA4B,GAAG,CACnC,MAAgD,EAC/B,EAAE;IACnB,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,MAAM;aACf;SACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAe,MAAM,CAAC,UAAU,EAAE,CAAC;IACnD,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAiB,EAAE;QAC1D,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAC;QAEtC,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,WAAW;YACX,UAAU;YACV,MAAM;SACP,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAoB,EAAU,EAAE;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,OAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport {\n ComponentContextToolMetadata,\n ComponentRegistry,\n JSONSchemaLite,\n ParameterSpec,\n RegisteredComponent,\n TamboTool,\n TamboToolAssociations,\n TamboToolRegistry,\n} from \"../model/component-metadata\";\n\n/**\n * Get all the available components from the component registry\n * @param componentRegistry - The component registry\n * @param toolRegistry - The tool registry\n * @param toolAssociations - The tool associations\n * @returns The available components\n */\nexport const getAvailableComponents = (\n componentRegistry: ComponentRegistry,\n toolRegistry: TamboToolRegistry,\n toolAssociations: TamboToolAssociations,\n): TamboAI.AvailableComponent[] => {\n const availableComponents: TamboAI.AvailableComponent[] = [];\n\n for (const [name, componentEntry] of Object.entries(componentRegistry)) {\n const associatedToolNames = toolAssociations[name] || [];\n\n const contextTools = [\n ...associatedToolNames.map((toolName) => {\n const tool = toolRegistry[toolName];\n if (!tool) return null;\n return mapTamboToolToContextTool(tool);\n }),\n ].filter((tool): tool is ComponentContextToolMetadata => tool !== null);\n\n availableComponents.push({\n name: componentEntry.name,\n description: componentEntry.description,\n props: componentEntry.props,\n contextTools,\n });\n }\n\n return availableComponents;\n};\n\n/**\n * Get tools from tool registry that are not associated with any component\n * @param toolRegistry - The tool registry\n * @param toolAssociations - The tool associations\n * @returns The tools that are not associated with any component\n */\nexport const getUnassociatedTools = (\n toolRegistry: TamboToolRegistry,\n toolAssociations: TamboToolAssociations,\n): TamboTool[] => {\n return Object.values(toolRegistry).filter((tool) => {\n // Check if the tool's name appears in any of the tool association arrays\n return !Object.values(toolAssociations).flat().includes(tool.name);\n });\n};\n\n/**\n * Helper function to convert component props from Zod schema to JSON Schema\n * @param component - The component to convert\n * @returns The converted props\n */\nexport const convertPropsToJsonSchema = (\n component: RegisteredComponent,\n): any => {\n if (!component.props) {\n return component.props;\n }\n\n // Check if props is a Zod schema (we can't directly check the type, so we check for _def)\n if (component.props._def && typeof component.props.parse === \"function\") {\n // Use two-step type assertion for safety\n return zodToJsonSchema(component.props as unknown as z.ZodTypeAny);\n }\n\n return component.props;\n};\n\n/**\n * Get a component by name from the component registry\n * @param componentName - The name of the component to get\n * @param componentRegistry - The component registry\n * @returns The component registration information\n */\nexport const getComponentFromRegistry = (\n componentName: string,\n componentRegistry: ComponentRegistry,\n): RegisteredComponent => {\n const componentEntry = componentRegistry[componentName];\n\n if (!componentEntry) {\n throw new Error(\n `Tambo tried to use Component ${componentName}, but it was not found.`,\n );\n }\n\n return componentEntry;\n};\n\n/**\n * Map a Tambo tool to a context tool\n * @param tool - The tool to map\n * @returns The context tool\n */\nexport const mapTamboToolToContextTool = (\n tool: TamboTool,\n): ComponentContextToolMetadata => {\n const parameters = getParametersFromZodFunction(tool.toolSchema);\n\n return {\n name: tool.name,\n description: tool.description,\n parameters,\n };\n};\n\nfunction isJsonSchema(\n schema: unknown,\n): schema is ReturnType<typeof zodToJsonSchema> {\n return (\n typeof schema === \"object\" &&\n schema !== null &&\n \"type\" in schema &&\n typeof (schema as { type: unknown }).type === \"string\" &&\n (schema as { type: string }).type === \"object\"\n );\n}\n\nconst getParametersFromZodFunction = (\n schema: z.ZodFunction<any, any> | JSONSchemaLite,\n): ParameterSpec[] => {\n if (isJsonSchema(schema)) {\n return [\n {\n name: \"args\",\n type: \"object\",\n description: schema.description ?? \"\",\n isRequired: true,\n schema: schema,\n },\n ];\n }\n\n const parameters: z.ZodTuple = schema.parameters();\n return parameters.items.map((param, index): ParameterSpec => {\n const name = `param${index + 1}`;\n const type = getZodBaseType(param);\n const description = param.description ?? \"\";\n const isRequired = !param.isOptional();\n const schema = zodToJsonSchema(param);\n\n return {\n name,\n type,\n description,\n isRequired,\n schema,\n };\n });\n};\n\nconst getZodBaseType = (schema: z.ZodTypeAny): string => {\n const typeName = schema._def.typeName;\n switch (typeName) {\n case \"ZodString\":\n return \"string\";\n case \"ZodNumber\":\n return \"number\";\n case \"ZodBoolean\":\n return \"boolean\";\n case \"ZodArray\":\n return \"array\";\n case \"ZodEnum\":\n return \"enum\";\n case \"ZodDate\":\n return \"date\";\n case \"ZodObject\":\n return \"object\";\n default:\n console.warn(\"falling back to string for\", typeName);\n return \"string\";\n }\n};\n"]}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/util/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport {\n ComponentContextToolMetadata,\n ComponentRegistry,\n DefineToolFn,\n RegisteredComponent,\n TamboTool,\n TamboToolAssociations,\n TamboToolRegistry,\n TamboToolWithToolSchema,\n} from \"../model/component-metadata\";\nimport {\n getParametersFromToolSchema,\n getZodFunctionArgs,\n getZodFunctionReturns,\n isStandardSchema,\n schemaToJsonSchema,\n} from \"../schema\";\n\n/**\n * Get all the available components from the component registry\n * @param componentRegistry - The component registry\n * @param toolRegistry - The tool registry\n * @param toolAssociations - The tool associations\n * @returns The available components\n */\nexport const getAvailableComponents = (\n componentRegistry: ComponentRegistry,\n toolRegistry: TamboToolRegistry,\n toolAssociations: TamboToolAssociations,\n): TamboAI.AvailableComponent[] => {\n const availableComponents: TamboAI.AvailableComponent[] = [];\n\n for (const [name, componentEntry] of Object.entries(componentRegistry)) {\n const associatedToolNames = toolAssociations[name] || [];\n\n const contextTools = associatedToolNames\n .map((toolName) => {\n const tool = toolRegistry[toolName];\n if (!tool) return null;\n return mapTamboToolToContextTool(tool);\n })\n .filter((tool): tool is ComponentContextToolMetadata => tool !== null);\n\n availableComponents.push({\n name: componentEntry.name,\n description: componentEntry.description,\n props: componentEntry.props,\n contextTools,\n });\n }\n\n return availableComponents;\n};\n\n/**\n * Get tools from tool registry that are not associated with any component\n * @param toolRegistry - The tool registry\n * @param toolAssociations - The tool associations\n * @returns The tools that are not associated with any component\n */\nexport const getUnassociatedTools = (\n toolRegistry: TamboToolRegistry,\n toolAssociations: TamboToolAssociations,\n): (TamboTool | TamboToolWithToolSchema)[] => {\n return Object.values(toolRegistry).filter((tool) => {\n // Check if the tool's name appears in any of the tool association arrays\n return !Object.values(toolAssociations).flat().includes(tool.name);\n });\n};\n\n/**\n * Helper function to convert component props from Standard Schema or JSON Schema\n * @param component - The component to convert\n * @returns The converted props as JSON Schema\n */\nexport const convertPropsToJsonSchema = (\n component: RegisteredComponent,\n): unknown => {\n if (!component.props) {\n return component.props;\n }\n\n // Check if props is a Standard Schema (Zod, Valibot, ArkType, etc.)\n if (isStandardSchema(component.props)) {\n return schemaToJsonSchema(component.props);\n }\n\n // Already JSON Schema or unknown format - return as-is\n return component.props;\n};\n\n/**\n * Adapt a Tambo tool defined with function schema to a standard Tambo tool\n * @param tool - The Tambo tool with function schema\n * @returns The adapted Tambo tool\n */\nexport function adaptToolFromFnSchema(\n tool: TamboTool | TamboToolWithToolSchema,\n): TamboTool {\n if (!(\"toolSchema\" in tool)) {\n return tool;\n }\n\n return {\n name: tool.name,\n description: tool.description,\n tool: tool.tool,\n inputSchema: getZodFunctionArgs(tool.toolSchema),\n outputSchema: getZodFunctionReturns(tool.toolSchema),\n };\n}\n\n/**\n * Get a component by name from the component registry\n * @param componentName - The name of the component to get\n * @param componentRegistry - The component registry\n * @returns The component registration information\n */\nexport const getComponentFromRegistry = (\n componentName: string,\n componentRegistry: ComponentRegistry,\n): RegisteredComponent => {\n const componentEntry = componentRegistry[componentName];\n\n if (!componentEntry) {\n throw new Error(\n `Tambo tried to use Component ${componentName}, but it was not found.`,\n );\n }\n\n return componentEntry;\n};\n\n/**\n * Map a Tambo tool to a context tool\n * @param tool - The tool to map (supports both new inputSchema and deprecated toolSchema interfaces)\n * @returns The context tool\n */\nexport const mapTamboToolToContextTool = (\n tool: TamboTool | TamboToolWithToolSchema,\n): ComponentContextToolMetadata => {\n const parameters = getParametersFromToolSchema(tool);\n\n return {\n name: tool.name,\n description: tool.description,\n parameters,\n };\n};\n\n/**\n * Provides type safety for defining a Tambo Tool.\n *\n * Tambo uses the [standard-schema.dev](https://standard-schema.dev) spec which means you can use any Standard Schema\n * compliant validator (Zod, Valibot, ArkType, etc.). This ensures the tool function args and output types are correctly\n * inferred from the provided schemas.\n * @example\n * ```typescript\n * import { z } from \"zod/v4\";\n *\n * const myTool = defineTamboTool({\n * inputSchema: z.tuple([z.string()]),\n * outputSchema: z.number(),\n * tool: yourToolFunction,\n * // ^-- (input: [string]) => number | Promise<number>\n * // Types are inferred from and must match inputSchema/outputSchema definitions\n * });\n * ```\n * @param tool The tool definition to register\n * @returns The registered tool definition\n */\nexport const defineTool: DefineToolFn = (tool: any) => {\n return tool;\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../src/util/registry.test.ts"],"names":[],"mappings":""}