@tambo-ai/react 0.70.0 → 0.72.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 (305) hide show
  1. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts +44 -0
  2. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -0
  3. package/dist/v1/hooks/use-tambo-v1-component-state.js +134 -0
  4. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -0
  5. package/dist/v1/hooks/use-tambo-v1-component-state.test.d.ts +2 -0
  6. package/dist/v1/hooks/use-tambo-v1-component-state.test.d.ts.map +1 -0
  7. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +292 -0
  8. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -0
  9. package/dist/v1/hooks/use-tambo-v1-messages.d.ts +58 -0
  10. package/dist/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -0
  11. package/dist/v1/hooks/use-tambo-v1-messages.js +54 -0
  12. package/dist/v1/hooks/use-tambo-v1-messages.js.map +1 -0
  13. package/dist/v1/hooks/use-tambo-v1-messages.test.d.ts +2 -0
  14. package/dist/v1/hooks/use-tambo-v1-messages.test.d.ts.map +1 -0
  15. package/dist/v1/hooks/use-tambo-v1-messages.test.js +137 -0
  16. package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -0
  17. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +96 -0
  18. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -0
  19. package/dist/v1/hooks/use-tambo-v1-send-message.js +227 -0
  20. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -0
  21. package/dist/v1/hooks/use-tambo-v1-send-message.test.d.ts +2 -0
  22. package/dist/v1/hooks/use-tambo-v1-send-message.test.d.ts.map +1 -0
  23. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +827 -0
  24. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -0
  25. package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts +62 -0
  26. package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -0
  27. package/dist/v1/hooks/use-tambo-v1-thread-input.js +76 -0
  28. package/dist/v1/hooks/use-tambo-v1-thread-input.js.map +1 -0
  29. package/dist/v1/hooks/use-tambo-v1-thread-input.test.d.ts +2 -0
  30. package/dist/v1/hooks/use-tambo-v1-thread-input.test.d.ts.map +1 -0
  31. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +168 -0
  32. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -0
  33. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +61 -0
  34. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -0
  35. package/dist/v1/hooks/use-tambo-v1-thread-list.js +56 -0
  36. package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -0
  37. package/dist/v1/hooks/use-tambo-v1-thread-list.test.d.ts +2 -0
  38. package/dist/v1/hooks/use-tambo-v1-thread-list.test.d.ts.map +1 -0
  39. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +98 -0
  40. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -0
  41. package/dist/v1/hooks/use-tambo-v1-thread.d.ts +37 -0
  42. package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -0
  43. package/dist/v1/hooks/use-tambo-v1-thread.js +49 -0
  44. package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -0
  45. package/dist/v1/hooks/use-tambo-v1-thread.test.d.ts +2 -0
  46. package/dist/v1/hooks/use-tambo-v1-thread.test.d.ts.map +1 -0
  47. package/dist/v1/hooks/use-tambo-v1-thread.test.js +83 -0
  48. package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -0
  49. package/dist/v1/hooks/use-tambo-v1.d.ts +107 -0
  50. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -0
  51. package/dist/v1/hooks/use-tambo-v1.js +87 -0
  52. package/dist/v1/hooks/use-tambo-v1.js.map +1 -0
  53. package/dist/v1/hooks/use-tambo-v1.test.d.ts +2 -0
  54. package/dist/v1/hooks/use-tambo-v1.test.d.ts.map +1 -0
  55. package/dist/v1/hooks/use-tambo-v1.test.js +150 -0
  56. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -0
  57. package/dist/v1/index.d.ts +65 -16
  58. package/dist/v1/index.d.ts.map +1 -1
  59. package/dist/v1/index.js +119 -26
  60. package/dist/v1/index.js.map +1 -1
  61. package/dist/v1/providers/tambo-v1-provider.d.ts +133 -0
  62. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -0
  63. package/dist/v1/providers/tambo-v1-provider.js +131 -0
  64. package/dist/v1/providers/tambo-v1-provider.js.map +1 -0
  65. package/dist/v1/providers/tambo-v1-provider.test.d.ts +2 -0
  66. package/dist/v1/providers/tambo-v1-provider.test.d.ts.map +1 -0
  67. package/dist/v1/providers/tambo-v1-provider.test.js +181 -0
  68. package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -0
  69. package/dist/v1/providers/tambo-v1-stream-context.d.ts +136 -0
  70. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -0
  71. package/dist/v1/providers/tambo-v1-stream-context.js +230 -0
  72. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -0
  73. package/dist/v1/providers/tambo-v1-stream-context.test.d.ts +2 -0
  74. package/dist/v1/providers/tambo-v1-stream-context.test.d.ts.map +1 -0
  75. package/dist/v1/providers/tambo-v1-stream-context.test.js +85 -0
  76. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -0
  77. package/dist/v1/types/component.d.ts +5 -2
  78. package/dist/v1/types/component.d.ts.map +1 -1
  79. package/dist/v1/types/component.js +5 -2
  80. package/dist/v1/types/component.js.map +1 -1
  81. package/dist/v1/types/event.d.ts +21 -12
  82. package/dist/v1/types/event.d.ts.map +1 -1
  83. package/dist/v1/types/event.js +46 -1
  84. package/dist/v1/types/event.js.map +1 -1
  85. package/dist/v1/types/event.test.d.ts +2 -0
  86. package/dist/v1/types/event.test.d.ts.map +1 -0
  87. package/dist/v1/types/event.test.js +70 -0
  88. package/dist/v1/types/event.test.js.map +1 -0
  89. package/dist/v1/types/message.d.ts +30 -9
  90. package/dist/v1/types/message.d.ts.map +1 -1
  91. package/dist/v1/types/message.js +1 -1
  92. package/dist/v1/types/message.js.map +1 -1
  93. package/dist/v1/types/thread.d.ts +1 -3
  94. package/dist/v1/types/thread.d.ts.map +1 -1
  95. package/dist/v1/types/thread.js +1 -1
  96. package/dist/v1/types/thread.js.map +1 -1
  97. package/dist/v1/utils/component-renderer.d.ts +89 -0
  98. package/dist/v1/utils/component-renderer.d.ts.map +1 -0
  99. package/dist/v1/utils/component-renderer.js +216 -0
  100. package/dist/v1/utils/component-renderer.js.map +1 -0
  101. package/dist/v1/utils/component-renderer.test.d.ts +2 -0
  102. package/dist/v1/utils/component-renderer.test.d.ts.map +1 -0
  103. package/dist/v1/utils/component-renderer.test.js +380 -0
  104. package/dist/v1/utils/component-renderer.test.js.map +1 -0
  105. package/dist/v1/utils/event-accumulator.d.ts +100 -0
  106. package/dist/v1/utils/event-accumulator.d.ts.map +1 -0
  107. package/dist/v1/utils/event-accumulator.js +735 -0
  108. package/dist/v1/utils/event-accumulator.js.map +1 -0
  109. package/dist/v1/utils/event-accumulator.test.d.ts +2 -0
  110. package/dist/v1/utils/event-accumulator.test.d.ts.map +1 -0
  111. package/dist/v1/utils/event-accumulator.test.js +1205 -0
  112. package/dist/v1/utils/event-accumulator.test.js.map +1 -0
  113. package/dist/v1/utils/json-patch.d.ts +18 -0
  114. package/dist/v1/utils/json-patch.d.ts.map +1 -0
  115. package/dist/v1/utils/json-patch.js +35 -0
  116. package/dist/v1/utils/json-patch.js.map +1 -0
  117. package/dist/v1/utils/json-patch.test.d.ts +2 -0
  118. package/dist/v1/utils/json-patch.test.d.ts.map +1 -0
  119. package/dist/v1/utils/json-patch.test.js +28 -0
  120. package/dist/v1/utils/json-patch.test.js.map +1 -0
  121. package/dist/v1/utils/registry-conversion.d.ts +53 -0
  122. package/dist/v1/utils/registry-conversion.d.ts.map +1 -0
  123. package/dist/v1/utils/registry-conversion.js +114 -0
  124. package/dist/v1/utils/registry-conversion.js.map +1 -0
  125. package/dist/v1/utils/registry-conversion.test.d.ts +2 -0
  126. package/dist/v1/utils/registry-conversion.test.d.ts.map +1 -0
  127. package/dist/v1/utils/registry-conversion.test.js +179 -0
  128. package/dist/v1/utils/registry-conversion.test.js.map +1 -0
  129. package/dist/v1/utils/stream-handler.d.ts +45 -0
  130. package/dist/v1/utils/stream-handler.d.ts.map +1 -0
  131. package/dist/v1/utils/stream-handler.js +47 -0
  132. package/dist/v1/utils/stream-handler.js.map +1 -0
  133. package/dist/v1/utils/stream-handler.test.d.ts +2 -0
  134. package/dist/v1/utils/stream-handler.test.d.ts.map +1 -0
  135. package/dist/v1/utils/stream-handler.test.js +74 -0
  136. package/dist/v1/utils/stream-handler.test.js.map +1 -0
  137. package/dist/v1/utils/tool-call-tracker.d.ts +41 -0
  138. package/dist/v1/utils/tool-call-tracker.d.ts.map +1 -0
  139. package/dist/v1/utils/tool-call-tracker.js +90 -0
  140. package/dist/v1/utils/tool-call-tracker.js.map +1 -0
  141. package/dist/v1/utils/tool-executor.d.ts +33 -0
  142. package/dist/v1/utils/tool-executor.d.ts.map +1 -0
  143. package/dist/v1/utils/tool-executor.js +103 -0
  144. package/dist/v1/utils/tool-executor.js.map +1 -0
  145. package/dist/v1/utils/tool-executor.test.d.ts +2 -0
  146. package/dist/v1/utils/tool-executor.test.d.ts.map +1 -0
  147. package/dist/v1/utils/tool-executor.test.js +222 -0
  148. package/dist/v1/utils/tool-executor.test.js.map +1 -0
  149. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts +44 -0
  150. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -0
  151. package/esm/v1/hooks/use-tambo-v1-component-state.js +131 -0
  152. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -0
  153. package/esm/v1/hooks/use-tambo-v1-component-state.test.d.ts +2 -0
  154. package/esm/v1/hooks/use-tambo-v1-component-state.test.d.ts.map +1 -0
  155. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +290 -0
  156. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -0
  157. package/esm/v1/hooks/use-tambo-v1-messages.d.ts +58 -0
  158. package/esm/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -0
  159. package/esm/v1/hooks/use-tambo-v1-messages.js +51 -0
  160. package/esm/v1/hooks/use-tambo-v1-messages.js.map +1 -0
  161. package/esm/v1/hooks/use-tambo-v1-messages.test.d.ts +2 -0
  162. package/esm/v1/hooks/use-tambo-v1-messages.test.d.ts.map +1 -0
  163. package/esm/v1/hooks/use-tambo-v1-messages.test.js +132 -0
  164. package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -0
  165. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +96 -0
  166. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -0
  167. package/esm/v1/hooks/use-tambo-v1-send-message.js +223 -0
  168. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -0
  169. package/esm/v1/hooks/use-tambo-v1-send-message.test.d.ts +2 -0
  170. package/esm/v1/hooks/use-tambo-v1-send-message.test.d.ts.map +1 -0
  171. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +822 -0
  172. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -0
  173. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +62 -0
  174. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -0
  175. package/esm/v1/hooks/use-tambo-v1-thread-input.js +73 -0
  176. package/esm/v1/hooks/use-tambo-v1-thread-input.js.map +1 -0
  177. package/esm/v1/hooks/use-tambo-v1-thread-input.test.d.ts +2 -0
  178. package/esm/v1/hooks/use-tambo-v1-thread-input.test.d.ts.map +1 -0
  179. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +166 -0
  180. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -0
  181. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +61 -0
  182. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -0
  183. package/esm/v1/hooks/use-tambo-v1-thread-list.js +53 -0
  184. package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -0
  185. package/esm/v1/hooks/use-tambo-v1-thread-list.test.d.ts +2 -0
  186. package/esm/v1/hooks/use-tambo-v1-thread-list.test.d.ts.map +1 -0
  187. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +93 -0
  188. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -0
  189. package/esm/v1/hooks/use-tambo-v1-thread.d.ts +37 -0
  190. package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -0
  191. package/esm/v1/hooks/use-tambo-v1-thread.js +46 -0
  192. package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -0
  193. package/esm/v1/hooks/use-tambo-v1-thread.test.d.ts +2 -0
  194. package/esm/v1/hooks/use-tambo-v1-thread.test.d.ts.map +1 -0
  195. package/esm/v1/hooks/use-tambo-v1-thread.test.js +78 -0
  196. package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -0
  197. package/esm/v1/hooks/use-tambo-v1.d.ts +107 -0
  198. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -0
  199. package/esm/v1/hooks/use-tambo-v1.js +84 -0
  200. package/esm/v1/hooks/use-tambo-v1.js.map +1 -0
  201. package/esm/v1/hooks/use-tambo-v1.test.d.ts +2 -0
  202. package/esm/v1/hooks/use-tambo-v1.test.d.ts.map +1 -0
  203. package/esm/v1/hooks/use-tambo-v1.test.js +145 -0
  204. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -0
  205. package/esm/v1/index.d.ts +65 -16
  206. package/esm/v1/index.d.ts.map +1 -1
  207. package/esm/v1/index.js +83 -27
  208. package/esm/v1/index.js.map +1 -1
  209. package/esm/v1/providers/tambo-v1-provider.d.ts +133 -0
  210. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -0
  211. package/esm/v1/providers/tambo-v1-provider.js +94 -0
  212. package/esm/v1/providers/tambo-v1-provider.js.map +1 -0
  213. package/esm/v1/providers/tambo-v1-provider.test.d.ts +2 -0
  214. package/esm/v1/providers/tambo-v1-provider.test.d.ts.map +1 -0
  215. package/esm/v1/providers/tambo-v1-provider.test.js +176 -0
  216. package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -0
  217. package/esm/v1/providers/tambo-v1-stream-context.d.ts +136 -0
  218. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -0
  219. package/esm/v1/providers/tambo-v1-stream-context.js +191 -0
  220. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -0
  221. package/esm/v1/providers/tambo-v1-stream-context.test.d.ts +2 -0
  222. package/esm/v1/providers/tambo-v1-stream-context.test.d.ts.map +1 -0
  223. package/esm/v1/providers/tambo-v1-stream-context.test.js +80 -0
  224. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -0
  225. package/esm/v1/types/component.d.ts +5 -2
  226. package/esm/v1/types/component.d.ts.map +1 -1
  227. package/esm/v1/types/component.js +5 -2
  228. package/esm/v1/types/component.js.map +1 -1
  229. package/esm/v1/types/event.d.ts +21 -12
  230. package/esm/v1/types/event.d.ts.map +1 -1
  231. package/esm/v1/types/event.js +44 -2
  232. package/esm/v1/types/event.js.map +1 -1
  233. package/esm/v1/types/event.test.d.ts +2 -0
  234. package/esm/v1/types/event.test.d.ts.map +1 -0
  235. package/esm/v1/types/event.test.js +68 -0
  236. package/esm/v1/types/event.test.js.map +1 -0
  237. package/esm/v1/types/message.d.ts +30 -9
  238. package/esm/v1/types/message.d.ts.map +1 -1
  239. package/esm/v1/types/message.js +1 -1
  240. package/esm/v1/types/message.js.map +1 -1
  241. package/esm/v1/types/thread.d.ts +1 -3
  242. package/esm/v1/types/thread.d.ts.map +1 -1
  243. package/esm/v1/types/thread.js +1 -1
  244. package/esm/v1/types/thread.js.map +1 -1
  245. package/esm/v1/utils/component-renderer.d.ts +89 -0
  246. package/esm/v1/utils/component-renderer.d.ts.map +1 -0
  247. package/esm/v1/utils/component-renderer.js +175 -0
  248. package/esm/v1/utils/component-renderer.js.map +1 -0
  249. package/esm/v1/utils/component-renderer.test.d.ts +2 -0
  250. package/esm/v1/utils/component-renderer.test.d.ts.map +1 -0
  251. package/esm/v1/utils/component-renderer.test.js +375 -0
  252. package/esm/v1/utils/component-renderer.test.js.map +1 -0
  253. package/esm/v1/utils/event-accumulator.d.ts +100 -0
  254. package/esm/v1/utils/event-accumulator.d.ts.map +1 -0
  255. package/esm/v1/utils/event-accumulator.js +728 -0
  256. package/esm/v1/utils/event-accumulator.js.map +1 -0
  257. package/esm/v1/utils/event-accumulator.test.d.ts +2 -0
  258. package/esm/v1/utils/event-accumulator.test.d.ts.map +1 -0
  259. package/esm/v1/utils/event-accumulator.test.js +1203 -0
  260. package/esm/v1/utils/event-accumulator.test.js.map +1 -0
  261. package/esm/v1/utils/json-patch.d.ts +18 -0
  262. package/esm/v1/utils/json-patch.d.ts.map +1 -0
  263. package/esm/v1/utils/json-patch.js +32 -0
  264. package/esm/v1/utils/json-patch.js.map +1 -0
  265. package/esm/v1/utils/json-patch.test.d.ts +2 -0
  266. package/esm/v1/utils/json-patch.test.d.ts.map +1 -0
  267. package/esm/v1/utils/json-patch.test.js +26 -0
  268. package/esm/v1/utils/json-patch.test.js.map +1 -0
  269. package/esm/v1/utils/registry-conversion.d.ts +53 -0
  270. package/esm/v1/utils/registry-conversion.d.ts.map +1 -0
  271. package/esm/v1/utils/registry-conversion.js +108 -0
  272. package/esm/v1/utils/registry-conversion.js.map +1 -0
  273. package/esm/v1/utils/registry-conversion.test.d.ts +2 -0
  274. package/esm/v1/utils/registry-conversion.test.d.ts.map +1 -0
  275. package/esm/v1/utils/registry-conversion.test.js +177 -0
  276. package/esm/v1/utils/registry-conversion.test.js.map +1 -0
  277. package/esm/v1/utils/stream-handler.d.ts +45 -0
  278. package/esm/v1/utils/stream-handler.d.ts.map +1 -0
  279. package/esm/v1/utils/stream-handler.js +44 -0
  280. package/esm/v1/utils/stream-handler.js.map +1 -0
  281. package/esm/v1/utils/stream-handler.test.d.ts +2 -0
  282. package/esm/v1/utils/stream-handler.test.d.ts.map +1 -0
  283. package/esm/v1/utils/stream-handler.test.js +72 -0
  284. package/esm/v1/utils/stream-handler.test.js.map +1 -0
  285. package/esm/v1/utils/tool-call-tracker.d.ts +41 -0
  286. package/esm/v1/utils/tool-call-tracker.d.ts.map +1 -0
  287. package/esm/v1/utils/tool-call-tracker.js +86 -0
  288. package/esm/v1/utils/tool-call-tracker.js.map +1 -0
  289. package/esm/v1/utils/tool-executor.d.ts +33 -0
  290. package/esm/v1/utils/tool-executor.d.ts.map +1 -0
  291. package/esm/v1/utils/tool-executor.js +99 -0
  292. package/esm/v1/utils/tool-executor.js.map +1 -0
  293. package/esm/v1/utils/tool-executor.test.d.ts +2 -0
  294. package/esm/v1/utils/tool-executor.test.d.ts.map +1 -0
  295. package/esm/v1/utils/tool-executor.test.js +220 -0
  296. package/esm/v1/utils/tool-executor.test.js.map +1 -0
  297. package/package.json +7 -6
  298. package/dist/v1/types/tool.d.ts +0 -52
  299. package/dist/v1/types/tool.d.ts.map +0 -1
  300. package/dist/v1/types/tool.js +0 -11
  301. package/dist/v1/types/tool.js.map +0 -1
  302. package/esm/v1/types/tool.d.ts +0 -52
  303. package/esm/v1/types/tool.d.ts.map +0 -1
  304. package/esm/v1/types/tool.js +0 -10
  305. package/esm/v1/types/tool.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("@testing-library/react");
