@tambo-ai/react 0.74.1 → 0.75.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 (308) hide show
  1. package/README.md +46 -449
  2. package/dist/hoc/with-tambo-interactable.d.ts +8 -0
  3. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -1
  4. package/dist/hoc/with-tambo-interactable.js +5 -2
  5. package/dist/hoc/with-tambo-interactable.js.map +1 -1
  6. package/dist/hoc/with-tambo-interactable.test.js +12 -0
  7. package/dist/hoc/with-tambo-interactable.test.js.map +1 -1
  8. package/dist/hooks/use-tambo-voice.test.js +3 -0
  9. package/dist/hooks/use-tambo-voice.test.js.map +1 -1
  10. package/dist/mcp/mcp-hooks.test.js +69 -0
  11. package/dist/mcp/mcp-hooks.test.js.map +1 -1
  12. package/dist/mcp/tambo-mcp-provider.test.js +24 -0
  13. package/dist/mcp/tambo-mcp-provider.test.js.map +1 -1
  14. package/dist/mcp/use-mcp-servers.test.js +9 -0
  15. package/dist/mcp/use-mcp-servers.test.js.map +1 -1
  16. package/dist/model/component-metadata.d.ts +4 -4
  17. package/dist/model/component-metadata.js.map +1 -1
  18. package/dist/providers/__tests__/thread-input-resource-resolution.test.js +2 -2
  19. package/dist/providers/__tests__/thread-input-resource-resolution.test.js.map +1 -1
  20. package/dist/providers/tambo-client-provider.d.ts +6 -0
  21. package/dist/providers/tambo-client-provider.d.ts.map +1 -1
  22. package/dist/providers/tambo-client-provider.js +4 -1
  23. package/dist/providers/tambo-client-provider.js.map +1 -1
  24. package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
  25. package/dist/providers/tambo-interactable-provider.js +8 -0
  26. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  27. package/dist/providers/tambo-interactable-provider.test.js +47 -0
  28. package/dist/providers/tambo-interactable-provider.test.js.map +1 -1
  29. package/dist/providers/tambo-provider.d.ts.map +1 -1
  30. package/dist/providers/tambo-provider.js +4 -1
  31. package/dist/providers/tambo-provider.js.map +1 -1
  32. package/dist/providers/tambo-stubs.d.ts.map +1 -1
  33. package/dist/providers/tambo-stubs.js +3 -0
  34. package/dist/providers/tambo-stubs.js.map +1 -1
  35. package/dist/providers/tambo-thread-provider-initial-messages.test.js +3 -0
  36. package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +1 -1
  37. package/dist/providers/tambo-thread-provider.test.js +3 -0
  38. package/dist/providers/tambo-thread-provider.test.js.map +1 -1
  39. package/dist/util/registry-validators.js +1 -1
  40. package/dist/util/registry-validators.js.map +1 -1
  41. package/dist/util/resource-content-resolver.test.js +1 -1
  42. package/dist/util/resource-content-resolver.test.js.map +1 -1
  43. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts +11 -0
  44. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -0
  45. package/dist/v1/hooks/use-tambo-v1-auth-state.js +48 -0
  46. package/dist/v1/hooks/use-tambo-v1-auth-state.js.map +1 -0
  47. package/dist/v1/hooks/use-tambo-v1-auth-state.test.d.ts +2 -0
  48. package/dist/v1/hooks/use-tambo-v1-auth-state.test.d.ts.map +1 -0
  49. package/dist/v1/hooks/use-tambo-v1-auth-state.test.js +105 -0
  50. package/dist/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -0
  51. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  52. package/dist/v1/hooks/use-tambo-v1-component-state.js +68 -21
  53. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  54. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +100 -0
  55. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  56. package/dist/v1/hooks/use-tambo-v1-messages.test.js +8 -0
  57. package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  58. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +19 -1
  59. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  60. package/dist/v1/hooks/use-tambo-v1-send-message.js +86 -9
  61. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  62. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +273 -0
  63. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  64. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts +2 -2
  65. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
  66. package/dist/v1/hooks/use-tambo-v1-stream-status.js +2 -2
  67. package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  68. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +11 -11
  69. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  70. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +13 -0
  71. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  72. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  73. package/dist/v1/hooks/use-tambo-v1-thread-list.js +4 -0
  74. package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  75. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +6 -0
  76. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  77. package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  78. package/dist/v1/hooks/use-tambo-v1-thread.js +4 -0
  79. package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  80. package/dist/v1/hooks/use-tambo-v1-thread.test.js +6 -0
  81. package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  82. package/dist/v1/hooks/use-tambo-v1.d.ts +11 -0
  83. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  84. package/dist/v1/hooks/use-tambo-v1.js +5 -0
  85. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  86. package/dist/v1/hooks/use-tambo-v1.test.js +13 -0
  87. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  88. package/dist/v1/index.d.ts +4 -1
  89. package/dist/v1/index.d.ts.map +1 -1
  90. package/dist/v1/index.js +5 -2
  91. package/dist/v1/index.js.map +1 -1
  92. package/dist/v1/providers/tambo-v1-provider.d.ts +16 -1
  93. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  94. package/dist/v1/providers/tambo-v1-provider.js +42 -5
  95. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  96. package/dist/v1/providers/tambo-v1-provider.test.js +19 -2
  97. package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
  98. package/dist/v1/providers/tambo-v1-stream-context.d.ts +6 -0
  99. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  100. package/dist/v1/providers/tambo-v1-stream-context.js +50 -11
  101. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  102. package/dist/v1/providers/tambo-v1-stream-context.test.js +9 -0
  103. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  104. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  105. package/dist/v1/providers/tambo-v1-stub-provider.js +4 -0
  106. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  107. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +11 -0
  108. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  109. package/dist/v1/providers/tambo-v1-thread-input-provider.js +10 -1
  110. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  111. package/dist/v1/types/auth.d.ts +24 -0
  112. package/dist/v1/types/auth.d.ts.map +1 -0
  113. package/dist/v1/types/auth.js +3 -0
  114. package/dist/v1/types/auth.js.map +1 -0
  115. package/dist/v1/types/message.d.ts +12 -0
  116. package/dist/v1/types/message.d.ts.map +1 -1
  117. package/dist/v1/types/message.js.map +1 -1
  118. package/dist/v1/types/tool-choice.d.ts +8 -0
  119. package/dist/v1/types/tool-choice.d.ts.map +1 -0
  120. package/dist/v1/types/tool-choice.js +3 -0
  121. package/dist/v1/types/tool-choice.js.map +1 -0
  122. package/dist/v1/utils/event-accumulator.d.ts +28 -2
  123. package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
  124. package/dist/v1/utils/event-accumulator.js +67 -15
  125. package/dist/v1/utils/event-accumulator.js.map +1 -1
  126. package/dist/v1/utils/event-accumulator.test.js +106 -0
  127. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  128. package/dist/v1/utils/keyed-throttle.d.ts +42 -0
  129. package/dist/v1/utils/keyed-throttle.d.ts.map +1 -0
  130. package/dist/v1/utils/keyed-throttle.js +86 -0
  131. package/dist/v1/utils/keyed-throttle.js.map +1 -0
  132. package/dist/v1/utils/keyed-throttle.test.d.ts +2 -0
  133. package/dist/v1/utils/keyed-throttle.test.d.ts.map +1 -0
  134. package/dist/v1/utils/keyed-throttle.test.js +147 -0
  135. package/dist/v1/utils/keyed-throttle.test.js.map +1 -0
  136. package/dist/v1/utils/registry-conversion.d.ts.map +1 -1
  137. package/dist/v1/utils/registry-conversion.js +2 -0
  138. package/dist/v1/utils/registry-conversion.js.map +1 -1
  139. package/dist/v1/utils/registry-conversion.test.js +23 -0
  140. package/dist/v1/utils/registry-conversion.test.js.map +1 -1
  141. package/dist/v1/utils/tool-call-tracker.d.ts +10 -0
  142. package/dist/v1/utils/tool-call-tracker.d.ts.map +1 -1
  143. package/dist/v1/utils/tool-call-tracker.js +13 -0
  144. package/dist/v1/utils/tool-call-tracker.js.map +1 -1
  145. package/dist/v1/utils/tool-call-tracker.test.d.ts +2 -0
  146. package/dist/v1/utils/tool-call-tracker.test.d.ts.map +1 -0
  147. package/dist/v1/utils/tool-call-tracker.test.js +67 -0
  148. package/dist/v1/utils/tool-call-tracker.test.js.map +1 -0
  149. package/dist/v1/utils/tool-executor.d.ts +34 -0
  150. package/dist/v1/utils/tool-executor.d.ts.map +1 -1
  151. package/dist/v1/utils/tool-executor.js +55 -0
  152. package/dist/v1/utils/tool-executor.js.map +1 -1
  153. package/dist/v1/utils/tool-executor.test.js +211 -0
  154. package/dist/v1/utils/tool-executor.test.js.map +1 -1
  155. package/esm/hoc/with-tambo-interactable.d.ts +8 -0
  156. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -1
  157. package/esm/hoc/with-tambo-interactable.js +5 -2
  158. package/esm/hoc/with-tambo-interactable.js.map +1 -1
  159. package/esm/hoc/with-tambo-interactable.test.js +12 -0
  160. package/esm/hoc/with-tambo-interactable.test.js.map +1 -1
  161. package/esm/hooks/use-tambo-voice.test.js +3 -0
  162. package/esm/hooks/use-tambo-voice.test.js.map +1 -1
  163. package/esm/mcp/mcp-hooks.test.js +69 -0
  164. package/esm/mcp/mcp-hooks.test.js.map +1 -1
  165. package/esm/mcp/tambo-mcp-provider.test.js +24 -0
  166. package/esm/mcp/tambo-mcp-provider.test.js.map +1 -1
  167. package/esm/mcp/use-mcp-servers.test.js +9 -0
  168. package/esm/mcp/use-mcp-servers.test.js.map +1 -1
  169. package/esm/model/component-metadata.d.ts +4 -4
  170. package/esm/model/component-metadata.js.map +1 -1
  171. package/esm/providers/__tests__/thread-input-resource-resolution.test.js +2 -2
  172. package/esm/providers/__tests__/thread-input-resource-resolution.test.js.map +1 -1
  173. package/esm/providers/tambo-client-provider.d.ts +6 -0
  174. package/esm/providers/tambo-client-provider.d.ts.map +1 -1
  175. package/esm/providers/tambo-client-provider.js +4 -1
  176. package/esm/providers/tambo-client-provider.js.map +1 -1
  177. package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
  178. package/esm/providers/tambo-interactable-provider.js +8 -0
  179. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  180. package/esm/providers/tambo-interactable-provider.test.js +47 -0
  181. package/esm/providers/tambo-interactable-provider.test.js.map +1 -1
  182. package/esm/providers/tambo-provider.d.ts.map +1 -1
  183. package/esm/providers/tambo-provider.js +4 -1
  184. package/esm/providers/tambo-provider.js.map +1 -1
  185. package/esm/providers/tambo-stubs.d.ts.map +1 -1
  186. package/esm/providers/tambo-stubs.js +3 -0
  187. package/esm/providers/tambo-stubs.js.map +1 -1
  188. package/esm/providers/tambo-thread-provider-initial-messages.test.js +3 -0
  189. package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +1 -1
  190. package/esm/providers/tambo-thread-provider.test.js +3 -0
  191. package/esm/providers/tambo-thread-provider.test.js.map +1 -1
  192. package/esm/util/registry-validators.js +1 -1
  193. package/esm/util/registry-validators.js.map +1 -1
  194. package/esm/util/resource-content-resolver.test.js +1 -1
  195. package/esm/util/resource-content-resolver.test.js.map +1 -1
  196. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts +11 -0
  197. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -0
  198. package/esm/v1/hooks/use-tambo-v1-auth-state.js +45 -0
  199. package/esm/v1/hooks/use-tambo-v1-auth-state.js.map +1 -0
  200. package/esm/v1/hooks/use-tambo-v1-auth-state.test.d.ts +2 -0
  201. package/esm/v1/hooks/use-tambo-v1-auth-state.test.d.ts.map +1 -0
  202. package/esm/v1/hooks/use-tambo-v1-auth-state.test.js +100 -0
  203. package/esm/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -0
  204. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  205. package/esm/v1/hooks/use-tambo-v1-component-state.js +68 -21
  206. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  207. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +100 -0
  208. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  209. package/esm/v1/hooks/use-tambo-v1-messages.test.js +8 -0
  210. package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  211. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +19 -1
  212. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  213. package/esm/v1/hooks/use-tambo-v1-send-message.js +87 -10
  214. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  215. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +273 -0
  216. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  217. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts +2 -2
  218. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
  219. package/esm/v1/hooks/use-tambo-v1-stream-status.js +2 -2
  220. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  221. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +11 -11
  222. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  223. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +13 -0
  224. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  225. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  226. package/esm/v1/hooks/use-tambo-v1-thread-list.js +4 -0
  227. package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  228. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +6 -0
  229. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  230. package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  231. package/esm/v1/hooks/use-tambo-v1-thread.js +4 -0
  232. package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  233. package/esm/v1/hooks/use-tambo-v1-thread.test.js +6 -0
  234. package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  235. package/esm/v1/hooks/use-tambo-v1.d.ts +11 -0
  236. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  237. package/esm/v1/hooks/use-tambo-v1.js +5 -0
  238. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  239. package/esm/v1/hooks/use-tambo-v1.test.js +13 -0
  240. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  241. package/esm/v1/index.d.ts +4 -1
  242. package/esm/v1/index.d.ts.map +1 -1
  243. package/esm/v1/index.js +3 -1
  244. package/esm/v1/index.js.map +1 -1
  245. package/esm/v1/providers/tambo-v1-provider.d.ts +16 -1
  246. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  247. package/esm/v1/providers/tambo-v1-provider.js +43 -6
  248. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  249. package/esm/v1/providers/tambo-v1-provider.test.js +19 -2
  250. package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
  251. package/esm/v1/providers/tambo-v1-stream-context.d.ts +6 -0
  252. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  253. package/esm/v1/providers/tambo-v1-stream-context.js +51 -12
  254. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  255. package/esm/v1/providers/tambo-v1-stream-context.test.js +9 -0
  256. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  257. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  258. package/esm/v1/providers/tambo-v1-stub-provider.js +4 -0
  259. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  260. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +11 -0
  261. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  262. package/esm/v1/providers/tambo-v1-thread-input-provider.js +10 -1
  263. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  264. package/esm/v1/types/auth.d.ts +24 -0
  265. package/esm/v1/types/auth.d.ts.map +1 -0
  266. package/esm/v1/types/auth.js +2 -0
  267. package/esm/v1/types/auth.js.map +1 -0
  268. package/esm/v1/types/message.d.ts +12 -0
  269. package/esm/v1/types/message.d.ts.map +1 -1
  270. package/esm/v1/types/message.js.map +1 -1
  271. package/esm/v1/types/tool-choice.d.ts +8 -0
  272. package/esm/v1/types/tool-choice.d.ts.map +1 -0
  273. package/esm/v1/types/tool-choice.js +2 -0
  274. package/esm/v1/types/tool-choice.js.map +1 -0
  275. package/esm/v1/utils/event-accumulator.d.ts +28 -2
  276. package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
  277. package/esm/v1/utils/event-accumulator.js +66 -15
  278. package/esm/v1/utils/event-accumulator.js.map +1 -1
  279. package/esm/v1/utils/event-accumulator.test.js +106 -0
  280. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  281. package/esm/v1/utils/keyed-throttle.d.ts +42 -0
  282. package/esm/v1/utils/keyed-throttle.d.ts.map +1 -0
  283. package/esm/v1/utils/keyed-throttle.js +83 -0
  284. package/esm/v1/utils/keyed-throttle.js.map +1 -0
  285. package/esm/v1/utils/keyed-throttle.test.d.ts +2 -0
  286. package/esm/v1/utils/keyed-throttle.test.d.ts.map +1 -0
  287. package/esm/v1/utils/keyed-throttle.test.js +145 -0
  288. package/esm/v1/utils/keyed-throttle.test.js.map +1 -0
  289. package/esm/v1/utils/registry-conversion.d.ts.map +1 -1
  290. package/esm/v1/utils/registry-conversion.js +2 -0
  291. package/esm/v1/utils/registry-conversion.js.map +1 -1
  292. package/esm/v1/utils/registry-conversion.test.js +23 -0
  293. package/esm/v1/utils/registry-conversion.test.js.map +1 -1
  294. package/esm/v1/utils/tool-call-tracker.d.ts +10 -0
  295. package/esm/v1/utils/tool-call-tracker.d.ts.map +1 -1
  296. package/esm/v1/utils/tool-call-tracker.js +13 -0
  297. package/esm/v1/utils/tool-call-tracker.js.map +1 -1
  298. package/esm/v1/utils/tool-call-tracker.test.d.ts +2 -0
  299. package/esm/v1/utils/tool-call-tracker.test.d.ts.map +1 -0
  300. package/esm/v1/utils/tool-call-tracker.test.js +65 -0
  301. package/esm/v1/utils/tool-call-tracker.test.js.map +1 -0
  302. package/esm/v1/utils/tool-executor.d.ts +34 -0
  303. package/esm/v1/utils/tool-executor.d.ts.map +1 -1
  304. package/esm/v1/utils/tool-executor.js +53 -0
  305. package/esm/v1/utils/tool-executor.js.map +1 -1
  306. package/esm/v1/utils/tool-executor.test.js +212 -1
  307. package/esm/v1/utils/tool-executor.test.js.map +1 -1
  308. package/package.json +4 -4
