@tambo-ai/react 0.75.0 → 1.0.0-rc.3

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 (605) hide show
  1. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -1
  2. package/dist/hoc/with-tambo-interactable.js +13 -13
  3. package/dist/hoc/with-tambo-interactable.js.map +1 -1
  4. package/dist/hoc/with-tambo-interactable.test.js +3 -3
  5. package/dist/hoc/with-tambo-interactable.test.js.map +1 -1
  6. package/dist/index.d.ts +7 -25
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -59
  9. package/dist/index.js.map +1 -1
  10. package/dist/mcp/mcp-hooks.js +5 -5
  11. package/dist/mcp/mcp-hooks.js.map +1 -1
  12. package/dist/providers/tambo-client-provider.d.ts +6 -0
  13. package/dist/providers/tambo-client-provider.d.ts.map +1 -1
  14. package/dist/providers/tambo-client-provider.js +4 -2
  15. package/dist/providers/tambo-client-provider.js.map +1 -1
  16. package/dist/providers/tambo-interactable-provider.d.ts +1 -1
  17. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js +2 -10
  18. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
  19. package/dist/providers/tambo-interactables-additional-context.test.js +3 -19
  20. package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -1
  21. package/dist/providers/tambo-mcp-token-provider.d.ts +8 -17
  22. package/dist/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  23. package/dist/providers/tambo-mcp-token-provider.js +20 -97
  24. package/dist/providers/tambo-mcp-token-provider.js.map +1 -1
  25. package/dist/testing/tools.d.ts +3 -3
  26. package/dist/testing/tools.d.ts.map +1 -1
  27. package/dist/testing/tools.js.map +1 -1
  28. package/dist/v1/__tests__/v1-interactables.test.js +1 -1
  29. package/dist/v1/__tests__/v1-interactables.test.js.map +1 -1
  30. package/dist/v1/components/v1-component-renderer.d.ts +9 -9
  31. package/dist/v1/components/v1-component-renderer.d.ts.map +1 -1
  32. package/dist/v1/components/v1-component-renderer.js +13 -13
  33. package/dist/v1/components/v1-component-renderer.js.map +1 -1
  34. package/dist/v1/components/v1-component-renderer.test.js +15 -15
  35. package/dist/v1/components/v1-component-renderer.test.js.map +1 -1
  36. package/{esm/hooks/use-current-message.d.ts → dist/v1/hooks/use-tambo-current-message.d.ts} +30 -9
  37. package/dist/v1/hooks/use-tambo-current-message.d.ts.map +1 -0
  38. package/dist/{hooks/use-current-message.js → v1/hooks/use-tambo-current-message.js} +13 -8
  39. package/dist/v1/hooks/use-tambo-current-message.js.map +1 -0
  40. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts +5 -5
  41. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
  42. package/dist/v1/hooks/use-tambo-v1-auth-state.js +8 -8
  43. package/dist/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
  44. package/dist/v1/hooks/use-tambo-v1-auth-state.test.js +12 -12
  45. package/dist/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -1
  46. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts +7 -6
  47. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  48. package/dist/v1/hooks/use-tambo-v1-component-state.js +50 -24
  49. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  50. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +60 -35
  51. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  52. package/dist/v1/hooks/use-tambo-v1-messages.d.ts +9 -9
  53. package/dist/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -1
  54. package/dist/v1/hooks/use-tambo-v1-messages.js +4 -4
  55. package/dist/v1/hooks/use-tambo-v1-messages.js.map +1 -1
  56. package/dist/v1/hooks/use-tambo-v1-messages.test.js +7 -7
  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 +2 -2
  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 +11 -13
  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 +51 -51
  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 +5 -5
  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 +12 -14
  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 +19 -19
  69. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  70. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +7 -7
  71. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  72. package/dist/v1/hooks/use-tambo-v1-suggestions.js +9 -9
  73. package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  74. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +44 -44
  75. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  76. package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts +3 -3
  77. package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -1
  78. package/dist/v1/hooks/use-tambo-v1-thread-input.js +4 -4
  79. package/dist/v1/hooks/use-tambo-v1-thread-input.js.map +1 -1
  80. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +29 -29
  81. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  82. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +4 -4
  83. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  84. package/dist/v1/hooks/use-tambo-v1-thread-list.js +5 -5
  85. package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  86. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +13 -17
  87. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  88. package/dist/v1/hooks/use-tambo-v1-thread.d.ts +3 -3
  89. package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  90. package/dist/v1/hooks/use-tambo-v1-thread.js +4 -4
  91. package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  92. package/dist/v1/hooks/use-tambo-v1-thread.test.js +5 -5
  93. package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  94. package/dist/v1/hooks/use-tambo-v1.d.ts +7 -7
  95. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  96. package/dist/v1/hooks/use-tambo-v1.js +10 -7
  97. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  98. package/dist/v1/hooks/use-tambo-v1.test.js +54 -45
  99. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  100. package/dist/v1/index.d.ts +31 -27
  101. package/dist/v1/index.d.ts.map +1 -1
  102. package/dist/v1/index.js +45 -35
  103. package/dist/v1/index.js.map +1 -1
  104. package/dist/v1/providers/tambo-v1-provider.d.ts +20 -20
  105. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  106. package/dist/v1/providers/tambo-v1-provider.js +32 -32
  107. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  108. package/dist/v1/providers/tambo-v1-provider.test.js +22 -22
  109. package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
  110. package/dist/v1/providers/tambo-v1-stream-context.d.ts +15 -15
  111. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  112. package/dist/v1/providers/tambo-v1-stream-context.js +17 -17
  113. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  114. package/dist/v1/providers/tambo-v1-stream-context.test.js +7 -7
  115. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  116. package/dist/v1/providers/tambo-v1-stub-provider.d.ts +9 -9
  117. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  118. package/dist/v1/providers/tambo-v1-stub-provider.js +7 -7
  119. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  120. package/dist/v1/providers/tambo-v1-stub-provider.test.js +25 -25
  121. package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  122. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +9 -9
  123. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  124. package/dist/v1/providers/tambo-v1-thread-input-provider.js +16 -16
  125. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  126. package/dist/v1/types/auth.d.ts +2 -2
  127. package/dist/v1/types/auth.d.ts.map +1 -1
  128. package/dist/v1/types/auth.js.map +1 -1
  129. package/dist/v1/types/component.d.ts +3 -3
  130. package/dist/v1/types/component.d.ts.map +1 -1
  131. package/dist/v1/types/component.js +2 -2
  132. package/dist/v1/types/component.js.map +1 -1
  133. package/dist/v1/types/event.d.ts +1 -1
  134. package/dist/v1/types/event.js +1 -1
  135. package/dist/v1/types/event.js.map +1 -1
  136. package/dist/v1/types/message.d.ts +17 -22
  137. package/dist/v1/types/message.d.ts.map +1 -1
  138. package/dist/v1/types/message.js +1 -1
  139. package/dist/v1/types/message.js.map +1 -1
  140. package/dist/v1/types/thread.d.ts +8 -6
  141. package/dist/v1/types/thread.d.ts.map +1 -1
  142. package/dist/v1/types/thread.js +1 -1
  143. package/dist/v1/types/thread.js.map +1 -1
  144. package/dist/v1/types/tool-choice.d.ts +1 -1
  145. package/dist/v1/types/tool-choice.js.map +1 -1
  146. package/dist/v1/utils/component-renderer.d.ts +11 -5
  147. package/dist/v1/utils/component-renderer.d.ts.map +1 -1
  148. package/dist/v1/utils/component-renderer.js +16 -7
  149. package/dist/v1/utils/component-renderer.js.map +1 -1
  150. package/dist/v1/utils/component-renderer.test.js +7 -7
  151. package/dist/v1/utils/component-renderer.test.js.map +1 -1
  152. package/dist/v1/utils/event-accumulator.d.ts +8 -8
  153. package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
  154. package/dist/v1/utils/event-accumulator.js +24 -13
  155. package/dist/v1/utils/event-accumulator.js.map +1 -1
  156. package/dist/v1/utils/event-accumulator.test.js +43 -8
  157. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  158. package/dist/v1/utils/registry-conversion.d.ts +18 -18
  159. package/dist/v1/utils/registry-conversion.js +23 -23
  160. package/dist/v1/utils/registry-conversion.js.map +1 -1
  161. package/dist/v1/utils/stream-handler.d.ts +1 -1
  162. package/dist/v1/utils/stream-handler.js +1 -1
  163. package/dist/v1/utils/stream-handler.js.map +1 -1
  164. package/dist/v1/utils/thread-utils.d.ts +2 -2
  165. package/dist/v1/utils/thread-utils.d.ts.map +1 -1
  166. package/dist/v1/utils/thread-utils.js.map +1 -1
  167. package/dist/v1/utils/tool-call-tracker.d.ts +1 -1
  168. package/dist/v1/utils/tool-call-tracker.js +1 -1
  169. package/dist/v1/utils/tool-call-tracker.js.map +1 -1
  170. package/dist/v1/utils/tool-executor.d.ts +1 -1
  171. package/dist/v1/utils/tool-executor.js +2 -2
  172. package/dist/v1/utils/tool-executor.js.map +1 -1
  173. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -1
  174. package/esm/hoc/with-tambo-interactable.js +13 -13
  175. package/esm/hoc/with-tambo-interactable.js.map +1 -1
  176. package/esm/hoc/with-tambo-interactable.test.js +1 -1
  177. package/esm/hoc/with-tambo-interactable.test.js.map +1 -1
  178. package/esm/index.d.ts +7 -25
  179. package/esm/index.d.ts.map +1 -1
  180. package/esm/index.js +7 -21
  181. package/esm/index.js.map +1 -1
  182. package/esm/mcp/mcp-hooks.js +1 -1
  183. package/esm/mcp/mcp-hooks.js.map +1 -1
  184. package/esm/providers/tambo-client-provider.d.ts +6 -0
  185. package/esm/providers/tambo-client-provider.d.ts.map +1 -1
  186. package/esm/providers/tambo-client-provider.js +4 -2
  187. package/esm/providers/tambo-client-provider.js.map +1 -1
  188. package/esm/providers/tambo-interactable-provider.d.ts +1 -1
  189. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +2 -10
  190. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
  191. package/esm/providers/tambo-interactables-additional-context.test.js +3 -19
  192. package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -1
  193. package/esm/providers/tambo-mcp-token-provider.d.ts +8 -17
  194. package/esm/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  195. package/esm/providers/tambo-mcp-token-provider.js +20 -97
  196. package/esm/providers/tambo-mcp-token-provider.js.map +1 -1
  197. package/esm/testing/tools.d.ts +3 -3
  198. package/esm/testing/tools.d.ts.map +1 -1
  199. package/esm/testing/tools.js.map +1 -1
  200. package/esm/v1/__tests__/v1-interactables.test.js +1 -1
  201. package/esm/v1/__tests__/v1-interactables.test.js.map +1 -1
  202. package/esm/v1/components/v1-component-renderer.d.ts +9 -9
  203. package/esm/v1/components/v1-component-renderer.d.ts.map +1 -1
  204. package/esm/v1/components/v1-component-renderer.js +12 -12
  205. package/esm/v1/components/v1-component-renderer.js.map +1 -1
  206. package/esm/v1/components/v1-component-renderer.test.js +16 -16
  207. package/esm/v1/components/v1-component-renderer.test.js.map +1 -1
  208. package/{dist/hooks/use-current-message.d.ts → esm/v1/hooks/use-tambo-current-message.d.ts} +30 -9
  209. package/esm/v1/hooks/use-tambo-current-message.d.ts.map +1 -0
  210. package/esm/{hooks/use-current-message.js → v1/hooks/use-tambo-current-message.js} +13 -8
  211. package/esm/v1/hooks/use-tambo-current-message.js.map +1 -0
  212. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts +5 -5
  213. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
  214. package/esm/v1/hooks/use-tambo-v1-auth-state.js +8 -8
  215. package/esm/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
  216. package/esm/v1/hooks/use-tambo-v1-auth-state.test.js +14 -14
  217. package/esm/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -1
  218. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts +7 -6
  219. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  220. package/esm/v1/hooks/use-tambo-v1-component-state.js +50 -24
  221. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  222. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +62 -37
  223. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  224. package/esm/v1/hooks/use-tambo-v1-messages.d.ts +9 -9
  225. package/esm/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -1
  226. package/esm/v1/hooks/use-tambo-v1-messages.js +3 -3
  227. package/esm/v1/hooks/use-tambo-v1-messages.js.map +1 -1
  228. package/esm/v1/hooks/use-tambo-v1-messages.test.js +9 -9
  229. package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  230. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +2 -2
  231. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  232. package/esm/v1/hooks/use-tambo-v1-send-message.js +12 -14
  233. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  234. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +54 -54
  235. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  236. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts +5 -5
  237. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
  238. package/esm/v1/hooks/use-tambo-v1-stream-status.js +12 -14
  239. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  240. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +21 -21
  241. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  242. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +7 -7
  243. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  244. package/esm/v1/hooks/use-tambo-v1-suggestions.js +11 -11
  245. package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  246. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +48 -48
  247. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  248. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +3 -3
  249. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -1
  250. package/esm/v1/hooks/use-tambo-v1-thread-input.js +3 -3
  251. package/esm/v1/hooks/use-tambo-v1-thread-input.js.map +1 -1
  252. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +32 -32
  253. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  254. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +4 -4
  255. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  256. package/esm/v1/hooks/use-tambo-v1-thread-list.js +6 -6
  257. package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  258. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +15 -19
  259. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  260. package/esm/v1/hooks/use-tambo-v1-thread.d.ts +3 -3
  261. package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  262. package/esm/v1/hooks/use-tambo-v1-thread.js +4 -4
  263. package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  264. package/esm/v1/hooks/use-tambo-v1-thread.test.js +6 -6
  265. package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  266. package/esm/v1/hooks/use-tambo-v1.d.ts +7 -7
  267. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  268. package/esm/v1/hooks/use-tambo-v1.js +11 -8
  269. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  270. package/esm/v1/hooks/use-tambo-v1.test.js +56 -47
  271. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  272. package/esm/v1/index.d.ts +31 -27
  273. package/esm/v1/index.d.ts.map +1 -1
  274. package/esm/v1/index.js +38 -33
  275. package/esm/v1/index.js.map +1 -1
  276. package/esm/v1/providers/tambo-v1-provider.d.ts +20 -20
  277. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  278. package/esm/v1/providers/tambo-v1-provider.js +32 -32
  279. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  280. package/esm/v1/providers/tambo-v1-provider.test.js +23 -23
  281. package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
  282. package/esm/v1/providers/tambo-v1-stream-context.d.ts +15 -15
  283. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  284. package/esm/v1/providers/tambo-v1-stream-context.js +17 -17
  285. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  286. package/esm/v1/providers/tambo-v1-stream-context.test.js +8 -8
  287. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  288. package/esm/v1/providers/tambo-v1-stub-provider.d.ts +9 -9
  289. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  290. package/esm/v1/providers/tambo-v1-stub-provider.js +9 -9
  291. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  292. package/esm/v1/providers/tambo-v1-stub-provider.test.js +28 -28
  293. package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  294. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +9 -9
  295. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  296. package/esm/v1/providers/tambo-v1-thread-input-provider.js +15 -15
  297. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  298. package/esm/v1/types/auth.d.ts +2 -2
  299. package/esm/v1/types/auth.d.ts.map +1 -1
  300. package/esm/v1/types/auth.js.map +1 -1
  301. package/esm/v1/types/component.d.ts +3 -3
  302. package/esm/v1/types/component.d.ts.map +1 -1
  303. package/esm/v1/types/component.js +2 -2
  304. package/esm/v1/types/component.js.map +1 -1
  305. package/esm/v1/types/event.d.ts +1 -1
  306. package/esm/v1/types/event.js +1 -1
  307. package/esm/v1/types/event.js.map +1 -1
  308. package/esm/v1/types/message.d.ts +17 -22
  309. package/esm/v1/types/message.d.ts.map +1 -1
  310. package/esm/v1/types/message.js +1 -1
  311. package/esm/v1/types/message.js.map +1 -1
  312. package/esm/v1/types/thread.d.ts +8 -6
  313. package/esm/v1/types/thread.d.ts.map +1 -1
  314. package/esm/v1/types/thread.js +1 -1
  315. package/esm/v1/types/thread.js.map +1 -1
  316. package/esm/v1/types/tool-choice.d.ts +1 -1
  317. package/esm/v1/types/tool-choice.js.map +1 -1
  318. package/esm/v1/utils/component-renderer.d.ts +11 -5
  319. package/esm/v1/utils/component-renderer.d.ts.map +1 -1
  320. package/esm/v1/utils/component-renderer.js +13 -5
  321. package/esm/v1/utils/component-renderer.js.map +1 -1
  322. package/esm/v1/utils/component-renderer.test.js +8 -8
  323. package/esm/v1/utils/component-renderer.test.js.map +1 -1
  324. package/esm/v1/utils/event-accumulator.d.ts +8 -8
  325. package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
  326. package/esm/v1/utils/event-accumulator.js +24 -13
  327. package/esm/v1/utils/event-accumulator.js.map +1 -1
  328. package/esm/v1/utils/event-accumulator.test.js +43 -8
  329. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  330. package/esm/v1/utils/registry-conversion.d.ts +18 -18
  331. package/esm/v1/utils/registry-conversion.js +23 -23
  332. package/esm/v1/utils/registry-conversion.js.map +1 -1
  333. package/esm/v1/utils/stream-handler.d.ts +1 -1
  334. package/esm/v1/utils/stream-handler.js +1 -1
  335. package/esm/v1/utils/stream-handler.js.map +1 -1
  336. package/esm/v1/utils/thread-utils.d.ts +2 -2
  337. package/esm/v1/utils/thread-utils.d.ts.map +1 -1
  338. package/esm/v1/utils/thread-utils.js.map +1 -1
  339. package/esm/v1/utils/tool-call-tracker.d.ts +1 -1
  340. package/esm/v1/utils/tool-call-tracker.js +1 -1
  341. package/esm/v1/utils/tool-call-tracker.js.map +1 -1
  342. package/esm/v1/utils/tool-executor.d.ts +1 -1
  343. package/esm/v1/utils/tool-executor.js +2 -2
  344. package/esm/v1/utils/tool-executor.js.map +1 -1
  345. package/package.json +3 -8
  346. package/dist/hooks/index.d.ts +0 -9
  347. package/dist/hooks/index.d.ts.map +0 -1
  348. package/dist/hooks/index.js +0 -34
  349. package/dist/hooks/index.js.map +0 -1
  350. package/dist/hooks/use-component-state.d.ts +0 -30
  351. package/dist/hooks/use-component-state.d.ts.map +0 -1
  352. package/dist/hooks/use-component-state.js +0 -139
  353. package/dist/hooks/use-component-state.js.map +0 -1
  354. package/dist/hooks/use-component-state.test.d.ts +0 -2
  355. package/dist/hooks/use-component-state.test.d.ts.map +0 -1
  356. package/dist/hooks/use-component-state.test.js +0 -406
  357. package/dist/hooks/use-component-state.test.js.map +0 -1
  358. package/dist/hooks/use-current-message.d.ts.map +0 -1
  359. package/dist/hooks/use-current-message.js.map +0 -1
  360. package/dist/hooks/use-current-message.test.d.ts +0 -2
  361. package/dist/hooks/use-current-message.test.d.ts.map +0 -1
  362. package/dist/hooks/use-current-message.test.js +0 -269
  363. package/dist/hooks/use-current-message.test.js.map +0 -1
  364. package/dist/hooks/use-streaming-props.d.ts +0 -11
  365. package/dist/hooks/use-streaming-props.d.ts.map +0 -1
  366. package/dist/hooks/use-streaming-props.js +0 -37
  367. package/dist/hooks/use-streaming-props.js.map +0 -1
  368. package/dist/hooks/use-suggestions.d.ts +0 -46
  369. package/dist/hooks/use-suggestions.d.ts.map +0 -1
  370. package/dist/hooks/use-suggestions.js +0 -118
  371. package/dist/hooks/use-suggestions.js.map +0 -1
  372. package/dist/hooks/use-suggestions.test.d.ts +0 -2
  373. package/dist/hooks/use-suggestions.test.d.ts.map +0 -1
  374. package/dist/hooks/use-suggestions.test.js +0 -247
  375. package/dist/hooks/use-suggestions.test.js.map +0 -1
  376. package/dist/hooks/use-tambo-stream-status.d.ts +0 -90
  377. package/dist/hooks/use-tambo-stream-status.d.ts.map +0 -1
  378. package/dist/hooks/use-tambo-stream-status.js +0 -213
  379. package/dist/hooks/use-tambo-stream-status.js.map +0 -1
  380. package/dist/hooks/use-tambo-stream-status.test.d.ts +0 -2
  381. package/dist/hooks/use-tambo-stream-status.test.d.ts.map +0 -1
  382. package/dist/hooks/use-tambo-stream-status.test.js +0 -378
  383. package/dist/hooks/use-tambo-stream-status.test.js.map +0 -1
  384. package/dist/hooks/use-tambo-threads.d.ts +0 -158
  385. package/dist/hooks/use-tambo-threads.d.ts.map +0 -1
  386. package/dist/hooks/use-tambo-threads.js +0 -45
  387. package/dist/hooks/use-tambo-threads.js.map +0 -1
  388. package/dist/hooks/use-tambo-threads.test.d.ts +0 -2
  389. package/dist/hooks/use-tambo-threads.test.d.ts.map +0 -1
  390. package/dist/hooks/use-tambo-threads.test.js +0 -214
  391. package/dist/hooks/use-tambo-threads.test.js.map +0 -1
  392. package/dist/model/generate-component-response.d.ts +0 -37
  393. package/dist/model/generate-component-response.d.ts.map +0 -1
  394. package/dist/model/generate-component-response.js +0 -29
  395. package/dist/model/generate-component-response.js.map +0 -1
  396. package/dist/model/tambo-thread.d.ts +0 -15
  397. package/dist/model/tambo-thread.d.ts.map +0 -1
  398. package/dist/model/tambo-thread.js +0 -3
  399. package/dist/model/tambo-thread.js.map +0 -1
  400. package/dist/providers/__tests__/thread-input-resource-resolution.test.d.ts +0 -2
  401. package/dist/providers/__tests__/thread-input-resource-resolution.test.d.ts.map +0 -1
  402. package/dist/providers/__tests__/thread-input-resource-resolution.test.js +0 -592
  403. package/dist/providers/__tests__/thread-input-resource-resolution.test.js.map +0 -1
  404. package/dist/providers/index.d.ts +0 -13
  405. package/dist/providers/index.d.ts.map +0 -1
  406. package/dist/providers/index.js +0 -41
  407. package/dist/providers/index.js.map +0 -1
  408. package/dist/providers/tambo-component-provider.d.ts +0 -23
  409. package/dist/providers/tambo-component-provider.d.ts.map +0 -1
  410. package/dist/providers/tambo-component-provider.js +0 -88
  411. package/dist/providers/tambo-component-provider.js.map +0 -1
  412. package/dist/providers/tambo-prop-stream-provider/index.d.ts +0 -19
  413. package/dist/providers/tambo-prop-stream-provider/index.d.ts.map +0 -1
  414. package/dist/providers/tambo-prop-stream-provider/index.js +0 -43
  415. package/dist/providers/tambo-prop-stream-provider/index.js.map +0 -1
  416. package/dist/providers/tambo-prop-stream-provider/pending.d.ts +0 -12
  417. package/dist/providers/tambo-prop-stream-provider/pending.d.ts.map +0 -1
  418. package/dist/providers/tambo-prop-stream-provider/pending.js +0 -31
  419. package/dist/providers/tambo-prop-stream-provider/pending.js.map +0 -1
  420. package/dist/providers/tambo-prop-stream-provider/provider.d.ts +0 -17
  421. package/dist/providers/tambo-prop-stream-provider/provider.d.ts.map +0 -1
  422. package/dist/providers/tambo-prop-stream-provider/provider.js +0 -107
  423. package/dist/providers/tambo-prop-stream-provider/provider.js.map +0 -1
  424. package/dist/providers/tambo-prop-stream-provider/streaming.d.ts +0 -12
  425. package/dist/providers/tambo-prop-stream-provider/streaming.d.ts.map +0 -1
  426. package/dist/providers/tambo-prop-stream-provider/streaming.js +0 -28
  427. package/dist/providers/tambo-prop-stream-provider/streaming.js.map +0 -1
  428. package/dist/providers/tambo-prop-stream-provider/success.d.ts +0 -12
  429. package/dist/providers/tambo-prop-stream-provider/success.d.ts.map +0 -1
  430. package/dist/providers/tambo-prop-stream-provider/success.js +0 -28
  431. package/dist/providers/tambo-prop-stream-provider/success.js.map +0 -1
  432. package/dist/providers/tambo-prop-stream-provider/types.d.ts +0 -25
  433. package/dist/providers/tambo-prop-stream-provider/types.d.ts.map +0 -1
  434. package/dist/providers/tambo-prop-stream-provider/types.js +0 -6
  435. package/dist/providers/tambo-prop-stream-provider/types.js.map +0 -1
  436. package/dist/providers/tambo-prop-stream-provider.test.d.ts +0 -2
  437. package/dist/providers/tambo-prop-stream-provider.test.d.ts.map +0 -1
  438. package/dist/providers/tambo-prop-stream-provider.test.js +0 -275
  439. package/dist/providers/tambo-prop-stream-provider.test.js.map +0 -1
  440. package/dist/providers/tambo-provider.d.ts +0 -53
  441. package/dist/providers/tambo-provider.d.ts.map +0 -1
  442. package/dist/providers/tambo-provider.js +0 -133
  443. package/dist/providers/tambo-provider.js.map +0 -1
  444. package/dist/providers/tambo-stubs.d.ts +0 -89
  445. package/dist/providers/tambo-stubs.d.ts.map +0 -1
  446. package/dist/providers/tambo-stubs.js +0 -279
  447. package/dist/providers/tambo-stubs.js.map +0 -1
  448. package/dist/providers/tambo-stubs.test.d.ts +0 -2
  449. package/dist/providers/tambo-stubs.test.d.ts.map +0 -1
  450. package/dist/providers/tambo-stubs.test.js +0 -97
  451. package/dist/providers/tambo-stubs.test.js.map +0 -1
  452. package/dist/providers/tambo-thread-input-provider.d.ts +0 -65
  453. package/dist/providers/tambo-thread-input-provider.d.ts.map +0 -1
  454. package/dist/providers/tambo-thread-input-provider.js +0 -179
  455. package/dist/providers/tambo-thread-input-provider.js.map +0 -1
  456. package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts +0 -2
  457. package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  458. package/dist/providers/tambo-thread-provider-initial-messages.test.js +0 -278
  459. package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +0 -1
  460. package/dist/providers/tambo-thread-provider.d.ts +0 -126
  461. package/dist/providers/tambo-thread-provider.d.ts.map +0 -1
  462. package/dist/providers/tambo-thread-provider.js +0 -931
  463. package/dist/providers/tambo-thread-provider.js.map +0 -1
  464. package/dist/providers/tambo-thread-provider.test.d.ts +0 -2
  465. package/dist/providers/tambo-thread-provider.test.d.ts.map +0 -1
  466. package/dist/providers/tambo-thread-provider.test.js +0 -1591
  467. package/dist/providers/tambo-thread-provider.test.js.map +0 -1
  468. package/dist/util/generate-component.d.ts +0 -12
  469. package/dist/util/generate-component.d.ts.map +0 -1
  470. package/dist/util/generate-component.js +0 -58
  471. package/dist/util/generate-component.js.map +0 -1
  472. package/dist/util/generate-component.test.d.ts +0 -2
  473. package/dist/util/generate-component.test.d.ts.map +0 -1
  474. package/dist/util/generate-component.test.js +0 -340
  475. package/dist/util/generate-component.test.js.map +0 -1
  476. package/esm/hooks/index.d.ts +0 -9
  477. package/esm/hooks/index.d.ts.map +0 -1
  478. package/esm/hooks/index.js +0 -10
  479. package/esm/hooks/index.js.map +0 -1
  480. package/esm/hooks/use-component-state.d.ts +0 -30
  481. package/esm/hooks/use-component-state.d.ts.map +0 -1
  482. package/esm/hooks/use-component-state.js +0 -136
  483. package/esm/hooks/use-component-state.js.map +0 -1
  484. package/esm/hooks/use-component-state.test.d.ts +0 -2
  485. package/esm/hooks/use-component-state.test.d.ts.map +0 -1
  486. package/esm/hooks/use-component-state.test.js +0 -401
  487. package/esm/hooks/use-component-state.test.js.map +0 -1
  488. package/esm/hooks/use-current-message.d.ts.map +0 -1
  489. package/esm/hooks/use-current-message.js.map +0 -1
  490. package/esm/hooks/use-current-message.test.d.ts +0 -2
  491. package/esm/hooks/use-current-message.test.d.ts.map +0 -1
  492. package/esm/hooks/use-current-message.test.js +0 -264
  493. package/esm/hooks/use-current-message.test.js.map +0 -1
  494. package/esm/hooks/use-streaming-props.d.ts +0 -11
  495. package/esm/hooks/use-streaming-props.d.ts.map +0 -1
  496. package/esm/hooks/use-streaming-props.js +0 -34
  497. package/esm/hooks/use-streaming-props.js.map +0 -1
  498. package/esm/hooks/use-suggestions.d.ts +0 -46
  499. package/esm/hooks/use-suggestions.d.ts.map +0 -1
  500. package/esm/hooks/use-suggestions.js +0 -115
  501. package/esm/hooks/use-suggestions.js.map +0 -1
  502. package/esm/hooks/use-suggestions.test.d.ts +0 -2
  503. package/esm/hooks/use-suggestions.test.d.ts.map +0 -1
  504. package/esm/hooks/use-suggestions.test.js +0 -245
  505. package/esm/hooks/use-suggestions.test.js.map +0 -1
  506. package/esm/hooks/use-tambo-stream-status.d.ts +0 -90
  507. package/esm/hooks/use-tambo-stream-status.d.ts.map +0 -1
  508. package/esm/hooks/use-tambo-stream-status.js +0 -210
  509. package/esm/hooks/use-tambo-stream-status.js.map +0 -1
  510. package/esm/hooks/use-tambo-stream-status.test.d.ts +0 -2
  511. package/esm/hooks/use-tambo-stream-status.test.d.ts.map +0 -1
  512. package/esm/hooks/use-tambo-stream-status.test.js +0 -376
  513. package/esm/hooks/use-tambo-stream-status.test.js.map +0 -1
  514. package/esm/hooks/use-tambo-threads.d.ts +0 -158
  515. package/esm/hooks/use-tambo-threads.d.ts.map +0 -1
  516. package/esm/hooks/use-tambo-threads.js +0 -42
  517. package/esm/hooks/use-tambo-threads.js.map +0 -1
  518. package/esm/hooks/use-tambo-threads.test.d.ts +0 -2
  519. package/esm/hooks/use-tambo-threads.test.d.ts.map +0 -1
  520. package/esm/hooks/use-tambo-threads.test.js +0 -212
  521. package/esm/hooks/use-tambo-threads.test.js.map +0 -1
  522. package/esm/model/generate-component-response.d.ts +0 -37
  523. package/esm/model/generate-component-response.d.ts.map +0 -1
  524. package/esm/model/generate-component-response.js +0 -25
  525. package/esm/model/generate-component-response.js.map +0 -1
  526. package/esm/model/tambo-thread.d.ts +0 -15
  527. package/esm/model/tambo-thread.d.ts.map +0 -1
  528. package/esm/model/tambo-thread.js +0 -2
  529. package/esm/model/tambo-thread.js.map +0 -1
  530. package/esm/providers/__tests__/thread-input-resource-resolution.test.d.ts +0 -2
  531. package/esm/providers/__tests__/thread-input-resource-resolution.test.d.ts.map +0 -1
  532. package/esm/providers/__tests__/thread-input-resource-resolution.test.js +0 -587
  533. package/esm/providers/__tests__/thread-input-resource-resolution.test.js.map +0 -1
  534. package/esm/providers/index.d.ts +0 -13
  535. package/esm/providers/index.d.ts.map +0 -1
  536. package/esm/providers/index.js +0 -11
  537. package/esm/providers/index.js.map +0 -1
  538. package/esm/providers/tambo-component-provider.d.ts +0 -23
  539. package/esm/providers/tambo-component-provider.d.ts.map +0 -1
  540. package/esm/providers/tambo-component-provider.js +0 -50
  541. package/esm/providers/tambo-component-provider.js.map +0 -1
  542. package/esm/providers/tambo-prop-stream-provider/index.d.ts +0 -19
  543. package/esm/providers/tambo-prop-stream-provider/index.d.ts.map +0 -1
  544. package/esm/providers/tambo-prop-stream-provider/index.js +0 -22
  545. package/esm/providers/tambo-prop-stream-provider/index.js.map +0 -1
  546. package/esm/providers/tambo-prop-stream-provider/pending.d.ts +0 -12
  547. package/esm/providers/tambo-prop-stream-provider/pending.d.ts.map +0 -1
  548. package/esm/providers/tambo-prop-stream-provider/pending.js +0 -24
  549. package/esm/providers/tambo-prop-stream-provider/pending.js.map +0 -1
  550. package/esm/providers/tambo-prop-stream-provider/provider.d.ts +0 -17
  551. package/esm/providers/tambo-prop-stream-provider/provider.d.ts.map +0 -1
  552. package/esm/providers/tambo-prop-stream-provider/provider.js +0 -70
  553. package/esm/providers/tambo-prop-stream-provider/provider.js.map +0 -1
  554. package/esm/providers/tambo-prop-stream-provider/streaming.d.ts +0 -12
  555. package/esm/providers/tambo-prop-stream-provider/streaming.d.ts.map +0 -1
  556. package/esm/providers/tambo-prop-stream-provider/streaming.js +0 -21
  557. package/esm/providers/tambo-prop-stream-provider/streaming.js.map +0 -1
  558. package/esm/providers/tambo-prop-stream-provider/success.d.ts +0 -12
  559. package/esm/providers/tambo-prop-stream-provider/success.d.ts.map +0 -1
  560. package/esm/providers/tambo-prop-stream-provider/success.js +0 -21
  561. package/esm/providers/tambo-prop-stream-provider/success.js.map +0 -1
  562. package/esm/providers/tambo-prop-stream-provider/types.d.ts +0 -25
  563. package/esm/providers/tambo-prop-stream-provider/types.d.ts.map +0 -1
  564. package/esm/providers/tambo-prop-stream-provider/types.js +0 -3
  565. package/esm/providers/tambo-prop-stream-provider/types.js.map +0 -1
  566. package/esm/providers/tambo-prop-stream-provider.test.d.ts +0 -2
  567. package/esm/providers/tambo-prop-stream-provider.test.d.ts.map +0 -1
  568. package/esm/providers/tambo-prop-stream-provider.test.js +0 -270
  569. package/esm/providers/tambo-prop-stream-provider.test.js.map +0 -1
  570. package/esm/providers/tambo-provider.d.ts +0 -53
  571. package/esm/providers/tambo-provider.d.ts.map +0 -1
  572. package/esm/providers/tambo-provider.js +0 -94
  573. package/esm/providers/tambo-provider.js.map +0 -1
  574. package/esm/providers/tambo-stubs.d.ts +0 -89
  575. package/esm/providers/tambo-stubs.d.ts.map +0 -1
  576. package/esm/providers/tambo-stubs.js +0 -242
  577. package/esm/providers/tambo-stubs.js.map +0 -1
  578. package/esm/providers/tambo-stubs.test.d.ts +0 -2
  579. package/esm/providers/tambo-stubs.test.d.ts.map +0 -1
  580. package/esm/providers/tambo-stubs.test.js +0 -62
  581. package/esm/providers/tambo-stubs.test.js.map +0 -1
  582. package/esm/providers/tambo-thread-input-provider.d.ts +0 -65
  583. package/esm/providers/tambo-thread-input-provider.d.ts.map +0 -1
  584. package/esm/providers/tambo-thread-input-provider.js +0 -141
  585. package/esm/providers/tambo-thread-input-provider.js.map +0 -1
  586. package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts +0 -2
  587. package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  588. package/esm/providers/tambo-thread-provider-initial-messages.test.js +0 -273
  589. package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +0 -1
  590. package/esm/providers/tambo-thread-provider.d.ts +0 -126
  591. package/esm/providers/tambo-thread-provider.d.ts.map +0 -1
  592. package/esm/providers/tambo-thread-provider.js +0 -891
  593. package/esm/providers/tambo-thread-provider.js.map +0 -1
  594. package/esm/providers/tambo-thread-provider.test.d.ts +0 -2
  595. package/esm/providers/tambo-thread-provider.test.d.ts.map +0 -1
  596. package/esm/providers/tambo-thread-provider.test.js +0 -1553
  597. package/esm/providers/tambo-thread-provider.test.js.map +0 -1
  598. package/esm/util/generate-component.d.ts +0 -12
  599. package/esm/util/generate-component.d.ts.map +0 -1
  600. package/esm/util/generate-component.js +0 -52
  601. package/esm/util/generate-component.js.map +0 -1
  602. package/esm/util/generate-component.test.d.ts +0 -2
  603. package/esm/util/generate-component.test.d.ts.map +0 -1
  604. package/esm/util/generate-component.test.js +0 -302
  605. package/esm/util/generate-component.test.js.map +0 -1