7
+ const react_2 = __importDefault(require("react"));
8
+ const tambo_client_provider_1 = require("../../providers/tambo-client-provider");
9
+ const tambo_registry_provider_1 = require("../../providers/tambo-registry-provider");
10
+ const tambo_v1_stream_context_1 = require("../providers/tambo-v1-stream-context");
11
+ const use_tambo_v1_1 = require("./use-tambo-v1");
12
+ jest.mock("../../providers/tambo-client-provider", () => ({
13
+ useTamboClient: jest.fn(),
14
+ }));
15
+ describe("useTamboV1", () => {
16
+ const mockTamboClient = {
17
+ apiKey: "",
18
+ threads: {},
19
+ };
20
+ const mockRegistry = {
21
+ componentList: {},
22
+ toolRegistry: {},
23
+ componentToolAssociations: {},
24
+ mcpServerInfos: [],
25
+ resources: [],
26
+ resourceSource: null,
27
+ registerComponent: jest.fn(),
28
+ registerTool: jest.fn(),
29
+ registerTools: jest.fn(),
30
+ addToolAssociation: jest.fn(),
31
+ registerMcpServer: jest.fn(),
32
+ registerMcpServers: jest.fn(),
33
+ registerResource: jest.fn(),
34
+ registerResources: jest.fn(),
35
+ registerResourceSource: jest.fn(),
36
+ };
37
+ function TestWrapper({ children }) {
38
+ return (react_2.default.createElement(tambo_registry_provider_1.TamboRegistryContext.Provider, { value: mockRegistry },
39
+ react_2.default.createElement(tambo_v1_stream_context_1.TamboV1StreamProvider, null, children)));
40
+ }
41
+ function TestWrapperWithThreadId({ children, }) {
42
+ return (react_2.default.createElement(tambo_registry_provider_1.TamboRegistryContext.Provider, { value: mockRegistry },
43
+ react_2.default.createElement(tambo_v1_stream_context_1.TamboV1StreamProvider, { threadId: "thread_123" }, children)));
44
+ }
45
+ beforeEach(() => {
46
+ jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboClient);
47
+ jest.clearAllMocks();
48
+ });
49
+ it("returns client from useTamboClient", () => {
50
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
51
+ wrapper: TestWrapper,
52
+ });
53
+ expect(result.current.client).toBe(mockTamboClient);
54
+ });
55
+ it("returns registry functions", () => {
56
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
57
+ wrapper: TestWrapper,
58
+ });
59
+ expect(result.current.registerComponent).toBe(mockRegistry.registerComponent);
60
+ expect(result.current.registerTool).toBe(mockRegistry.registerTool);
61
+ expect(result.current.registerTools).toBe(mockRegistry.registerTools);
62
+ expect(result.current.componentList).toBe(mockRegistry.componentList);
63
+ expect(result.current.toolRegistry).toBe(mockRegistry.toolRegistry);
64
+ });
65
+ it("returns undefined thread when no threadId provided", () => {
66
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
67
+ wrapper: TestWrapper,
68
+ });
69
+ expect(result.current.thread).toBeUndefined();
70
+ expect(result.current.messages).toEqual([]);
71
+ });
72
+ it("returns thread state when threadId provided", () => {
73
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)("thread_123"), {
74
+ wrapper: TestWrapperWithThreadId,
75
+ });
76
+ expect(result.current.thread).toBeDefined();
77
+ expect(result.current.thread?.thread.id).toBe("thread_123");
78
+ expect(result.current.messages).toEqual([]);
79
+ });
80
+ it("returns default streaming state when thread not loaded", () => {
81
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
82
+ wrapper: TestWrapper,
83
+ });
84
+ expect(result.current.streamingState).toEqual({ status: "idle" });
85
+ expect(result.current.isIdle).toBe(true);
86
+ expect(result.current.isStreaming).toBe(false);
87
+ expect(result.current.isWaiting).toBe(false);
88
+ });
89
+ it("returns thread streaming state when thread loaded", () => {
90
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)("thread_123"), {
91
+ wrapper: TestWrapperWithThreadId,
92
+ });
93
+ expect(result.current.streamingState.status).toBe("idle");
94
+ expect(result.current.isIdle).toBe(true);
95
+ expect(result.current.isStreaming).toBe(false);
96
+ expect(result.current.isWaiting).toBe(false);
97
+ });
98
+ it("provides dispatch function for advanced usage", () => {
99
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
100
+ wrapper: TestWrapper,
101
+ });
102
+ expect(typeof result.current.dispatch).toBe("function");
103
+ });
104
+ it("provides thread management functions", () => {
105
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
106
+ wrapper: TestWrapper,
107
+ });
108
+ expect(typeof result.current.initThread).toBe("function");
109
+ expect(typeof result.current.switchThread).toBe("function");
110
+ expect(typeof result.current.startNewThread).toBe("function");
111
+ });
112
+ it("initializes and switches threads", () => {
113
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
114
+ wrapper: TestWrapper,
115
+ });
116
+ // Initially no current thread
117
+ expect(result.current.currentThreadId).toBeNull();
118
+ expect(result.current.thread).toBeUndefined();
119
+ // Initialize a new thread
120
+ (0, react_1.act)(() => {
121
+ result.current.initThread("new_thread_1");
122
+ });
123
+ // Switch to the new thread
124
+ (0, react_1.act)(() => {
125
+ result.current.switchThread("new_thread_1");
126
+ });
127
+ expect(result.current.currentThreadId).toBe("new_thread_1");
128
+ });
129
+ it("starts new thread with generated ID", () => {
130
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
131
+ wrapper: TestWrapper,
132
+ });
133
+ let newThreadId;
134
+ (0, react_1.act)(() => {
135
+ newThreadId = result.current.startNewThread();
136
+ });
137
+ expect(newThreadId).toMatch(/^temp_/);
138
+ expect(result.current.currentThreadId).toBe(newThreadId);
139
+ expect(result.current.thread).toBeDefined();
140
+ });
141
+ it("uses current thread when no threadId argument provided", () => {
142
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_1.useTamboV1)(), {
143
+ wrapper: TestWrapperWithThreadId,
144
+ });
145
+ // Should use current thread from context (thread_123)
146
+ expect(result.current.currentThreadId).toBe("thread_123");
147
+ expect(result.current.thread?.thread.id).toBe("thread_123");
148
+ });
149
+ });
150
+ //# sourceMappingURL=use-tambo-v1.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-tambo-v1.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React from \"react\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { TamboV1StreamProvider } from \"../providers/tambo-v1-stream-context\";\nimport { useTamboV1 } from \"./use-tambo-v1\";\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n}));\n\ndescribe(\"useTamboV1\", () => {\n const mockTamboClient = {\n apiKey: \"\",\n threads: {},\n } as unknown as TamboAI;\n\n const mockRegistry: TamboRegistryContextType = {\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n registerComponent: jest.fn(),\n registerTool: jest.fn(),\n registerTools: jest.fn(),\n addToolAssociation: jest.fn(),\n registerMcpServer: jest.fn(),\n registerMcpServers: jest.fn(),\n registerResource: jest.fn(),\n registerResources: jest.fn(),\n registerResourceSource: jest.fn(),\n };\n\n function TestWrapper({ children }: { children: React.ReactNode }) {\n return (\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n );\n }\n\n function TestWrapperWithThreadId({\n children,\n }: {\n children: React.ReactNode;\n }) {\n return (\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider threadId=\"thread_123\">\n {children}\n </TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n );\n }\n\n beforeEach(() => {\n jest.mocked(useTamboClient).mockReturnValue(mockTamboClient);\n jest.clearAllMocks();\n });\n\n it(\"returns client from useTamboClient\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.client).toBe(mockTamboClient);\n });\n\n it(\"returns registry functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.registerComponent).toBe(\n mockRegistry.registerComponent,\n );\n expect(result.current.registerTool).toBe(mockRegistry.registerTool);\n expect(result.current.registerTools).toBe(mockRegistry.registerTools);\n expect(result.current.componentList).toBe(mockRegistry.componentList);\n expect(result.current.toolRegistry).toBe(mockRegistry.toolRegistry);\n });\n\n it(\"returns undefined thread when no threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.thread).toBeUndefined();\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns thread state when threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapperWithThreadId,\n });\n\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns default streaming state when thread not loaded\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.streamingState).toEqual({ status: \"idle\" });\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"returns thread streaming state when thread loaded\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapperWithThreadId,\n });\n\n expect(result.current.streamingState.status).toBe(\"idle\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"provides dispatch function for advanced usage\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.dispatch).toBe(\"function\");\n });\n\n it(\"provides thread management functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.initThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.startNewThread).toBe(\"function\");\n });\n\n it(\"initializes and switches threads\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initially no current thread\n expect(result.current.currentThreadId).toBeNull();\n expect(result.current.thread).toBeUndefined();\n\n // Initialize a new thread\n act(() => {\n result.current.initThread(\"new_thread_1\");\n });\n\n // Switch to the new thread\n act(() => {\n result.current.switchThread(\"new_thread_1\");\n });\n\n expect(result.current.currentThreadId).toBe(\"new_thread_1\");\n });\n\n it(\"starts new thread with generated ID\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n let newThreadId: string;\n act(() => {\n newThreadId = result.current.startNewThread();\n });\n\n expect(newThreadId!).toMatch(/^temp_/);\n expect(result.current.currentThreadId).toBe(newThreadId!);\n expect(result.current.thread).toBeDefined();\n });\n\n it(\"uses current thread when no threadId argument provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapperWithThreadId,\n });\n\n // Should use current thread from context (thread_123)\n expect(result.current.currentThreadId).toBe(\"thread_123\");\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n });\n});\n"]}
@@ -1,35 +1,84 @@
1
1
  /**
2
- * @tambo-ai/react/v1 - React SDK for Tambo v1 API
2
+ * `@tambo-ai/react/v1` - React SDK for Tambo v1 API
3
3
  *
4
4
  * Provides React hooks and providers for building AI-powered applications
5
5
  * using the v1 streaming API with AG-UI protocol.
6
6
  *
7
- * Types are not re-exported. Import directly from specific type files:
8
- * - Custom events: import from '@tambo-ai/react/v1/types/event'
9
- * - Thread state: import from '@tambo-ai/react/v1/types/thread'
10
- * - Messages: import from '@tambo-ai/react/v1/types/message'
11
- * - Components: import from '@tambo-ai/react/v1/types/component'
12
- * - Tools: import from '@tambo-ai/react/v1/types/tool'
7
+ * ## Quick Start
13
8
  *
14
- * SDK types: import directly from @tambo-ai/typescript-sdk
15
- * AG-UI events: import directly from @ag-ui/core
16
- * @example
17
- * ```typescript
18
- * import { TamboV1Provider, useTamboV1 } from '@tambo-ai/react/v1';
9
+ * ```tsx
10
+ * import {
11
+ * TamboV1Provider,
12
+ * useTamboV1,
13
+ * useTamboV1ThreadInput,
14
+ * } from '@tambo-ai/react/v1';
19
15
  *
20
16
  * function App() {
21
17
  * return (
22
- * <TamboV1Provider apiKey="your-api-key">
18
+ * <TamboV1Provider
19
+ * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
20
+ * components={[WeatherCard]}
21
+ * tools={[searchTool]}
22
+ * >
23
23
  * <ChatInterface />
24
24
  * </TamboV1Provider>
25
25
  * );
26
26
  * }
27
27
  *
28
28
  * function ChatInterface() {
29
- * const { thread, sendMessage, isStreaming } = useTamboV1();
30
- * // ... implementation
29
+ * const [threadId, setThreadId] = useState<string>();
30
+ * const { messages, isStreaming } = useTamboV1(threadId);
31
+ * const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);
32
+ *
33
+ * const handleSubmit = async (e: React.FormEvent) => {
34
+ * e.preventDefault();
35
+ * const result = await submit();
36
+ * if (!threadId) setThreadId(result.threadId);
37
+ * };
38
+ *
39
+ * return (
40
+ * <form onSubmit={handleSubmit}>
41
+ * {messages.map(msg => <Message key={msg.id} message={msg} />)}
42
+ * {isStreaming && <LoadingIndicator />}
43
+ * <input value={value} onChange={(e) => setValue(e.target.value)} />
44
+ * <button disabled={isPending}>Send</button>
45
+ * </form>
46
+ * );
31
47
  * }
32
48
  * ```
49
+ *
50
+ * ## Type Imports
51
+ *
52
+ * Types are imported directly from specific files:
53
+ * - Thread state: `import type { TamboV1Thread } from '@tambo-ai/react/v1/types/thread'`
54
+ * - Messages: `import type { TamboV1Message } from '@tambo-ai/react/v1/types/message'`
55
+ * - Custom events: `import type { ComponentStartEvent } from '@tambo-ai/react/v1/types/event'`
56
+ *
57
+ * SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`
58
+ * AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`
33
59
  */
