@tambo-ai/react 0.65.3 → 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 (346) hide show
  1. package/README.md +120 -20
  2. package/dist/{providers/hoc → hoc}/with-tambo-interactable.d.ts +2 -2
  3. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -0
  4. package/dist/{providers/hoc → hoc}/with-tambo-interactable.js +29 -2
  5. package/dist/hoc/with-tambo-interactable.js.map +1 -0
  6. package/dist/hoc/with-tambo-interactable.test.d.ts +2 -0
  7. package/dist/hoc/with-tambo-interactable.test.d.ts.map +1 -0
  8. package/dist/hoc/with-tambo-interactable.test.js +192 -0
  9. package/dist/hoc/with-tambo-interactable.test.js.map +1 -0
  10. package/dist/hooks/index.d.ts +1 -1
  11. package/dist/hooks/index.d.ts.map +1 -1
  12. package/dist/hooks/index.js +2 -1
  13. package/dist/hooks/index.js.map +1 -1
  14. package/dist/hooks/use-current-message.d.ts +51 -7
  15. package/dist/hooks/use-current-message.d.ts.map +1 -1
  16. package/dist/hooks/use-current-message.js +50 -6
  17. package/dist/hooks/use-current-message.js.map +1 -1
  18. package/dist/hooks/use-current-message.test.d.ts +2 -0
  19. package/dist/hooks/use-current-message.test.d.ts.map +1 -0
  20. package/dist/hooks/use-current-message.test.js +264 -0
  21. package/dist/hooks/use-current-message.test.js.map +1 -0
  22. package/dist/index.d.ts +10 -8
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +7 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/mcp/index.d.ts +1 -1
  27. package/dist/mcp/index.d.ts.map +1 -1
  28. package/dist/mcp/index.js +2 -1
  29. package/dist/mcp/index.js.map +1 -1
  30. package/dist/mcp/mcp-hooks.d.ts +77 -6
  31. package/dist/mcp/mcp-hooks.d.ts.map +1 -1
  32. package/dist/mcp/mcp-hooks.js +104 -40
  33. package/dist/mcp/mcp-hooks.js.map +1 -1
  34. package/dist/mcp/mcp-hooks.test.js +83 -18
  35. package/dist/mcp/mcp-hooks.test.js.map +1 -1
  36. package/dist/mcp/tambo-mcp-provider.d.ts.map +1 -1
  37. package/dist/mcp/tambo-mcp-provider.js +2 -1
  38. package/dist/mcp/tambo-mcp-provider.js.map +1 -1
  39. package/dist/model/component-metadata.d.ts +444 -14
  40. package/dist/model/component-metadata.d.ts.map +1 -1
  41. package/dist/model/component-metadata.js.map +1 -1
  42. package/dist/model/generate-component-response.d.ts +12 -1
  43. package/dist/model/generate-component-response.d.ts.map +1 -1
  44. package/dist/model/generate-component-response.js.map +1 -1
  45. package/dist/model/resource-info.d.ts +55 -0
  46. package/dist/model/resource-info.d.ts.map +1 -0
  47. package/dist/model/resource-info.js +3 -0
  48. package/dist/model/resource-info.js.map +1 -0
  49. package/dist/providers/index.d.ts +1 -1
  50. package/dist/providers/index.d.ts.map +1 -1
  51. package/dist/providers/index.js.map +1 -1
  52. package/dist/providers/tambo-component-provider.d.ts +4 -4
  53. package/dist/providers/tambo-component-provider.d.ts.map +1 -1
  54. package/dist/providers/tambo-component-provider.js.map +1 -1
  55. package/dist/providers/tambo-interactable-provider-partial-updates.test.js +87 -87
  56. package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  57. package/dist/providers/tambo-interactable-provider.d.ts +2 -3
  58. package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
  59. package/dist/providers/tambo-interactable-provider.js +47 -41
  60. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  61. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js +9 -9
  62. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
  63. package/dist/providers/tambo-interactables-additional-context.test.js +11 -11
  64. package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -1
  65. package/dist/providers/tambo-registry-provider.d.ts +28 -7
  66. package/dist/providers/tambo-registry-provider.d.ts.map +1 -1
  67. package/dist/providers/tambo-registry-provider.js +70 -181
  68. package/dist/providers/tambo-registry-provider.js.map +1 -1
  69. package/dist/providers/tambo-registry-provider.test.js +152 -30
  70. package/dist/providers/tambo-registry-provider.test.js.map +1 -1
  71. package/dist/providers/tambo-registry-schema-compat.test.d.ts +2 -0
  72. package/dist/providers/tambo-registry-schema-compat.test.d.ts.map +1 -0
  73. package/dist/providers/tambo-registry-schema-compat.test.js +616 -0
  74. package/dist/providers/tambo-registry-schema-compat.test.js.map +1 -0
  75. package/dist/providers/tambo-stubs.d.ts +2 -2
  76. package/dist/providers/tambo-stubs.d.ts.map +1 -1
  77. package/dist/providers/tambo-stubs.js +5 -0
  78. package/dist/providers/tambo-stubs.js.map +1 -1
  79. package/dist/providers/tambo-thread-input-provider.d.ts +1 -0
  80. package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
  81. package/dist/providers/tambo-thread-input-provider.js +3 -3
  82. package/dist/providers/tambo-thread-input-provider.js.map +1 -1
  83. package/dist/providers/tambo-thread-provider.d.ts.map +1 -1
  84. package/dist/providers/tambo-thread-provider.js.map +1 -1
  85. package/dist/providers/tambo-thread-provider.test.js +32 -36
  86. package/dist/providers/tambo-thread-provider.test.js.map +1 -1
  87. package/dist/schema/index.d.ts +6 -0
  88. package/dist/schema/index.d.ts.map +1 -0
  89. package/dist/schema/index.js +18 -0
  90. package/dist/schema/index.js.map +1 -0
  91. package/dist/schema/json-schema.d.ts +35 -0
  92. package/dist/schema/json-schema.d.ts.map +1 -0
  93. package/dist/schema/json-schema.js +103 -0
  94. package/dist/schema/json-schema.js.map +1 -0
  95. package/dist/schema/schema.d.ts +66 -0
  96. package/dist/schema/schema.d.ts.map +1 -0
  97. package/dist/schema/schema.js +192 -0
  98. package/dist/schema/schema.js.map +1 -0
  99. package/dist/schema/schema.test.d.ts +2 -0
  100. package/dist/schema/schema.test.d.ts.map +1 -0
  101. package/dist/schema/schema.test.js +41 -0
  102. package/dist/schema/schema.test.js.map +1 -0
  103. package/dist/schema/standard-schema.d.ts +21 -0
  104. package/dist/schema/standard-schema.d.ts.map +1 -0
  105. package/dist/schema/standard-schema.js +37 -0
  106. package/dist/schema/standard-schema.js.map +1 -0
  107. package/dist/schema/validate.d.ts +14 -0
  108. package/dist/schema/validate.d.ts.map +1 -0
  109. package/dist/schema/validate.js +148 -0
  110. package/dist/schema/validate.js.map +1 -0
  111. package/dist/schema/validate.test.d.ts +2 -0
  112. package/dist/schema/validate.test.d.ts.map +1 -0
  113. package/dist/schema/validate.test.js +128 -0
  114. package/dist/schema/validate.test.js.map +1 -0
  115. package/dist/schema/zod.d.ts +54 -0
  116. package/dist/schema/zod.d.ts.map +1 -0
  117. package/dist/schema/zod.js +135 -0
  118. package/dist/schema/zod.js.map +1 -0
  119. package/dist/testing/tools.d.ts +29 -15
  120. package/dist/testing/tools.d.ts.map +1 -1
  121. package/dist/testing/tools.js +64 -19
  122. package/dist/testing/tools.js.map +1 -1
  123. package/dist/util/generate-component.d.ts.map +1 -1
  124. package/dist/util/generate-component.js +3 -3
  125. package/dist/util/generate-component.js.map +1 -1
  126. package/dist/util/mcp-server-utils.d.ts +23 -0
  127. package/dist/util/mcp-server-utils.d.ts.map +1 -0
  128. package/dist/util/mcp-server-utils.js +107 -0
  129. package/dist/util/mcp-server-utils.js.map +1 -0
  130. package/dist/util/mcp-server-utils.test.d.ts +2 -0
  131. package/dist/util/mcp-server-utils.test.d.ts.map +1 -0
  132. package/dist/util/mcp-server-utils.test.js +287 -0
  133. package/dist/util/mcp-server-utils.test.js.map +1 -0
  134. package/dist/util/message-builder.d.ts +2 -1
  135. package/dist/util/message-builder.d.ts.map +1 -1
  136. package/dist/util/message-builder.js +54 -36
  137. package/dist/util/message-builder.js.map +1 -1
  138. package/dist/util/message-builder.test.js +500 -13
  139. package/dist/util/message-builder.test.js.map +1 -1
  140. package/dist/util/registry-validators.d.ts +26 -0
  141. package/dist/util/registry-validators.d.ts.map +1 -0
  142. package/dist/util/registry-validators.js +105 -0
  143. package/dist/util/registry-validators.js.map +1 -0
  144. package/dist/util/registry-validators.test.d.ts +2 -0
  145. package/dist/util/registry-validators.test.d.ts.map +1 -0
  146. package/dist/util/registry-validators.test.js +235 -0
  147. package/dist/util/registry-validators.test.js.map +1 -0
  148. package/dist/util/registry.d.ts +35 -7
  149. package/dist/util/registry.d.ts.map +1 -1
  150. package/dist/util/registry.js +60 -77
  151. package/dist/util/registry.js.map +1 -1
  152. package/dist/util/registry.test.d.ts +2 -0
  153. package/dist/util/registry.test.d.ts.map +1 -0
  154. package/dist/util/registry.test.js +204 -0
  155. package/dist/util/registry.test.js.map +1 -0
  156. package/dist/util/resource-validators.d.ts +16 -0
  157. package/dist/util/resource-validators.d.ts.map +1 -0
  158. package/dist/util/resource-validators.js +34 -0
  159. package/dist/util/resource-validators.js.map +1 -0
  160. package/dist/util/tool-caller.d.ts +2 -2
  161. package/dist/util/tool-caller.d.ts.map +1 -1
  162. package/dist/util/tool-caller.js +12 -4
  163. package/dist/util/tool-caller.js.map +1 -1
  164. package/esm/{providers/hoc → hoc}/with-tambo-interactable.d.ts +2 -2
  165. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -0
  166. package/esm/{providers/hoc → hoc}/with-tambo-interactable.js +29 -2
  167. package/esm/hoc/with-tambo-interactable.js.map +1 -0
  168. package/esm/hoc/with-tambo-interactable.test.d.ts +2 -0
  169. package/esm/hoc/with-tambo-interactable.test.d.ts.map +1 -0
  170. package/esm/hoc/with-tambo-interactable.test.js +187 -0
  171. package/esm/hoc/with-tambo-interactable.test.js.map +1 -0
  172. package/esm/hooks/index.d.ts +1 -1
  173. package/esm/hooks/index.d.ts.map +1 -1
  174. package/esm/hooks/index.js +1 -1
  175. package/esm/hooks/index.js.map +1 -1
  176. package/esm/hooks/use-current-message.d.ts +51 -7
  177. package/esm/hooks/use-current-message.d.ts.map +1 -1
  178. package/esm/hooks/use-current-message.js +48 -5
  179. package/esm/hooks/use-current-message.js.map +1 -1
  180. package/esm/hooks/use-current-message.test.d.ts +2 -0
  181. package/esm/hooks/use-current-message.test.d.ts.map +1 -0
  182. package/esm/hooks/use-current-message.test.js +259 -0
  183. package/esm/hooks/use-current-message.test.js.map +1 -0
  184. package/esm/index.d.ts +10 -8
  185. package/esm/index.d.ts.map +1 -1
  186. package/esm/index.js +4 -2
  187. package/esm/index.js.map +1 -1
  188. package/esm/mcp/index.d.ts +1 -1
  189. package/esm/mcp/index.d.ts.map +1 -1
  190. package/esm/mcp/index.js +1 -1
  191. package/esm/mcp/index.js.map +1 -1
  192. package/esm/mcp/mcp-hooks.d.ts +77 -6
  193. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  194. package/esm/mcp/mcp-hooks.js +103 -40
  195. package/esm/mcp/mcp-hooks.js.map +1 -1
  196. package/esm/mcp/mcp-hooks.test.js +84 -19
  197. package/esm/mcp/mcp-hooks.test.js.map +1 -1
  198. package/esm/mcp/tambo-mcp-provider.d.ts.map +1 -1
  199. package/esm/mcp/tambo-mcp-provider.js +2 -1
  200. package/esm/mcp/tambo-mcp-provider.js.map +1 -1
  201. package/esm/model/component-metadata.d.ts +444 -14
  202. package/esm/model/component-metadata.d.ts.map +1 -1
  203. package/esm/model/component-metadata.js.map +1 -1
  204. package/esm/model/generate-component-response.d.ts +12 -1
  205. package/esm/model/generate-component-response.d.ts.map +1 -1
  206. package/esm/model/generate-component-response.js.map +1 -1
  207. package/esm/model/resource-info.d.ts +55 -0
  208. package/esm/model/resource-info.d.ts.map +1 -0
  209. package/esm/model/resource-info.js +2 -0
  210. package/esm/model/resource-info.js.map +1 -0
  211. package/esm/providers/index.d.ts +1 -1
  212. package/esm/providers/index.d.ts.map +1 -1
  213. package/esm/providers/index.js.map +1 -1
  214. package/esm/providers/tambo-component-provider.d.ts +4 -4
  215. package/esm/providers/tambo-component-provider.d.ts.map +1 -1
  216. package/esm/providers/tambo-component-provider.js.map +1 -1
  217. package/esm/providers/tambo-interactable-provider-partial-updates.test.js +1 -1
  218. package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  219. package/esm/providers/tambo-interactable-provider.d.ts +2 -3
  220. package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
  221. package/esm/providers/tambo-interactable-provider.js +44 -38
  222. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  223. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +3 -3
  224. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
  225. package/esm/providers/tambo-interactables-additional-context.test.js +3 -3
  226. package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -1
  227. package/esm/providers/tambo-registry-provider.d.ts +28 -7
  228. package/esm/providers/tambo-registry-provider.d.ts.map +1 -1
  229. package/esm/providers/tambo-registry-provider.js +67 -175
  230. package/esm/providers/tambo-registry-provider.js.map +1 -1
  231. package/esm/providers/tambo-registry-provider.test.js +148 -26
  232. package/esm/providers/tambo-registry-provider.test.js.map +1 -1
  233. package/esm/providers/tambo-registry-schema-compat.test.d.ts +2 -0
  234. package/esm/providers/tambo-registry-schema-compat.test.d.ts.map +1 -0
  235. package/esm/providers/tambo-registry-schema-compat.test.js +578 -0
  236. package/esm/providers/tambo-registry-schema-compat.test.js.map +1 -0
  237. package/esm/providers/tambo-stubs.d.ts +2 -2
  238. package/esm/providers/tambo-stubs.d.ts.map +1 -1
  239. package/esm/providers/tambo-stubs.js +5 -0
  240. package/esm/providers/tambo-stubs.js.map +1 -1
  241. package/esm/providers/tambo-thread-input-provider.d.ts +1 -0
  242. package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
  243. package/esm/providers/tambo-thread-input-provider.js +3 -3
  244. package/esm/providers/tambo-thread-input-provider.js.map +1 -1
  245. package/esm/providers/tambo-thread-provider.d.ts.map +1 -1
  246. package/esm/providers/tambo-thread-provider.js.map +1 -1
  247. package/esm/providers/tambo-thread-provider.test.js +24 -28
  248. package/esm/providers/tambo-thread-provider.test.js.map +1 -1
  249. package/esm/schema/index.d.ts +6 -0
  250. package/esm/schema/index.d.ts.map +1 -0
  251. package/esm/schema/index.js +6 -0
  252. package/esm/schema/index.js.map +1 -0
  253. package/esm/schema/json-schema.d.ts +35 -0
  254. package/esm/schema/json-schema.d.ts.map +1 -0
  255. package/esm/schema/json-schema.js +98 -0
  256. package/esm/schema/json-schema.js.map +1 -0
  257. package/esm/schema/schema.d.ts +66 -0
  258. package/esm/schema/schema.d.ts.map +1 -0
  259. package/esm/schema/schema.js +185 -0
  260. package/esm/schema/schema.js.map +1 -0
  261. package/esm/schema/schema.test.d.ts +2 -0
  262. package/esm/schema/schema.test.d.ts.map +1 -0
  263. package/esm/schema/schema.test.js +39 -0
  264. package/esm/schema/schema.test.js.map +1 -0
  265. package/esm/schema/standard-schema.d.ts +21 -0
  266. package/esm/schema/standard-schema.d.ts.map +1 -0
  267. package/esm/schema/standard-schema.js +34 -0
  268. package/esm/schema/standard-schema.js.map +1 -0
  269. package/esm/schema/validate.d.ts +14 -0
  270. package/esm/schema/validate.d.ts.map +1 -0
  271. package/esm/schema/validate.js +145 -0
  272. package/esm/schema/validate.js.map +1 -0
  273. package/esm/schema/validate.test.d.ts +2 -0
  274. package/esm/schema/validate.test.d.ts.map +1 -0
  275. package/esm/schema/validate.test.js +126 -0
  276. package/esm/schema/validate.test.js.map +1 -0
  277. package/esm/schema/zod.d.ts +54 -0
  278. package/esm/schema/zod.d.ts.map +1 -0
  279. package/esm/schema/zod.js +124 -0
  280. package/esm/schema/zod.js.map +1 -0
  281. package/esm/testing/tools.d.ts +29 -15
  282. package/esm/testing/tools.d.ts.map +1 -1
  283. package/esm/testing/tools.js +62 -16
  284. package/esm/testing/tools.js.map +1 -1
  285. package/esm/util/generate-component.d.ts.map +1 -1
  286. package/esm/util/generate-component.js +3 -3
  287. package/esm/util/generate-component.js.map +1 -1
  288. package/esm/util/mcp-server-utils.d.ts +23 -0
  289. package/esm/util/mcp-server-utils.d.ts.map +1 -0
  290. package/esm/util/mcp-server-utils.js +102 -0
  291. package/esm/util/mcp-server-utils.js.map +1 -0
  292. package/esm/util/mcp-server-utils.test.d.ts +2 -0
  293. package/esm/util/mcp-server-utils.test.d.ts.map +1 -0
  294. package/esm/util/mcp-server-utils.test.js +285 -0
  295. package/esm/util/mcp-server-utils.test.js.map +1 -0
  296. package/esm/util/message-builder.d.ts +2 -1
  297. package/esm/util/message-builder.d.ts.map +1 -1
  298. package/esm/util/message-builder.js +54 -36
  299. package/esm/util/message-builder.js.map +1 -1
  300. package/esm/util/message-builder.test.js +500 -13
  301. package/esm/util/message-builder.test.js.map +1 -1
  302. package/esm/util/registry-validators.d.ts +26 -0
  303. package/esm/util/registry-validators.d.ts.map +1 -0
  304. package/esm/util/registry-validators.js +100 -0
  305. package/esm/util/registry-validators.js.map +1 -0
  306. package/esm/util/registry-validators.test.d.ts +2 -0
  307. package/esm/util/registry-validators.test.d.ts.map +1 -0
  308. package/esm/util/registry-validators.test.js +233 -0
  309. package/esm/util/registry-validators.test.js.map +1 -0
  310. package/esm/util/registry.d.ts +35 -7
  311. package/esm/util/registry.d.ts.map +1 -1
  312. package/esm/util/registry.js +57 -73
  313. package/esm/util/registry.js.map +1 -1
  314. package/esm/util/registry.test.d.ts +2 -0
  315. package/esm/util/registry.test.d.ts.map +1 -0
  316. package/esm/util/registry.test.js +169 -0
  317. package/esm/util/registry.test.js.map +1 -0
  318. package/esm/util/resource-validators.d.ts +16 -0
  319. package/esm/util/resource-validators.d.ts.map +1 -0
  320. package/esm/util/resource-validators.js +30 -0
  321. package/esm/util/resource-validators.js.map +1 -0
  322. package/esm/util/tool-caller.d.ts +2 -2
  323. package/esm/util/tool-caller.d.ts.map +1 -1
  324. package/esm/util/tool-caller.js +12 -4
  325. package/esm/util/tool-caller.js.map +1 -1
  326. package/package.json +13 -8
  327. package/dist/providers/hoc/with-tambo-interactable.d.ts.map +0 -1
  328. package/dist/providers/hoc/with-tambo-interactable.js.map +0 -1
  329. package/dist/util/validate-zod-schema.d.ts +0 -10
  330. package/dist/util/validate-zod-schema.d.ts.map +0 -1
  331. package/dist/util/validate-zod-schema.js +0 -100
  332. package/dist/util/validate-zod-schema.js.map +0 -1
  333. package/dist/util/validate-zod-schema.test.d.ts +0 -2
  334. package/dist/util/validate-zod-schema.test.d.ts.map +0 -1
  335. package/dist/util/validate-zod-schema.test.js +0 -96
  336. package/dist/util/validate-zod-schema.test.js.map +0 -1
  337. package/esm/providers/hoc/with-tambo-interactable.d.ts.map +0 -1
  338. package/esm/providers/hoc/with-tambo-interactable.js.map +0 -1
  339. package/esm/util/validate-zod-schema.d.ts +0 -10
  340. package/esm/util/validate-zod-schema.d.ts.map +0 -1
  341. package/esm/util/validate-zod-schema.js +0 -97
  342. package/esm/util/validate-zod-schema.js.map +0 -1
  343. package/esm/util/validate-zod-schema.test.d.ts +0 -2
  344. package/esm/util/validate-zod-schema.test.d.ts.map +0 -1
  345. package/esm/util/validate-zod-schema.test.js +0 -94
  346. package/esm/util/validate-zod-schema.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,eAAe,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getZodFunctionReturns = exports.getZodFunctionArgs = exports.assertNoRecordSchema = exports.isStandardSchema = exports.schemaToJsonSchema = exports.safeSchemaToJsonSchema = exports.hasInputSchema = exports.getParametersFromToolSchema = exports.looksLikeJSONSchema = void 0;
