@tambo-ai/react 1.0.3 → 1.2.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 (458) hide show
  1. package/README.md +1 -1
  2. package/dist/context-helpers/current-interactables-context-helper.d.ts +16 -2
  3. package/dist/context-helpers/current-interactables-context-helper.d.ts.map +1 -1
  4. package/dist/context-helpers/current-interactables-context-helper.js.map +1 -1
  5. package/dist/context-helpers/current-interactables-context-helper.test.d.ts +2 -0
  6. package/dist/context-helpers/current-interactables-context-helper.test.d.ts.map +1 -0
  7. package/dist/context-helpers/current-interactables-context-helper.test.js +70 -0
  8. package/dist/context-helpers/current-interactables-context-helper.test.js.map +1 -0
  9. package/dist/mcp/elicitation.d.ts +3 -37
  10. package/dist/mcp/elicitation.d.ts.map +1 -1
  11. package/dist/mcp/elicitation.js +7 -24
  12. package/dist/mcp/elicitation.js.map +1 -1
  13. package/dist/mcp/index.d.ts +4 -4
  14. package/dist/mcp/index.d.ts.map +1 -1
  15. package/dist/mcp/index.js +2 -2
  16. package/dist/mcp/index.js.map +1 -1
  17. package/dist/mcp/mcp-client.test.js +17 -17
  18. package/dist/mcp/mcp-client.test.js.map +1 -1
  19. package/dist/mcp/mcp-hooks.d.ts.map +1 -1
  20. package/dist/mcp/mcp-hooks.js +8 -5
  21. package/dist/mcp/mcp-hooks.js.map +1 -1
  22. package/dist/mcp/mcp-hooks.test.js +30 -29
  23. package/dist/mcp/mcp-hooks.test.js.map +1 -1
  24. package/dist/mcp/tambo-mcp-provider.d.ts +6 -9
  25. package/dist/mcp/tambo-mcp-provider.d.ts.map +1 -1
  26. package/dist/mcp/tambo-mcp-provider.js +9 -13
  27. package/dist/mcp/tambo-mcp-provider.js.map +1 -1
  28. package/dist/mcp/tambo-mcp-provider.test.js +26 -25
  29. package/dist/mcp/tambo-mcp-provider.test.js.map +1 -1
  30. package/dist/mcp/use-mcp-servers.test.js +2 -1
  31. package/dist/mcp/use-mcp-servers.test.js.map +1 -1
  32. package/dist/model/component-metadata.d.ts +7 -372
  33. package/dist/model/component-metadata.d.ts.map +1 -1
  34. package/dist/model/component-metadata.js.map +1 -1
  35. package/dist/model/validate-input.test.d.ts +2 -0
  36. package/dist/model/validate-input.test.d.ts.map +1 -0
  37. package/dist/model/validate-input.test.js +38 -0
  38. package/dist/model/validate-input.test.js.map +1 -0
  39. package/dist/providers/tambo-interactable-provider.d.ts +7 -7
  40. package/dist/providers/tambo-registry-provider.d.ts +1 -1
  41. package/dist/providers/tambo-registry-provider.d.ts.map +1 -1
  42. package/dist/providers/tambo-registry-provider.js.map +1 -1
  43. package/dist/providers/tambo-registry-schema-compat.test.js +4 -4
  44. package/dist/providers/tambo-registry-schema-compat.test.js.map +1 -1
  45. package/dist/schema/index.d.ts +2 -4
  46. package/dist/schema/index.d.ts.map +1 -1
  47. package/dist/schema/index.js +9 -11
  48. package/dist/schema/index.js.map +1 -1
  49. package/dist/schema/json-schema.d.ts +1 -17
  50. package/dist/schema/json-schema.d.ts.map +1 -1
  51. package/dist/schema/json-schema.js +5 -69
  52. package/dist/schema/json-schema.js.map +1 -1
  53. package/dist/schema/schema.test.js +24 -25
  54. package/dist/schema/schema.test.js.map +1 -1
  55. package/dist/schema/standard-schema.test.js +25 -25
  56. package/dist/schema/standard-schema.test.js.map +1 -1
  57. package/dist/schema/validate.test.js +33 -33
  58. package/dist/schema/validate.test.js.map +1 -1
  59. package/dist/testing/tools.d.ts +4 -4
  60. package/dist/testing/tools.test.d.ts +2 -0
  61. package/dist/testing/tools.test.d.ts.map +1 -0
  62. package/dist/testing/tools.test.js +60 -0
  63. package/dist/testing/tools.test.js.map +1 -0
  64. package/dist/util/mcp-server-utils.d.ts +1 -1
  65. package/dist/util/mcp-server-utils.d.ts.map +1 -1
  66. package/dist/util/mcp-server-utils.js +4 -4
  67. package/dist/util/mcp-server-utils.js.map +1 -1
  68. package/dist/util/mcp-server-utils.test.js +27 -27
  69. package/dist/util/mcp-server-utils.test.js.map +1 -1
  70. package/dist/util/registry.js +1 -1
  71. package/dist/util/registry.js.map +1 -1
  72. package/dist/util/resource-content-resolver.js +5 -5
  73. package/dist/util/resource-content-resolver.js.map +1 -1
  74. package/dist/util/resource-content-resolver.test.js +6 -6
  75. package/dist/util/resource-content-resolver.test.js.map +1 -1
  76. package/dist/util/tool-caller.test.d.ts +2 -0
  77. package/dist/util/tool-caller.test.d.ts.map +1 -0
  78. package/dist/util/tool-caller.test.js +71 -0
  79. package/dist/util/tool-caller.test.js.map +1 -0
  80. package/dist/v1/__tests__/v1-interactables.test.js +1 -0
  81. package/dist/v1/__tests__/v1-interactables.test.js.map +1 -1
  82. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts +1 -1
  83. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
  84. package/dist/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
  85. package/dist/v1/hooks/use-tambo-v1-component-state.js +2 -2
  86. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  87. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +1 -1
  88. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  89. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +1 -1
  90. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  91. package/dist/v1/hooks/use-tambo-v1-send-message.js +17 -17
  92. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  93. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +1 -1
  94. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  95. package/dist/v1/hooks/use-tambo-v1-stream-status.js +2 -2
  96. package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  97. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +9 -5
  98. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  99. package/dist/v1/hooks/use-tambo-v1-suggestions.js +2 -2
  100. package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  101. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +104 -0
  102. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  103. package/dist/v1/hooks/use-tambo-v1.d.ts +7 -6
  104. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  105. package/dist/v1/hooks/use-tambo-v1.js +2 -2
  106. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  107. package/dist/v1/hooks/use-tambo-v1.test.js +23 -23
  108. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  109. package/dist/v1/index.d.ts +6 -6
  110. package/dist/v1/index.d.ts.map +1 -1
  111. package/dist/v1/index.js +2 -2
  112. package/dist/v1/index.js.map +1 -1
  113. package/dist/v1/providers/tambo-v1-provider.d.ts +2 -1
  114. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  115. package/dist/v1/providers/tambo-v1-provider.js +2 -0
  116. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  117. package/dist/v1/providers/tambo-v1-stream-context.d.ts +2 -2
  118. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  119. package/dist/v1/providers/tambo-v1-stream-context.js +9 -9
  120. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  121. package/dist/v1/providers/tambo-v1-stream-context.test.js +35 -0
  122. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  123. package/dist/v1/providers/tambo-v1-stub-provider.d.ts +1 -1
  124. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  125. package/dist/v1/providers/tambo-v1-stub-provider.js +1 -1
  126. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  127. package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  128. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -1
  129. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  130. package/dist/v1/providers/tambo-v1-thread-input-provider.js +33 -17
  131. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  132. package/dist/v1/types/event.test.js +13 -13
  133. package/dist/v1/types/event.test.js.map +1 -1
  134. package/dist/v1/types/message.d.ts +12 -109
  135. package/dist/v1/types/message.d.ts.map +1 -1
  136. package/dist/v1/types/message.js +0 -7
  137. package/dist/v1/types/message.js.map +1 -1
  138. package/dist/v1/utils/event-accumulator.test.js +183 -184
  139. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  140. package/dist/v1/utils/json-patch.test.js +4 -4
  141. package/dist/v1/utils/json-patch.test.js.map +1 -1
  142. package/dist/v1/utils/keyed-throttle.test.js +12 -12
  143. package/dist/v1/utils/keyed-throttle.test.js.map +1 -1
  144. package/dist/v1/utils/registry-conversion.test.js +13 -13
  145. package/dist/v1/utils/registry-conversion.test.js.map +1 -1
  146. package/dist/v1/utils/stream-handler.test.js +5 -5
  147. package/dist/v1/utils/stream-handler.test.js.map +1 -1
  148. package/dist/v1/utils/tool-call-tracker.test.js +15 -9
  149. package/dist/v1/utils/tool-call-tracker.test.js.map +1 -1
  150. package/dist/v1/utils/tool-executor.test.js +25 -26
  151. package/dist/v1/utils/tool-executor.test.js.map +1 -1
  152. package/dist/v1/utils/unstrictify.test.js +16 -16
  153. package/dist/v1/utils/unstrictify.test.js.map +1 -1
  154. package/esm/context-helpers/current-interactables-context-helper.d.ts +16 -2
  155. package/esm/context-helpers/current-interactables-context-helper.d.ts.map +1 -1
  156. package/esm/context-helpers/current-interactables-context-helper.js.map +1 -1
  157. package/esm/context-helpers/current-interactables-context-helper.test.d.ts +2 -0
  158. package/esm/context-helpers/current-interactables-context-helper.test.d.ts.map +1 -0
  159. package/esm/context-helpers/current-interactables-context-helper.test.js +68 -0
  160. package/esm/context-helpers/current-interactables-context-helper.test.js.map +1 -0
  161. package/esm/mcp/elicitation.d.ts +3 -37
  162. package/esm/mcp/elicitation.d.ts.map +1 -1
  163. package/esm/mcp/elicitation.js +4 -24
  164. package/esm/mcp/elicitation.js.map +1 -1
  165. package/esm/mcp/index.d.ts +4 -4
  166. package/esm/mcp/index.d.ts.map +1 -1
  167. package/esm/mcp/index.js +1 -1
  168. package/esm/mcp/index.js.map +1 -1
  169. package/esm/mcp/mcp-client.test.js +1 -1
  170. package/esm/mcp/mcp-client.test.js.map +1 -1
  171. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  172. package/esm/mcp/mcp-hooks.js +4 -1
  173. package/esm/mcp/mcp-hooks.js.map +1 -1
  174. package/esm/mcp/mcp-hooks.test.js +3 -2
  175. package/esm/mcp/mcp-hooks.test.js.map +1 -1
  176. package/esm/mcp/tambo-mcp-provider.d.ts +6 -9
  177. package/esm/mcp/tambo-mcp-provider.d.ts.map +1 -1
  178. package/esm/mcp/tambo-mcp-provider.js +4 -8
  179. package/esm/mcp/tambo-mcp-provider.js.map +1 -1
  180. package/esm/mcp/tambo-mcp-provider.test.js +3 -2
  181. package/esm/mcp/tambo-mcp-provider.test.js.map +1 -1
  182. package/esm/mcp/use-mcp-servers.test.js +2 -1
  183. package/esm/mcp/use-mcp-servers.test.js.map +1 -1
  184. package/esm/model/component-metadata.d.ts +7 -372
  185. package/esm/model/component-metadata.d.ts.map +1 -1
  186. package/esm/model/component-metadata.js.map +1 -1
  187. package/esm/model/validate-input.test.d.ts +2 -0
  188. package/esm/model/validate-input.test.d.ts.map +1 -0
  189. package/esm/model/validate-input.test.js +36 -0
  190. package/esm/model/validate-input.test.js.map +1 -0
  191. package/esm/providers/tambo-interactable-provider.d.ts +7 -7
  192. package/esm/providers/tambo-registry-provider.d.ts +1 -1
  193. package/esm/providers/tambo-registry-provider.d.ts.map +1 -1
  194. package/esm/providers/tambo-registry-provider.js.map +1 -1
  195. package/esm/providers/tambo-registry-schema-compat.test.js +4 -4
  196. package/esm/providers/tambo-registry-schema-compat.test.js.map +1 -1
  197. package/esm/schema/index.d.ts +2 -4
  198. package/esm/schema/index.d.ts.map +1 -1
  199. package/esm/schema/index.js +2 -4
  200. package/esm/schema/index.js.map +1 -1
  201. package/esm/schema/json-schema.d.ts +1 -17
  202. package/esm/schema/json-schema.d.ts.map +1 -1
  203. package/esm/schema/json-schema.js +2 -67
  204. package/esm/schema/json-schema.js.map +1 -1
  205. package/esm/schema/schema.test.js +1 -2
  206. package/esm/schema/schema.test.js.map +1 -1
  207. package/esm/schema/standard-schema.test.js +1 -1
  208. package/esm/schema/standard-schema.test.js.map +1 -1
  209. package/esm/schema/validate.test.js +1 -1
  210. package/esm/schema/validate.test.js.map +1 -1
  211. package/esm/testing/tools.d.ts +4 -4
  212. package/esm/testing/tools.test.d.ts +2 -0
  213. package/esm/testing/tools.test.d.ts.map +1 -0
  214. package/esm/testing/tools.test.js +58 -0
  215. package/esm/testing/tools.test.js.map +1 -0
  216. package/esm/util/mcp-server-utils.d.ts +1 -1
  217. package/esm/util/mcp-server-utils.d.ts.map +1 -1
  218. package/esm/util/mcp-server-utils.js +1 -1
  219. package/esm/util/mcp-server-utils.js.map +1 -1
  220. package/esm/util/mcp-server-utils.test.js +1 -1
  221. package/esm/util/mcp-server-utils.test.js.map +1 -1
  222. package/esm/util/registry.js +1 -1
  223. package/esm/util/registry.js.map +1 -1
  224. package/esm/util/resource-content-resolver.js +1 -1
  225. package/esm/util/resource-content-resolver.js.map +1 -1
  226. package/esm/util/resource-content-resolver.test.js +2 -2
  227. package/esm/util/resource-content-resolver.test.js.map +1 -1
  228. package/esm/util/tool-caller.test.d.ts +2 -0
  229. package/esm/util/tool-caller.test.d.ts.map +1 -0
  230. package/esm/util/tool-caller.test.js +69 -0
  231. package/esm/util/tool-caller.test.js.map +1 -0
  232. package/esm/v1/__tests__/v1-interactables.test.js +1 -0
  233. package/esm/v1/__tests__/v1-interactables.test.js.map +1 -1
  234. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts +1 -1
  235. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
  236. package/esm/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
  237. package/esm/v1/hooks/use-tambo-v1-component-state.js +1 -1
  238. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  239. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +1 -1
  240. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  241. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +1 -1
  242. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  243. package/esm/v1/hooks/use-tambo-v1-send-message.js +6 -6
  244. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  245. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +1 -1
  246. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  247. package/esm/v1/hooks/use-tambo-v1-stream-status.js +1 -1
  248. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  249. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +9 -5
  250. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  251. package/esm/v1/hooks/use-tambo-v1-suggestions.js +1 -1
  252. package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  253. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +104 -0
  254. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  255. package/esm/v1/hooks/use-tambo-v1.d.ts +7 -6
  256. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  257. package/esm/v1/hooks/use-tambo-v1.js +1 -1
  258. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  259. package/esm/v1/hooks/use-tambo-v1.test.js +22 -22
  260. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  261. package/esm/v1/index.d.ts +6 -6
  262. package/esm/v1/index.d.ts.map +1 -1
  263. package/esm/v1/index.js +1 -1
  264. package/esm/v1/index.js.map +1 -1
  265. package/esm/v1/providers/tambo-v1-provider.d.ts +2 -1
  266. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  267. package/esm/v1/providers/tambo-v1-provider.js +2 -0
  268. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  269. package/esm/v1/providers/tambo-v1-stream-context.d.ts +2 -2
  270. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  271. package/esm/v1/providers/tambo-v1-stream-context.js +1 -1
  272. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  273. package/esm/v1/providers/tambo-v1-stream-context.test.js +35 -0
  274. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  275. package/esm/v1/providers/tambo-v1-stub-provider.d.ts +1 -1
  276. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  277. package/esm/v1/providers/tambo-v1-stub-provider.js +1 -1
  278. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  279. package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  280. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -1
  281. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  282. package/esm/v1/providers/tambo-v1-thread-input-provider.js +32 -16
  283. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  284. package/esm/v1/types/event.test.js +1 -1
  285. package/esm/v1/types/event.test.js.map +1 -1
  286. package/esm/v1/types/message.d.ts +12 -109
  287. package/esm/v1/types/message.d.ts.map +1 -1
  288. package/esm/v1/types/message.js +0 -7
  289. package/esm/v1/types/message.js.map +1 -1
  290. package/esm/v1/utils/event-accumulator.test.js +2 -3
  291. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  292. package/esm/v1/utils/json-patch.test.js +1 -1
  293. package/esm/v1/utils/json-patch.test.js.map +1 -1
  294. package/esm/v1/utils/keyed-throttle.test.js +1 -1
  295. package/esm/v1/utils/keyed-throttle.test.js.map +1 -1
  296. package/esm/v1/utils/registry-conversion.test.js +1 -1
  297. package/esm/v1/utils/registry-conversion.test.js.map +1 -1
  298. package/esm/v1/utils/stream-handler.test.js +1 -1
  299. package/esm/v1/utils/stream-handler.test.js.map +1 -1
  300. package/esm/v1/utils/tool-call-tracker.test.js +9 -3
  301. package/esm/v1/utils/tool-call-tracker.test.js.map +1 -1
  302. package/esm/v1/utils/tool-executor.test.js +1 -2
  303. package/esm/v1/utils/tool-executor.test.js.map +1 -1
  304. package/esm/v1/utils/unstrictify.test.js +1 -1
  305. package/esm/v1/utils/unstrictify.test.js.map +1 -1
  306. package/package.json +12 -15
  307. package/dist/mcp/mcp-client.d.ts +0 -185
  308. package/dist/mcp/mcp-client.d.ts.map +0 -1
  309. package/dist/mcp/mcp-client.js +0 -219
  310. package/dist/mcp/mcp-client.js.map +0 -1
  311. package/dist/mcp/mcp-constants.d.ts +0 -19
  312. package/dist/mcp/mcp-constants.d.ts.map +0 -1
  313. package/dist/mcp/mcp-constants.js +0 -21
  314. package/dist/mcp/mcp-constants.js.map +0 -1
  315. package/dist/model/mcp-server-info.d.ts +0 -76
  316. package/dist/model/mcp-server-info.d.ts.map +0 -1
  317. package/dist/model/mcp-server-info.js +0 -29
  318. package/dist/model/mcp-server-info.js.map +0 -1
  319. package/dist/schema/schema.d.ts +0 -49
  320. package/dist/schema/schema.d.ts.map +0 -1
  321. package/dist/schema/schema.js +0 -129
  322. package/dist/schema/schema.js.map +0 -1
  323. package/dist/schema/standard-schema.d.ts +0 -22
  324. package/dist/schema/standard-schema.d.ts.map +0 -1
  325. package/dist/schema/standard-schema.js +0 -42
  326. package/dist/schema/standard-schema.js.map +0 -1
  327. package/dist/schema/validate.d.ts +0 -14
  328. package/dist/schema/validate.d.ts.map +0 -1
  329. package/dist/schema/validate.js +0 -148
  330. package/dist/schema/validate.js.map +0 -1
  331. package/dist/v1/types/auth.d.ts +0 -24
  332. package/dist/v1/types/auth.d.ts.map +0 -1
  333. package/dist/v1/types/auth.js +0 -3
  334. package/dist/v1/types/auth.js.map +0 -1
  335. package/dist/v1/types/event.d.ts +0 -89
  336. package/dist/v1/types/event.d.ts.map +0 -1
  337. package/dist/v1/types/event.js +0 -57
  338. package/dist/v1/types/event.js.map +0 -1
  339. package/dist/v1/types/thread.d.ts +0 -58
  340. package/dist/v1/types/thread.d.ts.map +0 -1
  341. package/dist/v1/types/thread.js +0 -9
  342. package/dist/v1/types/thread.js.map +0 -1
  343. package/dist/v1/types/tool-choice.d.ts +0 -8
  344. package/dist/v1/types/tool-choice.d.ts.map +0 -1
  345. package/dist/v1/types/tool-choice.js +0 -3
  346. package/dist/v1/types/tool-choice.js.map +0 -1
  347. package/dist/v1/utils/event-accumulator.d.ts +0 -165
  348. package/dist/v1/utils/event-accumulator.d.ts.map +0 -1
  349. package/dist/v1/utils/event-accumulator.js +0 -1277
  350. package/dist/v1/utils/event-accumulator.js.map +0 -1
  351. package/dist/v1/utils/json-patch.d.ts +0 -18
  352. package/dist/v1/utils/json-patch.d.ts.map +0 -1
  353. package/dist/v1/utils/json-patch.js +0 -35
  354. package/dist/v1/utils/json-patch.js.map +0 -1
  355. package/dist/v1/utils/keyed-throttle.d.ts +0 -42
  356. package/dist/v1/utils/keyed-throttle.d.ts.map +0 -1
  357. package/dist/v1/utils/keyed-throttle.js +0 -86
  358. package/dist/v1/utils/keyed-throttle.js.map +0 -1
  359. package/dist/v1/utils/registry-conversion.d.ts +0 -53
  360. package/dist/v1/utils/registry-conversion.d.ts.map +0 -1
  361. package/dist/v1/utils/registry-conversion.js +0 -115
  362. package/dist/v1/utils/registry-conversion.js.map +0 -1
  363. package/dist/v1/utils/stream-handler.d.ts +0 -45
  364. package/dist/v1/utils/stream-handler.d.ts.map +0 -1
  365. package/dist/v1/utils/stream-handler.js +0 -47
  366. package/dist/v1/utils/stream-handler.js.map +0 -1
  367. package/dist/v1/utils/thread-utils.d.ts +0 -16
  368. package/dist/v1/utils/thread-utils.d.ts.map +0 -1
  369. package/dist/v1/utils/thread-utils.js +0 -34
  370. package/dist/v1/utils/thread-utils.js.map +0 -1
  371. package/dist/v1/utils/tool-call-tracker.d.ts +0 -73
  372. package/dist/v1/utils/tool-call-tracker.d.ts.map +0 -1
  373. package/dist/v1/utils/tool-call-tracker.js +0 -180
  374. package/dist/v1/utils/tool-call-tracker.js.map +0 -1
  375. package/dist/v1/utils/tool-executor.d.ts +0 -67
  376. package/dist/v1/utils/tool-executor.d.ts.map +0 -1
  377. package/dist/v1/utils/tool-executor.js +0 -160
  378. package/dist/v1/utils/tool-executor.js.map +0 -1
  379. package/dist/v1/utils/unstrictify.d.ts +0 -32
  380. package/dist/v1/utils/unstrictify.d.ts.map +0 -1
  381. package/dist/v1/utils/unstrictify.js +0 -159
  382. package/dist/v1/utils/unstrictify.js.map +0 -1
  383. package/esm/mcp/mcp-client.d.ts +0 -185
  384. package/esm/mcp/mcp-client.d.ts.map +0 -1
  385. package/esm/mcp/mcp-client.js +0 -216
  386. package/esm/mcp/mcp-client.js.map +0 -1
  387. package/esm/mcp/mcp-constants.d.ts +0 -19
  388. package/esm/mcp/mcp-constants.d.ts.map +0 -1
  389. package/esm/mcp/mcp-constants.js +0 -18
  390. package/esm/mcp/mcp-constants.js.map +0 -1
  391. package/esm/model/mcp-server-info.d.ts +0 -76
  392. package/esm/model/mcp-server-info.d.ts.map +0 -1
  393. package/esm/model/mcp-server-info.js +0 -25
  394. package/esm/model/mcp-server-info.js.map +0 -1
  395. package/esm/schema/schema.d.ts +0 -49
  396. package/esm/schema/schema.d.ts.map +0 -1
  397. package/esm/schema/schema.js +0 -124
  398. package/esm/schema/schema.js.map +0 -1
  399. package/esm/schema/standard-schema.d.ts +0 -22
  400. package/esm/schema/standard-schema.d.ts.map +0 -1
  401. package/esm/schema/standard-schema.js +0 -39
  402. package/esm/schema/standard-schema.js.map +0 -1
  403. package/esm/schema/validate.d.ts +0 -14
  404. package/esm/schema/validate.d.ts.map +0 -1
  405. package/esm/schema/validate.js +0 -145
  406. package/esm/schema/validate.js.map +0 -1
  407. package/esm/v1/types/auth.d.ts +0 -24
  408. package/esm/v1/types/auth.d.ts.map +0 -1
  409. package/esm/v1/types/auth.js +0 -2
  410. package/esm/v1/types/auth.js.map +0 -1
  411. package/esm/v1/types/event.d.ts +0 -89
  412. package/esm/v1/types/event.d.ts.map +0 -1
  413. package/esm/v1/types/event.js +0 -53
  414. package/esm/v1/types/event.js.map +0 -1
  415. package/esm/v1/types/thread.d.ts +0 -58
  416. package/esm/v1/types/thread.d.ts.map +0 -1
  417. package/esm/v1/types/thread.js +0 -8
  418. package/esm/v1/types/thread.js.map +0 -1
  419. package/esm/v1/types/tool-choice.d.ts +0 -8
  420. package/esm/v1/types/tool-choice.d.ts.map +0 -1
  421. package/esm/v1/types/tool-choice.js +0 -2
  422. package/esm/v1/types/tool-choice.js.map +0 -1
  423. package/esm/v1/utils/event-accumulator.d.ts +0 -165
  424. package/esm/v1/utils/event-accumulator.d.ts.map +0 -1
  425. package/esm/v1/utils/event-accumulator.js +0 -1268
  426. package/esm/v1/utils/event-accumulator.js.map +0 -1
  427. package/esm/v1/utils/json-patch.d.ts +0 -18
  428. package/esm/v1/utils/json-patch.d.ts.map +0 -1
  429. package/esm/v1/utils/json-patch.js +0 -32
  430. package/esm/v1/utils/json-patch.js.map +0 -1
  431. package/esm/v1/utils/keyed-throttle.d.ts +0 -42
  432. package/esm/v1/utils/keyed-throttle.d.ts.map +0 -1
  433. package/esm/v1/utils/keyed-throttle.js +0 -83
  434. package/esm/v1/utils/keyed-throttle.js.map +0 -1
  435. package/esm/v1/utils/registry-conversion.d.ts +0 -53
  436. package/esm/v1/utils/registry-conversion.d.ts.map +0 -1
  437. package/esm/v1/utils/registry-conversion.js +0 -109
  438. package/esm/v1/utils/registry-conversion.js.map +0 -1
  439. package/esm/v1/utils/stream-handler.d.ts +0 -45
  440. package/esm/v1/utils/stream-handler.d.ts.map +0 -1
  441. package/esm/v1/utils/stream-handler.js +0 -44
  442. package/esm/v1/utils/stream-handler.js.map +0 -1
  443. package/esm/v1/utils/thread-utils.d.ts +0 -16
  444. package/esm/v1/utils/thread-utils.d.ts.map +0 -1
  445. package/esm/v1/utils/thread-utils.js +0 -31
  446. package/esm/v1/utils/thread-utils.js.map +0 -1
  447. package/esm/v1/utils/tool-call-tracker.d.ts +0 -73
  448. package/esm/v1/utils/tool-call-tracker.d.ts.map +0 -1
  449. package/esm/v1/utils/tool-call-tracker.js +0 -176
  450. package/esm/v1/utils/tool-call-tracker.js.map +0 -1
  451. package/esm/v1/utils/tool-executor.d.ts +0 -67
  452. package/esm/v1/utils/tool-executor.d.ts.map +0 -1
  453. package/esm/v1/utils/tool-executor.js +0 -154
  454. package/esm/v1/utils/tool-executor.js.map +0 -1
  455. package/esm/v1/utils/unstrictify.d.ts +0 -32
  456. package/esm/v1/utils/unstrictify.d.ts.map +0 -1
  457. package/esm/v1/utils/unstrictify.js +0 -155
  458. package/esm/v1/utils/unstrictify.js.map +0 -1