34
- export {};
60
+ export { TamboV1Provider, useContextKey, type TamboV1ProviderProps, } from "./providers/tambo-v1-provider";
61
+ export { TamboV1StreamProvider, useStreamState, useStreamDispatch, useThreadManagement, type ThreadManagement, } from "./providers/tambo-v1-stream-context";
62
+ export { TamboRegistryProvider } from "../providers/tambo-registry-provider";
63
+ export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider";
64
+ export { useTamboV1, type UseTamboV1Return } from "./hooks/use-tambo-v1";
65
+ export { useTamboV1ThreadInput, type UseTamboV1ThreadInputReturn, type SubmitOptions, } from "./hooks/use-tambo-v1-thread-input";
66
+ export { useTamboV1Thread } from "./hooks/use-tambo-v1-thread";
67
+ export { useTamboV1ThreadList } from "./hooks/use-tambo-v1-thread-list";
68
+ export { useTamboV1ComponentState, type UseTamboV1ComponentStateReturn, } from "./hooks/use-tambo-v1-component-state";
69
+ export { useTamboClient } from "../providers/tambo-client-provider";
70
+ export { useTamboRegistry } from "../providers/tambo-registry-provider";
71
+ export { useV1ComponentContent, useV1ComponentContentOptional, renderComponentContent, renderMessageContent, renderMessageComponents, isComponentContent, type V1ComponentContentContext, type RenderComponentOptions, } from "./utils/component-renderer";
72
+ export { applyJsonPatch } from "./utils/json-patch";
73
+ export { toAvailableComponent, toAvailableComponents, toAvailableTool, toAvailableTools, } from "./utils/registry-conversion";
74
+ export { executeClientTool, executeAllPendingTools, type PendingToolCall, } from "./utils/tool-executor";
75
+ export { ToolCallTracker } from "./utils/tool-call-tracker";
76
+ export { handleEventStream } from "./utils/stream-handler";
77
+ export { defineTool } from "../util/registry";
78
+ export { currentPageContextHelper, currentTimeContextHelper, } from "../context-helpers";
79
+ export type { AdditionalContext, ContextHelperFn, ContextHelpers, } from "../context-helpers";
80
+ export type { ComponentContextToolMetadata, ComponentRegistry, ParameterSpec, RegisteredComponent, TamboTool, ToolAnnotations, } from "../model/component-metadata";
81
+ export { MCPTransport } from "../model/mcp-server-info";
82
+ export type { McpServerInfo, NormalizedMcpServerInfo, } from "../model/mcp-server-info";
83
+ export type { ListResourceItem, ReadResourceResult, ResourceSource, } from "../model/resource-info";
35
84
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAMH,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,gBAAgB,GACtB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EACL,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,aAAa,GACnB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EACL,wBAAwB,EACxB,KAAK,8BAA8B,GACpC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAMxE,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EACV,aAAa,EACb,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,wBAAwB,CAAC"}
package/dist/v1/index.js CHANGED
@@ -1,47 +1,140 @@
1
1
  "use strict";