4
+ var json_schema_1 = require("./json-schema");
5
+ Object.defineProperty(exports, "looksLikeJSONSchema", { enumerable: true, get: function () { return json_schema_1.looksLikeJSONSchema; } });
6
+ var schema_1 = require("./schema");
7
+ Object.defineProperty(exports, "getParametersFromToolSchema", { enumerable: true, get: function () { return schema_1.getParametersFromToolSchema; } });
8
+ Object.defineProperty(exports, "hasInputSchema", { enumerable: true, get: function () { return schema_1.hasInputSchema; } });
9
+ Object.defineProperty(exports, "safeSchemaToJsonSchema", { enumerable: true, get: function () { return schema_1.safeSchemaToJsonSchema; } });
10
+ Object.defineProperty(exports, "schemaToJsonSchema", { enumerable: true, get: function () { return schema_1.schemaToJsonSchema; } });
11
+ var standard_schema_1 = require("./standard-schema");
12
+ Object.defineProperty(exports, "isStandardSchema", { enumerable: true, get: function () { return standard_schema_1.isStandardSchema; } });
13
+ var validate_1 = require("./validate");
14
+ Object.defineProperty(exports, "assertNoRecordSchema", { enumerable: true, get: function () { return validate_1.assertNoRecordSchema; } });
15
+ var zod_1 = require("./zod");
16
+ Object.defineProperty(exports, "getZodFunctionArgs", { enumerable: true, get: function () { return zod_1.getZodFunctionArgs; } });
17
+ Object.defineProperty(exports, "getZodFunctionReturns", { enumerable: true, get: function () { return zod_1.getZodFunctionReturns; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAA3C,kHAAA,mBAAmB,OAAA;AAC5B,mCAMkB;AALhB,qHAAA,2BAA2B,OAAA;AAC3B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,4GAAA,kBAAkB,OAAA;AAGpB,qDAAqD;AAA5C,mHAAA,gBAAgB,OAAA;AACzB,uCAAkD;AAAzC,gHAAA,oBAAoB,OAAA;AAC7B,6BAAkE;AAAzD,yGAAA,kBAAkB,OAAA;AAAE,4GAAA,qBAAqB,OAAA","sourcesContent":["export { looksLikeJSONSchema } from \"./json-schema\";\nexport {\n getParametersFromToolSchema,\n hasInputSchema,\n safeSchemaToJsonSchema,\n schemaToJsonSchema,\n type SupportedSchema,\n} from \"./schema\";\nexport { isStandardSchema } from \"./standard-schema\";\nexport { assertNoRecordSchema } from \"./validate\";\nexport { getZodFunctionArgs, getZodFunctionReturns } from \"./zod\";\n"]}
@@ -0,0 +1,35 @@
1
+ import { JSONSchema7 } from "json-schema";
2
+ /**
3
+ * Basic heuristic to check if an object looks like a JSON Schema at the top level.
4
+ *
5
+ * This uses a Zod schema to verify only top-level keys (type, properties, items,
6
+ * etc.). It intentionally does not perform full JSON Schema validation; a more
7
+ * thorough check should be done server-side.
8
+ * @param obj - The value to check
9
+ * @returns True if the value appears to be a JSON Schema
10
+ */
11
+ export declare function looksLikeJSONSchema(obj: unknown): obj is JSONSchema7;
12
+ /**
13
+ * Extended JSON Schema type that includes draft 2020-12 features like prefixItems.
14
+ * The json-schema package types are from draft-07 and don't include prefixItems.
15
+ */
16
+ export type JSONSchema7Extended = JSONSchema7 & {
17
+ prefixItems?: JSONSchema7[];
18
+ };
19
+ /**
20
+ * Checks if a JSON Schema represents a tuple (array with positional items).
21
+ * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).
22
+ * @param schema - The JSON Schema to check
23
+ * @returns True if the schema represents a tuple
24
+ */
25
+ export declare function isJsonSchemaTuple(schema: JSONSchema7Extended): schema is JSONSchema7Extended & {
26
+ type: "array";
27
+ };
28
+ /**
29
+ * Gets the tuple items from a JSON Schema.
30
+ * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).
31
+ * @param schema - The JSON Schema tuple
32
+ * @returns Array of item schemas, or undefined if not a tuple
33
+ */
34
+ export declare function getJsonSchemaTupleItems(schema: JSONSchema7Extended): JSONSchema7[] | undefined;
35
+ //# sourceMappingURL=json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/schema/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkD1C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAMpE;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC9C,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,GAC1B,MAAM,IAAI,mBAAmB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAgBnD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,GAC1B,WAAW,EAAE,GAAG,SAAS,CAgB3B"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.looksLikeJSONSchema = looksLikeJSONSchema;
4
+ exports.isJsonSchemaTuple = isJsonSchemaTuple;
5
+ exports.getJsonSchemaTupleItems = getJsonSchemaTupleItems;
6
+ const zodInternalAlias_1 = require("zodInternalAlias");
7
+ const jsonSchemaType = zodInternalAlias_1.z.union([
8
+ zodInternalAlias_1.z.literal("object"),
9
+ zodInternalAlias_1.z.literal("array"),
10
+ zodInternalAlias_1.z.literal("string"),
11
+ zodInternalAlias_1.z.literal("number"),
12
+ zodInternalAlias_1.z.literal("integer"),
13
+ zodInternalAlias_1.z.literal("boolean"),
14
+ zodInternalAlias_1.z.literal("null"),
15
+ zodInternalAlias_1.z.array(zodInternalAlias_1.z.union([
16
+ zodInternalAlias_1.z.literal("object"),
17
+ zodInternalAlias_1.z.literal("array"),
18
+ zodInternalAlias_1.z.literal("string"),
19
+ zodInternalAlias_1.z.literal("number"),
20
+ zodInternalAlias_1.z.literal("integer"),
21
+ zodInternalAlias_1.z.literal("boolean"),
22
+ zodInternalAlias_1.z.literal("null"),
23
+ ])),
24
+ ]);
25
+ const jsonSchemaTopLevel = zodInternalAlias_1.z
26
+ .looseObject({
27
+ type: jsonSchemaType.optional(),
28
+ properties: zodInternalAlias_1.z.record(zodInternalAlias_1.z.string(), zodInternalAlias_1.z.unknown()).optional(),
29
+ items: zodInternalAlias_1.z.union([zodInternalAlias_1.z.array(zodInternalAlias_1.z.unknown()), zodInternalAlias_1.z.unknown()]).optional(),
30
+ required: zodInternalAlias_1.z.array(zodInternalAlias_1.z.string()).optional(),
31
+ additionalProperties: zodInternalAlias_1.z.union([zodInternalAlias_1.z.boolean(), zodInternalAlias_1.z.unknown()]).optional(),
32
+ enum: zodInternalAlias_1.z.array(zodInternalAlias_1.z.unknown()).optional(),
33
+ const: zodInternalAlias_1.z.unknown().optional(),
34
+ $ref: zodInternalAlias_1.z.string().optional(),
35
+ $id: zodInternalAlias_1.z.string().optional(),
36
+ $schema: zodInternalAlias_1.z.string().optional(),
37
+ title: zodInternalAlias_1.z.string().optional(),
38
+ description: zodInternalAlias_1.z.string().optional(),
39
+ })
40
+ .refine((value) => {
41
+ return (value.type !== undefined ||
42
+ value.properties !== undefined ||
43
+ value.items !== undefined ||
44
+ value.enum !== undefined ||
45
+ value.const !== undefined ||
46
+ value.$ref !== undefined);
47
+ });
48
+ /**
49
+ * Basic heuristic to check if an object looks like a JSON Schema at the top level.
50
+ *
51
+ * This uses a Zod schema to verify only top-level keys (type, properties, items,
52
+ * etc.). It intentionally does not perform full JSON Schema validation; a more
53
+ * thorough check should be done server-side.
54
+ * @param obj - The value to check
55
+ * @returns True if the value appears to be a JSON Schema
56
+ */
57
+ function looksLikeJSONSchema(obj) {
58
+ if (obj === null || typeof obj !== "object") {
59
+ return false;
60
+ }
61
+ return jsonSchemaTopLevel.safeParse(obj).success;
62
+ }
63
+ /**
64
+ * Checks if a JSON Schema represents a tuple (array with positional items).
65
+ * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).
66
+ * @param schema - The JSON Schema to check
67
+ * @returns True if the schema represents a tuple
68
+ */
69
+ function isJsonSchemaTuple(schema) {
70
+ if (schema.type !== "array") {
71
+ return false;
72
+ }
73
+ // Draft 2020-12: prefixItems array
74
+ if (schema.prefixItems && Array.isArray(schema.prefixItems)) {
75
+ return true;
76
+ }
77
+ // Draft-07: items as array (not object)
78
+ if (Array.isArray(schema.items)) {
79
+ return true;
80
+ }
81
+ return false;
82
+ }
83
+ /**
84
+ * Gets the tuple items from a JSON Schema.
85
+ * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).
86
+ * @param schema - The JSON Schema tuple
87
+ * @returns Array of item schemas, or undefined if not a tuple
88
+ */
89
+ function getJsonSchemaTupleItems(schema) {
90
+ if (schema.type !== "array") {
91
+ return undefined;
92
+ }
93
+ // Draft 2020-12: prefixItems array
94
+ if (schema.prefixItems && Array.isArray(schema.prefixItems)) {
95
+ return schema.prefixItems;
96
+ }
97
+ // Draft-07: items as array
98
+ if (Array.isArray(schema.items)) {
99
+ return schema.items;
100
+ }
101
+ return undefined;
102
+ }
103
+ //# sourceMappingURL=json-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/schema/json-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { JSONSchema7 } from \"json-schema\";\nimport { z } from \"zodInternalAlias\";\n\nconst jsonSchemaType = z.union([\n z.literal(\"object\"),\n z.literal(\"array\"),\n z.literal(\"string\"),\n z.literal(\"number\"),\n z.literal(\"integer\"),\n z.literal(\"boolean\"),\n z.literal(\"null\"),\n z.array(\n z.union([\n z.literal(\"object\"),\n z.literal(\"array\"),\n z.literal(\"string\"),\n z.literal(\"number\"),\n z.literal(\"integer\"),\n z.literal(\"boolean\"),\n z.literal(\"null\"),\n ]),\n ),\n]);\n\nconst jsonSchemaTopLevel = z\n .looseObject({\n type: jsonSchemaType.optional(),\n properties: z.record(z.string(), z.unknown()).optional(),\n items: z.union([z.array(z.unknown()), z.unknown()]).optional(),\n required: z.array(z.string()).optional(),\n additionalProperties: z.union([z.boolean(), z.unknown()]).optional(),\n enum: z.array(z.unknown()).optional(),\n const: z.unknown().optional(),\n $ref: z.string().optional(),\n $id: z.string().optional(),\n $schema: z.string().optional(),\n title: z.string().optional(),\n description: z.string().optional(),\n })\n .refine((value) => {\n return (\n value.type !== undefined ||\n value.properties !== undefined ||\n value.items !== undefined ||\n value.enum !== undefined ||\n value.const !== undefined ||\n value.$ref !== undefined\n );\n });\n\n/**\n * Basic heuristic to check if an object looks like a JSON Schema at the top level.\n *\n * This uses a Zod schema to verify only top-level keys (type, properties, items,\n * etc.). It intentionally does not perform full JSON Schema validation; a more\n * thorough check should be done server-side.\n * @param obj - The value to check\n * @returns True if the value appears to be a JSON Schema\n */\nexport function looksLikeJSONSchema(obj: unknown): obj is JSONSchema7 {\n if (obj === null || typeof obj !== \"object\") {\n return false;\n }\n\n return jsonSchemaTopLevel.safeParse(obj).success;\n}\n\n/**\n * Extended JSON Schema type that includes draft 2020-12 features like prefixItems.\n * The json-schema package types are from draft-07 and don't include prefixItems.\n */\nexport type JSONSchema7Extended = JSONSchema7 & {\n prefixItems?: JSONSchema7[];\n};\n\n/**\n * Checks if a JSON Schema represents a tuple (array with positional items).\n * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).\n * @param schema - The JSON Schema to check\n * @returns True if the schema represents a tuple\n */\nexport function isJsonSchemaTuple(\n schema: JSONSchema7Extended,\n): schema is JSONSchema7Extended & { type: \"array\" } {\n if (schema.type !== \"array\") {\n return false;\n }\n\n // Draft 2020-12: prefixItems array\n if (schema.prefixItems && Array.isArray(schema.prefixItems)) {\n return true;\n }\n\n // Draft-07: items as array (not object)\n if (Array.isArray(schema.items)) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Gets the tuple items from a JSON Schema.\n * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).\n * @param schema - The JSON Schema tuple\n * @returns Array of item schemas, or undefined if not a tuple\n */\nexport function getJsonSchemaTupleItems(\n schema: JSONSchema7Extended,\n): JSONSchema7[] | undefined {\n if (schema.type !== \"array\") {\n return undefined;\n }\n\n // Draft 2020-12: prefixItems array\n if (schema.prefixItems && Array.isArray(schema.prefixItems)) {\n return schema.prefixItems;\n }\n\n // Draft-07: items as array\n if (Array.isArray(schema.items)) {\n return schema.items as JSONSchema7[];\n }\n\n return undefined;\n}\n"]}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Schema utilities for working with Standard Schema, Zod, and JSON Schema.
3
+ *
4
+ * This module provides a unified interface for handling different schema types
5
+ * used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)
6
+ * as the primary interface, which is implemented by Zod and other validation libraries.
7
+ *
8
+ * JSON Schema conversion is handled by `@standard-community/standard-json`, with:
9
+ * - Zod 4: Uses Zod's native toJSONSchema
10
+ * - Zod 3: Requires optional peer dependency 'zod-to-json-schema'
11
+ * - Other vendors: Handled by standard-json's built-in converters
12
+ * @module schema
13
+ */
14
+ import type { JSONSchema7 } from "json-schema";
15
+ import { ParameterSpec, SupportedSchema, TamboTool, TamboToolWithToolSchema } from "../model/component-metadata";
16
+ /**
17
+ * Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.
18
+ *
19
+ * If the schema is already a JSON Schema, it is returned as-is.
20
+ * For Standard Schema validators (Zod, Valibot, ArkType, etc.), uses
21
+ * `@standard-community/standard-json` for conversion.
22
+ * @param schema - The schema to convert
23
+ * @returns The JSON Schema representation
24
+ * @example
25
+ * ```typescript
26
+ * import { z } from "zod/v4";
27
+ *
28
+ * // Convert a Zod schema
29
+ * const zodSchema = z.object({ name: z.string() });
30
+ * const jsonSchema = schemaToJsonSchema(zodSchema);
31
+ *
32
+ * // Pass through a JSON Schema
33
+ * const existingJsonSchema = { type: "object", properties: { name: { type: "string" } } };
34
+ * schemaToJsonSchema(existingJsonSchema); // returns the same object
35
+ * ```
36
+ */
37
+ export declare function schemaToJsonSchema(schema: SupportedSchema): JSONSchema7;
38
+ /**
39
+ * Safely converts a schema to JSON Schema, returning undefined for invalid inputs.
40
+ * @param schema - The schema to convert (may be undefined)
41
+ * @param onError - Optional callback invoked on conversion error
42
+ * @returns The JSON Schema representation, or undefined if conversion fails
43
+ */
44
+ export declare function safeSchemaToJsonSchema(schema: SupportedSchema | undefined | null, onError?: (error: unknown) => void): JSONSchema7 | undefined;
45
+ /**
46
+ * Checks if a tool uses the new inputSchema interface (vs deprecated toolSchema).
47
+ * @param tool - The Tambo tool to check
48
+ * @returns True if the tool uses inputSchema
49
+ */
50
+ export declare function hasInputSchema(tool: TamboTool | TamboToolWithToolSchema): tool is TamboTool;
51
+ /**
52
+ * Extracts parameter specifications from a tool schema.
53
+ *
54
+ * For tools with **inputSchema** (new interface):
55
+ * - Returns a single parameter named "input" representing the object schema
56
+ * - The inputSchema defines the shape of the single object argument
57
+ *
58
+ * For tools with **toolSchema** (deprecated):
59
+ * - Extracts positional parameters from tuple/function args
60
+ * - Returns params named "param1", "param2", etc.
61
+ * @param tool - The tool containing the schema
62
+ * @returns An array of parameter specifications
63
+ */
64
+ export declare const getParametersFromToolSchema: (tool: TamboTool | TamboToolWithToolSchema) => ParameterSpec[];
65
+ export type { SupportedSchema };
66
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAYrC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAOvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,EAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,WAAW,GAAG,SAAS,CAYzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,GAAG,uBAAuB,GACxC,IAAI,IAAI,SAAS,CAEnB;AA0DD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B,GACtC,MAAM,SAAS,GAAG,uBAAuB,KACxC,aAAa,EAmDf,CAAC;AAEF,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ /**
3
+ * Schema utilities for working with Standard Schema, Zod, and JSON Schema.
4
+ *
5
+ * This module provides a unified interface for handling different schema types
6
+ * used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)
7
+ * as the primary interface, which is implemented by Zod and other validation libraries.
8
+ *
9
+ * JSON Schema conversion is handled by `@standard-community/standard-json`, with:
10
+ * - Zod 4: Uses Zod's native toJSONSchema
11
+ * - Zod 3: Requires optional peer dependency 'zod-to-json-schema'
12
+ * - Other vendors: Handled by standard-json's built-in converters
13
+ * @module schema
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.getParametersFromToolSchema = void 0;
17
+ exports.schemaToJsonSchema = schemaToJsonSchema;
18
+ exports.safeSchemaToJsonSchema = safeSchemaToJsonSchema;
19
+ exports.hasInputSchema = hasInputSchema;
20
+ const standard_json_1 = require("@standard-community/standard-json");
21
+ const json_schema_1 = require("./json-schema");
22
+ const standard_schema_1 = require("./standard-schema");
23
+ const zod_1 = require("./zod");
24
+ // Register the Zod vendor converter with standard-json
25
+ (0, standard_json_1.loadVendor)("zod", zod_1.handleZodSchemaToJson);
26
+ /**
27
+ * Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.
28
+ *
29
+ * If the schema is already a JSON Schema, it is returned as-is.
30
+ * For Standard Schema validators (Zod, Valibot, ArkType, etc.), uses
31
+ * `@standard-community/standard-json` for conversion.
32
+ * @param schema - The schema to convert
33
+ * @returns The JSON Schema representation
34
+ * @example
35
+ * ```typescript
36
+ * import { z } from "zod/v4";
37
+ *
38
+ * // Convert a Zod schema
39
+ * const zodSchema = z.object({ name: z.string() });
40
+ * const jsonSchema = schemaToJsonSchema(zodSchema);
41
+ *
42
+ * // Pass through a JSON Schema
43
+ * const existingJsonSchema = { type: "object", properties: { name: { type: "string" } } };
44
+ * schemaToJsonSchema(existingJsonSchema); // returns the same object
45
+ * ```
46
+ */
47
+ function schemaToJsonSchema(schema) {
48
+ // Already a JSON Schema - return as-is
49
+ if (!(0, standard_schema_1.isStandardSchema)(schema)) {
50
+ return schema;
51
+ }
52
+ return standard_json_1.toJsonSchema.sync(schema);
53
+ }
54
+ /**
55
+ * Safely converts a schema to JSON Schema, returning undefined for invalid inputs.
56
+ * @param schema - The schema to convert (may be undefined)
57
+ * @param onError - Optional callback invoked on conversion error
58
+ * @returns The JSON Schema representation, or undefined if conversion fails
59
+ */
60
+ function safeSchemaToJsonSchema(schema, onError) {
61
+ if (!schema) {
62
+ return undefined;
63
+ }
64
+ try {
65
+ return schemaToJsonSchema(schema);
66
+ }
67
+ catch (error) {
68
+ console.error("Error converting schema to JSON Schema:", error);
69
+ onError?.(error);
70
+ return undefined;
71
+ }
72
+ }
73
+ /**
74
+ * Checks if a tool uses the new inputSchema interface (vs deprecated toolSchema).
75
+ * @param tool - The Tambo tool to check
76
+ * @returns True if the tool uses inputSchema
77
+ */
78
+ function hasInputSchema(tool) {
79
+ return "inputSchema" in tool && tool.inputSchema != null;
80
+ }
81
+ /**
82
+ * Retrieves the input schema for a Tambo tool using the deprecated toolSchema.
83
+ * For toolSchema, this extracts the args from the Zod function schema.
84
+ * @param tool - The Tambo tool (potentially with toolSchema)
85
+ * @returns The input schema (Standard Schema or JSON Schema), or undefined if not toolSchema
86
+ */
87
+ function getArgsFromToolSchema(tool) {
88
+ if (!("toolSchema" in tool) || !tool.toolSchema) {
89
+ return undefined;
90
+ }
91
+ if ((0, json_schema_1.looksLikeJSONSchema)(tool.toolSchema)) {
92
+ return tool.toolSchema;
93
+ }
94
+ return (0, zod_1.getZodFunctionArgs)(tool.toolSchema);
95
+ }
96
+ /**
97
+ * Extracts parameter specifications from JSON Schema tuple items.
98
+ * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).
99
+ * This is library-agnostic - works with Zod, Valibot, ArkType, etc.
100
+ * @param tupleItems - The array of JSON Schema items
101
+ * @returns An array of parameter specifications
102
+ */
103
+ function extractParamsFromJsonSchemaTuple(tupleItems) {
104
+ return tupleItems.map((item, index) => ({
105
+ name: `param${index + 1}`,
106
+ type: typeof item.type === "string" ? item.type : "object",
107
+ description: item.description ?? "",
108
+ isRequired: true, // tuple items are positional
109
+ schema: item,
110
+ }));
111
+ }
112
+ /**
113
+ * Creates a single parameter spec from an input schema.
114
+ * Used for the new inputSchema interface where the schema represents
115
+ * the shape of the single object argument to the tool function.
116
+ * @param schema - The input schema (JSON Schema)
117
+ * @returns A single parameter specification
118
+ */
119
+ function createInputParameter(schema) {
120
+ return {
121
+ name: "input",
122
+ type: typeof schema.type === "string" ? schema.type : "object",
123
+ description: schema.description ?? "",
124
+ isRequired: true,
125
+ schema,
126
+ };
127
+ }
128
+ /**
129
+ * Extracts parameter specifications from a tool schema.
130
+ *
131
+ * For tools with **inputSchema** (new interface):
132
+ * - Returns a single parameter named "input" representing the object schema
133
+ * - The inputSchema defines the shape of the single object argument
134
+ *
135
+ * For tools with **toolSchema** (deprecated):
136
+ * - Extracts positional parameters from tuple/function args
137
+ * - Returns params named "param1", "param2", etc.
138
+ * @param tool - The tool containing the schema
139
+ * @returns An array of parameter specifications
140
+ */
141
+ const getParametersFromToolSchema = (tool) => {
142
+ // New interface: inputSchema represents the single object argument
143
+ if (hasInputSchema(tool)) {
144
+ const schema = tool.inputSchema;
145
+ // Convert to JSON Schema if needed
146
+ let jsonSchema;
147
+ if ((0, json_schema_1.looksLikeJSONSchema)(schema)) {
148
+ jsonSchema = schema;
149
+ }
150
+ else if ((0, standard_schema_1.isStandardSchema)(schema)) {
151
+ jsonSchema = schemaToJsonSchema(schema);
152
+ }
153
+ else {
154
+ console.warn("Unknown inputSchema type, returning empty parameters");
155
+ return [];
156
+ }
157
+ return [createInputParameter(jsonSchema)];
158
+ }
159
+ // Deprecated interface: toolSchema with positional tuple args
160
+ const argsSchema = getArgsFromToolSchema(tool);
161
+ if (!argsSchema) {
162
+ console.warn("No toolSchema found, returning empty parameters");
163
+ return [];
164
+ }
165
+ // Convert to JSON Schema if needed
166
+ // For toolSchema, the args are typically a Zod tuple from z.function().args(...)
167
+ // We use direct Zod conversion to ensure proper tuple handling
168
+ let jsonSchema;
169
+ if ((0, json_schema_1.looksLikeJSONSchema)(argsSchema)) {
170
+ jsonSchema = argsSchema;
171
+ }
172
+ else if ((0, zod_1.isZodSchema)(argsSchema)) {
173
+ // Use direct Zod conversion for more reliable tuple handling
174
+ jsonSchema = (0, zod_1.handleZodSchemaToJson)(argsSchema);
175
+ }
176
+ else if ((0, standard_schema_1.isStandardSchema)(argsSchema)) {
177
+ jsonSchema = schemaToJsonSchema(argsSchema);
178
+ }
179
+ else {
180
+ console.warn("Unknown toolSchema args type, returning empty parameters");
181
+ return [];
182
+ }
183
+ // Extract tuple items for positional params
184
+ if ((0, json_schema_1.isJsonSchemaTuple)(jsonSchema)) {
185
+ const tupleItems = (0, json_schema_1.getJsonSchemaTupleItems)(jsonSchema) ?? [];
186
+ return extractParamsFromJsonSchemaTuple(tupleItems);
187
+ }
188
+ // Fallback: wrap as single param (shouldn't normally happen for toolSchema)
189
+ return extractParamsFromJsonSchemaTuple([jsonSchema]);
190
+ };
191
+ exports.getParametersFromToolSchema = getParametersFromToolSchema;
192
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AA2CH,gDAOC;AAQD,wDAeC;AAOD,wCAIC;AAlFD,qEAA6E;AAS7E,+CAIuB;AACvB,uDAAqD;AACrD,+BAA+E;AAE/E,uDAAuD;AACvD,IAAA,0BAAU,EAAC,KAAK,EAAE,2BAAqB,CAAC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,kBAAkB,CAAC,MAAuB;IACxD,uCAAuC;IACvC,IAAI,CAAC,IAAA,kCAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,4BAAY,CAAC,IAAI,CAAC,MAAM,CAAgB,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,MAA0C,EAC1C,OAAkC;IAElC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAC5B,IAAyC;IAEzC,OAAO,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAC5B,IAAyC;IAEzC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAA,iCAAmB,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,OAAO,IAAA,wBAAkB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gCAAgC,CACvC,UAAyB;IAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE;QACzB,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;QAC1D,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,UAAU,EAAE,IAAI,EAAE,6BAA6B;QAC/C,MAAM,EAAE,IAAI;KACb,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,MAAmB;IAC/C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;QAC9D,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,UAAU,EAAE,IAAI;QAChB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,2BAA2B,GAAG,CACzC,IAAyC,EACxB,EAAE;IACnB,mEAAmE;IACnE,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAEhC,mCAAmC;QACnC,IAAI,UAAuB,CAAC;QAC5B,IAAI,IAAA,iCAAmB,EAAC,MAAM,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;aAAM,IAAI,IAAA,kCAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YACpC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mCAAmC;IACnC,iFAAiF;IACjF,+DAA+D;IAC/D,IAAI,UAAuB,CAAC;IAC5B,IAAI,IAAA,iCAAmB,EAAC,UAAU,CAAC,EAAE,CAAC;QACpC,UAAU,GAAG,UAAU,CAAC;IAC1B,CAAC;SAAM,IAAI,IAAA,iBAAW,EAAC,UAAU,CAAC,EAAE,CAAC;QACnC,6DAA6D;QAC7D,UAAU,GAAG,IAAA,2BAAqB,EAAC,UAAU,CAAgB,CAAC;IAChE,CAAC;SAAM,IAAI,IAAA,kCAAgB,EAAC,UAAU,CAAC,EAAE,CAAC;QACxC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4CAA4C;IAC5C,IAAI,IAAA,+BAAiB,EAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAA,qCAAuB,EAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,gCAAgC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,OAAO,gCAAgC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AArDW,QAAA,2BAA2B,+BAqDtC","sourcesContent":["/**\n * Schema utilities for working with Standard Schema, Zod, and JSON Schema.\n *\n * This module provides a unified interface for handling different schema types\n * used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)\n * as the primary interface, which is implemented by Zod and other validation libraries.\n *\n * JSON Schema conversion is handled by `@standard-community/standard-json`, with:\n * - Zod 4: Uses Zod's native toJSONSchema\n * - Zod 3: Requires optional peer dependency 'zod-to-json-schema'\n * - Other vendors: Handled by standard-json's built-in converters\n * @module schema\n */\n\nimport { loadVendor, toJsonSchema } from \"@standard-community/standard-json\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport {\n ParameterSpec,\n SupportedSchema,\n TamboTool,\n TamboToolWithToolSchema,\n} from \"../model/component-metadata\";\nimport {\n getJsonSchemaTupleItems,\n isJsonSchemaTuple,\n looksLikeJSONSchema,\n} from \"./json-schema\";\nimport { isStandardSchema } from \"./standard-schema\";\nimport { getZodFunctionArgs, handleZodSchemaToJson, isZodSchema } from \"./zod\";\n\n// Register the Zod vendor converter with standard-json\nloadVendor(\"zod\", handleZodSchemaToJson);\n\n/**\n * Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.\n *\n * If the schema is already a JSON Schema, it is returned as-is.\n * For Standard Schema validators (Zod, Valibot, ArkType, etc.), uses\n * `@standard-community/standard-json` for conversion.\n * @param schema - The schema to convert\n * @returns The JSON Schema representation\n * @example\n * ```typescript\n * import { z } from \"zod/v4\";\n *\n * // Convert a Zod schema\n * const zodSchema = z.object({ name: z.string() });\n * const jsonSchema = schemaToJsonSchema(zodSchema);\n *\n * // Pass through a JSON Schema\n * const existingJsonSchema = { type: \"object\", properties: { name: { type: \"string\" } } };\n * schemaToJsonSchema(existingJsonSchema); // returns the same object\n * ```\n */\nexport function schemaToJsonSchema(schema: SupportedSchema): JSONSchema7 {\n // Already a JSON Schema - return as-is\n if (!isStandardSchema(schema)) {\n return schema;\n }\n\n return toJsonSchema.sync(schema) as JSONSchema7;\n}\n\n/**\n * Safely converts a schema to JSON Schema, returning undefined for invalid inputs.\n * @param schema - The schema to convert (may be undefined)\n * @param onError - Optional callback invoked on conversion error\n * @returns The JSON Schema representation, or undefined if conversion fails\n */\nexport function safeSchemaToJsonSchema(\n schema: SupportedSchema | undefined | null,\n onError?: (error: unknown) => void,\n): JSONSchema7 | undefined {\n if (!schema) {\n return undefined;\n }\n\n try {\n return schemaToJsonSchema(schema);\n } catch (error) {\n console.error(\"Error converting schema to JSON Schema:\", error);\n onError?.(error);\n return undefined;\n }\n}\n\n/**\n * Checks if a tool uses the new inputSchema interface (vs deprecated toolSchema).\n * @param tool - The Tambo tool to check\n * @returns True if the tool uses inputSchema\n */\nexport function hasInputSchema(\n tool: TamboTool | TamboToolWithToolSchema,\n): tool is TamboTool {\n return \"inputSchema\" in tool && tool.inputSchema != null;\n}\n\n/**\n * Retrieves the input schema for a Tambo tool using the deprecated toolSchema.\n * For toolSchema, this extracts the args from the Zod function schema.\n * @param tool - The Tambo tool (potentially with toolSchema)\n * @returns The input schema (Standard Schema or JSON Schema), or undefined if not toolSchema\n */\nfunction getArgsFromToolSchema(\n tool: TamboTool | TamboToolWithToolSchema,\n): StandardSchemaV1 | JSONSchema7 | undefined {\n if (!(\"toolSchema\" in tool) || !tool.toolSchema) {\n return undefined;\n }\n\n if (looksLikeJSONSchema(tool.toolSchema)) {\n return tool.toolSchema;\n }\n\n return getZodFunctionArgs(tool.toolSchema);\n}\n\n/**\n * Extracts parameter specifications from JSON Schema tuple items.\n * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).\n * This is library-agnostic - works with Zod, Valibot, ArkType, etc.\n * @param tupleItems - The array of JSON Schema items\n * @returns An array of parameter specifications\n */\nfunction extractParamsFromJsonSchemaTuple(\n tupleItems: JSONSchema7[],\n): ParameterSpec[] {\n return tupleItems.map((item, index) => ({\n name: `param${index + 1}`,\n type: typeof item.type === \"string\" ? item.type : \"object\",\n description: item.description ?? \"\",\n isRequired: true, // tuple items are positional\n schema: item,\n }));\n}\n\n/**\n * Creates a single parameter spec from an input schema.\n * Used for the new inputSchema interface where the schema represents\n * the shape of the single object argument to the tool function.\n * @param schema - The input schema (JSON Schema)\n * @returns A single parameter specification\n */\nfunction createInputParameter(schema: JSONSchema7): ParameterSpec {\n return {\n name: \"input\",\n type: typeof schema.type === \"string\" ? schema.type : \"object\",\n description: schema.description ?? \"\",\n isRequired: true,\n schema,\n };\n}\n\n/**\n * Extracts parameter specifications from a tool schema.\n *\n * For tools with **inputSchema** (new interface):\n * - Returns a single parameter named \"input\" representing the object schema\n * - The inputSchema defines the shape of the single object argument\n *\n * For tools with **toolSchema** (deprecated):\n * - Extracts positional parameters from tuple/function args\n * - Returns params named \"param1\", \"param2\", etc.\n * @param tool - The tool containing the schema\n * @returns An array of parameter specifications\n */\nexport const getParametersFromToolSchema = (\n tool: TamboTool | TamboToolWithToolSchema,\n): ParameterSpec[] => {\n // New interface: inputSchema represents the single object argument\n if (hasInputSchema(tool)) {\n const schema = tool.inputSchema;\n\n // Convert to JSON Schema if needed\n let jsonSchema: JSONSchema7;\n if (looksLikeJSONSchema(schema)) {\n jsonSchema = schema;\n } else if (isStandardSchema(schema)) {\n jsonSchema = schemaToJsonSchema(schema);\n } else {\n console.warn(\"Unknown inputSchema type, returning empty parameters\");\n return [];\n }\n\n return [createInputParameter(jsonSchema)];\n }\n\n // Deprecated interface: toolSchema with positional tuple args\n const argsSchema = getArgsFromToolSchema(tool);\n\n if (!argsSchema) {\n console.warn(\"No toolSchema found, returning empty parameters\");\n return [];\n }\n\n // Convert to JSON Schema if needed\n // For toolSchema, the args are typically a Zod tuple from z.function().args(...)\n // We use direct Zod conversion to ensure proper tuple handling\n let jsonSchema: JSONSchema7;\n if (looksLikeJSONSchema(argsSchema)) {\n jsonSchema = argsSchema;\n } else if (isZodSchema(argsSchema)) {\n // Use direct Zod conversion for more reliable tuple handling\n jsonSchema = handleZodSchemaToJson(argsSchema) as JSONSchema7;\n } else if (isStandardSchema(argsSchema)) {\n jsonSchema = schemaToJsonSchema(argsSchema);\n } else {\n console.warn(\"Unknown toolSchema args type, returning empty parameters\");\n return [];\n }\n\n // Extract tuple items for positional params\n if (isJsonSchemaTuple(jsonSchema)) {\n const tupleItems = getJsonSchemaTupleItems(jsonSchema) ?? [];\n return extractParamsFromJsonSchemaTuple(tupleItems);\n }\n\n // Fallback: wrap as single param (shouldn't normally happen for toolSchema)\n return extractParamsFromJsonSchemaTuple([jsonSchema]);\n};\n\nexport type { SupportedSchema };\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../../src/schema/schema.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const zodInternalAlias_1 = require("zodInternalAlias");
4
+ const json_schema_1 = require("./json-schema");
5
+ const standard_schema_1 = require("./standard-schema");
6
+ describe("schema utilities", () => {
7
+ describe("looksLikeJSONSchema", () => {
8
+ it("returns true for a basic JSON Schema object", () => {
9
+ const jsonSchema = {
10
+ type: "object",
11
+ properties: {
12
+ name: { type: "string" },
13
+ age: { type: "integer" },
14
+ },
15
+ required: ["name"],
16
+ };
17
+ expect((0, json_schema_1.looksLikeJSONSchema)(jsonSchema)).toBe(true);
18
+ });
19
+ it("returns true for a union type JSON Schema", () => {
20
+ const jsonSchema = {
21
+ type: ["string", "null"],
22
+ };
23
+ expect((0, json_schema_1.looksLikeJSONSchema)(jsonSchema)).toBe(true);
24
+ });
25
+ it("returns false for Standard Schema validators", () => {
26
+ const zodSchema = zodInternalAlias_1.z.object({
27
+ name: zodInternalAlias_1.z.string(),
28
+ });
29
+ expect((0, standard_schema_1.isStandardSchema)(zodSchema)).toBe(true);
30
+ expect((0, json_schema_1.looksLikeJSONSchema)(zodSchema)).toBe(false);
31
+ });
32
+ it("returns false for arbitrary objects that do not resemble JSON Schema", () => {
33
+ const notSchema = {
34
+ type: "foo",
35
+ other: "bar",
36
+ };
37
+ expect((0, json_schema_1.looksLikeJSONSchema)(notSchema)).toBe(false);
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/schema/schema.test.ts"],"names":[],"mappings":";;AACA,uDAAqC;AACrC,+CAAoD;AACpD,uDAAqD;AAErD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,UAAU,GAAgB;gBAC9B,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBACzB;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB,CAAC;YAEF,MAAM,CAAC,IAAA,iCAAmB,EAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,UAAU,GAAgB;gBAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;aACzB,CAAC;YAEF,MAAM,CAAC,IAAA,iCAAmB,EAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,SAAS,GAAG,oBAAC,CAAC,MAAM,CAAC;gBACzB,IAAI,EAAE,oBAAC,CAAC,MAAM,EAAE;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAA,kCAAgB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAA,iCAAmB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC9E,MAAM,SAAS,GAAG;gBAChB,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;aACb,CAAC;YAEF,MAAM,CAAC,IAAA,iCAAmB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { JSONSchema7 } from \"json-schema\";\nimport { z } from \"zodInternalAlias\";\nimport { looksLikeJSONSchema } from \"./json-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 = z.object({\n name: z.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"]}
@@ -0,0 +1,21 @@
1
+ import { StandardSchemaV1 } from "@standard-schema/spec";
2
+ /**
3
+ * Type guard to check if an object implements the Standard Schema interface.
4
+ *
5
+ * Standard Schema compliant validators have a `~standard` property containing
6
+ * metadata about the schema including version, vendor, and validate function.
7
+ * @param obj - The object to check
8
+ * @returns True if the object implements StandardSchemaV1
9
+ * @example
10
+ * ```typescript
11
+ * import { z } from "zod/v4";
12
+ *
13
+ * const zodSchema = z.object({ name: z.string() });
14
+ * isStandardSchema(zodSchema); // true
15
+ *
16
+ * const jsonSchema = { type: "object", properties: { name: { type: "string" } } };
17
+ * isStandardSchema(jsonSchema); // false
18
+ * ```
19
+ */
20
+ export declare function isStandardSchema(obj: unknown): obj is StandardSchemaV1;
21
+ //# sourceMappingURL=standard-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../../src/schema/standard-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgBzD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,gBAAgB,CAEtE"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStandardSchema = isStandardSchema;
4
+ const zodInternalAlias_1 = require("zodInternalAlias");
5
+ const standardSchemaProps = zodInternalAlias_1.z.object({
6
+ version: zodInternalAlias_1.z.literal(1),
7
+ vendor: zodInternalAlias_1.z.string(),
8
+ validate: zodInternalAlias_1.z.function({
9
+ input: [zodInternalAlias_1.z.unknown()],
10
+ output: zodInternalAlias_1.z.union([zodInternalAlias_1.z.unknown(), zodInternalAlias_1.z.promise(zodInternalAlias_1.z.unknown())]),
11
+ }),
12
+ });
13
+ const standardSchemaObject = zodInternalAlias_1.z.object({
14
+ "~standard": standardSchemaProps,
15
+ });
16
+ /**
17
+ * Type guard to check if an object implements the Standard Schema interface.
18
+ *
19
+ * Standard Schema compliant validators have a `~standard` property containing
20
+ * metadata about the schema including version, vendor, and validate function.
21
+ * @param obj - The object to check
22
+ * @returns True if the object implements StandardSchemaV1
23
+ * @example
24
+ * ```typescript
25
+ * import { z } from "zod/v4";
26
+ *
27
+ * const zodSchema = z.object({ name: z.string() });
28
+ * isStandardSchema(zodSchema); // true
29
+ *
30
+ * const jsonSchema = { type: "object", properties: { name: { type: "string" } } };
31
+ * isStandardSchema(jsonSchema); // false
32
+ * ```
33
+ */
34
+ function isStandardSchema(obj) {
35
+ return standardSchemaObject.safeParse(obj).success;
36
+ }
37
+ //# sourceMappingURL=standard-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../../src/schema/standard-schema.ts"],"names":[],"mappings":";;AAkCA,4CAEC;AAnCD,uDAAqC;AAErC,MAAM,mBAAmB,GAAG,oBAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,oBAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,oBAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,oBAAC,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE,CAAC,oBAAC,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,EAAE,oBAAC,CAAC,KAAK,CAAC,CAAC,oBAAC,CAAC,OAAO,EAAE,EAAE,oBAAC,CAAC,OAAO,CAAC,oBAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACvD,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,oBAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,mBAAmB;CACjC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,OAAO,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC","sourcesContent":["import { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { z } from \"zodInternalAlias\";\n\nconst standardSchemaProps = z.object({\n version: z.literal(1),\n vendor: z.string(),\n validate: z.function({\n input: [z.unknown()],\n output: z.union([z.unknown(), z.promise(z.unknown())]),\n }),\n});\n\nconst standardSchemaObject = z.object({\n \"~standard\": standardSchemaProps,\n});\n\n/**\n * Type guard to check if an object implements the Standard Schema interface.\n *\n * Standard Schema compliant validators have a `~standard` property containing\n * metadata about the schema including version, vendor, and validate function.\n * @param obj - The object to check\n * @returns True if the object implements StandardSchemaV1\n * @example\n * ```typescript\n * import { z } from \"zod/v4\";\n *\n * const zodSchema = z.object({ name: z.string() });\n * isStandardSchema(zodSchema); // true\n *\n * const jsonSchema = { type: \"object\", properties: { name: { type: \"string\" } } };\n * isStandardSchema(jsonSchema); // false\n * ```\n */\nexport function isStandardSchema(obj: unknown): obj is StandardSchemaV1 {\n return standardSchemaObject.safeParse(obj).success;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Asserts that a schema does not contain record types (objects with dynamic keys).
3
+ * Records are not serializable to JSON Schema in a way that the Tambo backend
4
+ * understands, so they are disallowed.
5
+ *
6
+ * This function accepts Standard Schema validators (Zod, Valibot, ArkType, etc.)
7
+ * or JSON Schema objects. It converts them to JSON Schema and checks for record patterns.
8
+ *
9
+ * For tool schemas that are function types, this extracts and validates the input parameters.
10
+ * @param schema - The schema to validate (Standard Schema or JSON Schema)
11
+ * @param contextName - A human-readable label echoed in the error message
12
+ */
13
+ export declare function assertNoRecordSchema(schema: unknown, contextName?: string): void;
14
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAuIA;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,WAAW,SAAW,GACrB,IAAI,CAqCN"}