@@ -36,8 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const z3 = __importStar(require("zod/v3"));
37
37
  const z4 = __importStar(require("zod/v4"));
38
38
  const json_schema_1 = require("./json-schema");
39
- const schema_1 = require("./schema");
40
- const standard_schema_1 = require("./standard-schema");
39
+ const client_1 = require("@tambo-ai/client");
41
40
  describe("schema utilities", () => {
42
41
  describe("looksLikeJSONSchema", () => {
43
42
  it("returns true for a basic JSON Schema object", () => {
@@ -61,7 +60,7 @@ describe("schema utilities", () => {
61
60
  const zodSchema = z4.object({
62
61
  name: z4.string(),
63
62
  });
64
- expect((0, standard_schema_1.isStandardSchema)(zodSchema)).toBe(true);
63
+ expect((0, client_1.isStandardSchema)(zodSchema)).toBe(true);
65
64
  expect((0, json_schema_1.looksLikeJSONSchema)(zodSchema)).toBe(false);
66
65
  });
67
66
  it("returns false for arbitrary objects that do not resemble JSON Schema", () => {
@@ -86,7 +85,7 @@ describe("schema utilities", () => {
86
85
  }),
87
86
  outputSchema: z4.void(),
88
87
  };
89
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
88
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
90
89
  expect(params).toHaveLength(3);
91
90
  const queryParam = params.find((p) => p.name === "query");
92
91
  expect(queryParam).toBeDefined();
@@ -115,7 +114,7 @@ describe("schema utilities", () => {
115
114
  }),
116
115
  outputSchema: z3.void(),
117
116
  };
118
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
117
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
119
118
  expect(params).toHaveLength(2);
120
119
  const nameParam = params.find((p) => p.name === "name");
121
120
  expect(nameParam).toBeDefined();
@@ -142,7 +141,7 @@ describe("schema utilities", () => {
142
141
  },
143
142
  outputSchema: {},
144
143
  };
145
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
144
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
146
145
  expect(params).toHaveLength(3);
147
146
  const idParam = params.find((p) => p.name === "id");
148
147
  expect(idParam).toBeDefined();
@@ -166,7 +165,7 @@ describe("schema utilities", () => {
166
165
  inputSchema: z4.object({}),
167
166
  outputSchema: z4.void(),
168
167
  };
169
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
168
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
170
169
  expect(params).toHaveLength(0);
171
170
  });
172
171
  it("handles nested object schemas", () => {
@@ -187,7 +186,7 @@ describe("schema utilities", () => {
187
186
  }),
188
187
  outputSchema: z4.void(),
189
188
  };
190
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
189
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
191
190
  expect(params).toHaveLength(2);
192
191
  const userParam = params.find((p) => p.name === "user");
193
192
  expect(userParam).toBeDefined();
@@ -208,7 +207,7 @@ describe("schema utilities", () => {
208
207
  }),
209
208
  outputSchema: z4.void(),
210
209
  };
211
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
210
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
212
211
  expect(params).toHaveLength(2);
213
212
  const tagsParam = params.find((p) => p.name === "tags");
214
213
  expect(tagsParam).toBeDefined();
@@ -233,7 +232,7 @@ describe("schema utilities", () => {
233
232
  }),
234
233
  outputSchema: z4.void(),
235
234
  };
236
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
235
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
237
236
  expect(params).toHaveLength(2);
238
237
  const statusParam = params.find((p) => p.name === "status");
239
238
  expect(statusParam).toBeDefined();
@@ -255,7 +254,7 @@ describe("schema utilities", () => {
255
254
  }),
256
255
  outputSchema: z4.void(),
257
256
  };
258
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
257
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
259
258
  expect(params).toHaveLength(2);
260
259
  const nameParam = params.find((p) => p.name === "name");
261
260
  expect(nameParam).toBeDefined();
@@ -278,7 +277,7 @@ describe("schema utilities", () => {
278
277
  }),
279
278
  outputSchema: z4.void(),
280
279
  };
281
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
280
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
282
281
  expect(params).toHaveLength(1);
283
282
  expect(params[0].name).toBe("config");
284
283
  expect(params[0].type).toBe("object");
@@ -297,7 +296,7 @@ describe("schema utilities", () => {
297
296
  }),
298
297
  outputSchema: z4.void(),
299
298
  };
300
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
299
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
301
300
  expect(params).toHaveLength(3);
302
301
  const required1 = params.find((p) => p.name === "required1");
303
302
  const optional1 = params.find((p) => p.name === "optional1");
@@ -318,7 +317,7 @@ describe("schema utilities", () => {
318
317
  outputSchema: z4.void(),
319
318
  };
320
319
  const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
321
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
320
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
322
321
  consoleSpy.mockRestore();
323
322
  expect(params).toEqual([]);
324
323
  });