@@ -2,7 +2,7 @@ import { EventType } from "@ag-ui/core";
2
2
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
3
  import { renderHook, act } from "@testing-library/react";
4
4
  import React from "react";
5
- import { TamboV1StreamProvider, useStreamState, useStreamDispatch, useThreadManagement, } from "./tambo-v1-stream-context.js";
5
+ import { TamboStreamProvider, useStreamState, useStreamDispatch, useThreadManagement, } from "./tambo-v1-stream-context.js";
6
6
  // Mock useTamboClient and useTamboQueryClient to avoid TamboClientProvider dependency
7
7
  jest.mock("../../providers/tambo-client-provider", () => ({
8
8
  useTamboClient: jest.fn(() => ({
@@ -15,17 +15,17 @@ jest.mock("../../providers/tambo-client-provider", () => ({
15
15
  })),
16
16
  useTamboQueryClient: jest.fn(),
17
17
  }));
18
- // Mock useTamboV1Config to avoid TamboV1Provider dependency
18
+ // Mock useTamboConfig to avoid TamboProvider dependency
19
19
  jest.mock("./tambo-v1-provider", () => {
20
20
  const actual = jest.requireActual("./tambo-v1-provider");
21
21
  return {
22
22
  ...actual,
23
- useTamboV1Config: () => ({ userKey: undefined }),
23
+ useTamboConfig: () => ({ userKey: undefined }),
24
24
  };
25
25
  });
26
26
  // Import for mocking
27
27
  import { useTamboQueryClient } from "../../providers/tambo-client-provider.js";
28
- describe("TamboV1StreamProvider", () => {
28
+ describe("TamboStreamProvider", () => {
29
29
  let queryClient;
30
30
  beforeEach(() => {
31
31
  queryClient = new QueryClient({
@@ -39,7 +39,7 @@ describe("TamboV1StreamProvider", () => {
39
39
  const createWrapper = () => {
40
40
  return function Wrapper({ children }) {
41
41
  return (React.createElement(QueryClientProvider, { client: queryClient },
42
- React.createElement(TamboV1StreamProvider, null, children)));
42
+ React.createElement(TamboStreamProvider, null, children)));
43
43
  };
44
44
  };
45
45
  describe("useStreamState", () => {
@@ -50,7 +50,7 @@ describe("TamboV1StreamProvider", () => {
50
50
  .mockImplementation(() => { });
51
51
  expect(() => {
52
52
  renderHook(() => useStreamState());
53
- }).toThrow("useStreamState must be used within TamboV1StreamProvider");
53
+ }).toThrow("useStreamState must be used within TamboStreamProvider");
54
54
  consoleSpy.mockRestore();
55
55
  });
56
56
  it("returns initial state with placeholder thread ready for new messages", () => {
@@ -110,7 +110,7 @@ describe("TamboV1StreamProvider", () => {
110
110
  .mockImplementation(() => { });
111
111
  expect(() => {
112
112
  renderHook(() => useStreamDispatch());
113
- }).toThrow("useStreamDispatch must be used within TamboV1StreamProvider");
113
+ }).toThrow("useStreamDispatch must be used within TamboStreamProvider");
114
114
  consoleSpy.mockRestore();
115
115
  });
116
116
  it("dispatches events to update state", () => {
@@ -149,7 +149,7 @@ describe("TamboV1StreamProvider", () => {
149
149
  .mockImplementation(() => { });
150
150
  expect(() => {
151
151
  renderHook(() => useThreadManagement());
152
- }).toThrow("useThreadManagement must be used within TamboV1StreamProvider");
152
+ }).toThrow("useThreadManagement must be used within TamboStreamProvider");
153
153
  consoleSpy.mockRestore();
154
154
  });
155
155
  it("initThread creates a new thread", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"tambo-v1-stream-context.test.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stream-context.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { EventType, type RunStartedEvent } from \"@ag-ui/core\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React from \"react\";\nimport {\n TamboV1StreamProvider,\n useStreamState,\n useStreamDispatch,\n useThreadManagement,\n} from \"./tambo-v1-stream-context\";\n\n// Mock useTamboClient and useTamboQueryClient to avoid TamboClientProvider dependency\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(() => ({\n threads: {\n messages: {\n list: jest.fn().mockResolvedValue({ messages: [], hasMore: false }),\n },\n retrieve: jest.fn().mockResolvedValue({}),\n },\n })),\n useTamboQueryClient: jest.fn(),\n}));\n\n// Mock useTamboV1Config to avoid TamboV1Provider dependency\njest.mock(\"./tambo-v1-provider\", () => {\n const actual = jest.requireActual(\"./tambo-v1-provider\");\n return {\n ...actual,\n useTamboV1Config: () => ({ userKey: undefined }),\n };\n});\n\n// Import for mocking\nimport { useTamboQueryClient } from \"../../providers/tambo-client-provider\";\n\ndescribe(\"TamboV1StreamProvider\", () => {\n let queryClient: QueryClient;\n\n beforeEach(() => {\n queryClient = new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n },\n });\n // Configure mock to return the test's queryClient\n jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);\n });\n\n const createWrapper = () => {\n return function Wrapper({ children }: { children: React.ReactNode }) {\n return (\n <QueryClientProvider client={queryClient}>\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </QueryClientProvider>\n );\n };\n };\n describe(\"useStreamState\", () => {\n it(\"throws when used outside provider\", () => {\n // Suppress console.error for expected error\n const consoleSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useStreamState());\n }).toThrow(\"useStreamState must be used within TamboV1StreamProvider\");\n\n consoleSpy.mockRestore();\n });\n\n it(\"returns initial state with placeholder thread ready for new messages\", () => {\n const { result } = renderHook(() => useStreamState(), {\n wrapper: createWrapper(),\n });\n\n // Initial state should have placeholder thread ready for optimistic UI\n expect(result.current.currentThreadId).toBe(\"placeholder\");\n expect(result.current.threadMap.placeholder).toBeDefined();\n expect(result.current.threadMap.placeholder.thread.id).toBe(\n \"placeholder\",\n );\n expect(result.current.threadMap.placeholder.thread.messages).toEqual([]);\n expect(result.current.threadMap.placeholder.streaming.status).toBe(\n \"idle\",\n );\n });\n\n it(\"initializes thread via dispatch\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n dispatch: useStreamDispatch(),\n }),\n { wrapper: createWrapper() },\n );\n\n act(() => {\n result.current.dispatch({\n type: \"INIT_THREAD\",\n threadId: \"thread_123\",\n });\n });\n\n expect(result.current.state.threadMap.thread_123).toBeDefined();\n expect(result.current.state.threadMap.thread_123.thread.id).toBe(\n \"thread_123\",\n );\n expect(result.current.state.threadMap.thread_123.thread.status).toBe(\n \"idle\",\n );\n expect(result.current.state.threadMap.thread_123.thread.messages).toEqual(\n [],\n );\n });\n\n it(\"initializes thread with initial data via dispatch\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n dispatch: useStreamDispatch(),\n }),\n { wrapper: createWrapper() },\n );\n\n act(() => {\n result.current.dispatch({\n type: \"INIT_THREAD\",\n threadId: \"thread_123\",\n initialThread: {\n title: \"Test Thread\",\n metadata: { key: \"value\" },\n },\n });\n });\n\n expect(result.current.state.threadMap.thread_123.thread.title).toBe(\n \"Test Thread\",\n );\n expect(result.current.state.threadMap.thread_123.thread.metadata).toEqual(\n {\n key: \"value\",\n },\n );\n // Default values should still be set\n expect(result.current.state.threadMap.thread_123.thread.status).toBe(\n \"idle\",\n );\n });\n });\n\n describe(\"useStreamDispatch\", () => {\n it(\"throws when used outside provider\", () => {\n const consoleSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useStreamDispatch());\n }).toThrow(\"useStreamDispatch must be used within TamboV1StreamProvider\");\n\n consoleSpy.mockRestore();\n });\n\n it(\"dispatches events to update state\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n dispatch: useStreamDispatch(),\n }),\n { wrapper: createWrapper() },\n );\n\n // Initialize the thread first\n act(() => {\n result.current.dispatch({\n type: \"INIT_THREAD\",\n threadId: \"thread_123\",\n });\n });\n\n const runStartedEvent: RunStartedEvent = {\n type: EventType.RUN_STARTED,\n runId: \"run_1\",\n threadId: \"thread_123\",\n };\n\n act(() => {\n result.current.dispatch({\n type: \"EVENT\",\n event: runStartedEvent,\n threadId: \"thread_123\",\n });\n });\n\n expect(result.current.state.threadMap.thread_123.thread.status).toBe(\n \"streaming\",\n );\n expect(result.current.state.threadMap.thread_123.streaming.status).toBe(\n \"streaming\",\n );\n expect(result.current.state.threadMap.thread_123.streaming.runId).toBe(\n \"run_1\",\n );\n });\n });\n\n describe(\"useThreadManagement\", () => {\n it(\"throws when used outside provider\", () => {\n const consoleSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useThreadManagement());\n }).toThrow(\n \"useThreadManagement must be used within TamboV1StreamProvider\",\n );\n\n consoleSpy.mockRestore();\n });\n\n it(\"initThread creates a new thread\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n management: useThreadManagement(),\n }),\n { wrapper: createWrapper() },\n );\n\n act(() => {\n result.current.management.initThread(\"thread_456\");\n });\n\n expect(result.current.state.threadMap.thread_456).toBeDefined();\n expect(result.current.state.threadMap.thread_456.thread.id).toBe(\n \"thread_456\",\n );\n });\n\n it(\"switchThread changes currentThreadId\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n management: useThreadManagement(),\n }),\n { wrapper: createWrapper() },\n );\n\n // Initialize and switch to a thread\n act(() => {\n result.current.management.initThread(\"thread_789\");\n result.current.management.switchThread(\"thread_789\");\n });\n\n expect(result.current.state.currentThreadId).toBe(\"thread_789\");\n });\n\n it(\"startNewThread creates temp thread and switches to it\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n management: useThreadManagement(),\n }),\n { wrapper: createWrapper() },\n );\n\n let tempId: string;\n act(() => {\n tempId = result.current.management.startNewThread();\n });\n\n expect(tempId!).toBe(\"placeholder\");\n expect(result.current.state.currentThreadId).toBe(\"placeholder\");\n expect(result.current.state.threadMap.placeholder).toBeDefined();\n });\n });\n});\n"]}
1
+ {"version":3,"file":"tambo-v1-stream-context.test.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stream-context.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { EventType, type RunStartedEvent } from \"@ag-ui/core\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React from \"react\";\nimport {\n TamboStreamProvider,\n useStreamState,\n useStreamDispatch,\n useThreadManagement,\n} from \"./tambo-v1-stream-context\";\n\n// Mock useTamboClient and useTamboQueryClient to avoid TamboClientProvider dependency\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(() => ({\n threads: {\n messages: {\n list: jest.fn().mockResolvedValue({ messages: [], hasMore: false }),\n },\n retrieve: jest.fn().mockResolvedValue({}),\n },\n })),\n useTamboQueryClient: jest.fn(),\n}));\n\n// Mock useTamboConfig to avoid TamboProvider dependency\njest.mock(\"./tambo-v1-provider\", () => {\n const actual = jest.requireActual(\"./tambo-v1-provider\");\n return {\n ...actual,\n useTamboConfig: () => ({ userKey: undefined }),\n };\n});\n\n// Import for mocking\nimport { useTamboQueryClient } from \"../../providers/tambo-client-provider\";\n\ndescribe(\"TamboStreamProvider\", () => {\n let queryClient: QueryClient;\n\n beforeEach(() => {\n queryClient = new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n },\n });\n // Configure mock to return the test's queryClient\n jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);\n });\n\n const createWrapper = () => {\n return function Wrapper({ children }: { children: React.ReactNode }) {\n return (\n <QueryClientProvider client={queryClient}>\n <TamboStreamProvider>{children}</TamboStreamProvider>\n </QueryClientProvider>\n );\n };\n };\n describe(\"useStreamState\", () => {\n it(\"throws when used outside provider\", () => {\n // Suppress console.error for expected error\n const consoleSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useStreamState());\n }).toThrow(\"useStreamState must be used within TamboStreamProvider\");\n\n consoleSpy.mockRestore();\n });\n\n it(\"returns initial state with placeholder thread ready for new messages\", () => {\n const { result } = renderHook(() => useStreamState(), {\n wrapper: createWrapper(),\n });\n\n // Initial state should have placeholder thread ready for optimistic UI\n expect(result.current.currentThreadId).toBe(\"placeholder\");\n expect(result.current.threadMap.placeholder).toBeDefined();\n expect(result.current.threadMap.placeholder.thread.id).toBe(\n \"placeholder\",\n );\n expect(result.current.threadMap.placeholder.thread.messages).toEqual([]);\n expect(result.current.threadMap.placeholder.streaming.status).toBe(\n \"idle\",\n );\n });\n\n it(\"initializes thread via dispatch\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n dispatch: useStreamDispatch(),\n }),\n { wrapper: createWrapper() },\n );\n\n act(() => {\n result.current.dispatch({\n type: \"INIT_THREAD\",\n threadId: \"thread_123\",\n });\n });\n\n expect(result.current.state.threadMap.thread_123).toBeDefined();\n expect(result.current.state.threadMap.thread_123.thread.id).toBe(\n \"thread_123\",\n );\n expect(result.current.state.threadMap.thread_123.thread.status).toBe(\n \"idle\",\n );\n expect(result.current.state.threadMap.thread_123.thread.messages).toEqual(\n [],\n );\n });\n\n it(\"initializes thread with initial data via dispatch\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n dispatch: useStreamDispatch(),\n }),\n { wrapper: createWrapper() },\n );\n\n act(() => {\n result.current.dispatch({\n type: \"INIT_THREAD\",\n threadId: \"thread_123\",\n initialThread: {\n title: \"Test Thread\",\n metadata: { key: \"value\" },\n },\n });\n });\n\n expect(result.current.state.threadMap.thread_123.thread.title).toBe(\n \"Test Thread\",\n );\n expect(result.current.state.threadMap.thread_123.thread.metadata).toEqual(\n {\n key: \"value\",\n },\n );\n // Default values should still be set\n expect(result.current.state.threadMap.thread_123.thread.status).toBe(\n \"idle\",\n );\n });\n });\n\n describe(\"useStreamDispatch\", () => {\n it(\"throws when used outside provider\", () => {\n const consoleSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useStreamDispatch());\n }).toThrow(\"useStreamDispatch must be used within TamboStreamProvider\");\n\n consoleSpy.mockRestore();\n });\n\n it(\"dispatches events to update state\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n dispatch: useStreamDispatch(),\n }),\n { wrapper: createWrapper() },\n );\n\n // Initialize the thread first\n act(() => {\n result.current.dispatch({\n type: \"INIT_THREAD\",\n threadId: \"thread_123\",\n });\n });\n\n const runStartedEvent: RunStartedEvent = {\n type: EventType.RUN_STARTED,\n runId: \"run_1\",\n threadId: \"thread_123\",\n };\n\n act(() => {\n result.current.dispatch({\n type: \"EVENT\",\n event: runStartedEvent,\n threadId: \"thread_123\",\n });\n });\n\n expect(result.current.state.threadMap.thread_123.thread.status).toBe(\n \"streaming\",\n );\n expect(result.current.state.threadMap.thread_123.streaming.status).toBe(\n \"streaming\",\n );\n expect(result.current.state.threadMap.thread_123.streaming.runId).toBe(\n \"run_1\",\n );\n });\n });\n\n describe(\"useThreadManagement\", () => {\n it(\"throws when used outside provider\", () => {\n const consoleSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useThreadManagement());\n }).toThrow(\"useThreadManagement must be used within TamboStreamProvider\");\n\n consoleSpy.mockRestore();\n });\n\n it(\"initThread creates a new thread\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n management: useThreadManagement(),\n }),\n { wrapper: createWrapper() },\n );\n\n act(() => {\n result.current.management.initThread(\"thread_456\");\n });\n\n expect(result.current.state.threadMap.thread_456).toBeDefined();\n expect(result.current.state.threadMap.thread_456.thread.id).toBe(\n \"thread_456\",\n );\n });\n\n it(\"switchThread changes currentThreadId\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n management: useThreadManagement(),\n }),\n { wrapper: createWrapper() },\n );\n\n // Initialize and switch to a thread\n act(() => {\n result.current.management.initThread(\"thread_789\");\n result.current.management.switchThread(\"thread_789\");\n });\n\n expect(result.current.state.currentThreadId).toBe(\"thread_789\");\n });\n\n it(\"startNewThread creates temp thread and switches to it\", () => {\n const { result } = renderHook(\n () => ({\n state: useStreamState(),\n management: useThreadManagement(),\n }),\n { wrapper: createWrapper() },\n );\n\n let tempId: string;\n act(() => {\n tempId = result.current.management.startNewThread();\n });\n\n expect(tempId!).toBe(\"placeholder\");\n expect(result.current.state.currentThreadId).toBe(\"placeholder\");\n expect(result.current.state.threadMap.placeholder).toBeDefined();\n });\n });\n});\n"]}
@@ -1,17 +1,17 @@
1
1
  import React, { type PropsWithChildren } from "react";
2
2
  import type { TamboComponent, TamboTool } from "../../model/component-metadata.js";
3
- import type { TamboV1Message } from "../types/message.js";
4
- import type { TamboV1Thread } from "../types/thread.js";
3
+ import type { TamboThreadMessage } from "../types/message.js";
4
+ import type { TamboThread } from "../types/thread.js";
5
5
  /**
6
- * Props for TamboV1StubProvider
6
+ * Props for TamboStubProvider
7
7
  */
8
- export interface TamboV1StubProviderProps {
8
+ export interface TamboStubProviderProps {
9
9
  /**
10
10
  * Thread data to display.
11
- * Can be a full TamboV1Thread or just an array of messages.
11
+ * Can be a full TamboThread or just an array of messages.
12
12
  */
13
- thread?: TamboV1Thread | {
14
- messages: TamboV1Message[];
13
+ thread?: TamboThread | {
14
+ messages: TamboThreadMessage[];
15
15
  };
16
16
  /**
17
17
  * Optional thread ID. Defaults to "stub_thread" or thread.id if provided.
@@ -62,7 +62,7 @@ export interface TamboV1StubProviderProps {
62
62
  onInitThread?: (threadId: string) => void;
63
63
  }
64
64
  /**
65
- * TamboV1StubProvider provides mock implementations of all v1 contexts
65
+ * TamboStubProvider provides mock implementations of all contexts
66
66
  * for testing components that use Tambo hooks.
67
67
  *
68
68
  * All operations are no-ops by default, returning stub data.
@@ -70,5 +70,5 @@ export interface TamboV1StubProviderProps {
70
70
  * Stream state is derived once from props and is not updated by thread management.
71
71
  * @returns A provider wrapper suitable for tests
72
72
  */
73
- export declare function TamboV1StubProvider({ children, thread: threadData, threadId: providedThreadId, components, tools, userKey, inputValue: initialInputValue, isStreaming, onSubmit, onSetValue, onStartNewThread, onSwitchThread, onInitThread, }: PropsWithChildren<TamboV1StubProviderProps>): React.JSX.Element;
73
+ export declare function TamboStubProvider({ children, thread: threadData, threadId: providedThreadId, components, tools, userKey, inputValue: initialInputValue, isStreaming, onSubmit, onSetValue, onStartNewThread, onSwitchThread, onInitThread, }: PropsWithChildren<TamboStubProviderProps>): React.JSX.Element;
74
74
  //# sourceMappingURL=tambo-v1-stub-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tambo-v1-stub-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stub-provider.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,EAAW,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAEV,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgBrD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAExD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;IAElE;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAmCD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,UAAe,EACf,KAAU,EACV,OAAO,EACP,UAAU,EAAE,iBAAsB,EAClC,WAAmB,EACnB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,qBA4L7C"}
1
+ {"version":3,"file":"tambo-v1-stub-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stub-provider.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,EAAW,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAEV,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAgBnD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;IAElE;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAmCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,UAAe,EACf,KAAU,EACV,OAAO,EACP,UAAU,EAAE,iBAAsB,EAClC,WAAmB,EACnB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,EAAE,iBAAiB,CAAC,sBAAsB,CAAC,qBA4L3C"}
@@ -3,11 +3,11 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
3
  import React, { useMemo } from "react";
4
4
  import { TamboClientContext } from "../../providers/tambo-client-provider.js";
5
5
  import { TamboRegistryContext } from "../../providers/tambo-registry-provider.js";
6
- import { TamboV1ConfigContext } from "./tambo-v1-provider.js";
7
- import { TamboV1StreamProvider, } from "./tambo-v1-stream-context.js";
8
- import { TamboV1ThreadInputContext, } from "./tambo-v1-thread-input-provider.js";
6
+ import { TamboConfigContext } from "./tambo-v1-provider.js";
7
+ import { TamboStreamProvider, } from "./tambo-v1-stream-context.js";
8
+ import { TamboThreadInputContext, } from "./tambo-v1-thread-input-provider.js";
9
9
  /**
10
- * Creates a default TamboV1Thread from messages or returns the full thread.
10
+ * Creates a default TamboThread from messages or returns the full thread.
11
11
  * @returns A normalized thread object
12
12
  */
13
13
  function normalizeThread(threadData, threadId) {
@@ -34,7 +34,7 @@ function normalizeThread(threadData, threadId) {
34
34
  };
35
35
  }
36
36
  /**
37
- * TamboV1StubProvider provides mock implementations of all v1 contexts
37
+ * TamboStubProvider provides mock implementations of all contexts
38
38
  * for testing components that use Tambo hooks.
39
39
  *
40
40
  * All operations are no-ops by default, returning stub data.
@@ -42,7 +42,7 @@ function normalizeThread(threadData, threadId) {
42
42
  * Stream state is derived once from props and is not updated by thread management.
43
43
  * @returns A provider wrapper suitable for tests
44
44
  */
45
- export function TamboV1StubProvider({ children, thread: threadData, threadId: providedThreadId, components = [], tools = [], userKey, inputValue: initialInputValue = "", isStreaming = false, onSubmit, onSetValue, onStartNewThread, onSwitchThread, onInitThread, }) {
45
+ export function TamboStubProvider({ children, thread: threadData, threadId: providedThreadId, components = [], tools = [], userKey, inputValue: initialInputValue = "", isStreaming = false, onSubmit, onSetValue, onStartNewThread, onSwitchThread, onInitThread, }) {
46
46
  // Determine thread ID
47
47
  const threadId = providedThreadId ??
48
48
  (threadData && "id" in threadData ? threadData.id : "stub_thread");
@@ -175,8 +175,8 @@ export function TamboV1StubProvider({ children, thread: threadData, threadId: pr
175
175
  return (React.createElement(QueryClientProvider, { client: queryClient },
176
176
  React.createElement(TamboClientContext.Provider, { value: clientContext },
177
177
  React.createElement(TamboRegistryContext.Provider, { value: registryContext },
178
- React.createElement(TamboV1ConfigContext.Provider, { value: config },
179
- React.createElement(TamboV1StreamProvider, { state: streamState, dispatch: streamDispatch, threadManagement: threadManagement },
180
- React.createElement(TamboV1ThreadInputContext.Provider, { value: threadInputContext }, children)))))));
178
+ React.createElement(TamboConfigContext.Provider, { value: config },
179
+ React.createElement(TamboStreamProvider, { state: streamState, dispatch: streamDispatch, threadManagement: threadManagement },
180
+ React.createElement(TamboThreadInputContext.Provider, { value: threadInputContext }, children)))))));
181
181
  }
182
182
  //# sourceMappingURL=tambo-v1-stub-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tambo-v1-stub-provider.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stub-provider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * TamboV1StubProvider - Mock Provider for Testing\n *\n * Provides stubbed versions of all v1 contexts for testing components\n * that use Tambo hooks without making real API calls.\n * @example\n * ```tsx\n * const mockThread = {\n * id: \"thread_123\",\n * messages: [\n * { id: \"msg_1\", role: \"user\", content: [{ type: \"text\", text: \"Hello\" }], createdAt: \"...\" },\n * { id: \"msg_2\", role: \"assistant\", content: [{ type: \"text\", text: \"Hi!\" }], createdAt: \"...\" },\n * ],\n * status: \"idle\",\n * createdAt: \"2024-01-01T00:00:00Z\",\n * updatedAt: \"2024-01-01T00:00:00Z\",\n * };\n *\n * function TestComponent() {\n * return (\n * <TamboV1StubProvider thread={mockThread}>\n * <MyComponent />\n * </TamboV1StubProvider>\n * );\n * }\n * ```\n */\n\nimport TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { useMemo, type PropsWithChildren } from \"react\";\nimport type {\n TamboComponent,\n TamboTool,\n TamboToolRegistry,\n} from \"../../model/component-metadata\";\nimport { TamboClientContext } from \"../../providers/tambo-client-provider\";\nimport { TamboRegistryContext } from \"../../providers/tambo-registry-provider\";\nimport type { TamboV1Message } from \"../types/message\";\nimport type { TamboV1Thread } from \"../types/thread\";\nimport type {\n StreamAction,\n StreamState,\n ThreadState,\n} from \"../utils/event-accumulator\";\nimport { TamboV1ConfigContext, type TamboV1Config } from \"./tambo-v1-provider\";\nimport {\n TamboV1StreamProvider,\n type ThreadManagement,\n} from \"./tambo-v1-stream-context\";\nimport {\n TamboV1ThreadInputContext,\n type TamboV1ThreadInputContextProps,\n} from \"./tambo-v1-thread-input-provider\";\n\n/**\n * Props for TamboV1StubProvider\n */\nexport interface TamboV1StubProviderProps {\n /**\n * Thread data to display.\n * Can be a full TamboV1Thread or just an array of messages.\n */\n thread?: TamboV1Thread | { messages: TamboV1Message[] };\n\n /**\n * Optional thread ID. Defaults to \"stub_thread\" or thread.id if provided.\n */\n threadId?: string;\n\n /**\n * Components to register with the registry.\n */\n components?: TamboComponent[];\n\n /**\n * Tools to register with the registry.\n */\n tools?: TamboTool[];\n\n /**\n * User key for the config context.\n */\n userKey?: string;\n\n /**\n * Initial input value for the thread input context.\n */\n inputValue?: string;\n\n /**\n * Whether the thread is currently streaming.\n */\n isStreaming?: boolean;\n\n /**\n * Override for the submit function.\n * If not provided, submit will be a no-op that returns the threadId.\n */\n onSubmit?: () => Promise<{ threadId: string }>;\n\n /**\n * Override for the setValue function.\n */\n onSetValue?: (value: string | ((prev: string) => string)) => void;\n\n /**\n * Override for startNewThread.\n */\n onStartNewThread?: () => string;\n\n /**\n * Override for switchThread.\n */\n onSwitchThread?: (threadId: string | null) => void;\n\n /**\n * Override for initThread.\n */\n onInitThread?: (threadId: string) => void;\n}\n\n/**\n * Creates a default TamboV1Thread from messages or returns the full thread.\n * @returns A normalized thread object\n */\nfunction normalizeThread(\n threadData: TamboV1Thread | { messages: TamboV1Message[] } | undefined,\n threadId: string,\n): TamboV1Thread {\n if (!threadData) {\n return {\n id: threadId,\n messages: [],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n };\n }\n\n if (\"id\" in threadData && \"status\" in threadData) {\n return threadData;\n }\n\n return {\n id: threadId,\n messages: threadData.messages,\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n };\n}\n\n/**\n * TamboV1StubProvider provides mock implementations of all v1 contexts\n * for testing components that use Tambo hooks.\n *\n * All operations are no-ops by default, returning stub data.\n * Override specific behaviors via props as needed for testing.\n * Stream state is derived once from props and is not updated by thread management.\n * @returns A provider wrapper suitable for tests\n */\nexport function TamboV1StubProvider({\n children,\n thread: threadData,\n threadId: providedThreadId,\n components = [],\n tools = [],\n userKey,\n inputValue: initialInputValue = \"\",\n isStreaming = false,\n onSubmit,\n onSetValue,\n onStartNewThread,\n onSwitchThread,\n onInitThread,\n}: PropsWithChildren<TamboV1StubProviderProps>) {\n // Determine thread ID\n const threadId =\n providedThreadId ??\n (threadData && \"id\" in threadData ? threadData.id : \"stub_thread\");\n\n // Normalize thread data\n const thread = normalizeThread(threadData, threadId);\n\n // Create stub QueryClient\n const queryClient = useMemo(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n mutations: { retry: false },\n },\n }),\n [],\n );\n\n // Create stub client\n const stubClient = useMemo(() => ({}) as TamboAI, []);\n\n // Build component registry\n const componentList = useMemo(() => {\n const list: TamboRegistryContext[\"componentList\"] = {};\n\n for (const component of components) {\n list[component.name] = {\n component: component.component,\n loadingComponent: component.loadingComponent,\n name: component.name,\n description: component.description,\n props: component.propsDefinition ?? {},\n contextTools: [],\n };\n }\n\n return list;\n }, [components]);\n\n // Build tool registry\n const toolRegistry = useMemo(() => {\n return tools.reduce((acc, tool) => {\n acc[tool.name] = tool;\n return acc;\n }, {} as TamboToolRegistry);\n }, [tools]);\n\n // Stream state\n const streamState = useMemo<StreamState>(() => {\n const threadState: ThreadState = {\n thread,\n streaming: {\n status: isStreaming ? \"streaming\" : \"idle\",\n },\n accumulatingToolArgs: new Map(),\n };\n\n return {\n threadMap: { [threadId]: threadState },\n currentThreadId: threadId,\n };\n }, [thread, threadId, isStreaming]);\n\n // Stream dispatch (no-op)\n const streamDispatch = useMemo<React.Dispatch<StreamAction>>(\n () => () => {},\n [],\n );\n\n // Thread management\n const threadManagement = useMemo<ThreadManagement>(\n () => ({\n initThread: onInitThread ?? (() => {}),\n switchThread: onSwitchThread ?? (() => {}),\n startNewThread:\n onStartNewThread ??\n (() => {\n const newId = `stub_${crypto.randomUUID()}`;\n return newId;\n }),\n }),\n [onInitThread, onSwitchThread, onStartNewThread],\n );\n\n // Config context\n const config = useMemo<TamboV1Config>(() => ({ userKey }), [userKey]);\n\n // Input state (managed internally for stub)\n const [inputValue, setInputValueInternal] = React.useState(initialInputValue);\n\n // Thread input context\n const threadInputContext = useMemo<TamboV1ThreadInputContextProps>(() => {\n const setValue: React.Dispatch<React.SetStateAction<string>> =\n onSetValue ?? setInputValueInternal;\n\n const submit: TamboV1ThreadInputContextProps[\"submit\"] =\n onSubmit ??\n (async () => {\n return { threadId };\n });\n\n return {\n value: inputValue,\n setValue,\n submit,\n threadId,\n setThreadId: () => {},\n images: [],\n addImage: async () => {},\n addImages: async () => {},\n removeImage: () => {},\n clearImages: () => {},\n isPending: false,\n isError: false,\n error: null,\n isIdle: true,\n isSuccess: false,\n status: \"idle\",\n data: undefined,\n variables: undefined,\n failureCount: 0,\n failureReason: null,\n reset: () => {},\n context: undefined,\n submittedAt: 0,\n isPaused: false,\n isDisabled: false,\n };\n }, [inputValue, threadId, onSubmit, onSetValue, setInputValueInternal]);\n\n // Registry context\n const registryContext = useMemo<TamboRegistryContext>(\n () => ({\n componentList,\n toolRegistry,\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n onCallUnregisteredTool: undefined,\n registerComponent: () => {},\n registerTool: () => {},\n registerTools: () => {},\n addToolAssociation: () => {},\n registerMcpServer: () => {},\n registerMcpServers: () => {},\n registerResource: () => {},\n registerResources: () => {},\n registerResourceSource: () => {},\n }),\n [componentList, toolRegistry],\n );\n\n // Client context\n const clientContext = useMemo(\n () => ({\n client: stubClient,\n queryClient,\n isUpdatingToken: false,\n tokenExchangeError: null,\n userToken: undefined,\n hasValidToken: false,\n }),\n [stubClient, queryClient],\n );\n\n return (\n <QueryClientProvider client={queryClient}>\n <TamboClientContext.Provider value={clientContext}>\n <TamboRegistryContext.Provider value={registryContext}>\n <TamboV1ConfigContext.Provider value={config}>\n <TamboV1StreamProvider\n state={streamState}\n dispatch={streamDispatch}\n threadManagement={threadManagement}\n >\n <TamboV1ThreadInputContext.Provider value={threadInputContext}>\n {children}\n </TamboV1ThreadInputContext.Provider>\n </TamboV1StreamProvider>\n </TamboV1ConfigContext.Provider>\n </TamboRegistryContext.Provider>\n </TamboClientContext.Provider>\n </QueryClientProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"tambo-v1-stub-provider.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stub-provider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * TamboStubProvider - Mock Provider for Testing\n *\n * Provides stubbed versions of all contexts for testing components\n * that use Tambo hooks without making real API calls.\n * @example\n * ```tsx\n * const mockThread = {\n * id: \"thread_123\",\n * messages: [\n * { id: \"msg_1\", role: \"user\", content: [{ type: \"text\", text: \"Hello\" }], createdAt: \"...\" },\n * { id: \"msg_2\", role: \"assistant\", content: [{ type: \"text\", text: \"Hi!\" }], createdAt: \"...\" },\n * ],\n * status: \"idle\",\n * createdAt: \"2024-01-01T00:00:00Z\",\n * updatedAt: \"2024-01-01T00:00:00Z\",\n * };\n *\n * function TestComponent() {\n * return (\n * <TamboStubProvider thread={mockThread}>\n * <MyComponent />\n * </TamboStubProvider>\n * );\n * }\n * ```\n */\n\nimport TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { useMemo, type PropsWithChildren } from \"react\";\nimport type {\n TamboComponent,\n TamboTool,\n TamboToolRegistry,\n} from \"../../model/component-metadata\";\nimport { TamboClientContext } from \"../../providers/tambo-client-provider\";\nimport { TamboRegistryContext } from \"../../providers/tambo-registry-provider\";\nimport type { TamboThreadMessage } from \"../types/message\";\nimport type { TamboThread } from \"../types/thread\";\nimport type {\n StreamAction,\n StreamState,\n ThreadState,\n} from \"../utils/event-accumulator\";\nimport { TamboConfigContext, type TamboConfig } from \"./tambo-v1-provider\";\nimport {\n TamboStreamProvider,\n type ThreadManagement,\n} from \"./tambo-v1-stream-context\";\nimport {\n TamboThreadInputContext,\n type TamboThreadInputContextProps,\n} from \"./tambo-v1-thread-input-provider\";\n\n/**\n * Props for TamboStubProvider\n */\nexport interface TamboStubProviderProps {\n /**\n * Thread data to display.\n * Can be a full TamboThread or just an array of messages.\n */\n thread?: TamboThread | { messages: TamboThreadMessage[] };\n\n /**\n * Optional thread ID. Defaults to \"stub_thread\" or thread.id if provided.\n */\n threadId?: string;\n\n /**\n * Components to register with the registry.\n */\n components?: TamboComponent[];\n\n /**\n * Tools to register with the registry.\n */\n tools?: TamboTool[];\n\n /**\n * User key for the config context.\n */\n userKey?: string;\n\n /**\n * Initial input value for the thread input context.\n */\n inputValue?: string;\n\n /**\n * Whether the thread is currently streaming.\n */\n isStreaming?: boolean;\n\n /**\n * Override for the submit function.\n * If not provided, submit will be a no-op that returns the threadId.\n */\n onSubmit?: () => Promise<{ threadId: string }>;\n\n /**\n * Override for the setValue function.\n */\n onSetValue?: (value: string | ((prev: string) => string)) => void;\n\n /**\n * Override for startNewThread.\n */\n onStartNewThread?: () => string;\n\n /**\n * Override for switchThread.\n */\n onSwitchThread?: (threadId: string | null) => void;\n\n /**\n * Override for initThread.\n */\n onInitThread?: (threadId: string) => void;\n}\n\n/**\n * Creates a default TamboThread from messages or returns the full thread.\n * @returns A normalized thread object\n */\nfunction normalizeThread(\n threadData: TamboThread | { messages: TamboThreadMessage[] } | undefined,\n threadId: string,\n): TamboThread {\n if (!threadData) {\n return {\n id: threadId,\n messages: [],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n };\n }\n\n if (\"id\" in threadData && \"status\" in threadData) {\n return threadData;\n }\n\n return {\n id: threadId,\n messages: threadData.messages,\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n };\n}\n\n/**\n * TamboStubProvider provides mock implementations of all contexts\n * for testing components that use Tambo hooks.\n *\n * All operations are no-ops by default, returning stub data.\n * Override specific behaviors via props as needed for testing.\n * Stream state is derived once from props and is not updated by thread management.\n * @returns A provider wrapper suitable for tests\n */\nexport function TamboStubProvider({\n children,\n thread: threadData,\n threadId: providedThreadId,\n components = [],\n tools = [],\n userKey,\n inputValue: initialInputValue = \"\",\n isStreaming = false,\n onSubmit,\n onSetValue,\n onStartNewThread,\n onSwitchThread,\n onInitThread,\n}: PropsWithChildren<TamboStubProviderProps>) {\n // Determine thread ID\n const threadId =\n providedThreadId ??\n (threadData && \"id\" in threadData ? threadData.id : \"stub_thread\");\n\n // Normalize thread data\n const thread = normalizeThread(threadData, threadId);\n\n // Create stub QueryClient\n const queryClient = useMemo(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n mutations: { retry: false },\n },\n }),\n [],\n );\n\n // Create stub client\n const stubClient = useMemo(() => ({}) as TamboAI, []);\n\n // Build component registry\n const componentList = useMemo(() => {\n const list: TamboRegistryContext[\"componentList\"] = {};\n\n for (const component of components) {\n list[component.name] = {\n component: component.component,\n loadingComponent: component.loadingComponent,\n name: component.name,\n description: component.description,\n props: component.propsDefinition ?? {},\n contextTools: [],\n };\n }\n\n return list;\n }, [components]);\n\n // Build tool registry\n const toolRegistry = useMemo(() => {\n return tools.reduce((acc, tool) => {\n acc[tool.name] = tool;\n return acc;\n }, {} as TamboToolRegistry);\n }, [tools]);\n\n // Stream state\n const streamState = useMemo<StreamState>(() => {\n const threadState: ThreadState = {\n thread,\n streaming: {\n status: isStreaming ? \"streaming\" : \"idle\",\n },\n accumulatingToolArgs: new Map(),\n };\n\n return {\n threadMap: { [threadId]: threadState },\n currentThreadId: threadId,\n };\n }, [thread, threadId, isStreaming]);\n\n // Stream dispatch (no-op)\n const streamDispatch = useMemo<React.Dispatch<StreamAction>>(\n () => () => {},\n [],\n );\n\n // Thread management\n const threadManagement = useMemo<ThreadManagement>(\n () => ({\n initThread: onInitThread ?? (() => {}),\n switchThread: onSwitchThread ?? (() => {}),\n startNewThread:\n onStartNewThread ??\n (() => {\n const newId = `stub_${crypto.randomUUID()}`;\n return newId;\n }),\n }),\n [onInitThread, onSwitchThread, onStartNewThread],\n );\n\n // Config context\n const config = useMemo<TamboConfig>(() => ({ userKey }), [userKey]);\n\n // Input state (managed internally for stub)\n const [inputValue, setInputValueInternal] = React.useState(initialInputValue);\n\n // Thread input context\n const threadInputContext = useMemo<TamboThreadInputContextProps>(() => {\n const setValue: React.Dispatch<React.SetStateAction<string>> =\n onSetValue ?? setInputValueInternal;\n\n const submit: TamboThreadInputContextProps[\"submit\"] =\n onSubmit ??\n (async () => {\n return { threadId };\n });\n\n return {\n value: inputValue,\n setValue,\n submit,\n threadId,\n setThreadId: () => {},\n images: [],\n addImage: async () => {},\n addImages: async () => {},\n removeImage: () => {},\n clearImages: () => {},\n isPending: false,\n isError: false,\n error: null,\n isIdle: true,\n isSuccess: false,\n status: \"idle\",\n data: undefined,\n variables: undefined,\n failureCount: 0,\n failureReason: null,\n reset: () => {},\n context: undefined,\n submittedAt: 0,\n isPaused: false,\n isDisabled: false,\n };\n }, [inputValue, threadId, onSubmit, onSetValue, setInputValueInternal]);\n\n // Registry context\n const registryContext = useMemo<TamboRegistryContext>(\n () => ({\n componentList,\n toolRegistry,\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n onCallUnregisteredTool: undefined,\n registerComponent: () => {},\n registerTool: () => {},\n registerTools: () => {},\n addToolAssociation: () => {},\n registerMcpServer: () => {},\n registerMcpServers: () => {},\n registerResource: () => {},\n registerResources: () => {},\n registerResourceSource: () => {},\n }),\n [componentList, toolRegistry],\n );\n\n // Client context\n const clientContext = useMemo(\n () => ({\n client: stubClient,\n queryClient,\n isUpdatingToken: false,\n tokenExchangeError: null,\n userToken: undefined,\n hasValidToken: false,\n }),\n [stubClient, queryClient],\n );\n\n return (\n <QueryClientProvider client={queryClient}>\n <TamboClientContext.Provider value={clientContext}>\n <TamboRegistryContext.Provider value={registryContext}>\n <TamboConfigContext.Provider value={config}>\n <TamboStreamProvider\n state={streamState}\n dispatch={streamDispatch}\n threadManagement={threadManagement}\n >\n <TamboThreadInputContext.Provider value={threadInputContext}>\n {children}\n </TamboThreadInputContext.Provider>\n </TamboStreamProvider>\n </TamboConfigContext.Provider>\n </TamboRegistryContext.Provider>\n </TamboClientContext.Provider>\n </QueryClientProvider>\n );\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import { renderHook } from "@testing-library/react";
2
2
  import React from "react";
3
- import { TamboV1StubProvider } from "./tambo-v1-stub-provider.js";
4
- import { useTamboV1 } from "../hooks/use-tambo-v1.js";
5
- import { useTamboV1ThreadInput } from "../hooks/use-tambo-v1-thread-input.js";
3
+ import { TamboStubProvider } from "./tambo-v1-stub-provider.js";
4
+ import { useTambo } from "../hooks/use-tambo-v1.js";
5
+ import { useTamboThreadInput } from "../hooks/use-tambo-v1-thread-input.js";
6
6
  import { useTamboRegistry } from "../../providers/tambo-registry-provider.js";
7
7
  import { useTamboClient } from "../../providers/tambo-client-provider.js";
8
- describe("TamboV1StubProvider", () => {
8
+ describe("TamboStubProvider", () => {
9
9
  const mockThread = {
10
10
  id: "thread_123",
11
11
  messages: [
@@ -27,10 +27,10 @@ describe("TamboV1StubProvider", () => {
27
27
  updatedAt: "2024-01-01T00:00:01Z",
28
28
  lastRunCancelled: false,
29
29
  };
30
- describe("useTamboV1", () => {
31
- it("provides thread data via useTamboV1", () => {
32
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread }, children));
33
- const { result } = renderHook(() => useTamboV1(), {
30
+ describe("useTambo", () => {
31
+ it("provides thread data via useTambo", () => {
32
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread }, children));
33
+ const { result } = renderHook(() => useTambo(), {
34
34
  wrapper,
35
35
  });
36
36
  expect(result.current.messages).toHaveLength(2);
@@ -40,42 +40,42 @@ describe("TamboV1StubProvider", () => {
40
40
  expect(result.current.isStreaming).toBe(false);
41
41
  });
42
42
  it("returns empty messages when no thread provided", () => {
43
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, null, children));
44
- const { result } = renderHook(() => useTamboV1(), {
43
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, null, children));
44
+ const { result } = renderHook(() => useTambo(), {
45
45
  wrapper,
46
46
  });
47
47
  expect(result.current.messages).toHaveLength(0);
48
48
  expect(result.current.isIdle).toBe(true);
49
49
  });
50
50
  it("shows streaming state when isStreaming prop is true", () => {
51
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread, isStreaming: true }, children));
52
- const { result } = renderHook(() => useTamboV1(), {
51
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread, isStreaming: true }, children));
52
+ const { result } = renderHook(() => useTambo(), {
53
53
  wrapper,
54
54
  });
55
55
  expect(result.current.isStreaming).toBe(true);
56
56
  expect(result.current.isIdle).toBe(false);
57
57
  });
58
58
  });
59
- describe("useTamboV1ThreadInput", () => {
59
+ describe("useTamboThreadInput", () => {
60
60
  it("provides thread input context", () => {
61
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread }, children));
62
- const { result } = renderHook(() => useTamboV1ThreadInput(), { wrapper });
61
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread }, children));
62
+ const { result } = renderHook(() => useTamboThreadInput(), { wrapper });
63
63
  expect(result.current.value).toBe("");
64
64
  expect(result.current.threadId).toBe("thread_123");
65
65
  expect(typeof result.current.setValue).toBe("function");
66
66
  expect(typeof result.current.submit).toBe("function");
67
67
  });
68
68
  it("uses initial input value when provided", () => {
69
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread, inputValue: "Hello world" }, children));
70
- const { result } = renderHook(() => useTamboV1ThreadInput(), { wrapper });
69
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread, inputValue: "Hello world" }, children));
70
+ const { result } = renderHook(() => useTamboThreadInput(), { wrapper });
71
71
  expect(result.current.value).toBe("Hello world");
72
72
  });
73
73
  it("calls custom onSubmit when provided", async () => {
74
74
  const mockOnSubmit = jest
75
75
  .fn()
76
76
  .mockResolvedValue({ threadId: "new_thread" });
77
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread, onSubmit: mockOnSubmit }, children));
78
- const { result } = renderHook(() => useTamboV1ThreadInput(), { wrapper });
77
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread, onSubmit: mockOnSubmit }, children));
78
+ const { result } = renderHook(() => useTamboThreadInput(), { wrapper });
79
79
  const response = await result.current.submit();
80
80
  expect(mockOnSubmit).toHaveBeenCalled();
81
81
  expect(response.threadId).toBe("new_thread");
@@ -91,7 +91,7 @@ describe("TamboV1StubProvider", () => {
91
91
  component: TestComponent,
92
92
  },
93
93
  ];
94
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread, components: components }, children));
94
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread, components: components }, children));
95
95
  const { result } = renderHook(() => useTamboRegistry(), { wrapper });