package/README.md CHANGED
@@ -1,18 +1,19 @@
1
1
  <div align="center">
2
2
  <h1>@tambo-ai/react</h1>
3
- <h3>Generative UI for React</h3>
4
- <p>Build apps that adapt to your users.</p>
3
+ <h3>Build agents that speak your UI</h3>
4
+ <p>The open-source generative UI toolkit for React.</p>
5
5
  </div>
6
6
 
7
7
  <p align="center">
8
8
  <a href="https://www.npmjs.com/package/@tambo-ai/react"><img src="https://img.shields.io/npm/v/%40tambo-ai%2Freact?logo=npm" alt="npm version" /></a>
9
9
  <a href="https://github.com/tambo-ai/tambo/blob/main/LICENSE"><img src="https://img.shields.io/github/license/tambo-ai/tambo" alt="License" /></a>
10
+ <a href="https://github.com/tambo-ai/tambo"><img src="https://img.shields.io/github/stars/tambo-ai/tambo" alt="GitHub stars" /></a>
10
11
  <a href="https://discord.gg/dJNvPEHth6"><img src="https://img.shields.io/discord/1251581895414911016?color=7289da&label=discord" alt="Discord"></a>
11
12
  </p>
12
13
 
13
14
  <p align="center">
14
- <a href="https://docs.tambo.co">Documentation</a> •
15
- <a href="https://docs.tambo.co/reference/react-sdk">API Reference</a> •
15
+ <a href="https://github.com/tambo-ai/tambo">⭐ Star us on GitHub</a> •
16
+ <a href="https://docs.tambo.co">Docs</a> •
16
17
  <a href="https://discord.gg/dJNvPEHth6">Discord</a>