@@ -334,7 +333,7 @@ describe("schema utilities", () => {
334
333
  },
335
334
  outputSchema: z4.void(),
336
335
  };
337
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
336
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
338
337
  expect(params).toEqual([]);
339
338
  });
340
339
  it("handles JSON Schema properties without descriptions", () => {
@@ -352,7 +351,7 @@ describe("schema utilities", () => {
352
351
  },
353
352
  outputSchema: z4.void(),
354
353
  };
355
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
354
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
356
355
  expect(params).toHaveLength(2);
357
356
  expect(params[0].description).toBe("");
358
357
  expect(params[1].description).toBe("");
@@ -372,7 +371,7 @@ describe("schema utilities", () => {
372
371
  },
373
372
  outputSchema: z4.void(),
374
373
  };
375
- const params = (0, schema_1.getParametersFromToolSchema)(tool);
374
+ const params = (0, client_1.getParametersFromToolSchema)(tool);
376
375
  expect(params).toHaveLength(1);
377
376
  expect(params[0].name).toBe("weird");
378
377
  expect(params[0].schema).toEqual({});
@@ -387,7 +386,7 @@ describe("schema utilities", () => {
387
386
  name: { type: "string" },
388
387
  },
389
388
  };
390
- const result = (0, schema_1.schemaToJsonSchema)(jsonSchema);
389
+ const result = (0, client_1.schemaToJsonSchema)(jsonSchema);
391
390
  expect(result).toBe(jsonSchema); // Same reference
392
391
  });