96
96
  expect(result.current.componentList.TestComponent).toBeDefined();
97
97
  expect(result.current.componentList.TestComponent.name).toBe("TestComponent");
@@ -104,7 +104,7 @@ describe("TamboV1StubProvider", () => {
104
104
  tool: async () => "result",
105
105
  },
106
106
  ];
107
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread, tools: tools }, children));
107
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread, tools: tools }, children));
108
108
  const { result } = renderHook(() => useTamboRegistry(), { wrapper });
109
109
  expect(result.current.toolRegistry.testTool).toBeDefined();
110
110
  expect(result.current.toolRegistry.testTool.name).toBe("testTool");
@@ -112,15 +112,15 @@ describe("TamboV1StubProvider", () => {
112
112
  });
113
113
  describe("Client", () => {
114
114
  it("provides stub client", () => {
115
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread }, children));
115
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread }, children));
116
116
  const { result } = renderHook(() => useTamboClient(), { wrapper });
117
117
  expect(result.current).toBeDefined();
118
118
  });
119
119
  });
120
120
  describe("Thread management", () => {
121
121
  it("provides thread management functions", () => {
122
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread }, children));
123
- const { result } = renderHook(() => useTamboV1(), {
122
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread }, children));
123
+ const { result } = renderHook(() => useTambo(), {
124
124
  wrapper,
125
125
  });