2
2
  /**
3
- * @tambo-ai/react/v1 - React SDK for Tambo v1 API
3
+ * `@tambo-ai/react/v1` - React SDK for Tambo v1 API
4
4
  *
5
5
  * Provides React hooks and providers for building AI-powered applications
6
6
  * using the v1 streaming API with AG-UI protocol.
7
7
  *
8
- * Types are not re-exported. Import directly from specific type files:
9
- * - Custom events: import from '@tambo-ai/react/v1/types/event'
10
- * - Thread state: import from '@tambo-ai/react/v1/types/thread'
11
- * - Messages: import from '@tambo-ai/react/v1/types/message'
12
- * - Components: import from '@tambo-ai/react/v1/types/component'
13
- * - Tools: import from '@tambo-ai/react/v1/types/tool'
8
+ * ## Quick Start
14
9
  *
15
- * SDK types: import directly from @tambo-ai/typescript-sdk
16
- * AG-UI events: import directly from @ag-ui/core
17
- * @example
18
- * ```typescript
19
- * import { TamboV1Provider, useTamboV1 } from '@tambo-ai/react/v1';
10
+ * ```tsx
11
+ * import {
12
+ * TamboV1Provider,
13
+ * useTamboV1,
14
+ * useTamboV1ThreadInput,
15
+ * } from '@tambo-ai/react/v1';
20
16
  *
21
17
  * function App() {
22
18
  * return (
23
- * <TamboV1Provider apiKey="your-api-key">
19
+ * <TamboV1Provider
20
+ * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
21
+ * components={[WeatherCard]}
22
+ * tools={[searchTool]}
23
+ * >
24
24
  * <ChatInterface />
25
25
  * </TamboV1Provider>
26
26
  * );
27
27
  * }
28
28
  *
29
29
  * function ChatInterface() {
30
- * const { thread, sendMessage, isStreaming } = useTamboV1();
31
- * // ... implementation
30
+ * const [threadId, setThreadId] = useState<string>();
31
+ * const { messages, isStreaming } = useTamboV1(threadId);
32
+ * const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);
33
+ *
34
+ * const handleSubmit = async (e: React.FormEvent) => {
35
+ * e.preventDefault();
36
+ * const result = await submit();
37
+ * if (!threadId) setThreadId(result.threadId);
38
+ * };
39
+ *
40
+ * return (
41
+ * <form onSubmit={handleSubmit}>
42
+ * {messages.map(msg => <Message key={msg.id} message={msg} />)}
43
+ * {isStreaming && <LoadingIndicator />}
44
+ * <input value={value} onChange={(e) => setValue(e.target.value)} />
45
+ * <button disabled={isPending}>Send</button>
46
+ * </form>
47
+ * );
32
48
  * }
33
49
  * ```
50
+ *
51
+ * ## Type Imports
52
+ *
53
+ * Types are imported directly from specific files:
54
+ * - Thread state: `import type { TamboV1Thread } from '@tambo-ai/react/v1/types/thread'`
55
+ * - Messages: `import type { TamboV1Message } from '@tambo-ai/react/v1/types/message'`
56
+ * - Custom events: `import type { ComponentStartEvent } from '@tambo-ai/react/v1/types/event'`
57
+ *
58
+ * SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`
59
+ * AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`
34
60
  */