393
392
  it("converts Zod 4 schema to JSON Schema", () => {
@@ -395,7 +394,7 @@ describe("schema utilities", () => {
395
394
  name: z4.string(),
396
395
  count: z4.number(),
397
396
  });
398
- const result = (0, schema_1.schemaToJsonSchema)(zodSchema);
397
+ const result = (0, client_1.schemaToJsonSchema)(zodSchema);
399
398
  expect(result).toEqual(expect.objectContaining({
400
399
  type: "object",
401
400
  properties: expect.objectContaining({
@@ -408,7 +407,7 @@ describe("schema utilities", () => {
408
407
  const zodSchema = z3.object({
409
408
  title: z3.string(),
410
409
  });
411
- const result = (0, schema_1.schemaToJsonSchema)(zodSchema);
410
+ const result = (0, client_1.schemaToJsonSchema)(zodSchema);
412
411
  expect(result).toEqual(expect.objectContaining({
413
412
  type: "object",
414
413
  properties: expect.objectContaining({
@@ -419,14 +418,14 @@ describe("schema utilities", () => {
419
418
  });
420
419
  describe("safeSchemaToJsonSchema", () => {
421
420
  it("returns undefined for null schema", () => {
422
- expect((0, schema_1.safeSchemaToJsonSchema)(null)).toBeUndefined();
421
+ expect((0, client_1.safeSchemaToJsonSchema)(null)).toBeUndefined();
423
422
  });
424
423
  it("returns undefined for undefined schema", () => {
425
- expect((0, schema_1.safeSchemaToJsonSchema)(undefined)).toBeUndefined();
424
+ expect((0, client_1.safeSchemaToJsonSchema)(undefined)).toBeUndefined();
426
425
  });
427
426
  it("converts valid schema successfully", () => {
428
427
  const zodSchema = z4.object({ name: z4.string() });
429
- const result = (0, schema_1.safeSchemaToJsonSchema)(zodSchema);
428
+ const result = (0, client_1.safeSchemaToJsonSchema)(zodSchema);
430
429
  expect(result).toEqual(expect.objectContaining({
431
430
  type: "object",
432
431
  properties: expect.objectContaining({
@@ -445,7 +444,7 @@ describe("schema utilities", () => {
445
444
  };
446
445
  const onError = jest.fn();
447
446
  const consoleSpy = jest.spyOn(console, "error").mockImplementation();
448
- const result = (0, schema_1.safeSchemaToJsonSchema)(brokenSchema, onError);
447
+ const result = (0, client_1.safeSchemaToJsonSchema)(brokenSchema, onError);
449
448
  consoleSpy.mockRestore();
450
449
  expect(result).toBeUndefined();
451
450
  expect(onError).toHaveBeenCalled();
@@ -459,7 +458,7 @@ describe("schema utilities", () => {
459
458
  },
460
459
  };
461
460
  const consoleSpy = jest.spyOn(console, "error").mockImplementation();
462
- (0, schema_1.safeSchemaToJsonSchema)(brokenSchema);
461
+ (0, client_1.safeSchemaToJsonSchema)(brokenSchema);
463
462
  expect(consoleSpy).toHaveBeenCalledWith("Error converting schema to JSON Schema:", expect.any(Error));
464
463
  consoleSpy.mockRestore();
465
464
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/schema/schema.test.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JSONSchema7 } from \"json-schema\";\nimport * as z3 from \"zod/v3\";\nimport * as z4 from \"zod/v4\";\nimport { TamboTool } from \"../model/component-metadata\";\nimport { looksLikeJSONSchema } from \"./json-schema\";\nimport {\n getParametersFromToolSchema,\n safeSchemaToJsonSchema,\n schemaToJsonSchema,\n} from \"./schema\";\nimport { isStandardSchema } from \"./standard-schema\";\n\ndescribe(\"schema utilities\", () => {\n describe(\"looksLikeJSONSchema\", () => {\n it(\"returns true for a basic JSON Schema object\", () => {\n const jsonSchema: JSONSchema7 = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"integer\" },\n },\n required: [\"name\"],\n };\n\n expect(looksLikeJSONSchema(jsonSchema)).toBe(true);\n });\n\n it(\"returns true for a union type JSON Schema\", () => {\n const jsonSchema: JSONSchema7 = {\n type: [\"string\", \"null\"],\n };\n\n expect(looksLikeJSONSchema(jsonSchema)).toBe(true);\n });\n\n it(\"returns false for Standard Schema validators\", () => {\n const zodSchema = z4.object({\n name: z4.string(),\n });\n\n expect(isStandardSchema(zodSchema)).toBe(true);\n expect(looksLikeJSONSchema(zodSchema)).toBe(false);\n });\n\n it(\"returns false for arbitrary objects that do not resemble JSON Schema\", () => {\n const notSchema = {\n type: \"foo\",\n other: \"bar\",\n };\n\n expect(looksLikeJSONSchema(notSchema)).toBe(false);\n });\n });\n\n describe(\"getParametersFromToolSchema\", () => {\n describe(\"inputSchema interface (object schemas)\", () => {\n it(\"extracts parameters from Zod 4 object schema properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n query: z4.string().describe(\"Search query\"),\n limit: z4.number().describe(\"Max results\"),\n enabled: z4.boolean().optional().describe(\"Whether enabled\"),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(3);\n\n const queryParam = params.find((p) => p.name === \"query\");\n expect(queryParam).toBeDefined();\n expect(queryParam?.type).toBe(\"string\");\n expect(queryParam?.description).toBe(\"Search query\");\n expect(queryParam?.isRequired).toBe(true);\n\n const limitParam = params.find((p) => p.name === \"limit\");\n expect(limitParam).toBeDefined();\n expect(limitParam?.type).toBe(\"number\");\n expect(limitParam?.description).toBe(\"Max results\");\n expect(limitParam?.isRequired).toBe(true);\n\n const enabledParam = params.find((p) => p.name === \"enabled\");\n expect(enabledParam).toBeDefined();\n expect(enabledParam?.type).toBe(\"boolean\");\n // Optional fields are not required\n expect(enabledParam?.isRequired).toBe(false);\n });\n\n it(\"extracts parameters from Zod 3 object schema properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z3.object({\n name: z3.string().describe(\"User name\"),\n age: z3.number().optional(),\n }),\n outputSchema: z3.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const nameParam = params.find((p) => p.name === \"name\");\n expect(nameParam).toBeDefined();\n expect(nameParam?.type).toBe(\"string\");\n expect(nameParam?.isRequired).toBe(true);\n\n const ageParam = params.find((p) => p.name === \"age\");\n expect(ageParam).toBeDefined();\n expect(ageParam?.type).toBe(\"number\");\n expect(ageParam?.isRequired).toBe(false);\n });\n\n it(\"extracts parameters from JSON Schema object properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Item ID\" },\n count: { type: \"number\", description: \"Item count\" },\n active: { type: \"boolean\" },\n },\n required: [\"id\"],\n } as JSONSchema7,\n outputSchema: {},\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(3);\n\n const idParam = params.find((p) => p.name === \"id\");\n expect(idParam).toBeDefined();\n expect(idParam?.type).toBe(\"string\");\n expect(idParam?.description).toBe(\"Item ID\");\n expect(idParam?.isRequired).toBe(true);\n\n const countParam = params.find((p) => p.name === \"count\");\n expect(countParam).toBeDefined();\n expect(countParam?.type).toBe(\"number\");\n expect(countParam?.isRequired).toBe(false);\n\n const activeParam = params.find((p) => p.name === \"active\");\n expect(activeParam).toBeDefined();\n expect(activeParam?.type).toBe(\"boolean\");\n expect(activeParam?.isRequired).toBe(false);\n });\n\n it(\"handles empty object schema\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({}),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n expect(params).toHaveLength(0);\n });\n\n it(\"handles nested object schemas\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n user: z4\n .object({\n name: z4.string(),\n email: z4.string(),\n })\n .describe(\"User info\"),\n options: z4.object({\n notify: z4.boolean(),\n }),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const userParam = params.find((p) => p.name === \"user\");\n expect(userParam).toBeDefined();\n expect(userParam?.type).toBe(\"object\");\n expect(userParam?.description).toBe(\"User info\");\n\n const optionsParam = params.find((p) => p.name === \"options\");\n expect(optionsParam).toBeDefined();\n expect(optionsParam?.type).toBe(\"object\");\n });\n\n it(\"handles array properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n tags: z4.array(z4.string()).describe(\"List of tags\"),\n items: z4.array(z4.object({ id: z4.number() })),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const tagsParam = params.find((p) => p.name === \"tags\");\n expect(tagsParam).toBeDefined();\n expect(tagsParam?.type).toBe(\"array\");\n expect(tagsParam?.description).toBe(\"List of tags\");\n\n const itemsParam = params.find((p) => p.name === \"items\");\n expect(itemsParam).toBeDefined();\n expect(itemsParam?.type).toBe(\"array\");\n });\n });\n\n describe(\"realistic inputSchema scenarios\", () => {\n it(\"handles enum properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n status: z4.enum([\"pending\", \"active\", \"completed\"]),\n priority: z4\n .enum([\"low\", \"medium\", \"high\"])\n .describe(\"Task priority\"),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const statusParam = params.find((p) => p.name === \"status\");\n expect(statusParam).toBeDefined();\n expect(statusParam?.type).toBe(\"string\");\n expect(statusParam?.isRequired).toBe(true);\n\n const priorityParam = params.find((p) => p.name === \"priority\");\n expect(priorityParam).toBeDefined();\n expect(priorityParam?.type).toBe(\"string\");\n expect(priorityParam?.description).toBe(\"Task priority\");\n });\n\n it(\"handles nullable properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n name: z4.string().nullable().describe(\"Optional name\"),\n count: z4.number().nullable(),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const nameParam = params.find((p) => p.name === \"name\");\n expect(nameParam).toBeDefined();\n expect(nameParam?.description).toBe(\"Optional name\");\n // Nullable fields are still required (they must be provided, even if null)\n expect(nameParam?.isRequired).toBe(true);\n });\n\n it(\"handles deeply nested schemas and preserves full schema\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n config: z4.object({\n database: z4.object({\n host: z4.string(),\n port: z4.number().optional(),\n }),\n }),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(1);\n expect(params[0].name).toBe(\"config\");\n expect(params[0].type).toBe(\"object\");\n // The full nested schema should be preserved\n expect(params[0].schema).toHaveProperty(\"properties\");\n });\n\n it(\"handles mixed required and optional fields correctly\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n required1: z4.string(),\n optional1: z4.string().optional(),\n required2: z4.number(),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(3);\n\n const required1 = params.find((p) => p.name === \"required1\");\n const optional1 = params.find((p) => p.name === \"optional1\");\n const required2 = params.find((p) => p.name === \"required2\");\n\n expect(required1?.isRequired).toBe(true);\n expect(optional1?.isRequired).toBe(false);\n expect(required2?.isRequired).toBe(true);\n });\n });\n\n describe(\"edge cases and error handling\", () => {\n it(\"returns empty params when inputSchema is unknown type\", () => {\n // Create a tool with an invalid inputSchema that isn't Standard Schema or JSON Schema\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: \"invalid-schema\" as any, // Not a valid schema\n outputSchema: z4.void(),\n };\n\n const consoleSpy = jest.spyOn(console, \"warn\").mockImplementation();\n const params = getParametersFromToolSchema(tool);\n consoleSpy.mockRestore();\n\n expect(params).toEqual([]);\n });\n\n it(\"handles JSON Schema with no properties field\", () => {\n // Test the fallback: const properties = schema.properties ?? {};\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n // No properties field\n } as JSONSchema7,\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n expect(params).toEqual([]);\n });\n\n it(\"handles JSON Schema properties without descriptions\", () => {\n // Test the fallback: propSchema.description ?? \"\"\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n properties: {\n name: { type: \"string\" }, // No description\n age: { type: \"number\" }, // No description\n },\n } as JSONSchema7,\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n expect(params[0].description).toBe(\"\");\n expect(params[1].description).toBe(\"\");\n });\n\n it(\"handles JSON Schema with non-object property values\", () => {\n // Test the fallback: typeof propSchema === \"object\" && propSchema !== null ? propSchema : {}\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n properties: {\n // Properties can technically be boolean (for schema composition)\n weird: true,\n } as any,\n } as JSONSchema7,\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(1);\n expect(params[0].name).toBe(\"weird\");\n expect(params[0].schema).toEqual({});\n });\n });\n });\n\n describe(\"schemaToJsonSchema\", () => {\n it(\"returns JSON Schema as-is when already a JSON Schema\", () => {\n const jsonSchema: JSONSchema7 = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n },\n };\n\n const result = schemaToJsonSchema(jsonSchema);\n expect(result).toBe(jsonSchema); // Same reference\n });\n\n it(\"converts Zod 4 schema to JSON Schema\", () => {\n const zodSchema = z4.object({\n name: z4.string(),\n count: z4.number(),\n });\n\n const result = schemaToJsonSchema(zodSchema);\n\n expect(result).toEqual(\n expect.objectContaining({\n type: \"object\",\n properties: expect.objectContaining({\n name: expect.objectContaining({ type: \"string\" }),\n count: expect.objectContaining({ type: \"number\" }),\n }),\n }),\n );\n });\n\n it(\"converts Zod 3 schema to JSON Schema\", () => {\n const zodSchema = z3.object({\n title: z3.string(),\n });\n\n const result = schemaToJsonSchema(zodSchema);\n\n expect(result).toEqual(\n expect.objectContaining({\n type: \"object\",\n properties: expect.objectContaining({\n title: expect.objectContaining({ type: \"string\" }),\n }),\n }),\n );\n });\n });\n\n describe(\"safeSchemaToJsonSchema\", () => {\n it(\"returns undefined for null schema\", () => {\n expect(safeSchemaToJsonSchema(null)).toBeUndefined();\n });\n\n it(\"returns undefined for undefined schema\", () => {\n expect(safeSchemaToJsonSchema(undefined)).toBeUndefined();\n });\n\n it(\"converts valid schema successfully\", () => {\n const zodSchema = z4.object({ name: z4.string() });\n const result = safeSchemaToJsonSchema(zodSchema);\n\n expect(result).toEqual(\n expect.objectContaining({\n type: \"object\",\n properties: expect.objectContaining({\n name: expect.objectContaining({ type: \"string\" }),\n }),\n }),\n );\n });\n\n it(\"returns undefined and calls onError for invalid schema\", () => {\n // Create something that looks like a Standard Schema but will fail conversion\n const brokenSchema = {\n \"~standard\": {\n version: 1,\n vendor: \"broken\",\n validate: () => ({ value: {} }),\n },\n };\n\n const onError = jest.fn();\n const consoleSpy = jest.spyOn(console, \"error\").mockImplementation();\n\n const result = safeSchemaToJsonSchema(brokenSchema as any, onError);\n\n consoleSpy.mockRestore();\n\n expect(result).toBeUndefined();\n expect(onError).toHaveBeenCalled();\n });\n\n it(\"logs error to console when conversion fails\", () => {\n const brokenSchema = {\n \"~standard\": {\n version: 1,\n vendor: \"broken\",\n validate: () => ({ value: {} }),\n },\n };\n\n const consoleSpy = jest.spyOn(console, \"error\").mockImplementation();\n\n safeSchemaToJsonSchema(brokenSchema as any);\n\n expect(consoleSpy).toHaveBeenCalledWith(\n \"Error converting schema to JSON Schema:\",\n expect.any(Error),\n );\n\n consoleSpy.mockRestore();\n });\n });\n});\n"]}
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/schema/schema.test.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JSONSchema7 } from \"json-schema\";\nimport * as z3 from \"zod/v3\";\nimport * as z4 from \"zod/v4\";\nimport { TamboTool } from \"../model/component-metadata\";\nimport { looksLikeJSONSchema } from \"./json-schema\";\nimport {\n getParametersFromToolSchema,\n safeSchemaToJsonSchema,\n schemaToJsonSchema,\n isStandardSchema,\n} from \"@tambo-ai/client\";\n\ndescribe(\"schema utilities\", () => {\n describe(\"looksLikeJSONSchema\", () => {\n it(\"returns true for a basic JSON Schema object\", () => {\n const jsonSchema: JSONSchema7 = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"integer\" },\n },\n required: [\"name\"],\n };\n\n expect(looksLikeJSONSchema(jsonSchema)).toBe(true);\n });\n\n it(\"returns true for a union type JSON Schema\", () => {\n const jsonSchema: JSONSchema7 = {\n type: [\"string\", \"null\"],\n };\n\n expect(looksLikeJSONSchema(jsonSchema)).toBe(true);\n });\n\n it(\"returns false for Standard Schema validators\", () => {\n const zodSchema = z4.object({\n name: z4.string(),\n });\n\n expect(isStandardSchema(zodSchema)).toBe(true);\n expect(looksLikeJSONSchema(zodSchema)).toBe(false);\n });\n\n it(\"returns false for arbitrary objects that do not resemble JSON Schema\", () => {\n const notSchema = {\n type: \"foo\",\n other: \"bar\",\n };\n\n expect(looksLikeJSONSchema(notSchema)).toBe(false);\n });\n });\n\n describe(\"getParametersFromToolSchema\", () => {\n describe(\"inputSchema interface (object schemas)\", () => {\n it(\"extracts parameters from Zod 4 object schema properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n query: z4.string().describe(\"Search query\"),\n limit: z4.number().describe(\"Max results\"),\n enabled: z4.boolean().optional().describe(\"Whether enabled\"),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(3);\n\n const queryParam = params.find((p) => p.name === \"query\");\n expect(queryParam).toBeDefined();\n expect(queryParam?.type).toBe(\"string\");\n expect(queryParam?.description).toBe(\"Search query\");\n expect(queryParam?.isRequired).toBe(true);\n\n const limitParam = params.find((p) => p.name === \"limit\");\n expect(limitParam).toBeDefined();\n expect(limitParam?.type).toBe(\"number\");\n expect(limitParam?.description).toBe(\"Max results\");\n expect(limitParam?.isRequired).toBe(true);\n\n const enabledParam = params.find((p) => p.name === \"enabled\");\n expect(enabledParam).toBeDefined();\n expect(enabledParam?.type).toBe(\"boolean\");\n // Optional fields are not required\n expect(enabledParam?.isRequired).toBe(false);\n });\n\n it(\"extracts parameters from Zod 3 object schema properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z3.object({\n name: z3.string().describe(\"User name\"),\n age: z3.number().optional(),\n }),\n outputSchema: z3.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const nameParam = params.find((p) => p.name === \"name\");\n expect(nameParam).toBeDefined();\n expect(nameParam?.type).toBe(\"string\");\n expect(nameParam?.isRequired).toBe(true);\n\n const ageParam = params.find((p) => p.name === \"age\");\n expect(ageParam).toBeDefined();\n expect(ageParam?.type).toBe(\"number\");\n expect(ageParam?.isRequired).toBe(false);\n });\n\n it(\"extracts parameters from JSON Schema object properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Item ID\" },\n count: { type: \"number\", description: \"Item count\" },\n active: { type: \"boolean\" },\n },\n required: [\"id\"],\n } as JSONSchema7,\n outputSchema: {},\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(3);\n\n const idParam = params.find((p) => p.name === \"id\");\n expect(idParam).toBeDefined();\n expect(idParam?.type).toBe(\"string\");\n expect(idParam?.description).toBe(\"Item ID\");\n expect(idParam?.isRequired).toBe(true);\n\n const countParam = params.find((p) => p.name === \"count\");\n expect(countParam).toBeDefined();\n expect(countParam?.type).toBe(\"number\");\n expect(countParam?.isRequired).toBe(false);\n\n const activeParam = params.find((p) => p.name === \"active\");\n expect(activeParam).toBeDefined();\n expect(activeParam?.type).toBe(\"boolean\");\n expect(activeParam?.isRequired).toBe(false);\n });\n\n it(\"handles empty object schema\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({}),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n expect(params).toHaveLength(0);\n });\n\n it(\"handles nested object schemas\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n user: z4\n .object({\n name: z4.string(),\n email: z4.string(),\n })\n .describe(\"User info\"),\n options: z4.object({\n notify: z4.boolean(),\n }),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const userParam = params.find((p) => p.name === \"user\");\n expect(userParam).toBeDefined();\n expect(userParam?.type).toBe(\"object\");\n expect(userParam?.description).toBe(\"User info\");\n\n const optionsParam = params.find((p) => p.name === \"options\");\n expect(optionsParam).toBeDefined();\n expect(optionsParam?.type).toBe(\"object\");\n });\n\n it(\"handles array properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n tags: z4.array(z4.string()).describe(\"List of tags\"),\n items: z4.array(z4.object({ id: z4.number() })),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const tagsParam = params.find((p) => p.name === \"tags\");\n expect(tagsParam).toBeDefined();\n expect(tagsParam?.type).toBe(\"array\");\n expect(tagsParam?.description).toBe(\"List of tags\");\n\n const itemsParam = params.find((p) => p.name === \"items\");\n expect(itemsParam).toBeDefined();\n expect(itemsParam?.type).toBe(\"array\");\n });\n });\n\n describe(\"realistic inputSchema scenarios\", () => {\n it(\"handles enum properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n status: z4.enum([\"pending\", \"active\", \"completed\"]),\n priority: z4\n .enum([\"low\", \"medium\", \"high\"])\n .describe(\"Task priority\"),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const statusParam = params.find((p) => p.name === \"status\");\n expect(statusParam).toBeDefined();\n expect(statusParam?.type).toBe(\"string\");\n expect(statusParam?.isRequired).toBe(true);\n\n const priorityParam = params.find((p) => p.name === \"priority\");\n expect(priorityParam).toBeDefined();\n expect(priorityParam?.type).toBe(\"string\");\n expect(priorityParam?.description).toBe(\"Task priority\");\n });\n\n it(\"handles nullable properties\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n name: z4.string().nullable().describe(\"Optional name\"),\n count: z4.number().nullable(),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n\n const nameParam = params.find((p) => p.name === \"name\");\n expect(nameParam).toBeDefined();\n expect(nameParam?.description).toBe(\"Optional name\");\n // Nullable fields are still required (they must be provided, even if null)\n expect(nameParam?.isRequired).toBe(true);\n });\n\n it(\"handles deeply nested schemas and preserves full schema\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n config: z4.object({\n database: z4.object({\n host: z4.string(),\n port: z4.number().optional(),\n }),\n }),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(1);\n expect(params[0].name).toBe(\"config\");\n expect(params[0].type).toBe(\"object\");\n // The full nested schema should be preserved\n expect(params[0].schema).toHaveProperty(\"properties\");\n });\n\n it(\"handles mixed required and optional fields correctly\", () => {\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: z4.object({\n required1: z4.string(),\n optional1: z4.string().optional(),\n required2: z4.number(),\n }),\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(3);\n\n const required1 = params.find((p) => p.name === \"required1\");\n const optional1 = params.find((p) => p.name === \"optional1\");\n const required2 = params.find((p) => p.name === \"required2\");\n\n expect(required1?.isRequired).toBe(true);\n expect(optional1?.isRequired).toBe(false);\n expect(required2?.isRequired).toBe(true);\n });\n });\n\n describe(\"edge cases and error handling\", () => {\n it(\"returns empty params when inputSchema is unknown type\", () => {\n // Create a tool with an invalid inputSchema that isn't Standard Schema or JSON Schema\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: \"invalid-schema\" as any, // Not a valid schema\n outputSchema: z4.void(),\n };\n\n const consoleSpy = jest.spyOn(console, \"warn\").mockImplementation();\n const params = getParametersFromToolSchema(tool);\n consoleSpy.mockRestore();\n\n expect(params).toEqual([]);\n });\n\n it(\"handles JSON Schema with no properties field\", () => {\n // Test the fallback: const properties = schema.properties ?? {};\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n // No properties field\n } as JSONSchema7,\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n expect(params).toEqual([]);\n });\n\n it(\"handles JSON Schema properties without descriptions\", () => {\n // Test the fallback: propSchema.description ?? \"\"\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n properties: {\n name: { type: \"string\" }, // No description\n age: { type: \"number\" }, // No description\n },\n } as JSONSchema7,\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(2);\n expect(params[0].description).toBe(\"\");\n expect(params[1].description).toBe(\"\");\n });\n\n it(\"handles JSON Schema with non-object property values\", () => {\n // Test the fallback: typeof propSchema === \"object\" && propSchema !== null ? propSchema : {}\n const tool: TamboTool = {\n name: \"test-tool\",\n description: \"Test tool\",\n tool: jest.fn(),\n inputSchema: {\n type: \"object\",\n properties: {\n // Properties can technically be boolean (for schema composition)\n weird: true,\n } as any,\n } as JSONSchema7,\n outputSchema: z4.void(),\n };\n\n const params = getParametersFromToolSchema(tool);\n\n expect(params).toHaveLength(1);\n expect(params[0].name).toBe(\"weird\");\n expect(params[0].schema).toEqual({});\n });\n });\n });\n\n describe(\"schemaToJsonSchema\", () => {\n it(\"returns JSON Schema as-is when already a JSON Schema\", () => {\n const jsonSchema: JSONSchema7 = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n },\n };\n\n const result = schemaToJsonSchema(jsonSchema);\n expect(result).toBe(jsonSchema); // Same reference\n });\n\n it(\"converts Zod 4 schema to JSON Schema\", () => {\n const zodSchema = z4.object({\n name: z4.string(),\n count: z4.number(),\n });\n\n const result = schemaToJsonSchema(zodSchema);\n\n expect(result).toEqual(\n expect.objectContaining({\n type: \"object\",\n properties: expect.objectContaining({\n name: expect.objectContaining({ type: \"string\" }),\n count: expect.objectContaining({ type: \"number\" }),\n }),\n }),\n );\n });\n\n it(\"converts Zod 3 schema to JSON Schema\", () => {\n const zodSchema = z3.object({\n title: z3.string(),\n });\n\n const result = schemaToJsonSchema(zodSchema);\n\n expect(result).toEqual(\n expect.objectContaining({\n type: \"object\",\n properties: expect.objectContaining({\n title: expect.objectContaining({ type: \"string\" }),\n }),\n }),\n );\n });\n });\n\n describe(\"safeSchemaToJsonSchema\", () => {\n it(\"returns undefined for null schema\", () => {\n expect(safeSchemaToJsonSchema(null)).toBeUndefined();\n });\n\n it(\"returns undefined for undefined schema\", () => {\n expect(safeSchemaToJsonSchema(undefined)).toBeUndefined();\n });\n\n it(\"converts valid schema successfully\", () => {\n const zodSchema = z4.object({ name: z4.string() });\n const result = safeSchemaToJsonSchema(zodSchema);\n\n expect(result).toEqual(\n expect.objectContaining({\n type: \"object\",\n properties: expect.objectContaining({\n name: expect.objectContaining({ type: \"string\" }),\n }),\n }),\n );\n });\n\n it(\"returns undefined and calls onError for invalid schema\", () => {\n // Create something that looks like a Standard Schema but will fail conversion\n const brokenSchema = {\n \"~standard\": {\n version: 1,\n vendor: \"broken\",\n validate: () => ({ value: {} }),\n },\n };\n\n const onError = jest.fn();\n const consoleSpy = jest.spyOn(console, \"error\").mockImplementation();\n\n const result = safeSchemaToJsonSchema(brokenSchema as any, onError);\n\n consoleSpy.mockRestore();\n\n expect(result).toBeUndefined();\n expect(onError).toHaveBeenCalled();\n });\n\n it(\"logs error to console when conversion fails\", () => {\n const brokenSchema = {\n \"~standard\": {\n version: 1,\n vendor: \"broken\",\n validate: () => ({ value: {} }),\n },\n };\n\n const consoleSpy = jest.spyOn(console, \"error\").mockImplementation();\n\n safeSchemaToJsonSchema(brokenSchema as any);\n\n expect(consoleSpy).toHaveBeenCalledWith(\n \"Error converting schema to JSON Schema:\",\n expect.any(Error),\n );\n\n consoleSpy.mockRestore();\n });\n });\n});\n"]}
@@ -35,32 +35,32 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const z3 = __importStar(require("zod/v3"));
37
37
  const z4 = __importStar(require("zod/v4"));
38
- const standard_schema_1 = require("./standard-schema");
38
+ const client_1 = require("@tambo-ai/client");
39
39
  describe("isStandardSchema", () => {
40
40
  describe("returns true for valid Standard Schema implementations", () => {
41
41
  it("recognizes Zod 4 object schema", () => {
42
42
  const schema = z4.object({ name: z4.string() });
43
- expect((0, standard_schema_1.isStandardSchema)(schema)).toBe(true);
43
+ expect((0, client_1.isStandardSchema)(schema)).toBe(true);
44
44
  });
45
45
  it("recognizes Zod 3 object schema", () => {
46
46
  const schema = z3.object({ name: z3.string() });
47
- expect((0, standard_schema_1.isStandardSchema)(schema)).toBe(true);
47
+ expect((0, client_1.isStandardSchema)(schema)).toBe(true);
48
48
  });
49
49
  it("recognizes Zod 4 string schema", () => {
50
50
  const schema = z4.string();
51
- expect((0, standard_schema_1.isStandardSchema)(schema)).toBe(true);
51
+ expect((0, client_1.isStandardSchema)(schema)).toBe(true);
52
52
  });
53
53
  it("recognizes Zod 3 string schema", () => {
54
54
  const schema = z3.string();
55
- expect((0, standard_schema_1.isStandardSchema)(schema)).toBe(true);
55
+ expect((0, client_1.isStandardSchema)(schema)).toBe(true);
56
56
  });
57
57
  it("recognizes Zod 4 array schema", () => {
58
58
  const schema = z4.array(z4.number());
59
- expect((0, standard_schema_1.isStandardSchema)(schema)).toBe(true);
59
+ expect((0, client_1.isStandardSchema)(schema)).toBe(true);
60
60
  });
61
61
  it("recognizes Zod 3 array schema", () => {
62
62
  const schema = z3.array(z3.number());
63
- expect((0, standard_schema_1.isStandardSchema)(schema)).toBe(true);
63
+ expect((0, client_1.isStandardSchema)(schema)).toBe(true);
64
64
  });
65
65
  it("recognizes custom object implementing Standard Schema v1", () => {
66
66
  const customSchema = {
@@ -70,38 +70,38 @@ describe("isStandardSchema", () => {
70
70
  validate: () => ({ value: {} }),
71
71
  },
72
72
  };
73
- expect((0, standard_schema_1.isStandardSchema)(customSchema)).toBe(true);
73
+ expect((0, client_1.isStandardSchema)(customSchema)).toBe(true);
74
74
  });
75
75
  });
76
76
  describe("returns false for non-Standard Schema values", () => {
77
77
  it("rejects null", () => {
78
- expect((0, standard_schema_1.isStandardSchema)(null)).toBe(false);
78
+ expect((0, client_1.isStandardSchema)(null)).toBe(false);
79
79
  });
80
80
  it("rejects undefined", () => {
81
- expect((0, standard_schema_1.isStandardSchema)(undefined)).toBe(false);
81
+ expect((0, client_1.isStandardSchema)(undefined)).toBe(false);
82
82
  });
83
83
  it("rejects primitives", () => {
84
- expect((0, standard_schema_1.isStandardSchema)("string")).toBe(false);
85
- expect((0, standard_schema_1.isStandardSchema)(123)).toBe(false);
86
- expect((0, standard_schema_1.isStandardSchema)(true)).toBe(false);
84
+ expect((0, client_1.isStandardSchema)("string")).toBe(false);
85
+ expect((0, client_1.isStandardSchema)(123)).toBe(false);
86
+ expect((0, client_1.isStandardSchema)(true)).toBe(false);
87
87
  });
88
88
  it("rejects plain objects without ~standard", () => {
89
- expect((0, standard_schema_1.isStandardSchema)({ foo: "bar" })).toBe(false);
89
+ expect((0, client_1.isStandardSchema)({ foo: "bar" })).toBe(false);
90
90
  });
91
91
  it("rejects JSON Schema objects", () => {
92
92
  const jsonSchema = {
93
93
  type: "object",
94
94
  properties: { name: { type: "string" } },
95
95
  };
96
- expect((0, standard_schema_1.isStandardSchema)(jsonSchema)).toBe(false);
96
+ expect((0, client_1.isStandardSchema)(jsonSchema)).toBe(false);
97
97
  });
98
98
  it("rejects objects with ~standard that is not an object", () => {
99
- expect((0, standard_schema_1.isStandardSchema)({ "~standard": "invalid" })).toBe(false);
100
- expect((0, standard_schema_1.isStandardSchema)({ "~standard": 123 })).toBe(false);
101
- expect((0, standard_schema_1.isStandardSchema)({ "~standard": true })).toBe(false);
99
+ expect((0, client_1.isStandardSchema)({ "~standard": "invalid" })).toBe(false);
100
+ expect((0, client_1.isStandardSchema)({ "~standard": 123 })).toBe(false);
101
+ expect((0, client_1.isStandardSchema)({ "~standard": true })).toBe(false);
102
102
  });
103
103
  it("rejects objects with ~standard that is null", () => {
104
- expect((0, standard_schema_1.isStandardSchema)({ "~standard": null })).toBe(false);
104
+ expect((0, client_1.isStandardSchema)({ "~standard": null })).toBe(false);
105
105
  });
106
106
  it("rejects objects with wrong version", () => {
107
107
  const invalidVersion = {
@@ -111,7 +111,7 @@ describe("isStandardSchema", () => {
111
111
  validate: () => ({ value: {} }),
112
112
  },
113
113
  };
114
- expect((0, standard_schema_1.isStandardSchema)(invalidVersion)).toBe(false);
114
+ expect((0, client_1.isStandardSchema)(invalidVersion)).toBe(false);
115
115
  });
116
116
  it("rejects objects with missing version", () => {
117
117
  const missingVersion = {
@@ -120,7 +120,7 @@ describe("isStandardSchema", () => {
120
120
  validate: () => ({ value: {} }),
121
121
  },
122
122
  };
123
- expect((0, standard_schema_1.isStandardSchema)(missingVersion)).toBe(false);
123
+ expect((0, client_1.isStandardSchema)(missingVersion)).toBe(false);
124
124
  });
125
125
  it("rejects objects with non-string vendor", () => {
126
126
  const invalidVendor = {
@@ -130,7 +130,7 @@ describe("isStandardSchema", () => {
130
130
  validate: () => ({ value: {} }),
131
131
  },
132
132
  };
133
- expect((0, standard_schema_1.isStandardSchema)(invalidVendor)).toBe(false);
133
+ expect((0, client_1.isStandardSchema)(invalidVendor)).toBe(false);
134
134
  });
135
135
  it("rejects objects with missing vendor", () => {
136
136
  const missingVendor = {
@@ -139,7 +139,7 @@ describe("isStandardSchema", () => {
139
139
  validate: () => ({ value: {} }),
140
140
  },
141
141
  };
142
- expect((0, standard_schema_1.isStandardSchema)(missingVendor)).toBe(false);
142
+ expect((0, client_1.isStandardSchema)(missingVendor)).toBe(false);
143
143
  });
144
144
  it("rejects objects with non-function validate", () => {
145
145
  const invalidValidate = {
@@ -149,7 +149,7 @@ describe("isStandardSchema", () => {
149
149
  validate: "not-a-function",
150
150
  },
151
151
  };
152
- expect((0, standard_schema_1.isStandardSchema)(invalidValidate)).toBe(false);
152
+ expect((0, client_1.isStandardSchema)(invalidValidate)).toBe(false);
153
153
  });
154
154
  it("rejects objects with missing validate", () => {
155
155
  const missingValidate = {
@@ -158,7 +158,7 @@ describe("isStandardSchema", () => {
158
158
  vendor: "custom",
159
159
  },
160
160
  };
161
- expect((0, standard_schema_1.isStandardSchema)(missingValidate)).toBe(false);
161
+ expect((0, client_1.isStandardSchema)(missingValidate)).toBe(false);
162
162
  });
163
163
  });
164
164
  });
@@ -1 +1 @@
1
- {"version":3,"file":"standard-schema.test.js","sourceRoot":"","sources":["../../src/schema/standard-schema.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as z3 from \"zod/v3\";\nimport * as z4 from \"zod/v4\";\nimport { isStandardSchema } from \"./standard-schema\";\n\ndescribe(\"isStandardSchema\", () => {\n describe(\"returns true for valid Standard Schema implementations\", () => {\n it(\"recognizes Zod 4 object schema\", () => {\n const schema = z4.object({ name: z4.string() });\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 3 object schema\", () => {\n const schema = z3.object({ name: z3.string() });\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 4 string schema\", () => {\n const schema = z4.string();\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 3 string schema\", () => {\n const schema = z3.string();\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 4 array schema\", () => {\n const schema = z4.array(z4.number());\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 3 array schema\", () => {\n const schema = z3.array(z3.number());\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes custom object implementing Standard Schema v1\", () => {\n const customSchema = {\n \"~standard\": {\n version: 1,\n vendor: \"custom\",\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(customSchema)).toBe(true);\n });\n });\n\n describe(\"returns false for non-Standard Schema values\", () => {\n it(\"rejects null\", () => {\n expect(isStandardSchema(null)).toBe(false);\n });\n\n it(\"rejects undefined\", () => {\n expect(isStandardSchema(undefined)).toBe(false);\n });\n\n it(\"rejects primitives\", () => {\n expect(isStandardSchema(\"string\")).toBe(false);\n expect(isStandardSchema(123)).toBe(false);\n expect(isStandardSchema(true)).toBe(false);\n });\n\n it(\"rejects plain objects without ~standard\", () => {\n expect(isStandardSchema({ foo: \"bar\" })).toBe(false);\n });\n\n it(\"rejects JSON Schema objects\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: { name: { type: \"string\" } },\n };\n expect(isStandardSchema(jsonSchema)).toBe(false);\n });\n\n it(\"rejects objects with ~standard that is not an object\", () => {\n expect(isStandardSchema({ \"~standard\": \"invalid\" })).toBe(false);\n expect(isStandardSchema({ \"~standard\": 123 })).toBe(false);\n expect(isStandardSchema({ \"~standard\": true })).toBe(false);\n });\n\n it(\"rejects objects with ~standard that is null\", () => {\n expect(isStandardSchema({ \"~standard\": null })).toBe(false);\n });\n\n it(\"rejects objects with wrong version\", () => {\n const invalidVersion = {\n \"~standard\": {\n version: 2, // Wrong version\n vendor: \"custom\",\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(invalidVersion)).toBe(false);\n });\n\n it(\"rejects objects with missing version\", () => {\n const missingVersion = {\n \"~standard\": {\n vendor: \"custom\",\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(missingVersion)).toBe(false);\n });\n\n it(\"rejects objects with non-string vendor\", () => {\n const invalidVendor = {\n \"~standard\": {\n version: 1,\n vendor: 123, // Not a string\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(invalidVendor)).toBe(false);\n });\n\n it(\"rejects objects with missing vendor\", () => {\n const missingVendor = {\n \"~standard\": {\n version: 1,\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(missingVendor)).toBe(false);\n });\n\n it(\"rejects objects with non-function validate\", () => {\n const invalidValidate = {\n \"~standard\": {\n version: 1,\n vendor: \"custom\",\n validate: \"not-a-function\",\n },\n };\n expect(isStandardSchema(invalidValidate)).toBe(false);\n });\n\n it(\"rejects objects with missing validate\", () => {\n const missingValidate = {\n \"~standard\": {\n version: 1,\n vendor: \"custom\",\n },\n };\n expect(isStandardSchema(missingValidate)).toBe(false);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"standard-schema.test.js","sourceRoot":"","sources":["../../src/schema/standard-schema.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as z3 from \"zod/v3\";\nimport * as z4 from \"zod/v4\";\nimport { isStandardSchema } from \"@tambo-ai/client\";\n\ndescribe(\"isStandardSchema\", () => {\n describe(\"returns true for valid Standard Schema implementations\", () => {\n it(\"recognizes Zod 4 object schema\", () => {\n const schema = z4.object({ name: z4.string() });\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 3 object schema\", () => {\n const schema = z3.object({ name: z3.string() });\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 4 string schema\", () => {\n const schema = z4.string();\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 3 string schema\", () => {\n const schema = z3.string();\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 4 array schema\", () => {\n const schema = z4.array(z4.number());\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes Zod 3 array schema\", () => {\n const schema = z3.array(z3.number());\n expect(isStandardSchema(schema)).toBe(true);\n });\n\n it(\"recognizes custom object implementing Standard Schema v1\", () => {\n const customSchema = {\n \"~standard\": {\n version: 1,\n vendor: \"custom\",\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(customSchema)).toBe(true);\n });\n });\n\n describe(\"returns false for non-Standard Schema values\", () => {\n it(\"rejects null\", () => {\n expect(isStandardSchema(null)).toBe(false);\n });\n\n it(\"rejects undefined\", () => {\n expect(isStandardSchema(undefined)).toBe(false);\n });\n\n it(\"rejects primitives\", () => {\n expect(isStandardSchema(\"string\")).toBe(false);\n expect(isStandardSchema(123)).toBe(false);\n expect(isStandardSchema(true)).toBe(false);\n });\n\n it(\"rejects plain objects without ~standard\", () => {\n expect(isStandardSchema({ foo: \"bar\" })).toBe(false);\n });\n\n it(\"rejects JSON Schema objects\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: { name: { type: \"string\" } },\n };\n expect(isStandardSchema(jsonSchema)).toBe(false);\n });\n\n it(\"rejects objects with ~standard that is not an object\", () => {\n expect(isStandardSchema({ \"~standard\": \"invalid\" })).toBe(false);\n expect(isStandardSchema({ \"~standard\": 123 })).toBe(false);\n expect(isStandardSchema({ \"~standard\": true })).toBe(false);\n });\n\n it(\"rejects objects with ~standard that is null\", () => {\n expect(isStandardSchema({ \"~standard\": null })).toBe(false);\n });\n\n it(\"rejects objects with wrong version\", () => {\n const invalidVersion = {\n \"~standard\": {\n version: 2, // Wrong version\n vendor: \"custom\",\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(invalidVersion)).toBe(false);\n });\n\n it(\"rejects objects with missing version\", () => {\n const missingVersion = {\n \"~standard\": {\n vendor: \"custom\",\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(missingVersion)).toBe(false);\n });\n\n it(\"rejects objects with non-string vendor\", () => {\n const invalidVendor = {\n \"~standard\": {\n version: 1,\n vendor: 123, // Not a string\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(invalidVendor)).toBe(false);\n });\n\n it(\"rejects objects with missing vendor\", () => {\n const missingVendor = {\n \"~standard\": {\n version: 1,\n validate: () => ({ value: {} }),\n },\n };\n expect(isStandardSchema(missingVendor)).toBe(false);\n });\n\n it(\"rejects objects with non-function validate\", () => {\n const invalidValidate = {\n \"~standard\": {\n version: 1,\n vendor: \"custom\",\n validate: \"not-a-function\",\n },\n };\n expect(isStandardSchema(invalidValidate)).toBe(false);\n });\n\n it(\"rejects objects with missing validate\", () => {\n const missingValidate = {\n \"~standard\": {\n version: 1,\n vendor: \"custom\",\n },\n };\n expect(isStandardSchema(missingValidate)).toBe(false);\n });\n });\n});\n"]}