126
126
  expect(typeof result.current.startNewThread).toBe("function");
@@ -129,8 +129,8 @@ describe("TamboV1StubProvider", () => {
129
129
  });
130
130
  it("calls custom onStartNewThread when provided", () => {
131
131
  const mockStartNewThread = jest.fn().mockReturnValue("custom_thread_id");
132
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: mockThread, onStartNewThread: mockStartNewThread }, children));
133
- const { result } = renderHook(() => useTamboV1(), {
132
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: mockThread, onStartNewThread: mockStartNewThread }, children));
133
+ const { result } = renderHook(() => useTambo(), {
134
134
  wrapper,
135
135
  });
136
136
  const newThreadId = result.current.startNewThread();
@@ -148,8 +148,8 @@ describe("TamboV1StubProvider", () => {
148
148
  createdAt: "2024-01-01T00:00:00Z",
149
149
  },
150
150
  ];
151
- const wrapper = ({ children }) => (React.createElement(TamboV1StubProvider, { thread: { messages }, threadId: "custom_id" }, children));
152
- const { result } = renderHook(() => useTamboV1(), { wrapper });
151
+ const wrapper = ({ children }) => (React.createElement(TamboStubProvider, { thread: { messages }, threadId: "custom_id" }, children));
152
+ const { result } = renderHook(() => useTambo(), { wrapper });
153
153
  expect(result.current.messages).toHaveLength(1);