17
18
  </p>
18
19
 
@@ -20,54 +21,23 @@
20
21
 
21
22
  ## What is Tambo?
22
23
 
23
- Tambo is a generative UI SDK for React. Register your components, and the AI decides which ones to render based on natural language conversations.
24
+ Tambo is a React toolkit for building agents that render UI (also known as generative UI).
24
25
 
25
- ## Why We Built This
26
-
27
- Most software is built around a one-size-fits-all mental model that doesn't fit every user.
28
-
29
- **Users shouldn't have to learn your app.** Generative UI shows the right components based on what someone is trying to do. First-time users and power users see different things.
30
-
31
- **Users shouldn't have to click through your workflows.** "Show me sales from last quarter grouped by region" should just work. The AI translates what users want into the right interface.
32
-
33
- ```tsx
34
- const components: TamboComponent[] = [{
35
- name: "Graph",
36
- description: "Displays data as charts",
37
- component: Graph,
38
- propsSchema: z.object({ data: z.array(...), type: z.enum(["line", "bar", "pie"]) })
39
- }];
40
- ```
41
-
42
- ## Key Benefits
43
-
44
- - **No AI Expertise Needed** - If you can write React, you can build generative UIs
45
- - **MCP-Native Architecture** - Built-in Model Context Protocol support
46
- - **Bring Your Own LLM** - Works with OpenAI, Anthropic, Google, Mistral, or any OpenAI-compatible provider
47
- - **Dual Build Output** - CommonJS and ESM modules for broad compatibility
48
- - **Type-Safe** - Full TypeScript support with Zod schemas
26
+ Register your components with Zod schemas. The agent picks the right one and streams the props so users can interact with them. "Show me sales by region" renders your `<Chart>`. "Add a task" updates your `<TaskBoard>`.
49
27
 