35
61
  Object.defineProperty(exports, "__esModule", { value: true });
36
- // Providers (TODO: implement in Phase 7)
37
- // export { TamboV1Provider } from './providers/tambo-v1-provider';
38
- // export { TamboRegistryProvider } from '../providers/tambo-registry-provider'; // Reused from beta
39
- // Hooks (TODO: implement in Phase 7)
40
- // export { useTamboV1 } from './hooks/use-tambo-v1';
41
- // export { useTamboV1Thread } from './hooks/use-tambo-v1-thread';
42
- // export { useTamboV1Messages } from './hooks/use-tambo-v1-messages';
43
- // export { useTamboV1SendMessage } from './hooks/use-tambo-v1-send-message';
44
- // export { useTamboV1ComponentState } from './hooks/use-tambo-v1-component-state';
45
- // Utilities (TODO: implement in Phase 2-3)
46
- // export { applyJsonPatch } from './utils/json-patch';
62
+ exports.MCPTransport = exports.currentTimeContextHelper = exports.currentPageContextHelper = exports.defineTool = exports.handleEventStream = exports.ToolCallTracker = exports.executeAllPendingTools = exports.executeClientTool = exports.toAvailableTools = exports.toAvailableTool = exports.toAvailableComponents = exports.toAvailableComponent = exports.applyJsonPatch = exports.isComponentContent = exports.renderMessageComponents = exports.renderMessageContent = exports.renderComponentContent = exports.useV1ComponentContentOptional = exports.useV1ComponentContent = exports.useTamboRegistry = exports.useTamboClient = exports.useTamboV1ComponentState = exports.useTamboV1ThreadList = exports.useTamboV1Thread = exports.useTamboV1ThreadInput = exports.useTamboV1 = exports.useTamboContextHelpers = exports.TamboContextHelpersProvider = exports.TamboRegistryProvider = exports.useThreadManagement = exports.useStreamDispatch = exports.useStreamState = exports.TamboV1StreamProvider = exports.useContextKey = exports.TamboV1Provider = void 0;
63
+ // =============================================================================
64
+ // Providers
65
+ // =============================================================================
66
+ var tambo_v1_provider_1 = require("./providers/tambo-v1-provider");
67
+ Object.defineProperty(exports, "TamboV1Provider", { enumerable: true, get: function () { return tambo_v1_provider_1.TamboV1Provider; } });
68
+ Object.defineProperty(exports, "useContextKey", { enumerable: true, get: function () { return tambo_v1_provider_1.useContextKey; } });
69
+ var tambo_v1_stream_context_1 = require("./providers/tambo-v1-stream-context");
70
+ Object.defineProperty(exports, "TamboV1StreamProvider", { enumerable: true, get: function () { return tambo_v1_stream_context_1.TamboV1StreamProvider; } });
71
+ Object.defineProperty(exports, "useStreamState", { enumerable: true, get: function () { return tambo_v1_stream_context_1.useStreamState; } });
72
+ Object.defineProperty(exports, "useStreamDispatch", { enumerable: true, get: function () { return tambo_v1_stream_context_1.useStreamDispatch; } });
73
+ Object.defineProperty(exports, "useThreadManagement", { enumerable: true, get: function () { return tambo_v1_stream_context_1.useThreadManagement; } });
74
+ // Re-export registry provider from beta SDK (works with v1)
75
+ var tambo_registry_provider_1 = require("../providers/tambo-registry-provider");
76
+ Object.defineProperty(exports, "TamboRegistryProvider", { enumerable: true, get: function () { return tambo_registry_provider_1.TamboRegistryProvider; } });
77
+ // Re-export context helpers from beta SDK (works with v1)
78
+ var tambo_context_helpers_provider_1 = require("../providers/tambo-context-helpers-provider");
79
+ Object.defineProperty(exports, "TamboContextHelpersProvider", { enumerable: true, get: function () { return tambo_context_helpers_provider_1.TamboContextHelpersProvider; } });
80
+ Object.defineProperty(exports, "useTamboContextHelpers", { enumerable: true, get: function () { return tambo_context_helpers_provider_1.useTamboContextHelpers; } });
81
+ // =============================================================================
82
+ // Hooks
83
+ // =============================================================================
84
+ var use_tambo_v1_1 = require("./hooks/use-tambo-v1");
85
+ Object.defineProperty(exports, "useTamboV1", { enumerable: true, get: function () { return use_tambo_v1_1.useTamboV1; } });
86
+ var use_tambo_v1_thread_input_1 = require("./hooks/use-tambo-v1-thread-input");
87
+ Object.defineProperty(exports, "useTamboV1ThreadInput", { enumerable: true, get: function () { return use_tambo_v1_thread_input_1.useTamboV1ThreadInput; } });
88
+ var use_tambo_v1_thread_1 = require("./hooks/use-tambo-v1-thread");
89
+ Object.defineProperty(exports, "useTamboV1Thread", { enumerable: true, get: function () { return use_tambo_v1_thread_1.useTamboV1Thread; } });
90
+ var use_tambo_v1_thread_list_1 = require("./hooks/use-tambo-v1-thread-list");
91
+ Object.defineProperty(exports, "useTamboV1ThreadList", { enumerable: true, get: function () { return use_tambo_v1_thread_list_1.useTamboV1ThreadList; } });
92
+ var use_tambo_v1_component_state_1 = require("./hooks/use-tambo-v1-component-state");
93
+ Object.defineProperty(exports, "useTamboV1ComponentState", { enumerable: true, get: function () { return use_tambo_v1_component_state_1.useTamboV1ComponentState; } });
94
+ // Re-export client hook from beta SDK (works with v1)
95
+ var tambo_client_provider_1 = require("../providers/tambo-client-provider");
96
+ Object.defineProperty(exports, "useTamboClient", { enumerable: true, get: function () { return tambo_client_provider_1.useTamboClient; } });
97
+ // Re-export registry hook from beta SDK (works with v1)
98
+ var tambo_registry_provider_2 = require("../providers/tambo-registry-provider");
99
+ Object.defineProperty(exports, "useTamboRegistry", { enumerable: true, get: function () { return tambo_registry_provider_2.useTamboRegistry; } });
100
+ // =============================================================================
101
+ // Component Rendering
102
+ // =============================================================================
103
+ var component_renderer_1 = require("./utils/component-renderer");
104
+ Object.defineProperty(exports, "useV1ComponentContent", { enumerable: true, get: function () { return component_renderer_1.useV1ComponentContent; } });
105
+ Object.defineProperty(exports, "useV1ComponentContentOptional", { enumerable: true, get: function () { return component_renderer_1.useV1ComponentContentOptional; } });
106
+ Object.defineProperty(exports, "renderComponentContent", { enumerable: true, get: function () { return component_renderer_1.renderComponentContent; } });
107
+ Object.defineProperty(exports, "renderMessageContent", { enumerable: true, get: function () { return component_renderer_1.renderMessageContent; } });
108
+ Object.defineProperty(exports, "renderMessageComponents", { enumerable: true, get: function () { return component_renderer_1.renderMessageComponents; } });
109
+ Object.defineProperty(exports, "isComponentContent", { enumerable: true, get: function () { return component_renderer_1.isComponentContent; } });
110
+ // =============================================================================
111
+ // Utilities
112
+ // =============================================================================
113
+ var json_patch_1 = require("./utils/json-patch");
114
+ Object.defineProperty(exports, "applyJsonPatch", { enumerable: true, get: function () { return json_patch_1.applyJsonPatch; } });
115
+ var registry_conversion_1 = require("./utils/registry-conversion");
116
+ Object.defineProperty(exports, "toAvailableComponent", { enumerable: true, get: function () { return registry_conversion_1.toAvailableComponent; } });
117
+ Object.defineProperty(exports, "toAvailableComponents", { enumerable: true, get: function () { return registry_conversion_1.toAvailableComponents; } });
118
+ Object.defineProperty(exports, "toAvailableTool", { enumerable: true, get: function () { return registry_conversion_1.toAvailableTool; } });
119
+ Object.defineProperty(exports, "toAvailableTools", { enumerable: true, get: function () { return registry_conversion_1.toAvailableTools; } });
120
+ var tool_executor_1 = require("./utils/tool-executor");
121
+ Object.defineProperty(exports, "executeClientTool", { enumerable: true, get: function () { return tool_executor_1.executeClientTool; } });
122
+ Object.defineProperty(exports, "executeAllPendingTools", { enumerable: true, get: function () { return tool_executor_1.executeAllPendingTools; } });
123
+ var tool_call_tracker_1 = require("./utils/tool-call-tracker");
124
+ Object.defineProperty(exports, "ToolCallTracker", { enumerable: true, get: function () { return tool_call_tracker_1.ToolCallTracker; } });
125
+ var stream_handler_1 = require("./utils/stream-handler");
126
+ Object.defineProperty(exports, "handleEventStream", { enumerable: true, get: function () { return stream_handler_1.handleEventStream; } });
127
+ // =============================================================================
128
+ // Re-exports from Beta SDK (compatible with v1)
129
+ // =============================================================================
130
+ // Tool definition helper
131
+ var registry_1 = require("../util/registry");
132
+ Object.defineProperty(exports, "defineTool", { enumerable: true, get: function () { return registry_1.defineTool; } });
133
+ // Built-in context helpers
134
+ var context_helpers_1 = require("../context-helpers");
135
+ Object.defineProperty(exports, "currentPageContextHelper", { enumerable: true, get: function () { return context_helpers_1.currentPageContextHelper; } });
136
+ Object.defineProperty(exports, "currentTimeContextHelper", { enumerable: true, get: function () { return context_helpers_1.currentTimeContextHelper; } });
137
+ // MCP server types
138
+ var mcp_server_info_1 = require("../model/mcp-server-info");
139
+ Object.defineProperty(exports, "MCPTransport", { enumerable: true, get: function () { return mcp_server_info_1.MCPTransport; } });
47
140
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;AAEH,yCAAyC;AACzC,mEAAmE;AACnE,oGAAoG;AAEpG,qCAAqC;AACrC,qDAAqD;AACrD,kEAAkE;AAClE,sEAAsE;AACtE,6EAA6E;AAC7E,mFAAmF;AAEnF,2CAA2C;AAC3C,uDAAuD","sourcesContent":["/**\n * @tambo-ai/react/v1 - React SDK for Tambo v1 API\n *\n * Provides React hooks and providers for building AI-powered applications\n * using the v1 streaming API with AG-UI protocol.\n *\n * Types are not re-exported. Import directly from specific type files:\n * - Custom events: import from '@tambo-ai/react/v1/types/event'\n * - Thread state: import from '@tambo-ai/react/v1/types/thread'\n * - Messages: import from '@tambo-ai/react/v1/types/message'\n * - Components: import from '@tambo-ai/react/v1/types/component'\n * - Tools: import from '@tambo-ai/react/v1/types/tool'\n *\n * SDK types: import directly from @tambo-ai/typescript-sdk\n * AG-UI events: import directly from @ag-ui/core\n * @example\n * ```typescript\n * import { TamboV1Provider, useTamboV1 } from '@tambo-ai/react/v1';\n *\n * function App() {\n * return (\n * <TamboV1Provider apiKey=\"your-api-key\">\n * <ChatInterface />\n * </TamboV1Provider>\n * );\n * }\n *\n * function ChatInterface() {\n * const { thread, sendMessage, isStreaming } = useTamboV1();\n * // ... implementation\n * }\n * ```\n */\n\n// Providers (TODO: implement in Phase 7)\n// export { TamboV1Provider } from './providers/tambo-v1-provider';\n// export { TamboRegistryProvider } from '../providers/tambo-registry-provider'; // Reused from beta\n\n// Hooks (TODO: implement in Phase 7)\n// export { useTamboV1 } from './hooks/use-tambo-v1';\n// export { useTamboV1Thread } from './hooks/use-tambo-v1-thread';\n// export { useTamboV1Messages } from './hooks/use-tambo-v1-messages';\n// export { useTamboV1SendMessage } from './hooks/use-tambo-v1-send-message';\n// export { useTamboV1ComponentState } from './hooks/use-tambo-v1-component-state';\n\n// Utilities (TODO: implement in Phase 2-3)\n// export { applyJsonPatch } from './utils/json-patch';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;;;AAEH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,mEAIuC;AAHrC,oHAAA,eAAe,OAAA;AACf,kHAAA,aAAa,OAAA;AAIf,+EAM6C;AAL3C,gIAAA,qBAAqB,OAAA;AACrB,yHAAA,cAAc,OAAA;AACd,4HAAA,iBAAiB,OAAA;AACjB,8HAAA,mBAAmB,OAAA;AAIrB,4DAA4D;AAC5D,gFAA6E;AAApE,gIAAA,qBAAqB,OAAA;AAE9B,0DAA0D;AAC1D,8FAGqD;AAFnD,6IAAA,2BAA2B,OAAA;AAC3B,wIAAA,sBAAsB,OAAA;AAGxB,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,qDAAyE;AAAhE,0GAAA,UAAU,OAAA;AAEnB,+EAI2C;AAHzC,kIAAA,qBAAqB,OAAA;AAKvB,mEAA+D;AAAtD,uHAAA,gBAAgB,OAAA;AAEzB,6EAAwE;AAA/D,gIAAA,oBAAoB,OAAA;AAE7B,qFAG8C;AAF5C,wIAAA,wBAAwB,OAAA;AAI1B,sDAAsD;AACtD,4EAAoE;AAA3D,uHAAA,cAAc,OAAA;AAEvB,wDAAwD;AACxD,gFAAwE;AAA/D,2HAAA,gBAAgB,OAAA;AAEzB,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,iEASoC;AARlC,2HAAA,qBAAqB,OAAA;AACrB,mIAAA,6BAA6B,OAAA;AAC7B,4HAAA,sBAAsB,OAAA;AACtB,0HAAA,oBAAoB,OAAA;AACpB,6HAAA,uBAAuB,OAAA;AACvB,wHAAA,kBAAkB,OAAA;AAKpB,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,iDAAoD;AAA3C,4GAAA,cAAc,OAAA;AAEvB,mEAKqC;AAJnC,2HAAA,oBAAoB,OAAA;AACpB,4HAAA,qBAAqB,OAAA;AACrB,sHAAA,eAAe,OAAA;AACf,uHAAA,gBAAgB,OAAA;AAGlB,uDAI+B;AAH7B,kHAAA,iBAAiB,OAAA;AACjB,uHAAA,sBAAsB,OAAA;AAIxB,+DAA4D;AAAnD,oHAAA,eAAe,OAAA;AAExB,yDAA2D;AAAlD,mHAAA,iBAAiB,OAAA;AAE1B,gFAAgF;AAChF,gDAAgD;AAChD,gFAAgF;AAEhF,yBAAyB;AACzB,6CAA8C;AAArC,sGAAA,UAAU,OAAA;AAEnB,2BAA2B;AAC3B,sDAG4B;AAF1B,2HAAA,wBAAwB,OAAA;AACxB,2HAAA,wBAAwB,OAAA;AAoB1B,mBAAmB;AACnB,4DAAwD;AAA/C,+GAAA,YAAY,OAAA","sourcesContent":["/**\n * `@tambo-ai/react/v1` - React SDK for Tambo v1 API\n *\n * Provides React hooks and providers for building AI-powered applications\n * using the v1 streaming API with AG-UI protocol.\n *\n * ## Quick Start\n *\n * ```tsx\n * import {\n * TamboV1Provider,\n * useTamboV1,\n * useTamboV1ThreadInput,\n * } from '@tambo-ai/react/v1';\n *\n * function App() {\n * return (\n * <TamboV1Provider\n * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}\n * components={[WeatherCard]}\n * tools={[searchTool]}\n * >\n * <ChatInterface />\n * </TamboV1Provider>\n * );\n * }\n *\n * function ChatInterface() {\n * const [threadId, setThreadId] = useState<string>();\n * const { messages, isStreaming } = useTamboV1(threadId);\n * const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);\n *\n * const handleSubmit = async (e: React.FormEvent) => {\n * e.preventDefault();\n * const result = await submit();\n * if (!threadId) setThreadId(result.threadId);\n * };\n *\n * return (\n * <form onSubmit={handleSubmit}>\n * {messages.map(msg => <Message key={msg.id} message={msg} />)}\n * {isStreaming && <LoadingIndicator />}\n * <input value={value} onChange={(e) => setValue(e.target.value)} />\n * <button disabled={isPending}>Send</button>\n * </form>\n * );\n * }\n * ```\n *\n * ## Type Imports\n *\n * Types are imported directly from specific files:\n * - Thread state: `import type { TamboV1Thread } from '@tambo-ai/react/v1/types/thread'`\n * - Messages: `import type { TamboV1Message } from '@tambo-ai/react/v1/types/message'`\n * - Custom events: `import type { ComponentStartEvent } from '@tambo-ai/react/v1/types/event'`\n *\n * SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`\n * AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`\n */\n\n// =============================================================================\n// Providers\n// =============================================================================\n\nexport {\n TamboV1Provider,\n useContextKey,\n type TamboV1ProviderProps,\n} from \"./providers/tambo-v1-provider\";\n\nexport {\n TamboV1StreamProvider,\n useStreamState,\n useStreamDispatch,\n useThreadManagement,\n type ThreadManagement,\n} from \"./providers/tambo-v1-stream-context\";\n\n// Re-export registry provider from beta SDK (works with v1)\nexport { TamboRegistryProvider } from \"../providers/tambo-registry-provider\";\n\n// Re-export context helpers from beta SDK (works with v1)\nexport {\n TamboContextHelpersProvider,\n useTamboContextHelpers,\n} from \"../providers/tambo-context-helpers-provider\";\n\n// =============================================================================\n// Hooks\n// =============================================================================\n\nexport { useTamboV1, type UseTamboV1Return } from \"./hooks/use-tambo-v1\";\n\nexport {\n useTamboV1ThreadInput,\n type UseTamboV1ThreadInputReturn,\n type SubmitOptions,\n} from \"./hooks/use-tambo-v1-thread-input\";\n\nexport { useTamboV1Thread } from \"./hooks/use-tambo-v1-thread\";\n\nexport { useTamboV1ThreadList } from \"./hooks/use-tambo-v1-thread-list\";\n\nexport {\n useTamboV1ComponentState,\n type UseTamboV1ComponentStateReturn,\n} from \"./hooks/use-tambo-v1-component-state\";\n\n// Re-export client hook from beta SDK (works with v1)\nexport { useTamboClient } from \"../providers/tambo-client-provider\";\n\n// Re-export registry hook from beta SDK (works with v1)\nexport { useTamboRegistry } from \"../providers/tambo-registry-provider\";\n\n// =============================================================================\n// Component Rendering\n// =============================================================================\n\nexport {\n useV1ComponentContent,\n useV1ComponentContentOptional,\n renderComponentContent,\n renderMessageContent,\n renderMessageComponents,\n isComponentContent,\n type V1ComponentContentContext,\n type RenderComponentOptions,\n} from \"./utils/component-renderer\";\n\n// =============================================================================\n// Utilities\n// =============================================================================\n\nexport { applyJsonPatch } from \"./utils/json-patch\";\n\nexport {\n toAvailableComponent,\n toAvailableComponents,\n toAvailableTool,\n toAvailableTools,\n} from \"./utils/registry-conversion\";\n\nexport {\n executeClientTool,\n executeAllPendingTools,\n type PendingToolCall,\n} from \"./utils/tool-executor\";\n\nexport { ToolCallTracker } from \"./utils/tool-call-tracker\";\n\nexport { handleEventStream } from \"./utils/stream-handler\";\n\n// =============================================================================\n// Re-exports from Beta SDK (compatible with v1)\n// =============================================================================\n\n// Tool definition helper\nexport { defineTool } from \"../util/registry\";\n\n// Built-in context helpers\nexport {\n currentPageContextHelper,\n currentTimeContextHelper,\n} from \"../context-helpers\";\n\n// Context helper types\nexport type {\n AdditionalContext,\n ContextHelperFn,\n ContextHelpers,\n} from \"../context-helpers\";\n\n// Component and tool types\nexport type {\n ComponentContextToolMetadata,\n ComponentRegistry,\n ParameterSpec,\n RegisteredComponent,\n TamboTool,\n ToolAnnotations,\n} from \"../model/component-metadata\";\n\n// MCP server types\nexport { MCPTransport } from \"../model/mcp-server-info\";\nexport type {\n McpServerInfo,\n NormalizedMcpServerInfo,\n} from \"../model/mcp-server-info\";\n\n// Resource types\nexport type {\n ListResourceItem,\n ReadResourceResult,\n ResourceSource,\n} from \"../model/resource-info\";\n"]}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * TamboV1Provider - Main Provider for v1 API
3
+ *
4
+ * Composes the necessary providers for the v1 SDK:
5
+ * - TamboClientProvider: API client and authentication
6
+ * - TamboRegistryProvider: Component and tool registration
7
+ * - TamboContextHelpersProvider: Context helper functions
8
+ * - TamboV1StreamProvider: Streaming state management
9
+ *
10
+ * This provider should wrap your entire application or the portion
11
+ * that needs access to Tambo v1 functionality.
12
+ */
13
+ import React, { type PropsWithChildren } from "react";
14
+ import { QueryClient } from "@tanstack/react-query";
15
+ import { type TamboClientProviderProps } from "../../providers/tambo-client-provider";
16
+ import { type TamboRegistryProviderProps } from "../../providers/tambo-registry-provider";
17
+ import type { ContextHelpers } from "../../context-helpers";
18
+ import type { McpServerInfo } from "../../model/mcp-server-info";
19
+ import type { ListResourceItem, ResourceSource } from "../../model/resource-info";
20
+ /**
21
+ * Hook to access the contextKey from TamboV1Provider.
22
+ * @returns The contextKey if provided, undefined otherwise
23
+ */
24
+ export declare function useContextKey(): string | undefined;
25
+ /**
26
+ * Props for TamboV1Provider
27
+ */
28
+ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "apiKey" | "tamboUrl" | "environment" | "userToken"> {
29
+ /**
30
+ * Components to register with the registry.
31
+ * These will be available for the AI to use in responses.
32
+ */
33
+ components?: TamboRegistryProviderProps["components"];
34
+ /**
35
+ * Tools to register with the registry.
36
+ * These will be executed client-side when requested by the AI.
37
+ */
38
+ tools?: TamboRegistryProviderProps["tools"];
39
+ /**
40
+ * MCP servers to register with the registry.
41
+ * These provide additional tools and resources from MCP-compatible servers.
42
+ */
43
+ mcpServers?: (McpServerInfo | string)[];
44
+ /**
45
+ * Callback function called when an unregistered tool is called.
46
+ * If not provided, an error will be thrown for unknown tools.
47
+ */
48
+ onCallUnregisteredTool?: TamboRegistryProviderProps["onCallUnregisteredTool"];
49
+ /**
50
+ * Static resources to register with the registry.
51
+ * These will be available for the AI to access.
52
+ */
53
+ resources?: ListResourceItem[];
54
+ /**
55
+ * Dynamic resource search function.
56
+ * Must be paired with getResource.
57
+ * Called when searching for resources dynamically.
58
+ */
59
+ listResources?: ResourceSource["listResources"];
60
+ /**
61
+ * Dynamic resource fetch function.
62
+ * Must be paired with listResources.
63
+ * Called when fetching a specific resource by URI.
64
+ */
65
+ getResource?: ResourceSource["getResource"];
66
+ /**
67
+ * Configuration for context helpers.
68
+ * A dictionary of functions that provide additional context to the AI.
69
+ * Each key becomes the context name, and the function returns the value.
70
+ */
71
+ contextHelpers?: ContextHelpers;
72
+ /**
73
+ * Optional context key for thread scoping/isolation.
74
+ * Threads created with the same contextKey are grouped together.
75
+ * Useful for multi-tenant applications or separating conversation contexts.
76
+ */
77
+ contextKey?: string;
78
+ /**
79
+ * Optional custom QueryClient instance.
80
+ * If not provided, a default client will be created.
81
+ */
82
+ queryClient?: QueryClient;
83
+ /**
84
+ * Children components
85
+ */
86
+ children: React.ReactNode;
87
+ }
88
+ /**
89
+ * Main provider for the Tambo v1 SDK.
90
+ *
91
+ * Composes TamboClientProvider, TamboRegistryProvider, and TamboV1StreamProvider
92
+ * to provide a complete context for building AI-powered applications.
93
+ *
94
+ * Threads are managed dynamically through useTamboV1() hook functions:
95
+ * - startNewThread() - Begin a new conversation
96
+ * - switchThread(threadId) - Switch to an existing thread
97
+ * - initThread(threadId) - Initialize a thread for receiving events
98
+ * @param props - Provider configuration
99
+ * @param props.apiKey - Tambo API key for authentication
100
+ * @param props.tamboUrl - Optional custom Tambo API URL
101
+ * @param props.environment - Optional environment configuration
102
+ * @param props.userToken - Optional OAuth token for user authentication
103
+ * @param props.components - Components to register with the AI
104
+ * @param props.tools - Tools to register for client-side execution
105
+ * @param props.mcpServers - MCP servers to register for additional tools/resources
106
+ * @param props.onCallUnregisteredTool - Callback for handling unknown tool calls
107
+ * @param props.resources - Static resources to register with the AI
108
+ * @param props.listResources - Dynamic resource search function (must be paired with getResource)
109
+ * @param props.getResource - Dynamic resource fetch function (must be paired with listResources)
110
+ * @param props.contextHelpers - Configuration for context helper functions
111
+ * @param props.contextKey - Optional context key for thread scoping/isolation
112
+ * @param props.queryClient - Optional custom React Query client
113
+ * @param props.children - Child components
114
+ * @returns Provider component tree
115
+ * @example
116
+ * ```tsx
117
+ * import { TamboV1Provider } from '@tambo-ai/react/v1';
118
+ *
119
+ * function App() {
120
+ * return (
121
+ * <TamboV1Provider
122
+ * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
123
+ * components={[WeatherCard, StockChart]}
124
+ * tools={[searchTool, calculatorTool]}
125
+ * >
126
+ * <ChatInterface />
127
+ * </TamboV1Provider>
128
+ * );
129
+ * }
130
+ * ```
131
+ */
132
+ export declare function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, contextKey, queryClient, children, }: PropsWithChildren<TamboV1ProviderProps>): React.JSX.Element;
133
+ //# sourceMappingURL=tambo-v1-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tambo-v1-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAGZ,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,2BAA2B,CAAC;AAQnC;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,wBAAwB,EACxB,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CACpD;IACC;;;OAGG;IACH,UAAU,CAAC,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAEtD;;;OAGG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAE5C;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;IAExC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;IAE9E;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/B;;;;OAIG;IACH,aAAa,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAEhD;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAE5C;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,QAAQ,GACT,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,qBA2CzC"}