154
154
  expect(result.current.messages[0].id).toBe("msg_1");
155
155
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tambo-v1-stub-provider.test.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stub-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport { TamboV1StubProvider } from \"./tambo-v1-stub-provider\";\nimport { useTamboV1 } from \"../hooks/use-tambo-v1\";\nimport { useTamboV1ThreadInput } from \"../hooks/use-tambo-v1-thread-input\";\nimport { useTamboRegistry } from \"../../providers/tambo-registry-provider\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport type { TamboV1Thread } from \"../types/thread\";\n\ndescribe(\"TamboV1StubProvider\", () => {\n const mockThread: TamboV1Thread = {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"user\",\n content: [{ type: \"text\", text: \"Hello\" }],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n {\n id: \"msg_2\",\n role: \"assistant\",\n content: [{ type: \"text\", text: \"Hi there!\" }],\n createdAt: \"2024-01-01T00:00:01Z\",\n },\n ],\n status: \"idle\",\n createdAt: \"2024-01-01T00:00:00Z\",\n updatedAt: \"2024-01-01T00:00:01Z\",\n lastRunCancelled: false,\n };\n\n describe(\"useTamboV1\", () => {\n it(\"provides thread data via useTamboV1\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper,\n });\n\n expect(result.current.messages).toHaveLength(2);\n expect(result.current.messages[0].id).toBe(\"msg_1\");\n expect(result.current.messages[1].id).toBe(\"msg_2\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n });\n\n it(\"returns empty messages when no thread provided\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider>{children}</TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper,\n });\n\n expect(result.current.messages).toHaveLength(0);\n expect(result.current.isIdle).toBe(true);\n });\n\n it(\"shows streaming state when isStreaming prop is true\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread} isStreaming>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper,\n });\n\n expect(result.current.isStreaming).toBe(true);\n expect(result.current.isIdle).toBe(false);\n });\n });\n\n describe(\"useTamboV1ThreadInput\", () => {\n it(\"provides thread input context\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1ThreadInput(), { wrapper });\n\n expect(result.current.value).toBe(\"\");\n expect(result.current.threadId).toBe(\"thread_123\");\n expect(typeof result.current.setValue).toBe(\"function\");\n expect(typeof result.current.submit).toBe(\"function\");\n });\n\n it(\"uses initial input value when provided\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread} inputValue=\"Hello world\">\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1ThreadInput(), { wrapper });\n\n expect(result.current.value).toBe(\"Hello world\");\n });\n\n it(\"calls custom onSubmit when provided\", async () => {\n const mockOnSubmit = jest\n .fn()\n .mockResolvedValue({ threadId: \"new_thread\" });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread} onSubmit={mockOnSubmit}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1ThreadInput(), { wrapper });\n\n const response = await result.current.submit();\n\n expect(mockOnSubmit).toHaveBeenCalled();\n expect(response.threadId).toBe(\"new_thread\");\n });\n });\n\n describe(\"Registry\", () => {\n it(\"registers provided components\", () => {\n const TestComponent = () => <div>Test</div>;\n const components = [\n {\n name: \"TestComponent\",\n description: \"A test component\",\n component: TestComponent,\n },\n ];\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread} components={components}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboRegistry(), { wrapper });\n\n expect(result.current.componentList.TestComponent).toBeDefined();\n expect(result.current.componentList.TestComponent.name).toBe(\n \"TestComponent\",\n );\n });\n\n it(\"registers provided tools\", () => {\n const tools = [\n {\n name: \"testTool\",\n description: \"A test tool\",\n tool: async () => \"result\",\n },\n ];\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread} tools={tools as any}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboRegistry(), { wrapper });\n\n expect(result.current.toolRegistry.testTool).toBeDefined();\n expect(result.current.toolRegistry.testTool.name).toBe(\"testTool\");\n });\n });\n\n describe(\"Client\", () => {\n it(\"provides stub client\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboClient(), { wrapper });\n\n expect(result.current).toBeDefined();\n });\n });\n\n describe(\"Thread management\", () => {\n it(\"provides thread management functions\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={mockThread}>\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper,\n });\n\n expect(typeof result.current.startNewThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.initThread).toBe(\"function\");\n });\n\n it(\"calls custom onStartNewThread when provided\", () => {\n const mockStartNewThread = jest.fn().mockReturnValue(\"custom_thread_id\");\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider\n thread={mockThread}\n onStartNewThread={mockStartNewThread}\n >\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper,\n });\n\n const newThreadId = result.current.startNewThread();\n\n expect(mockStartNewThread).toHaveBeenCalled();\n expect(newThreadId).toBe(\"custom_thread_id\");\n });\n });\n\n describe(\"Messages-only thread\", () => {\n it(\"accepts just messages array instead of full thread\", () => {\n const messages = [\n {\n id: \"msg_1\",\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"Hello\" }],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ];\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboV1StubProvider thread={{ messages }} threadId=\"custom_id\">\n {children}\n </TamboV1StubProvider>\n );\n\n const { result } = renderHook(() => useTamboV1(), { wrapper });\n\n expect(result.current.messages).toHaveLength(1);\n expect(result.current.messages[0].id).toBe(\"msg_1\");\n });\n });\n});\n"]}
1
+ {"version":3,"file":"tambo-v1-stub-provider.test.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-stub-provider.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAGvE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,UAAU,GAAgB;QAC9B,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,SAAS,EAAE,sBAAsB;aAClC;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBAC9C,SAAS,EAAE,sBAAsB;aAClC;SACF;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,gBAAgB,EAAE,KAAK;KACxB,CAAC;IAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,IAAG,QAAQ,CAAqB,CACtE,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9C,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,QAAE,QAAQ,CAAqB,CAClD,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9C,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,EAAE,WAAW,UAC/C,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9C,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,IAAG,QAAQ,CAAqB,CACtE,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAC,aAAa,IAC5D,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,YAAY,GAAG,IAAI;iBACtB,EAAE,EAAE;iBACJ,iBAAiB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,IAC1D,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAExE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAE/C,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,wCAAe,CAAC;YAC5C,MAAM,UAAU,GAAG;gBACjB;oBACE,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,kBAAkB;oBAC/B,SAAS,EAAE,aAAa;iBACzB;aACF,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,IAC1D,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAErE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,eAAe,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,KAAK,GAAG;gBACZ;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,aAAa;oBAC1B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;iBAC3B;aACF,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAY,IACvD,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAErE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,IAAG,QAAQ,CAAqB,CACtE,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,IAAG,QAAQ,CAAqB,CACtE,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9C,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAEzE,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAChB,MAAM,EAAE,UAAU,EAClB,gBAAgB,EAAE,kBAAkB,IAEnC,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9C,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAEpD,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,QAAQ,GAAG;gBACf;oBACE,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oBACnD,SAAS,EAAE,sBAAsB;iBAClC;aACF,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,iBAAiB,IAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAC,WAAW,IAC1D,QAAQ,CACS,CACrB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport { TamboStubProvider } from \"./tambo-v1-stub-provider\";\nimport { useTambo } from \"../hooks/use-tambo-v1\";\nimport { useTamboThreadInput } from \"../hooks/use-tambo-v1-thread-input\";\nimport { useTamboRegistry } from \"../../providers/tambo-registry-provider\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport type { TamboThread } from \"../types/thread\";\n\ndescribe(\"TamboStubProvider\", () => {\n const mockThread: TamboThread = {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"user\",\n content: [{ type: \"text\", text: \"Hello\" }],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n {\n id: \"msg_2\",\n role: \"assistant\",\n content: [{ type: \"text\", text: \"Hi there!\" }],\n createdAt: \"2024-01-01T00:00:01Z\",\n },\n ],\n status: \"idle\",\n createdAt: \"2024-01-01T00:00:00Z\",\n updatedAt: \"2024-01-01T00:00:01Z\",\n lastRunCancelled: false,\n };\n\n describe(\"useTambo\", () => {\n it(\"provides thread data via useTambo\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread}>{children}</TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTambo(), {\n wrapper,\n });\n\n expect(result.current.messages).toHaveLength(2);\n expect(result.current.messages[0].id).toBe(\"msg_1\");\n expect(result.current.messages[1].id).toBe(\"msg_2\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n });\n\n it(\"returns empty messages when no thread provided\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider>{children}</TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTambo(), {\n wrapper,\n });\n\n expect(result.current.messages).toHaveLength(0);\n expect(result.current.isIdle).toBe(true);\n });\n\n it(\"shows streaming state when isStreaming prop is true\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread} isStreaming>\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTambo(), {\n wrapper,\n });\n\n expect(result.current.isStreaming).toBe(true);\n expect(result.current.isIdle).toBe(false);\n });\n });\n\n describe(\"useTamboThreadInput\", () => {\n it(\"provides thread input context\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread}>{children}</TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTamboThreadInput(), { wrapper });\n\n expect(result.current.value).toBe(\"\");\n expect(result.current.threadId).toBe(\"thread_123\");\n expect(typeof result.current.setValue).toBe(\"function\");\n expect(typeof result.current.submit).toBe(\"function\");\n });\n\n it(\"uses initial input value when provided\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread} inputValue=\"Hello world\">\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTamboThreadInput(), { wrapper });\n\n expect(result.current.value).toBe(\"Hello world\");\n });\n\n it(\"calls custom onSubmit when provided\", async () => {\n const mockOnSubmit = jest\n .fn()\n .mockResolvedValue({ threadId: \"new_thread\" });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread} onSubmit={mockOnSubmit}>\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTamboThreadInput(), { wrapper });\n\n const response = await result.current.submit();\n\n expect(mockOnSubmit).toHaveBeenCalled();\n expect(response.threadId).toBe(\"new_thread\");\n });\n });\n\n describe(\"Registry\", () => {\n it(\"registers provided components\", () => {\n const TestComponent = () => <div>Test</div>;\n const components = [\n {\n name: \"TestComponent\",\n description: \"A test component\",\n component: TestComponent,\n },\n ];\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread} components={components}>\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTamboRegistry(), { wrapper });\n\n expect(result.current.componentList.TestComponent).toBeDefined();\n expect(result.current.componentList.TestComponent.name).toBe(\n \"TestComponent\",\n );\n });\n\n it(\"registers provided tools\", () => {\n const tools = [\n {\n name: \"testTool\",\n description: \"A test tool\",\n tool: async () => \"result\",\n },\n ];\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread} tools={tools as any}>\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTamboRegistry(), { wrapper });\n\n expect(result.current.toolRegistry.testTool).toBeDefined();\n expect(result.current.toolRegistry.testTool.name).toBe(\"testTool\");\n });\n });\n\n describe(\"Client\", () => {\n it(\"provides stub client\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread}>{children}</TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTamboClient(), { wrapper });\n\n expect(result.current).toBeDefined();\n });\n });\n\n describe(\"Thread management\", () => {\n it(\"provides thread management functions\", () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={mockThread}>{children}</TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTambo(), {\n wrapper,\n });\n\n expect(typeof result.current.startNewThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.initThread).toBe(\"function\");\n });\n\n it(\"calls custom onStartNewThread when provided\", () => {\n const mockStartNewThread = jest.fn().mockReturnValue(\"custom_thread_id\");\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider\n thread={mockThread}\n onStartNewThread={mockStartNewThread}\n >\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTambo(), {\n wrapper,\n });\n\n const newThreadId = result.current.startNewThread();\n\n expect(mockStartNewThread).toHaveBeenCalled();\n expect(newThreadId).toBe(\"custom_thread_id\");\n });\n });\n\n describe(\"Messages-only thread\", () => {\n it(\"accepts just messages array instead of full thread\", () => {\n const messages = [\n {\n id: \"msg_1\",\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"Hello\" }],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ];\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboStubProvider thread={{ messages }} threadId=\"custom_id\">\n {children}\n </TamboStubProvider>\n );\n\n const { result } = renderHook(() => useTambo(), { wrapper });\n\n expect(result.current.messages).toHaveLength(1);\n expect(result.current.messages[0].id).toBe(\"msg_1\");\n });\n });\n});\n"]}
@@ -1,10 +1,10 @@
1
1
  /**
2
- * TamboV1ThreadInputProvider - Shared Thread Input Context for v1 API
2
+ * TamboThreadInputProvider - Shared Thread Input Context
3
3
  *
4
4
  * Provides shared input state across all components, enabling features like
5
5
  * suggestions to update the input field directly.
6
6
  *
7
- * This mirrors the beta SDK's TamboThreadInputProvider pattern.
7
+ * This mirrors the TamboThreadInputProvider pattern from the legacy beta SDK.
8
8
  */