50
28
  ## Installation
51
29
 
52
- ### Create New App
53
-
54
30
  ```bash
55
- npx tambo create-app my-tambo-app
31
+ npm create tambo-app my-tambo-app
56
32
  cd my-tambo-app
33
+ npx tambo init # choose cloud or self-hosted
57
34
  npm run dev
58
35
  ```
59
36
 
60
- ### Add to Existing Project
37
+ Or add to an existing project:
61
38
 
62
39
  ```bash
63
40
  npm install @tambo-ai/react
64
- # or
65
- yarn add @tambo-ai/react
66
- ```
67
-
68
- Then initialize:
69
-
70
- ```bash
71
41
  npx tambo init
72
42
  ```
73
43
 
@@ -81,11 +51,11 @@ import {
81
51
  } from "@tambo-ai/react";
82
52
  import { z } from "zod/v4";
83
53
 
84
- // 1. Register your components
54
+ // 1. Register components with Zod schemas
85
55
  const components = [
86
56
  {
87
57
  name: "Graph",
88
- description: "Displays data as charts (bar, line, pie)",
58
+ description: "Displays data as charts",
89
59
  component: Graph,
90
60
  propsSchema: z.object({
91
61
  data: z.array(z.object({ name: z.string(), value: z.number() })),
@@ -95,438 +65,65 @@ const components = [
95
65
  ];
96
66
 
97
67
  // 2. Wrap your app
98
- function App() {
99
- return (
100
- <TamboProvider
101
- apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
102
- components={components}
103
- >
104
- <ChatInterface />
105
- </TamboProvider>
106
- );
107
- }
108
-
109
- // 3. Use hooks to build your UI
110
- function ChatInterface() {
111
- const { thread } = useTamboThread();
112
- const { value, setValue, submit, isPending } = useTamboThreadInput();
113
-
114
- return (
115
- <div>
116
- {thread.messages.map((message) => (
117
- <div key={message.id}>
118
- {Array.isArray(message.content) ? (
119
- message.content.map((part, i) =>
120
- part.type === "text" ? <p key={i}>{part.text}</p> : null,
121
- )
122
- ) : (
123
- <p>{String(message.content)}</p>
124
- )}
125
- {message.renderedComponent}
126
- </div>
127
- ))}
128
- <input value={value} onChange={(e) => setValue(e.target.value)} />
129
- <button onClick={() => submit()} disabled={isPending}>
130
- Send
131
- </button>
132
- </div>
133
- );
134
- }
135
- ```
136
-
137
- [→ Full tutorial](https://docs.tambo.co/getting-started/quickstart)
138
-
139
- ## Core Concepts
140
-
141
- ### Component Registration
142
-
143
- Register React components with Zod schemas for type-safe props:
144
-
145
- ```tsx
146
- import { type TamboComponent } from "@tambo-ai/react";
147
-
148
- const components: TamboComponent[] = [
149
- {
150
- name: "WeatherCard",
151
- description: "Displays weather information with temperature and conditions",
152
- component: WeatherCard,
153
- propsSchema: z.object({
154
- location: z.string(),
155
- temperature: z.number(),
156
- condition: z.string(),
157
- }),
158
- },
159
- ];
160
- ```
161
-
162
- [→ Learn more about components](https://docs.tambo.co/concepts/generative-interfaces)
163
-
164
- ### Provider Setup
165
-
166
- Wrap your app with `TamboProvider` to enable AI capabilities:
167
-
168
- ```tsx
169
68
  <TamboProvider
170
69
  apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
171
70
  components={components}
172
- tools={tools} // optional
173
- userToken={userToken} // optional
174
- >
175
- <YourApp />
176
- </TamboProvider>
177
- ```
178
-
179
- [→ See all provider options](https://docs.tambo.co/reference/react-sdk/providers)
180
-
181
- ### Hooks
182
-
183
- | Hook | Description |
184
- | -------------------------- | -------------------------------------------------- |
185
- | `useTamboThread()` | Access current thread and messages |
186
- | `useTamboThreadInput()` | Handle user input and message submission |
187
- | `useTamboCurrentMessage()` | Access current message context (inside components) |
188
- | `useTamboComponentState()` | Persistent component state across renders |
189
- | `useTamboStreamStatus()` | Monitor streaming status for progressive loading |
190
- | `useTamboSuggestions()` | Generate contextual suggestions |
191
-
192
- [→ API Reference](https://docs.tambo.co/reference/react-sdk)
193
-
194
- ## Key Features
195
-
196
- ### Generative Components
197
-
198
- **Generative components** render once in response to a message. Charts, summaries, data visualizations.
199
-
200
- ```tsx
201
- const components: TamboComponent[] = [
202
- {
203
- name: "Graph",
204
- description: "Displays data as charts",
205
- component: Graph,
206
- propsSchema: z.object({
207
- data: z.array(z.object({ name: z.string(), value: z.number() })),
208
- type: z.enum(["line", "bar", "pie"]),
209
- }),
210
- },
211
- ];
212
- ```
213
-
214
- [→ Learn more about components](https://docs.tambo.co/concepts/generative-interfaces)
215
-
216
- ### Interactable Components
217
-
218
- **Interactable components** persist and update as users refine requests. Shopping carts, spreadsheets, task boards.
219
-
220
- ```tsx
221
- import { withInteractable } from "@tambo-ai/react";
222
-
223
- const InteractableNote = withInteractable(Note, {
224
- componentName: "Note",
225
- description: "A note supporting title, content, and color modifications",
226
- propsSchema: z.object({
227
- title: z.string(),
228
- content: z.string(),
229
- color: z.enum(["white", "yellow", "blue", "green"]).optional(),
230
- }),
231
- });
232
-
233
- // Pre-place in your UI or let AI generate dynamically
234
- <InteractableNote id="note-1" title="My Note" content="Content here" />;
235
- ```
236
-
237
- [→ Learn more about interactable components](https://docs.tambo.co/concepts/generative-interfaces/interactable-components)
238
-
239
- ### MCP Integration
240
-
241
- Connect to Linear, Slack, databases, or your own MCP servers. Tambo supports the full MCP protocol: tools, prompts, elicitations, and sampling.
242
-
243
- ```tsx
244
- import { MCPTransport } from "@tambo-ai/react/mcp";
245
-
246
- const mcpServers = [
247
- {
248
- name: "filesystem",
249
- url: "http://localhost:8261/mcp",
250
- transport: MCPTransport.HTTP,
251
- },
252
- ];
253
-
254
- <TamboProvider components={components} mcpServers={mcpServers}>
255
- <App />
256
- </TamboProvider>;
257
- ```
258
-
259
- [→ Learn more about MCP](https://docs.tambo.co/concepts/model-context-protocol)
260
-
261
- > **Dependency note**
262
- >
263
- > The `@modelcontextprotocol/sdk` is included automatically when you install `@tambo-ai/react`. However, if you import from the `@tambo-ai/react/mcp` subpath and use features that require schema validation (like component props schemas), you'll need to install `zod` and `zod-to-json-schema` as optional peer dependencies:
264
- >
265
- > ```bash
266
- > npm install zod@^4.0.0 zod-to-json-schema@^3.25.0
267
- > ```
268
71
  >
269
- > `zod` can also be `^3.25` if you prefer Zod 3; both `^3.25` and `^4.0` satisfy the SDK's `zod/v3` subpath constraints.
270
-
271
- ### Local Tools
272
-
273
- Sometimes you need functions that run in the browser. DOM manipulation, authenticated fetches, accessing React state. Define them as tools and the AI can call them.
274
-
275
- ```tsx
276
- import { z } from "zod/v4";
277
- import { defineTool } from "@tambo-ai/react";
278
-
279
- const tools = [
280
- defineTool({
281
- name: "getWeather",
282
- description: "Fetches weather data for a location",
283
- tool: async ({ location }) =>
284
- fetch(`/api/weather?q=${location}`).then((r) => r.json()),
285
- inputSchema: z.object({
286
- location: z.string(),
287
- }),
288
- outputSchema: z.object({
289
- temperature: z.number(),
290
- condition: z.string(),
291
- location: z.string(),
292
- }),
293
- }),
294
- ];
295
-
296
- <TamboProvider tools={tools} components={components}>
297
72
  <App />
298
73
  </TamboProvider>;
299
- ```
300
-
301
- [→ Learn more about tools](https://docs.tambo.co/guides/take-actions/register-tools)
302
-
303
- #### Advanced: Transforming Tool Responses
304
74
 
305
- For tools that return rich content (images, audio, mixed media), provide a `transformToContent` function:
306
-
307
- ```tsx
308
- const tools: TamboTool[] = [
309
- {
310
- name: "getImageData",
311
- description: "Fetches image data with metadata",
312
- tool: async (params: { imageId: string }) => {
313
- const data = await fetchImageData(params.imageId);
314
- return { url: data.imageUrl, description: data.description };
315
- },
316
- inputSchema: z.object({
317
- imageId: z.string(),
318
- }),
319
- outputSchema: z.object({ url: z.string(), description: z.string() }),
320
- transformToContent: (result) => [
321
- { type: "text", text: result.description },
322
- { type: "image_url", image_url: { url: result.url } },
323
- ],
324
- },
325
- ];
75
+ // 3. Use hooks
76
+ const { value, setValue, submit, isPending } = useTamboThreadInput();
77
+ const { thread } = useTamboThread();
326
78
  ```
327
79
 
328
- The MCP integration automatically uses `transformToContent` to pass through rich content.
80
+ ## Key Hooks
329
81
 
330
- ### Local Resources
82
+ | Hook | Description |
83
+ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
84
+ | [`useTamboThread()`](https://docs.tambo.co/concepts/conversation-storage) | Access current thread and messages |
85
+ | [`useTamboThreadInput()`](https://docs.tambo.co/reference/react-sdk/hooks#usetambothreadinput) | Handle user input and message submission |
86
+ | [`useTamboStreamStatus()`](https://docs.tambo.co/reference/react-sdk/hooks#usetambostreamstatus) | Monitor streaming status for progressive loading |
87
+ | [`useTamboSuggestions()`](https://docs.tambo.co/concepts/suggestions) | Generate contextual suggestions |
88
+ | [`useTamboComponentState()`](https://docs.tambo.co/concepts/generative-interfaces/component-state) | Persistent component state across renders |
331
89
 
332
- Resources provide context to the AI by making content accessible without requiring a full MCP server. You can register static resources, dynamic resource functions, or both.
90
+ ## Features
333
91
 
334
- #### Static Resources
92
+ - **[Generative Components](https://docs.tambo.co/concepts/generative-interfaces/generative-components)** - AI renders the right component based on conversation
93
+ - **[Interactable Components](https://docs.tambo.co/concepts/generative-interfaces/interactable-components)** - Persistent stateful components that update as users refine requests
94
+ - **[MCP Integration](https://docs.tambo.co/concepts/model-context-protocol)** - Connect to Linear, Slack, databases, or your own MCP servers
95
+ - **[Local Tools](https://docs.tambo.co/guides/take-actions/register-tools)** - Define browser-side functions the AI can call
96
+ - **[Streaming](https://docs.tambo.co/reference/react-sdk/hooks#usetambostreamstatus)** - Props stream to components as the LLM generates them
335
97
 
336
- Register individual resources directly in your provider:
98
+ ## MCP Dependency Note
337
99
 
338
- ```tsx
339
- import { type ListResourceItem } from "@tambo-ai/react";
340
-
341
- const resources: ListResourceItem[] = [
342
- {
343
- uri: "file:///config/app-settings.json",
344
- name: "App Settings",
345
- description: "Current application configuration",
346
- mimeType: "application/json",
347
- },
348
- {
349
- uri: "file:///docs/user-guide.md",
350
- name: "User Guide",
351
- description: "Getting started documentation",
352
- mimeType: "text/markdown",
353
- },
354
- ];
100
+ `@modelcontextprotocol/sdk` is included automatically when you install `@tambo-ai/react`.
355
101
 
356
- <TamboProvider resources={resources}>
357
- <App />
358
- </TamboProvider>;
359
- ```
360
-
361
- #### Dynamic Resources
362
-
363
- For resources that need to be fetched or computed at runtime, provide `listResources` and `getResource` functions:
364
-
365
- ```tsx
366
- import { type ResourceSource, type ReadResourceResult } from "@tambo-ai/react";
367
-
368
- const listResources = async (search?: string) => {
369
- const allDocs = await fetchUserDocuments();
370
- return allDocs
371
- .filter((doc) => !search || doc.name.includes(search))
372
- .map((doc) => ({
373
- uri: `file:///docs/${doc.id}`,
374
- name: doc.name,
375
- description: doc.summary,
376
- mimeType: "text/markdown",
377
- }));
378
- };
379
-
380
- const getResource = async (uri: string): Promise<ReadResourceResult> => {
381
- const docId = uri.split("/").pop();
382
- const content = await fetchDocumentContent(docId);
383
- return {
384
- contents: [
385
- {
386
- uri,
387
- mimeType: "text/markdown",
388
- text: content,
389
- },
390
- ],
391
- };
392
- };
393
-
394
- <TamboProvider listResources={listResources} getResource={getResource}>
395
- <App />
396
- </TamboProvider>;
397
- ```
102
+ If you import from `@tambo-ai/react/mcp` **and** use features that require schema validation (like component prop schemas via `propsSchema`, or tool schemas via `inputSchema`/`outputSchema`), install the optional peer dependencies:
398
103
 
399
- **Important:** Both `listResources` and `getResource` must be provided together - you cannot provide one without the other.
104
+ Zod 3 (`^3.25.76`) and Zod 4 (`^4`) are both supported. We recommend Zod 4 for new projects. `zod-to-json-schema@^3.25.1` is tested and known to support both.
400
105
 
401
- #### Programmatic Registration
106
+ Install **exactly one** of the following (do not install both Zod 3 and Zod 4):
402
107
 
403
- You can also register resources programmatically:
404
-
405
- ```tsx
406
- const { registerResource, registerResourceSource } = useTamboRegistry();
407
-
408
- // Register a single resource
409
- registerResource({
410
- uri: "file:///runtime/state.json",
411
- name: "Application State",
412
- mimeType: "application/json",
413
- });
414
-
415
- // Register a dynamic source
416
- registerResourceSource({
417
- listResources: async () => [...],
418
- getResource: async (uri) => ({ contents: [...] }),
419
- });
420
- ```
421
-
422
- #### Resource vs MCP Server
423
-
424
- - **Local resources**: Fast, simple, runs in the browser. Great for app state, config, cached data.
425
- - **MCP servers**: Full protocol support, server-side execution. Use for databases, APIs, external services.
426
-
427
- Local resources appear in `useTamboMcpResourceList()` alongside MCP resources, with MCP resources always prefixed by their serverKey.
428
-
429
- [→ Learn more about resources](https://docs.tambo.co/concepts/model-context-protocol/features#resources)
430
-
431
- ### Streaming Status
432
-
433
- Monitor streaming status for progressive loading:
434
-
435
- ```tsx
436
- import { useTamboStreamStatus } from "@tambo-ai/react";
437
-
438
- function LoadingComponent({ title, data }) {
439
- const { streamStatus, propStatus } = useTamboStreamStatus();
440
-
441
- // Show spinner until complete
442
- if (!streamStatus.isSuccess) return <Spinner />;
443
-
444
- // Or show each prop as it arrives
445
- return (
446
- <div>
447
- {propStatus["title"]?.isSuccess && <h3>{title}</h3>}
448
- {propStatus["data"]?.isSuccess && <Chart data={data} />}
449
- </div>
450
- );
451
- }
452
- ```
453
-
454
- [→ Learn more about streaming](https://docs.tambo.co/concepts/generative-interfaces/component-state)
455
-
456
- ### Context, Auth, and Suggestions
457
-
458
- **Additional context** lets you pass metadata to give the AI better responses. User state, app settings, current page. **User authentication** passes tokens from your auth provider. **Suggestions** generates prompts users can click based on what they're doing.
459
-
460
- ```tsx
461
- <TamboProvider
462
- userToken={userToken}
463
- contextHelpers={{
464
- selectedItems: () => ({
465
- key: "selectedItems",
466
- value: selectedItems.map((i) => i.name).join(", "),
467
- }),
468
- currentPage: () => ({ key: "page", value: window.location.pathname }),
469
- }}
470
- />
471
- ```
472
-
473
- ```tsx
474
- const { suggestions, accept } = useTamboSuggestions({ maxSuggestions: 3 });
108
+ ```bash
109
+ # Recommended (Zod 4)
110
+ npm install zod@^4 zod-to-json-schema@^3.25.1
475
111
 
476
- suggestions.map((s) => (
477
- <button key={s.id} onClick={() => accept(s)}>
478
- {s.title}
479
- </button>
480
- ));
112
+ # Or, for existing projects using Zod 3
113
+ npm install zod@^3.25.76 zod-to-json-schema@^3.25.1
481
114
  ```
482
115
 
483
- [→ Learn more](https://docs.tambo.co/concepts/additional-context) • [User authentication](https://docs.tambo.co/concepts/user-authentication) • [Suggestions](https://docs.tambo.co/concepts/suggestions)
484
-
485
- ### Supported LLM Providers
486
-
487
- OpenAI, Anthropic, Google Gemini, Mistral, Groq, and any OpenAI-compatible provider. [Full list](https://docs.tambo.co/reference/llm-providers). Missing one? [Let us know](https://github.com/tambo-ai/tambo/issues).
488
-
489
- ## When to Use This SDK
490
-
491
- Use `@tambo-ai/react` directly when you need:
492
-
493
- - **Custom implementations** - Build your own chat interface or UI patterns
494
- - **Existing design systems** - Integrate with your component library
495
- - **Fine-grained control** - Customize rendering, state, and behavior
496
- - **Non-Next.js frameworks** - Works with any React setup
497
-
498
- For quick starts with pre-built components, use:
499
-
500
- - `npx tambo create-app` - Full-featured template with UI components
501
- - [Tambo UI Library](https://ui.tambo.co) - Copy/paste production-ready components
502
-
503
- ## Build Output
504
-
505
- This package provides dual build outputs for broad compatibility:
506
-
507
- - **CommonJS** (`dist/`) - For Node.js and older bundlers
508
- - **ESM** (`esm/`) - For modern bundlers and native ES modules
509
-
510
- TypeScript definitions included for both outputs.
511
-
512
- ## Community & Support
513
-
514
- - **Discord:** [Join our community](https://discord.gg/dJNvPEHth6) for help and discussions
515
- - **GitHub:** [Star the repo](https://github.com/tambo-ai/tambo) and contribute
516
- - **Showcase:** See [projects built with Tambo](https://github.com/tambo-ai/tambo#built-with-tambo)
517
-
518
- ## Documentation
116
+ ## Learn More
519
117
 
520
- - [Full Documentation](https://docs.tambo.co)
521
- - [Getting Started Guide](https://docs.tambo.co/getting-started/quickstart)
522
- - [API Reference](https://docs.tambo.co/reference/react-sdk)
523
- - [Component Guides](https://docs.tambo.co/concepts/generative-interfaces)
524
- - [UI Library](https://ui.tambo.co)
118
+ - **[GitHub](https://github.com/tambo-ai/tambo)** - Full documentation, examples, and ⭐ star us!
119
+ - **[Docs](https://docs.tambo.co)** - Guides and API reference
120
+ - **[UI Library](https://ui.tambo.co)** - Pre-built components
121
+ - **[Discord](https://discord.gg/dJNvPEHth6)** - Community and support
525
122
 
526
123
  ## License
527
124
 
528
- MIT License - see [LICENSE](../LICENSE) for details.
125
+ MIT - see [LICENSE](https://github.com/tambo-ai/tambo/blob/main/LICENSE)
529
126
 
530
127
  ---
531
128
 
532
- **Note for AI/LLM agents:** For comprehensive documentation in a format optimized for language models, visit [docs.tambo.co/llms.txt](https://docs.tambo.co/llms.txt)
129
+ **For AI/LLM agents:** [docs.tambo.co/llms.txt](https://docs.tambo.co/llms.txt)
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { ToolAnnotations } from "../model/component-metadata";
2
3
  import { SupportedSchema } from "../schema";
3
4
  export interface InteractableConfig<Props = Record<string, unknown>, State = Record<string, unknown>> {
4
5
  /**
@@ -20,6 +21,13 @@ export interface InteractableConfig<Props = Record<string, unknown>, State = Rec
20
21
  * validated against this schema.
21
22
  */
22
23
  stateSchema?: SupportedSchema<State>;
24
+ /**
25
+ * Optional annotations for the interactable component's auto-registered tools
26
+ * (props update and state update). By default, `tamboStreamableHint` is `true`
27
+ * so props/state updates stream in real-time. Set `{ tamboStreamableHint: false }`
28
+ * to disable streaming for this component's tools.
29
+ */
30
+ annotations?: ToolAnnotations;
23
31
  }
24
32
  /**
25
33
  * Props injected by withTamboInteractable HOC. These can be passed to the wrapped
@@ -1 +1 @@
1
- {"version":3,"file":"with-tambo-interactable.d.ts","sourceRoot":"","sources":["../../src/hoc/with-tambo-interactable.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,kBAAkB,CACjC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,SAAS,MAAM,EACjE,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,EACrD,MAAM,EAAE,kBAAkB,yDAsH3B"}
1
+ {"version":3,"file":"with-tambo-interactable.d.ts","sourceRoot":"","sources":["../../src/hoc/with-tambo-interactable.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,WAAW,kBAAkB,CACjC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,SAAS,MAAM,EACjE,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,EACrD,MAAM,EAAE,kBAAkB,yDA8H3B"}
@@ -38,6 +38,7 @@ exports.withTamboInteractable = withTamboInteractable;
38
38
  const react_1 = __importStar(require("react"));
39
39
  const use_current_message_1 = require("../hooks/use-current-message");
40
40
  const tambo_interactable_provider_1 = require("../providers/tambo-interactable-provider");
41
+ const component_renderer_1 = require("../v1/utils/component-renderer");
41
42
  /**
42
43
  * Higher-Order Component that makes any component interactable by tambo.
43
44
  * @param WrappedComponent - The component to make interactable
@@ -98,6 +99,7 @@ function withTamboInteractable(WrappedComponent, config) {
98
99
  props: componentProps,
99
100
  propsSchema: config.propsSchema,
100
101
  stateSchema: config.stateSchema,
102
+ annotations: config.annotations,
101
103
  });
102
104
  setInteractableId(id);
103
105
  onInteractableReady?.(id);
@@ -146,13 +148,14 @@ function withTamboInteractable(WrappedComponent, config) {
146
148
  },
147
149
  componentState: {},
148
150
  };
149
- // Wrap with TamboMessageProvider including interactable metadata
151
+ // Wrap with TamboMessageProvider and V1ComponentContentProvider including interactable metadata
150
152
  return (react_1.default.createElement(use_current_message_1.TamboMessageProvider, { message: minimalMessage, interactableMetadata: {
151
153
  id: interactableId,
152
154
  componentName: config.componentName,
153
155
  description: config.description,
154
156
  } },
155
- react_1.default.createElement(WrappedComponent, { ...effectiveProps })));
157
+ react_1.default.createElement(component_renderer_1.V1ComponentContentProvider, { componentId: interactableId, threadId: "", messageId: "", componentName: config.componentName },
158
+ react_1.default.createElement(WrappedComponent, { ...effectiveProps }))));
156
159
  };
157
160
  TamboInteractableWrapper.displayName = `withTamboInteractable(${displayName})`;
158
161
  return TamboInteractableWrapper;