9
9
  import React, { type PropsWithChildren } from "react";
10
10
  import { type StagedImage } from "../../hooks/use-message-images.js";
@@ -34,7 +34,7 @@ export interface SubmitOptions {
34
34
  /**
35
35
  * Context props for thread input state
36
36
  */
37
- export interface TamboV1ThreadInputContextProps extends Omit<UseTamboMutationResult<{
37
+ export interface TamboThreadInputContextProps extends Omit<UseTamboMutationResult<{
38
38
  threadId: string | undefined;
39
39
  }, Error, SubmitOptions | undefined>, "mutate" | "mutateAsync"> {
40
40
  /** Current value of the input field */
@@ -71,28 +71,28 @@ export interface TamboV1ThreadInputContextProps extends Omit<UseTamboMutationRes
71
71
  * Context for thread input state.
72
72
  * @internal
73
73
  */
74
- export declare const TamboV1ThreadInputContext: React.Context<TamboV1ThreadInputContextProps | undefined>;
74
+ export declare const TamboThreadInputContext: React.Context<TamboThreadInputContextProps | undefined>;
75
75
  /**
76
76
  * Provider that manages shared thread input state across all components.
77
77
  *
78
- * This ensures that useTamboV1ThreadInput, useTamboV1Suggestions, and other components
78
+ * This ensures that useTamboThreadInput, useTamboSuggestions, and other components
79
79
  * all share the same input state.
80
80
  * @param props - Provider props
81
81
  * @param props.children - Child components
82
82
  * @returns Thread input context provider
83
83
  */
84
- export declare function TamboV1ThreadInputProvider({ children }: PropsWithChildren): React.JSX.Element;
84
+ export declare function TamboThreadInputProvider({ children }: PropsWithChildren): React.JSX.Element;
85
85
  /**
86
86
  * Hook to access the shared thread input state.
87
87
  *
88
88
  * All components using this hook share the same input state, enabling
89
89
  * features like suggestions to update the input field directly.
90
90
  * @returns The shared thread input context
91
- * @throws {Error} If used outside TamboV1ThreadInputProvider
91
+ * @throws {Error} If used outside TamboThreadInputProvider
92
92
  * @example
93
93
  * ```tsx
94
94
  * function ChatInput() {
95
- * const { value, setValue, submit, isPending } = useTamboV1ThreadInput();
95
+ * const { value, setValue, submit, isPending } = useTamboThreadInput();
96
96
  *
97
97
  * return (
98
98
  * <form onSubmit={(e) => { e.preventDefault(); submit(); }}>
@@ -107,5 +107,5 @@ export declare function TamboV1ThreadInputProvider({ children }: PropsWithChildr
107
107
  * }
108
108
  * ```
109
109
  */
110
- export declare function useTamboV1ThreadInput(): TamboV1ThreadInputContextProps;
110
+ export declare function useTamboThreadInput(): TamboThreadInputContextProps;
111
111
  //# sourceMappingURL=tambo-v1-thread-input-provider.d.ts.map