@tambo-ai/react 0.74.1 → 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 (693) hide show
  1. package/README.md +46 -449
  2. package/dist/hoc/with-tambo-interactable.d.ts +8 -0
  3. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -1
  4. package/dist/hoc/with-tambo-interactable.js +16 -13
  5. package/dist/hoc/with-tambo-interactable.js.map +1 -1
  6. package/dist/hoc/with-tambo-interactable.test.js +15 -3
  7. package/dist/hoc/with-tambo-interactable.test.js.map +1 -1
  8. package/dist/hooks/use-tambo-voice.test.js +3 -0
  9. package/dist/hooks/use-tambo-voice.test.js.map +1 -1
  10. package/dist/index.d.ts +7 -25
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -59
  13. package/dist/index.js.map +1 -1
  14. package/dist/mcp/mcp-hooks.js +5 -5
  15. package/dist/mcp/mcp-hooks.js.map +1 -1
  16. package/dist/mcp/mcp-hooks.test.js +69 -0
  17. package/dist/mcp/mcp-hooks.test.js.map +1 -1
  18. package/dist/mcp/tambo-mcp-provider.test.js +24 -0
  19. package/dist/mcp/tambo-mcp-provider.test.js.map +1 -1
  20. package/dist/mcp/use-mcp-servers.test.js +9 -0
  21. package/dist/mcp/use-mcp-servers.test.js.map +1 -1
  22. package/dist/model/component-metadata.d.ts +4 -4
  23. package/dist/model/component-metadata.js.map +1 -1
  24. package/dist/providers/tambo-client-provider.d.ts +12 -0
  25. package/dist/providers/tambo-client-provider.d.ts.map +1 -1
  26. package/dist/providers/tambo-client-provider.js +8 -3
  27. package/dist/providers/tambo-client-provider.js.map +1 -1
  28. package/dist/providers/tambo-interactable-provider.d.ts +1 -1
  29. package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
  30. package/dist/providers/tambo-interactable-provider.js +8 -0
  31. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  32. package/dist/providers/tambo-interactable-provider.test.js +47 -0
  33. package/dist/providers/tambo-interactable-provider.test.js.map +1 -1
  34. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js +2 -10
  35. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
  36. package/dist/providers/tambo-interactables-additional-context.test.js +3 -19
  37. package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -1
  38. package/dist/providers/tambo-mcp-token-provider.d.ts +8 -17
  39. package/dist/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  40. package/dist/providers/tambo-mcp-token-provider.js +20 -97
  41. package/dist/providers/tambo-mcp-token-provider.js.map +1 -1
  42. package/dist/testing/tools.d.ts +3 -3
  43. package/dist/testing/tools.d.ts.map +1 -1
  44. package/dist/testing/tools.js.map +1 -1
  45. package/dist/util/registry-validators.js +1 -1
  46. package/dist/util/registry-validators.js.map +1 -1
  47. package/dist/util/resource-content-resolver.test.js +1 -1
  48. package/dist/util/resource-content-resolver.test.js.map +1 -1
  49. package/dist/v1/__tests__/v1-interactables.test.js +1 -1
  50. package/dist/v1/__tests__/v1-interactables.test.js.map +1 -1
  51. package/dist/v1/components/v1-component-renderer.d.ts +9 -9
  52. package/dist/v1/components/v1-component-renderer.d.ts.map +1 -1
  53. package/dist/v1/components/v1-component-renderer.js +13 -13
  54. package/dist/v1/components/v1-component-renderer.js.map +1 -1
  55. package/dist/v1/components/v1-component-renderer.test.js +15 -15
  56. package/dist/v1/components/v1-component-renderer.test.js.map +1 -1
  57. package/{esm/hooks/use-current-message.d.ts → dist/v1/hooks/use-tambo-current-message.d.ts} +30 -9
  58. package/dist/v1/hooks/use-tambo-current-message.d.ts.map +1 -0
  59. package/dist/{hooks/use-current-message.js → v1/hooks/use-tambo-current-message.js} +13 -8
  60. package/dist/v1/hooks/use-tambo-current-message.js.map +1 -0
  61. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts +11 -0
  62. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -0
  63. package/dist/v1/hooks/use-tambo-v1-auth-state.js +48 -0
  64. package/dist/v1/hooks/use-tambo-v1-auth-state.js.map +1 -0
  65. package/dist/v1/hooks/use-tambo-v1-auth-state.test.d.ts +2 -0
  66. package/dist/v1/hooks/use-tambo-v1-auth-state.test.d.ts.map +1 -0
  67. package/dist/v1/hooks/use-tambo-v1-auth-state.test.js +105 -0
  68. package/dist/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -0
  69. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts +7 -6
  70. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  71. package/dist/v1/hooks/use-tambo-v1-component-state.js +101 -28
  72. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  73. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +150 -25
  74. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  75. package/dist/v1/hooks/use-tambo-v1-messages.d.ts +9 -9
  76. package/dist/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -1
  77. package/dist/v1/hooks/use-tambo-v1-messages.js +4 -4
  78. package/dist/v1/hooks/use-tambo-v1-messages.js.map +1 -1
  79. package/dist/v1/hooks/use-tambo-v1-messages.test.js +14 -6
  80. package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  81. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +21 -3
  82. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  83. package/dist/v1/hooks/use-tambo-v1-send-message.js +92 -17
  84. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  85. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +315 -42
  86. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  87. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts +7 -7
  88. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
  89. package/dist/v1/hooks/use-tambo-v1-stream-status.js +14 -16
  90. package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  91. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +30 -30
  92. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  93. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +7 -7
  94. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  95. package/dist/v1/hooks/use-tambo-v1-suggestions.js +9 -9
  96. package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  97. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +44 -44
  98. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  99. package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts +3 -3
  100. package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -1
  101. package/dist/v1/hooks/use-tambo-v1-thread-input.js +4 -4
  102. package/dist/v1/hooks/use-tambo-v1-thread-input.js.map +1 -1
  103. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +40 -27
  104. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  105. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +4 -4
  106. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  107. package/dist/v1/hooks/use-tambo-v1-thread-list.js +8 -4
  108. package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  109. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +18 -16
  110. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  111. package/dist/v1/hooks/use-tambo-v1-thread.d.ts +3 -3
  112. package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  113. package/dist/v1/hooks/use-tambo-v1-thread.js +7 -3
  114. package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  115. package/dist/v1/hooks/use-tambo-v1-thread.test.js +10 -4
  116. package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  117. package/dist/v1/hooks/use-tambo-v1.d.ts +16 -5
  118. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  119. package/dist/v1/hooks/use-tambo-v1.js +14 -6
  120. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  121. package/dist/v1/hooks/use-tambo-v1.test.js +65 -43
  122. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  123. package/dist/v1/index.d.ts +34 -27
  124. package/dist/v1/index.d.ts.map +1 -1
  125. package/dist/v1/index.js +48 -35
  126. package/dist/v1/index.js.map +1 -1
  127. package/dist/v1/providers/tambo-v1-provider.d.ts +35 -20
  128. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  129. package/dist/v1/providers/tambo-v1-provider.js +63 -26
  130. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  131. package/dist/v1/providers/tambo-v1-provider.test.js +40 -23
  132. package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
  133. package/dist/v1/providers/tambo-v1-stream-context.d.ts +21 -15
  134. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  135. package/dist/v1/providers/tambo-v1-stream-context.js +66 -27
  136. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  137. package/dist/v1/providers/tambo-v1-stream-context.test.js +14 -5
  138. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  139. package/dist/v1/providers/tambo-v1-stub-provider.d.ts +9 -9
  140. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  141. package/dist/v1/providers/tambo-v1-stub-provider.js +11 -7
  142. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  143. package/dist/v1/providers/tambo-v1-stub-provider.test.js +25 -25
  144. package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  145. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +20 -9
  146. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  147. package/dist/v1/providers/tambo-v1-thread-input-provider.js +25 -16
  148. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  149. package/dist/v1/types/auth.d.ts +24 -0
  150. package/dist/v1/types/auth.d.ts.map +1 -0
  151. package/dist/{model/tambo-thread.js → v1/types/auth.js} +1 -1
  152. package/dist/v1/types/auth.js.map +1 -0
  153. package/dist/v1/types/component.d.ts +3 -3
  154. package/dist/v1/types/component.d.ts.map +1 -1
  155. package/dist/v1/types/component.js +2 -2
  156. package/dist/v1/types/component.js.map +1 -1
  157. package/dist/v1/types/event.d.ts +1 -1
  158. package/dist/v1/types/event.js +1 -1
  159. package/dist/v1/types/event.js.map +1 -1
  160. package/dist/v1/types/message.d.ts +19 -12
  161. package/dist/v1/types/message.d.ts.map +1 -1
  162. package/dist/v1/types/message.js +1 -1
  163. package/dist/v1/types/message.js.map +1 -1
  164. package/dist/v1/types/thread.d.ts +8 -6
  165. package/dist/v1/types/thread.d.ts.map +1 -1
  166. package/dist/v1/types/thread.js +1 -1
  167. package/dist/v1/types/thread.js.map +1 -1
  168. package/dist/v1/types/tool-choice.d.ts +8 -0
  169. package/dist/v1/types/tool-choice.d.ts.map +1 -0
  170. package/dist/v1/types/tool-choice.js +3 -0
  171. package/dist/v1/types/tool-choice.js.map +1 -0
  172. package/dist/v1/utils/component-renderer.d.ts +11 -5
  173. package/dist/v1/utils/component-renderer.d.ts.map +1 -1
  174. package/dist/v1/utils/component-renderer.js +16 -7
  175. package/dist/v1/utils/component-renderer.js.map +1 -1
  176. package/dist/v1/utils/component-renderer.test.js +7 -7
  177. package/dist/v1/utils/component-renderer.test.js.map +1 -1
  178. package/dist/v1/utils/event-accumulator.d.ts +34 -8
  179. package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
  180. package/dist/v1/utils/event-accumulator.js +90 -27
  181. package/dist/v1/utils/event-accumulator.js.map +1 -1
  182. package/dist/v1/utils/event-accumulator.test.js +149 -8
  183. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  184. package/dist/v1/utils/keyed-throttle.d.ts +42 -0
  185. package/dist/v1/utils/keyed-throttle.d.ts.map +1 -0
  186. package/dist/v1/utils/keyed-throttle.js +86 -0
  187. package/dist/v1/utils/keyed-throttle.js.map +1 -0
  188. package/dist/v1/utils/keyed-throttle.test.d.ts +2 -0
  189. package/dist/v1/utils/keyed-throttle.test.d.ts.map +1 -0
  190. package/dist/v1/utils/keyed-throttle.test.js +147 -0
  191. package/dist/v1/utils/keyed-throttle.test.js.map +1 -0
  192. package/dist/v1/utils/registry-conversion.d.ts +18 -18
  193. package/dist/v1/utils/registry-conversion.d.ts.map +1 -1
  194. package/dist/v1/utils/registry-conversion.js +25 -23
  195. package/dist/v1/utils/registry-conversion.js.map +1 -1
  196. package/dist/v1/utils/registry-conversion.test.js +23 -0
  197. package/dist/v1/utils/registry-conversion.test.js.map +1 -1
  198. package/dist/v1/utils/stream-handler.d.ts +1 -1
  199. package/dist/v1/utils/stream-handler.js +1 -1
  200. package/dist/v1/utils/stream-handler.js.map +1 -1
  201. package/dist/v1/utils/thread-utils.d.ts +2 -2
  202. package/dist/v1/utils/thread-utils.d.ts.map +1 -1
  203. package/dist/v1/utils/thread-utils.js.map +1 -1
  204. package/dist/v1/utils/tool-call-tracker.d.ts +11 -1
  205. package/dist/v1/utils/tool-call-tracker.d.ts.map +1 -1
  206. package/dist/v1/utils/tool-call-tracker.js +14 -1
  207. package/dist/v1/utils/tool-call-tracker.js.map +1 -1
  208. package/dist/v1/utils/tool-call-tracker.test.d.ts +2 -0
  209. package/dist/v1/utils/tool-call-tracker.test.d.ts.map +1 -0
  210. package/dist/v1/utils/tool-call-tracker.test.js +67 -0
  211. package/dist/v1/utils/tool-call-tracker.test.js.map +1 -0
  212. package/dist/v1/utils/tool-executor.d.ts +35 -1
  213. package/dist/v1/utils/tool-executor.d.ts.map +1 -1
  214. package/dist/v1/utils/tool-executor.js +57 -2
  215. package/dist/v1/utils/tool-executor.js.map +1 -1
  216. package/dist/v1/utils/tool-executor.test.js +211 -0
  217. package/dist/v1/utils/tool-executor.test.js.map +1 -1
  218. package/esm/hoc/with-tambo-interactable.d.ts +8 -0
  219. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -1
  220. package/esm/hoc/with-tambo-interactable.js +15 -12
  221. package/esm/hoc/with-tambo-interactable.js.map +1 -1
  222. package/esm/hoc/with-tambo-interactable.test.js +13 -1
  223. package/esm/hoc/with-tambo-interactable.test.js.map +1 -1
  224. package/esm/hooks/use-tambo-voice.test.js +3 -0
  225. package/esm/hooks/use-tambo-voice.test.js.map +1 -1
  226. package/esm/index.d.ts +7 -25
  227. package/esm/index.d.ts.map +1 -1
  228. package/esm/index.js +7 -21
  229. package/esm/index.js.map +1 -1
  230. package/esm/mcp/mcp-hooks.js +1 -1
  231. package/esm/mcp/mcp-hooks.js.map +1 -1
  232. package/esm/mcp/mcp-hooks.test.js +69 -0
  233. package/esm/mcp/mcp-hooks.test.js.map +1 -1
  234. package/esm/mcp/tambo-mcp-provider.test.js +24 -0
  235. package/esm/mcp/tambo-mcp-provider.test.js.map +1 -1
  236. package/esm/mcp/use-mcp-servers.test.js +9 -0
  237. package/esm/mcp/use-mcp-servers.test.js.map +1 -1
  238. package/esm/model/component-metadata.d.ts +4 -4
  239. package/esm/model/component-metadata.js.map +1 -1
  240. package/esm/providers/tambo-client-provider.d.ts +12 -0
  241. package/esm/providers/tambo-client-provider.d.ts.map +1 -1
  242. package/esm/providers/tambo-client-provider.js +8 -3
  243. package/esm/providers/tambo-client-provider.js.map +1 -1
  244. package/esm/providers/tambo-interactable-provider.d.ts +1 -1
  245. package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
  246. package/esm/providers/tambo-interactable-provider.js +8 -0
  247. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  248. package/esm/providers/tambo-interactable-provider.test.js +47 -0
  249. package/esm/providers/tambo-interactable-provider.test.js.map +1 -1
  250. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +2 -10
  251. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
  252. package/esm/providers/tambo-interactables-additional-context.test.js +3 -19
  253. package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -1
  254. package/esm/providers/tambo-mcp-token-provider.d.ts +8 -17
  255. package/esm/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  256. package/esm/providers/tambo-mcp-token-provider.js +20 -97
  257. package/esm/providers/tambo-mcp-token-provider.js.map +1 -1
  258. package/esm/testing/tools.d.ts +3 -3
  259. package/esm/testing/tools.d.ts.map +1 -1
  260. package/esm/testing/tools.js.map +1 -1
  261. package/esm/util/registry-validators.js +1 -1
  262. package/esm/util/registry-validators.js.map +1 -1
  263. package/esm/util/resource-content-resolver.test.js +1 -1
  264. package/esm/util/resource-content-resolver.test.js.map +1 -1
  265. package/esm/v1/__tests__/v1-interactables.test.js +1 -1
  266. package/esm/v1/__tests__/v1-interactables.test.js.map +1 -1
  267. package/esm/v1/components/v1-component-renderer.d.ts +9 -9
  268. package/esm/v1/components/v1-component-renderer.d.ts.map +1 -1
  269. package/esm/v1/components/v1-component-renderer.js +12 -12
  270. package/esm/v1/components/v1-component-renderer.js.map +1 -1
  271. package/esm/v1/components/v1-component-renderer.test.js +16 -16
  272. package/esm/v1/components/v1-component-renderer.test.js.map +1 -1
  273. package/{dist/hooks/use-current-message.d.ts → esm/v1/hooks/use-tambo-current-message.d.ts} +30 -9
  274. package/esm/v1/hooks/use-tambo-current-message.d.ts.map +1 -0
  275. package/esm/{hooks/use-current-message.js → v1/hooks/use-tambo-current-message.js} +13 -8
  276. package/esm/v1/hooks/use-tambo-current-message.js.map +1 -0
  277. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts +11 -0
  278. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -0
  279. package/esm/v1/hooks/use-tambo-v1-auth-state.js +45 -0
  280. package/esm/v1/hooks/use-tambo-v1-auth-state.js.map +1 -0
  281. package/esm/v1/hooks/use-tambo-v1-auth-state.test.d.ts +2 -0
  282. package/esm/v1/hooks/use-tambo-v1-auth-state.test.d.ts.map +1 -0
  283. package/esm/v1/hooks/use-tambo-v1-auth-state.test.js +100 -0
  284. package/esm/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -0
  285. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts +7 -6
  286. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  287. package/esm/v1/hooks/use-tambo-v1-component-state.js +101 -28
  288. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  289. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +152 -27
  290. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  291. package/esm/v1/hooks/use-tambo-v1-messages.d.ts +9 -9
  292. package/esm/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -1
  293. package/esm/v1/hooks/use-tambo-v1-messages.js +3 -3
  294. package/esm/v1/hooks/use-tambo-v1-messages.js.map +1 -1
  295. package/esm/v1/hooks/use-tambo-v1-messages.test.js +16 -8
  296. package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  297. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +21 -3
  298. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  299. package/esm/v1/hooks/use-tambo-v1-send-message.js +93 -18
  300. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  301. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +318 -45
  302. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  303. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts +7 -7
  304. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
  305. package/esm/v1/hooks/use-tambo-v1-stream-status.js +14 -16
  306. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  307. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +32 -32
  308. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  309. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +7 -7
  310. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  311. package/esm/v1/hooks/use-tambo-v1-suggestions.js +11 -11
  312. package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  313. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +48 -48
  314. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  315. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +3 -3
  316. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -1
  317. package/esm/v1/hooks/use-tambo-v1-thread-input.js +3 -3
  318. package/esm/v1/hooks/use-tambo-v1-thread-input.js.map +1 -1
  319. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +43 -30
  320. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  321. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +4 -4
  322. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  323. package/esm/v1/hooks/use-tambo-v1-thread-list.js +8 -4
  324. package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  325. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +20 -18
  326. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  327. package/esm/v1/hooks/use-tambo-v1-thread.d.ts +3 -3
  328. package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  329. package/esm/v1/hooks/use-tambo-v1-thread.js +6 -2
  330. package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  331. package/esm/v1/hooks/use-tambo-v1-thread.test.js +11 -5
  332. package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  333. package/esm/v1/hooks/use-tambo-v1.d.ts +16 -5
  334. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  335. package/esm/v1/hooks/use-tambo-v1.js +14 -6
  336. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  337. package/esm/v1/hooks/use-tambo-v1.test.js +67 -45
  338. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  339. package/esm/v1/index.d.ts +34 -27
  340. package/esm/v1/index.d.ts.map +1 -1
  341. package/esm/v1/index.js +40 -33
  342. package/esm/v1/index.js.map +1 -1
  343. package/esm/v1/providers/tambo-v1-provider.d.ts +35 -20
  344. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  345. package/esm/v1/providers/tambo-v1-provider.js +63 -26
  346. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  347. package/esm/v1/providers/tambo-v1-provider.test.js +41 -24
  348. package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
  349. package/esm/v1/providers/tambo-v1-stream-context.d.ts +21 -15
  350. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  351. package/esm/v1/providers/tambo-v1-stream-context.js +66 -27
  352. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  353. package/esm/v1/providers/tambo-v1-stream-context.test.js +15 -6
  354. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  355. package/esm/v1/providers/tambo-v1-stub-provider.d.ts +9 -9
  356. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  357. package/esm/v1/providers/tambo-v1-stub-provider.js +13 -9
  358. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  359. package/esm/v1/providers/tambo-v1-stub-provider.test.js +28 -28
  360. package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  361. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +20 -9
  362. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  363. package/esm/v1/providers/tambo-v1-thread-input-provider.js +23 -14
  364. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  365. package/esm/v1/types/auth.d.ts +24 -0
  366. package/esm/v1/types/auth.d.ts.map +1 -0
  367. package/esm/v1/types/auth.js +2 -0
  368. package/esm/v1/types/auth.js.map +1 -0
  369. package/esm/v1/types/component.d.ts +3 -3
  370. package/esm/v1/types/component.d.ts.map +1 -1
  371. package/esm/v1/types/component.js +2 -2
  372. package/esm/v1/types/component.js.map +1 -1
  373. package/esm/v1/types/event.d.ts +1 -1
  374. package/esm/v1/types/event.js +1 -1
  375. package/esm/v1/types/event.js.map +1 -1
  376. package/esm/v1/types/message.d.ts +19 -12
  377. package/esm/v1/types/message.d.ts.map +1 -1
  378. package/esm/v1/types/message.js +1 -1
  379. package/esm/v1/types/message.js.map +1 -1
  380. package/esm/v1/types/thread.d.ts +8 -6
  381. package/esm/v1/types/thread.d.ts.map +1 -1
  382. package/esm/v1/types/thread.js +1 -1
  383. package/esm/v1/types/thread.js.map +1 -1
  384. package/esm/v1/types/tool-choice.d.ts +8 -0
  385. package/esm/v1/types/tool-choice.d.ts.map +1 -0
  386. package/esm/v1/types/tool-choice.js +2 -0
  387. package/esm/v1/types/tool-choice.js.map +1 -0
  388. package/esm/v1/utils/component-renderer.d.ts +11 -5
  389. package/esm/v1/utils/component-renderer.d.ts.map +1 -1
  390. package/esm/v1/utils/component-renderer.js +13 -5
  391. package/esm/v1/utils/component-renderer.js.map +1 -1
  392. package/esm/v1/utils/component-renderer.test.js +8 -8
  393. package/esm/v1/utils/component-renderer.test.js.map +1 -1
  394. package/esm/v1/utils/event-accumulator.d.ts +34 -8
  395. package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
  396. package/esm/v1/utils/event-accumulator.js +89 -27
  397. package/esm/v1/utils/event-accumulator.js.map +1 -1
  398. package/esm/v1/utils/event-accumulator.test.js +149 -8
  399. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  400. package/esm/v1/utils/keyed-throttle.d.ts +42 -0
  401. package/esm/v1/utils/keyed-throttle.d.ts.map +1 -0
  402. package/esm/v1/utils/keyed-throttle.js +83 -0
  403. package/esm/v1/utils/keyed-throttle.js.map +1 -0
  404. package/esm/v1/utils/keyed-throttle.test.d.ts +2 -0
  405. package/esm/v1/utils/keyed-throttle.test.d.ts.map +1 -0
  406. package/esm/v1/utils/keyed-throttle.test.js +145 -0
  407. package/esm/v1/utils/keyed-throttle.test.js.map +1 -0
  408. package/esm/v1/utils/registry-conversion.d.ts +18 -18
  409. package/esm/v1/utils/registry-conversion.d.ts.map +1 -1
  410. package/esm/v1/utils/registry-conversion.js +25 -23
  411. package/esm/v1/utils/registry-conversion.js.map +1 -1
  412. package/esm/v1/utils/registry-conversion.test.js +23 -0
  413. package/esm/v1/utils/registry-conversion.test.js.map +1 -1
  414. package/esm/v1/utils/stream-handler.d.ts +1 -1
  415. package/esm/v1/utils/stream-handler.js +1 -1
  416. package/esm/v1/utils/stream-handler.js.map +1 -1
  417. package/esm/v1/utils/thread-utils.d.ts +2 -2
  418. package/esm/v1/utils/thread-utils.d.ts.map +1 -1
  419. package/esm/v1/utils/thread-utils.js.map +1 -1
  420. package/esm/v1/utils/tool-call-tracker.d.ts +11 -1
  421. package/esm/v1/utils/tool-call-tracker.d.ts.map +1 -1
  422. package/esm/v1/utils/tool-call-tracker.js +14 -1
  423. package/esm/v1/utils/tool-call-tracker.js.map +1 -1
  424. package/esm/v1/utils/tool-call-tracker.test.d.ts +2 -0
  425. package/esm/v1/utils/tool-call-tracker.test.d.ts.map +1 -0
  426. package/esm/v1/utils/tool-call-tracker.test.js +65 -0
  427. package/esm/v1/utils/tool-call-tracker.test.js.map +1 -0
  428. package/esm/v1/utils/tool-executor.d.ts +35 -1
  429. package/esm/v1/utils/tool-executor.d.ts.map +1 -1
  430. package/esm/v1/utils/tool-executor.js +55 -2
  431. package/esm/v1/utils/tool-executor.js.map +1 -1
  432. package/esm/v1/utils/tool-executor.test.js +212 -1
  433. package/esm/v1/utils/tool-executor.test.js.map +1 -1
  434. package/package.json +5 -10
  435. package/dist/hooks/index.d.ts +0 -9
  436. package/dist/hooks/index.d.ts.map +0 -1
  437. package/dist/hooks/index.js +0 -34
  438. package/dist/hooks/index.js.map +0 -1
  439. package/dist/hooks/use-component-state.d.ts +0 -30
  440. package/dist/hooks/use-component-state.d.ts.map +0 -1
  441. package/dist/hooks/use-component-state.js +0 -139
  442. package/dist/hooks/use-component-state.js.map +0 -1
  443. package/dist/hooks/use-component-state.test.d.ts +0 -2
  444. package/dist/hooks/use-component-state.test.d.ts.map +0 -1
  445. package/dist/hooks/use-component-state.test.js +0 -406
  446. package/dist/hooks/use-component-state.test.js.map +0 -1
  447. package/dist/hooks/use-current-message.d.ts.map +0 -1
  448. package/dist/hooks/use-current-message.js.map +0 -1
  449. package/dist/hooks/use-current-message.test.d.ts +0 -2
  450. package/dist/hooks/use-current-message.test.d.ts.map +0 -1
  451. package/dist/hooks/use-current-message.test.js +0 -269
  452. package/dist/hooks/use-current-message.test.js.map +0 -1
  453. package/dist/hooks/use-streaming-props.d.ts +0 -11
  454. package/dist/hooks/use-streaming-props.d.ts.map +0 -1
  455. package/dist/hooks/use-streaming-props.js +0 -37
  456. package/dist/hooks/use-streaming-props.js.map +0 -1
  457. package/dist/hooks/use-suggestions.d.ts +0 -46
  458. package/dist/hooks/use-suggestions.d.ts.map +0 -1
  459. package/dist/hooks/use-suggestions.js +0 -118
  460. package/dist/hooks/use-suggestions.js.map +0 -1
  461. package/dist/hooks/use-suggestions.test.d.ts +0 -2
  462. package/dist/hooks/use-suggestions.test.d.ts.map +0 -1
  463. package/dist/hooks/use-suggestions.test.js +0 -247
  464. package/dist/hooks/use-suggestions.test.js.map +0 -1
  465. package/dist/hooks/use-tambo-stream-status.d.ts +0 -90
  466. package/dist/hooks/use-tambo-stream-status.d.ts.map +0 -1
  467. package/dist/hooks/use-tambo-stream-status.js +0 -213
  468. package/dist/hooks/use-tambo-stream-status.js.map +0 -1
  469. package/dist/hooks/use-tambo-stream-status.test.d.ts +0 -2
  470. package/dist/hooks/use-tambo-stream-status.test.d.ts.map +0 -1
  471. package/dist/hooks/use-tambo-stream-status.test.js +0 -378
  472. package/dist/hooks/use-tambo-stream-status.test.js.map +0 -1
  473. package/dist/hooks/use-tambo-threads.d.ts +0 -158
  474. package/dist/hooks/use-tambo-threads.d.ts.map +0 -1
  475. package/dist/hooks/use-tambo-threads.js +0 -45
  476. package/dist/hooks/use-tambo-threads.js.map +0 -1
  477. package/dist/hooks/use-tambo-threads.test.d.ts +0 -2
  478. package/dist/hooks/use-tambo-threads.test.d.ts.map +0 -1
  479. package/dist/hooks/use-tambo-threads.test.js +0 -214
  480. package/dist/hooks/use-tambo-threads.test.js.map +0 -1
  481. package/dist/model/generate-component-response.d.ts +0 -37
  482. package/dist/model/generate-component-response.d.ts.map +0 -1
  483. package/dist/model/generate-component-response.js +0 -29
  484. package/dist/model/generate-component-response.js.map +0 -1
  485. package/dist/model/tambo-thread.d.ts +0 -15
  486. package/dist/model/tambo-thread.d.ts.map +0 -1
  487. package/dist/model/tambo-thread.js.map +0 -1
  488. package/dist/providers/__tests__/thread-input-resource-resolution.test.d.ts +0 -2
  489. package/dist/providers/__tests__/thread-input-resource-resolution.test.d.ts.map +0 -1
  490. package/dist/providers/__tests__/thread-input-resource-resolution.test.js +0 -592
  491. package/dist/providers/__tests__/thread-input-resource-resolution.test.js.map +0 -1
  492. package/dist/providers/index.d.ts +0 -13
  493. package/dist/providers/index.d.ts.map +0 -1
  494. package/dist/providers/index.js +0 -41
  495. package/dist/providers/index.js.map +0 -1
  496. package/dist/providers/tambo-component-provider.d.ts +0 -23
  497. package/dist/providers/tambo-component-provider.d.ts.map +0 -1
  498. package/dist/providers/tambo-component-provider.js +0 -88
  499. package/dist/providers/tambo-component-provider.js.map +0 -1
  500. package/dist/providers/tambo-prop-stream-provider/index.d.ts +0 -19
  501. package/dist/providers/tambo-prop-stream-provider/index.d.ts.map +0 -1
  502. package/dist/providers/tambo-prop-stream-provider/index.js +0 -43
  503. package/dist/providers/tambo-prop-stream-provider/index.js.map +0 -1
  504. package/dist/providers/tambo-prop-stream-provider/pending.d.ts +0 -12
  505. package/dist/providers/tambo-prop-stream-provider/pending.d.ts.map +0 -1
  506. package/dist/providers/tambo-prop-stream-provider/pending.js +0 -31
  507. package/dist/providers/tambo-prop-stream-provider/pending.js.map +0 -1
  508. package/dist/providers/tambo-prop-stream-provider/provider.d.ts +0 -17
  509. package/dist/providers/tambo-prop-stream-provider/provider.d.ts.map +0 -1
  510. package/dist/providers/tambo-prop-stream-provider/provider.js +0 -107
  511. package/dist/providers/tambo-prop-stream-provider/provider.js.map +0 -1
  512. package/dist/providers/tambo-prop-stream-provider/streaming.d.ts +0 -12
  513. package/dist/providers/tambo-prop-stream-provider/streaming.d.ts.map +0 -1
  514. package/dist/providers/tambo-prop-stream-provider/streaming.js +0 -28
  515. package/dist/providers/tambo-prop-stream-provider/streaming.js.map +0 -1
  516. package/dist/providers/tambo-prop-stream-provider/success.d.ts +0 -12
  517. package/dist/providers/tambo-prop-stream-provider/success.d.ts.map +0 -1
  518. package/dist/providers/tambo-prop-stream-provider/success.js +0 -28
  519. package/dist/providers/tambo-prop-stream-provider/success.js.map +0 -1
  520. package/dist/providers/tambo-prop-stream-provider/types.d.ts +0 -25
  521. package/dist/providers/tambo-prop-stream-provider/types.d.ts.map +0 -1
  522. package/dist/providers/tambo-prop-stream-provider/types.js +0 -6
  523. package/dist/providers/tambo-prop-stream-provider/types.js.map +0 -1
  524. package/dist/providers/tambo-prop-stream-provider.test.d.ts +0 -2
  525. package/dist/providers/tambo-prop-stream-provider.test.d.ts.map +0 -1
  526. package/dist/providers/tambo-prop-stream-provider.test.js +0 -275
  527. package/dist/providers/tambo-prop-stream-provider.test.js.map +0 -1
  528. package/dist/providers/tambo-provider.d.ts +0 -53
  529. package/dist/providers/tambo-provider.d.ts.map +0 -1
  530. package/dist/providers/tambo-provider.js +0 -130
  531. package/dist/providers/tambo-provider.js.map +0 -1
  532. package/dist/providers/tambo-stubs.d.ts +0 -89
  533. package/dist/providers/tambo-stubs.d.ts.map +0 -1
  534. package/dist/providers/tambo-stubs.js +0 -276
  535. package/dist/providers/tambo-stubs.js.map +0 -1
  536. package/dist/providers/tambo-stubs.test.d.ts +0 -2
  537. package/dist/providers/tambo-stubs.test.d.ts.map +0 -1
  538. package/dist/providers/tambo-stubs.test.js +0 -97
  539. package/dist/providers/tambo-stubs.test.js.map +0 -1
  540. package/dist/providers/tambo-thread-input-provider.d.ts +0 -65
  541. package/dist/providers/tambo-thread-input-provider.d.ts.map +0 -1
  542. package/dist/providers/tambo-thread-input-provider.js +0 -179
  543. package/dist/providers/tambo-thread-input-provider.js.map +0 -1
  544. package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts +0 -2
  545. package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  546. package/dist/providers/tambo-thread-provider-initial-messages.test.js +0 -275
  547. package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +0 -1
  548. package/dist/providers/tambo-thread-provider.d.ts +0 -126
  549. package/dist/providers/tambo-thread-provider.d.ts.map +0 -1
  550. package/dist/providers/tambo-thread-provider.js +0 -931
  551. package/dist/providers/tambo-thread-provider.js.map +0 -1
  552. package/dist/providers/tambo-thread-provider.test.d.ts +0 -2
  553. package/dist/providers/tambo-thread-provider.test.d.ts.map +0 -1
  554. package/dist/providers/tambo-thread-provider.test.js +0 -1588
  555. package/dist/providers/tambo-thread-provider.test.js.map +0 -1
  556. package/dist/util/generate-component.d.ts +0 -12
  557. package/dist/util/generate-component.d.ts.map +0 -1
  558. package/dist/util/generate-component.js +0 -58
  559. package/dist/util/generate-component.js.map +0 -1
  560. package/dist/util/generate-component.test.d.ts +0 -2
  561. package/dist/util/generate-component.test.d.ts.map +0 -1
  562. package/dist/util/generate-component.test.js +0 -340
  563. package/dist/util/generate-component.test.js.map +0 -1
  564. package/esm/hooks/index.d.ts +0 -9
  565. package/esm/hooks/index.d.ts.map +0 -1
  566. package/esm/hooks/index.js +0 -10
  567. package/esm/hooks/index.js.map +0 -1
  568. package/esm/hooks/use-component-state.d.ts +0 -30
  569. package/esm/hooks/use-component-state.d.ts.map +0 -1
  570. package/esm/hooks/use-component-state.js +0 -136
  571. package/esm/hooks/use-component-state.js.map +0 -1
  572. package/esm/hooks/use-component-state.test.d.ts +0 -2
  573. package/esm/hooks/use-component-state.test.d.ts.map +0 -1
  574. package/esm/hooks/use-component-state.test.js +0 -401
  575. package/esm/hooks/use-component-state.test.js.map +0 -1
  576. package/esm/hooks/use-current-message.d.ts.map +0 -1
  577. package/esm/hooks/use-current-message.js.map +0 -1
  578. package/esm/hooks/use-current-message.test.d.ts +0 -2
  579. package/esm/hooks/use-current-message.test.d.ts.map +0 -1
  580. package/esm/hooks/use-current-message.test.js +0 -264
  581. package/esm/hooks/use-current-message.test.js.map +0 -1
  582. package/esm/hooks/use-streaming-props.d.ts +0 -11
  583. package/esm/hooks/use-streaming-props.d.ts.map +0 -1
  584. package/esm/hooks/use-streaming-props.js +0 -34
  585. package/esm/hooks/use-streaming-props.js.map +0 -1
  586. package/esm/hooks/use-suggestions.d.ts +0 -46
  587. package/esm/hooks/use-suggestions.d.ts.map +0 -1
  588. package/esm/hooks/use-suggestions.js +0 -115
  589. package/esm/hooks/use-suggestions.js.map +0 -1
  590. package/esm/hooks/use-suggestions.test.d.ts +0 -2
  591. package/esm/hooks/use-suggestions.test.d.ts.map +0 -1
  592. package/esm/hooks/use-suggestions.test.js +0 -245
  593. package/esm/hooks/use-suggestions.test.js.map +0 -1
  594. package/esm/hooks/use-tambo-stream-status.d.ts +0 -90
  595. package/esm/hooks/use-tambo-stream-status.d.ts.map +0 -1
  596. package/esm/hooks/use-tambo-stream-status.js +0 -210
  597. package/esm/hooks/use-tambo-stream-status.js.map +0 -1
  598. package/esm/hooks/use-tambo-stream-status.test.d.ts +0 -2
  599. package/esm/hooks/use-tambo-stream-status.test.d.ts.map +0 -1
  600. package/esm/hooks/use-tambo-stream-status.test.js +0 -376
  601. package/esm/hooks/use-tambo-stream-status.test.js.map +0 -1
  602. package/esm/hooks/use-tambo-threads.d.ts +0 -158
  603. package/esm/hooks/use-tambo-threads.d.ts.map +0 -1
  604. package/esm/hooks/use-tambo-threads.js +0 -42
  605. package/esm/hooks/use-tambo-threads.js.map +0 -1
  606. package/esm/hooks/use-tambo-threads.test.d.ts +0 -2
  607. package/esm/hooks/use-tambo-threads.test.d.ts.map +0 -1
  608. package/esm/hooks/use-tambo-threads.test.js +0 -212
  609. package/esm/hooks/use-tambo-threads.test.js.map +0 -1
  610. package/esm/model/generate-component-response.d.ts +0 -37
  611. package/esm/model/generate-component-response.d.ts.map +0 -1
  612. package/esm/model/generate-component-response.js +0 -25
  613. package/esm/model/generate-component-response.js.map +0 -1
  614. package/esm/model/tambo-thread.d.ts +0 -15
  615. package/esm/model/tambo-thread.d.ts.map +0 -1
  616. package/esm/model/tambo-thread.js +0 -2
  617. package/esm/model/tambo-thread.js.map +0 -1
  618. package/esm/providers/__tests__/thread-input-resource-resolution.test.d.ts +0 -2
  619. package/esm/providers/__tests__/thread-input-resource-resolution.test.d.ts.map +0 -1
  620. package/esm/providers/__tests__/thread-input-resource-resolution.test.js +0 -587
  621. package/esm/providers/__tests__/thread-input-resource-resolution.test.js.map +0 -1
  622. package/esm/providers/index.d.ts +0 -13
  623. package/esm/providers/index.d.ts.map +0 -1
  624. package/esm/providers/index.js +0 -11
  625. package/esm/providers/index.js.map +0 -1
  626. package/esm/providers/tambo-component-provider.d.ts +0 -23
  627. package/esm/providers/tambo-component-provider.d.ts.map +0 -1
  628. package/esm/providers/tambo-component-provider.js +0 -50
  629. package/esm/providers/tambo-component-provider.js.map +0 -1
  630. package/esm/providers/tambo-prop-stream-provider/index.d.ts +0 -19
  631. package/esm/providers/tambo-prop-stream-provider/index.d.ts.map +0 -1
  632. package/esm/providers/tambo-prop-stream-provider/index.js +0 -22
  633. package/esm/providers/tambo-prop-stream-provider/index.js.map +0 -1
  634. package/esm/providers/tambo-prop-stream-provider/pending.d.ts +0 -12
  635. package/esm/providers/tambo-prop-stream-provider/pending.d.ts.map +0 -1
  636. package/esm/providers/tambo-prop-stream-provider/pending.js +0 -24
  637. package/esm/providers/tambo-prop-stream-provider/pending.js.map +0 -1
  638. package/esm/providers/tambo-prop-stream-provider/provider.d.ts +0 -17
  639. package/esm/providers/tambo-prop-stream-provider/provider.d.ts.map +0 -1
  640. package/esm/providers/tambo-prop-stream-provider/provider.js +0 -70
  641. package/esm/providers/tambo-prop-stream-provider/provider.js.map +0 -1
  642. package/esm/providers/tambo-prop-stream-provider/streaming.d.ts +0 -12
  643. package/esm/providers/tambo-prop-stream-provider/streaming.d.ts.map +0 -1
  644. package/esm/providers/tambo-prop-stream-provider/streaming.js +0 -21
  645. package/esm/providers/tambo-prop-stream-provider/streaming.js.map +0 -1
  646. package/esm/providers/tambo-prop-stream-provider/success.d.ts +0 -12
  647. package/esm/providers/tambo-prop-stream-provider/success.d.ts.map +0 -1
  648. package/esm/providers/tambo-prop-stream-provider/success.js +0 -21
  649. package/esm/providers/tambo-prop-stream-provider/success.js.map +0 -1
  650. package/esm/providers/tambo-prop-stream-provider/types.d.ts +0 -25
  651. package/esm/providers/tambo-prop-stream-provider/types.d.ts.map +0 -1
  652. package/esm/providers/tambo-prop-stream-provider/types.js +0 -3
  653. package/esm/providers/tambo-prop-stream-provider/types.js.map +0 -1
  654. package/esm/providers/tambo-prop-stream-provider.test.d.ts +0 -2
  655. package/esm/providers/tambo-prop-stream-provider.test.d.ts.map +0 -1
  656. package/esm/providers/tambo-prop-stream-provider.test.js +0 -270
  657. package/esm/providers/tambo-prop-stream-provider.test.js.map +0 -1
  658. package/esm/providers/tambo-provider.d.ts +0 -53
  659. package/esm/providers/tambo-provider.d.ts.map +0 -1
  660. package/esm/providers/tambo-provider.js +0 -91
  661. package/esm/providers/tambo-provider.js.map +0 -1
  662. package/esm/providers/tambo-stubs.d.ts +0 -89
  663. package/esm/providers/tambo-stubs.d.ts.map +0 -1
  664. package/esm/providers/tambo-stubs.js +0 -239
  665. package/esm/providers/tambo-stubs.js.map +0 -1
  666. package/esm/providers/tambo-stubs.test.d.ts +0 -2
  667. package/esm/providers/tambo-stubs.test.d.ts.map +0 -1
  668. package/esm/providers/tambo-stubs.test.js +0 -62
  669. package/esm/providers/tambo-stubs.test.js.map +0 -1
  670. package/esm/providers/tambo-thread-input-provider.d.ts +0 -65
  671. package/esm/providers/tambo-thread-input-provider.d.ts.map +0 -1
  672. package/esm/providers/tambo-thread-input-provider.js +0 -141
  673. package/esm/providers/tambo-thread-input-provider.js.map +0 -1
  674. package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts +0 -2
  675. package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  676. package/esm/providers/tambo-thread-provider-initial-messages.test.js +0 -270
  677. package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +0 -1
  678. package/esm/providers/tambo-thread-provider.d.ts +0 -126
  679. package/esm/providers/tambo-thread-provider.d.ts.map +0 -1
  680. package/esm/providers/tambo-thread-provider.js +0 -891
  681. package/esm/providers/tambo-thread-provider.js.map +0 -1
  682. package/esm/providers/tambo-thread-provider.test.d.ts +0 -2
  683. package/esm/providers/tambo-thread-provider.test.d.ts.map +0 -1
  684. package/esm/providers/tambo-thread-provider.test.js +0 -1550
  685. package/esm/providers/tambo-thread-provider.test.js.map +0 -1
  686. package/esm/util/generate-component.d.ts +0 -12
  687. package/esm/util/generate-component.d.ts.map +0 -1
  688. package/esm/util/generate-component.js +0 -52
  689. package/esm/util/generate-component.js.map +0 -1
  690. package/esm/util/generate-component.test.d.ts +0 -2
  691. package/esm/util/generate-component.test.d.ts.map +0 -1
  692. package/esm/util/generate-component.test.js +0 -302
  693. package/esm/util/generate-component.test.js.map +0 -1
@@ -5,22 +5,28 @@ import React from "react";
5
5
  import { z } from "zod";
6
6
  import { useTamboClient, useTamboQueryClient, } from "../../providers/tambo-client-provider.js";
7
7
  import { TamboRegistryContext } from "../../providers/tambo-registry-provider.js";
8
- import { useTamboV1Config } from "../providers/tambo-v1-provider.js";
9
- import { TamboV1StreamProvider } from "../providers/tambo-v1-stream-context.js";
10
- import { createRunStream, useTamboV1SendMessage, } from "./use-tambo-v1-send-message.js";
8
+ import { useTamboConfig } from "../providers/tambo-v1-provider.js";
9
+ import { TamboStreamProvider } from "../providers/tambo-v1-stream-context.js";
10
+ import { createRunStream, useTamboSendMessage, } from "./use-tambo-v1-send-message.js";
11
11
  jest.mock("../../providers/tambo-client-provider", () => ({
12
12
  useTamboClient: jest.fn(),
13
13
  useTamboQueryClient: jest.fn(),
14
14
  }));
15
15
  jest.mock("../providers/tambo-v1-provider", () => ({
16
- useTamboV1Config: jest.fn(),
16
+ useTamboConfig: jest.fn(),
17
+ }));
18
+ jest.mock("./use-tambo-v1-auth-state", () => ({
19
+ useTamboAuthState: () => ({
20
+ status: "identified",
21
+ source: "userKey",
22
+ }),
17
23
  }));
18
24
  jest.mock("../../providers/tambo-context-helpers-provider", () => ({
19
25
  useTamboContextHelpers: () => ({
20
26
  getAdditionalContext: jest.fn().mockResolvedValue([]),
21
27
  }),
22
28
  }));
23
- describe("useTamboV1SendMessage", () => {
29
+ describe("useTamboSendMessage", () => {
24
30
  const mockThreadsRunsApi = {
25
31
  run: jest.fn(),
26
32
  create: jest.fn(),
@@ -39,7 +45,7 @@ describe("useTamboV1SendMessage", () => {
39
45
  function TestWrapper({ children }) {
40
46
  return (React.createElement(QueryClientProvider, { client: queryClient },
41
47
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
42
- React.createElement(TamboV1StreamProvider, null, children))));
48
+ React.createElement(TamboStreamProvider, null, children))));
43
49
  }
44
50
  beforeEach(() => {
45
51
  queryClient = new QueryClient({
@@ -50,12 +56,12 @@ describe("useTamboV1SendMessage", () => {
50
56
  });
51
57
  jest.mocked(useTamboClient).mockReturnValue(mockTamboAI);
52
58
  jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);
53
- jest.mocked(useTamboV1Config).mockReturnValue({ userKey: undefined });
59
+ jest.mocked(useTamboConfig).mockReturnValue({ userKey: undefined });
54
60
  mockThreadsRunsApi.run.mockReset();
55
61
  mockThreadsRunsApi.create.mockReset();
56
62
  });
57
63
  it("returns a mutation object", () => {
58
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
64
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
59
65
  wrapper: TestWrapper,
60
66
  });
61
67
  expect(result.current.mutate).toBeDefined();
@@ -63,7 +69,7 @@ describe("useTamboV1SendMessage", () => {
63
69
  expect(result.current.isPending).toBe(false);
64
70
  });
65
71
  it("returns a mutation object when threadId is not provided", () => {
66
- const { result } = renderHook(() => useTamboV1SendMessage(), {
72
+ const { result } = renderHook(() => useTamboSendMessage(), {
67
73
  wrapper: TestWrapper,
68
74
  });
69
75
  expect(result.current.mutate).toBeDefined();
@@ -240,7 +246,7 @@ describe("createRunStream", () => {
240
246
  expect(callArgs.tools).toEqual([]);
241
247
  });
242
248
  });
243
- describe("useTamboV1SendMessage mutation", () => {
249
+ describe("useTamboSendMessage mutation", () => {
244
250
  const mockThreadsRunsApi = {
245
251
  run: jest.fn(),
246
252
  create: jest.fn(),
@@ -270,7 +276,7 @@ describe("useTamboV1SendMessage mutation", () => {
270
276
  });
271
277
  jest.mocked(useTamboClient).mockReturnValue(mockTamboAI);
272
278
  jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);
273
- jest.mocked(useTamboV1Config).mockReturnValue({ userKey: undefined });
279
+ jest.mocked(useTamboConfig).mockReturnValue({ userKey: undefined });
274
280
  mockThreadsRunsApi.run.mockReset();
275
281
  mockThreadsRunsApi.create.mockReset();
276
282
  });
@@ -291,9 +297,9 @@ describe("useTamboV1SendMessage mutation", () => {
291
297
  function TestWrapper({ children }) {
292
298
  return (React.createElement(QueryClientProvider, { client: queryClient },
293
299
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
294
- React.createElement(TamboV1StreamProvider, null, children))));
300
+ React.createElement(TamboStreamProvider, null, children))));
295
301
  }
296
- const { result } = renderHook(() => useTamboV1SendMessage(), {
302
+ const { result } = renderHook(() => useTamboSendMessage(), {
297
303
  wrapper: TestWrapper,
298
304
  });
299
305
  let mutationResult;
@@ -319,9 +325,9 @@ describe("useTamboV1SendMessage mutation", () => {
319
325
  function TestWrapper({ children }) {
320
326
  return (React.createElement(QueryClientProvider, { client: queryClient },
321
327
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
322
- React.createElement(TamboV1StreamProvider, null, children))));
328
+ React.createElement(TamboStreamProvider, null, children))));
323
329
  }
324
- const { result } = renderHook(() => useTamboV1SendMessage(), {
330
+ const { result } = renderHook(() => useTamboSendMessage(), {
325
331
  wrapper: TestWrapper,
326
332
  });
327
333
  await expect(act(async () => {
@@ -396,9 +402,9 @@ describe("useTamboV1SendMessage mutation", () => {
396
402
  function TestWrapper({ children }) {
397
403
  return (React.createElement(QueryClientProvider, { client: queryClient },
398
404
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
399
- React.createElement(TamboV1StreamProvider, null, children))));
405
+ React.createElement(TamboStreamProvider, null, children))));
400
406
  }
401
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
407
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
402
408
  wrapper: TestWrapper,
403
409
  });
404
410
  await act(async () => {
@@ -494,9 +500,9 @@ describe("useTamboV1SendMessage mutation", () => {
494
500
  function TestWrapper({ children }) {
495
501
  return (React.createElement(QueryClientProvider, { client: queryClient },
496
502
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
497
- React.createElement(TamboV1StreamProvider, null, children))));
503
+ React.createElement(TamboStreamProvider, null, children))));
498
504
  }
499
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
505
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
500
506
  wrapper: TestWrapper,
501
507
  });
502
508
  await act(async () => {
@@ -570,9 +576,9 @@ describe("useTamboV1SendMessage mutation", () => {
570
576
  function TestWrapper({ children }) {
571
577
  return (React.createElement(QueryClientProvider, { client: queryClient },
572
578
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
573
- React.createElement(TamboV1StreamProvider, null, children))));
579
+ React.createElement(TamboStreamProvider, null, children))));
574
580
  }
575
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
581
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
576
582
  wrapper: TestWrapper,
577
583
  });
578
584
  await act(async () => {
@@ -641,9 +647,9 @@ describe("useTamboV1SendMessage mutation", () => {
641
647
  function TestWrapper({ children }) {
642
648
  return (React.createElement(QueryClientProvider, { client: queryClient },
643
649
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
644
- React.createElement(TamboV1StreamProvider, null, children))));
650
+ React.createElement(TamboStreamProvider, null, children))));
645
651
  }
646
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
652
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
647
653
  wrapper: TestWrapper,
648
654
  });
649
655
  await act(async () => {
@@ -672,10 +678,10 @@ describe("useTamboV1SendMessage mutation", () => {
672
678
  // (though with an empty registry)
673
679
  function TestWrapperWithoutRegistry({ children, }) {
674
680
  return (React.createElement(QueryClientProvider, { client: queryClient },
675
- React.createElement(TamboV1StreamProvider, null, children)));
681
+ React.createElement(TamboStreamProvider, null, children)));
676
682
  }
677
683
  // Should not throw - default context is used
678
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
684
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
679
685
  wrapper: TestWrapperWithoutRegistry,
680
686
  });
681
687
  expect(result.current.mutate).toBeDefined();
@@ -697,10 +703,10 @@ describe("useTamboV1SendMessage mutation", () => {
697
703
  function TestWrapper({ children }) {
698
704
  return (React.createElement(QueryClientProvider, { client: queryClient },
699
705
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
700
- React.createElement(TamboV1StreamProvider, null, children))));
706
+ React.createElement(TamboStreamProvider, null, children))));
701
707
  }
702
708
  const invalidateQueriesSpy = jest.spyOn(queryClient, "invalidateQueries");
703
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
709
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
704
710
  wrapper: TestWrapper,
705
711
  });
706
712
  await act(async () => {
@@ -825,9 +831,9 @@ describe("useTamboV1SendMessage mutation", () => {
825
831
  function TestWrapper({ children }) {
826
832
  return (React.createElement(QueryClientProvider, { client: queryClient },
827
833
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
828
- React.createElement(TamboV1StreamProvider, null, children))));
834
+ React.createElement(TamboStreamProvider, null, children))));
829
835
  }
830
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
836
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
831
837
  wrapper: TestWrapper,
832
838
  });
833
839
  await act(async () => {
@@ -860,6 +866,67 @@ describe("useTamboV1SendMessage mutation", () => {
860
866
  content: [{ type: "text", text: "result from tool 2" }],
861
867
  });
862
868
  });
869
+ it("uses lastCompletedRunId as previousRunId when streaming.runId is absent", async () => {
870
+ const mockStream = createAsyncIterator([
871
+ {
872
+ type: EventType.RUN_STARTED,
873
+ runId: "run_2",
874
+ threadId: "thread_123",
875
+ },
876
+ { type: EventType.RUN_FINISHED },
877
+ ]);
878
+ mockThreadsRunsApi.run.mockResolvedValue(mockStream);
879
+ const mockRegistry = {
880
+ componentList: new Map(),
881
+ toolRegistry: new Map(),
882
+ };
883
+ // Provide stream state with lastCompletedRunId but no active streaming.runId
884
+ const stateWithLastRun = {
885
+ currentThreadId: "thread_123",
886
+ threadMap: {
887
+ thread_123: {
888
+ thread: {
889
+ id: "thread_123",
890
+ messages: [
891
+ {
892
+ id: "msg_1",
893
+ role: "user",
894
+ content: [{ type: "text", text: "Hello" }],
895
+ createdAt: "2024-01-01T00:00:00.000Z",
896
+ },
897
+ ],
898
+ status: "idle",
899
+ createdAt: "2024-01-01T00:00:00.000Z",
900
+ updatedAt: "2024-01-01T00:00:00.000Z",
901
+ lastRunCancelled: false,
902
+ },
903
+ streaming: { status: "idle" },
904
+ accumulatingToolArgs: new Map(),
905
+ lastCompletedRunId: "run_1",
906
+ },
907
+ },
908
+ };
909
+ function TestWrapper({ children }) {
910
+ return (React.createElement(QueryClientProvider, { client: queryClient },
911
+ React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
912
+ React.createElement(TamboStreamProvider, { state: stateWithLastRun, dispatch: jest.fn() }, children))));
913
+ }
914
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
915
+ wrapper: TestWrapper,
916
+ });
917
+ await act(async () => {
918
+ await result.current.mutateAsync({
919
+ message: {
920
+ role: "user",
921
+ content: [{ type: "text", text: "Follow-up" }],
922
+ },
923
+ });
924
+ });
925
+ // Should have used lastCompletedRunId as previousRunId
926
+ expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", expect.objectContaining({
927
+ previousRunId: "run_1",
928
+ }));
929
+ });
863
930
  it("logs error on mutation failure", async () => {
864
931
  const consoleSpy = jest
865
932
  .spyOn(console, "error")
@@ -873,9 +940,9 @@ describe("useTamboV1SendMessage mutation", () => {
873
940
  function TestWrapper({ children }) {
874
941
  return (React.createElement(QueryClientProvider, { client: queryClient },
875
942
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
876
- React.createElement(TamboV1StreamProvider, null, children))));
943
+ React.createElement(TamboStreamProvider, null, children))));
877
944
  }
878
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
945
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
879
946
  wrapper: TestWrapper,
880
947
  });
881
948
  try {
@@ -892,12 +959,12 @@ describe("useTamboV1SendMessage mutation", () => {
892
959
  // Expected to throw
893
960
  }
894
961
  await waitFor(() => {
895
- expect(consoleSpy).toHaveBeenCalledWith("[useTamboV1SendMessage] Mutation failed:", testError);
962
+ expect(consoleSpy).toHaveBeenCalledWith("[useTamboSendMessage] Mutation failed:", testError);
896
963
  });
897
964
  consoleSpy.mockRestore();
898
965
  });
899
966
  });
900
- describe("useTamboV1SendMessage auto thread name generation", () => {
967
+ describe("useTamboSendMessage auto thread name generation", () => {
901
968
  const mockGenerateName = jest.fn();
902
969
  const mockThreadsRunsApi = {
903
970
  run: jest.fn(),
@@ -931,7 +998,7 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
931
998
  function TestWrapper({ children }) {
932
999
  return (React.createElement(QueryClientProvider, { client: queryClient },
933
1000
  React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
934
- React.createElement(TamboV1StreamProvider, null, children))));
1001
+ React.createElement(TamboStreamProvider, null, children))));
935
1002
  }
936
1003
  function createFinishedStream(threadId) {
937
1004
  return createAsyncIterator([
@@ -972,14 +1039,14 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
972
1039
  });
973
1040
  it("calls generateName when message count reaches threshold", async () => {
974
1041
  // Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
975
- jest.mocked(useTamboV1Config).mockReturnValue({
1042
+ jest.mocked(useTamboConfig).mockReturnValue({
976
1043
  userKey: undefined,
977
1044
  autoGenerateThreadName: true,
978
1045
  autoGenerateNameThreshold: 2,
979
1046
  });
980
1047
  mockGenerateName.mockResolvedValue({ name: "Generated Thread Name" });
981
1048
  mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
982
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1049
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
983
1050
  wrapper: TestWrapper,
984
1051
  });
985
1052
  await act(async () => {
@@ -995,13 +1062,13 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
995
1062
  });
996
1063
  });
997
1064
  it("does not call generateName when autoGenerateThreadName is false", async () => {
998
- jest.mocked(useTamboV1Config).mockReturnValue({
1065
+ jest.mocked(useTamboConfig).mockReturnValue({
999
1066
  userKey: undefined,
1000
1067
  autoGenerateThreadName: false,
1001
1068
  autoGenerateNameThreshold: 3,
1002
1069
  });
1003
1070
  mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1004
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1071
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
1005
1072
  wrapper: TestWrapper,
1006
1073
  });
1007
1074
  await act(async () => {
@@ -1017,13 +1084,13 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
1017
1084
  });
1018
1085
  it("does not call generateName when message count is below threshold", async () => {
1019
1086
  // With threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → skip
1020
- jest.mocked(useTamboV1Config).mockReturnValue({
1087
+ jest.mocked(useTamboConfig).mockReturnValue({
1021
1088
  userKey: undefined,
1022
1089
  autoGenerateThreadName: true,
1023
1090
  autoGenerateNameThreshold: 3,
1024
1091
  });
1025
1092
  mockThreadsRunsApi.create.mockResolvedValue(createFinishedStream("new_thread"));
1026
- const { result } = renderHook(() => useTamboV1SendMessage(), {
1093
+ const { result } = renderHook(() => useTamboSendMessage(), {
1027
1094
  wrapper: TestWrapper,
1028
1095
  });
1029
1096
  await act(async () => {
@@ -1038,7 +1105,7 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
1038
1105
  });
1039
1106
  it("logs error when generateName fails (does not throw)", async () => {
1040
1107
  // Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
1041
- jest.mocked(useTamboV1Config).mockReturnValue({
1108
+ jest.mocked(useTamboConfig).mockReturnValue({
1042
1109
  userKey: undefined,
1043
1110
  autoGenerateThreadName: true,
1044
1111
  autoGenerateNameThreshold: 2,
@@ -1048,7 +1115,7 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
1048
1115
  .mockImplementation(() => { });
1049
1116
  mockGenerateName.mockRejectedValue(new Error("API error"));
1050
1117
  mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1051
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1118
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
1052
1119
  wrapper: TestWrapper,
1053
1120
  });
1054
1121
  await act(async () => {
@@ -1060,18 +1127,18 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
1060
1127
  });
1061
1128
  });
1062
1129
  await waitFor(() => {
1063
- expect(consoleSpy).toHaveBeenCalledWith("[useTamboV1SendMessage] Failed to auto-generate thread name:", expect.any(Error));
1130
+ expect(consoleSpy).toHaveBeenCalledWith("[useTamboSendMessage] Failed to auto-generate thread name:", expect.any(Error));
1064
1131
  });
1065
1132
  consoleSpy.mockRestore();
1066
1133
  });
1067
1134
  it("uses default config values (enabled, threshold=3)", async () => {
1068
1135
  // Don't set autoGenerateThreadName/autoGenerateNameThreshold — defaults apply
1069
- jest.mocked(useTamboV1Config).mockReturnValue({
1136
+ jest.mocked(useTamboConfig).mockReturnValue({
1070
1137
  userKey: undefined,
1071
1138
  });
1072
1139
  mockGenerateName.mockResolvedValue({ name: "Auto Name" });
1073
1140
  mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1074
- const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1141
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
1075
1142
  wrapper: TestWrapper,
1076
1143
  });
1077
1144
  await act(async () => {
@@ -1086,4 +1153,210 @@ describe("useTamboV1SendMessage auto thread name generation", () => {
1086
1153
  expect(mockGenerateName).not.toHaveBeenCalled();
1087
1154
  });
1088
1155
  });
1156
+ describe("useTamboSendMessage tamboStreamableHint", () => {
1157
+ const mockThreadsRunsApi = {
1158
+ run: jest.fn(),
1159
+ create: jest.fn(),
1160
+ };
1161
+ const mockTamboAI = {
1162
+ apiKey: "",
1163
+ threads: {
1164
+ runs: mockThreadsRunsApi,
1165
+ },
1166
+ };
1167
+ let queryClient;
1168
+ function createAsyncIterator(events) {
1169
+ return {
1170
+ [Symbol.asyncIterator]: async function* () {
1171
+ for (const event of events) {
1172
+ yield event;
1173
+ }
1174
+ },
1175
+ };
1176
+ }
1177
+ beforeEach(() => {
1178
+ queryClient = new QueryClient({
1179
+ defaultOptions: {
1180
+ queries: { retry: false },
1181
+ mutations: { retry: false },
1182
+ },
1183
+ });
1184
+ jest.mocked(useTamboClient).mockReturnValue(mockTamboAI);
1185
+ jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);
1186
+ jest.mocked(useTamboConfig).mockReturnValue({ userKey: undefined });
1187
+ mockThreadsRunsApi.run.mockReset();
1188
+ mockThreadsRunsApi.create.mockReset();
1189
+ });
1190
+ it("calls streamable tool on TOOL_CALL_ARGS events during streaming", async () => {
1191
+ const streamableToolFn = jest.fn().mockResolvedValue(undefined);
1192
+ const streamableTool = {
1193
+ name: "write_story",
1194
+ description: "Writes a story",
1195
+ tool: streamableToolFn,
1196
+ inputSchema: z.object({ text: z.string() }),
1197
+ outputSchema: z.void(),
1198
+ annotations: { tamboStreamableHint: true },
1199
+ };
1200
+ // Use Record (not Map) for toolRegistry — matches real runtime type
1201
+ const mockRegistry = {
1202
+ componentList: new Map(),
1203
+ toolRegistry: { write_story: streamableTool },
1204
+ };
1205
+ const initialStream = createAsyncIterator([
1206
+ {
1207
+ type: EventType.RUN_STARTED,
1208
+ runId: "run_1",
1209
+ threadId: "thread_123",
1210
+ },
1211
+ {
1212
+ type: EventType.TEXT_MESSAGE_START,
1213
+ messageId: "msg_1",
1214
+ role: "assistant",
1215
+ },
1216
+ {
1217
+ type: EventType.TOOL_CALL_START,
1218
+ toolCallId: "call_1",
1219
+ toolCallName: "write_story",
1220
+ parentMessageId: "msg_1",
1221
+ },
1222
+ {
1223
+ type: EventType.TOOL_CALL_ARGS,
1224
+ toolCallId: "call_1",
1225
+ delta: '{"text":"Once upon',
1226
+ },
1227
+ {
1228
+ type: EventType.TOOL_CALL_ARGS,
1229
+ toolCallId: "call_1",
1230
+ delta: ' a time"}',
1231
+ },
1232
+ {
1233
+ type: EventType.TOOL_CALL_END,
1234
+ toolCallId: "call_1",
1235
+ },
1236
+ {
1237
+ type: EventType.CUSTOM,
1238
+ name: "tambo.run.awaiting_input",
1239
+ value: {
1240
+ pendingToolCalls: [
1241
+ { toolCallId: "call_1", toolName: "write_story", arguments: "{}" },
1242
+ ],
1243
+ },
1244
+ },
1245
+ ]);
1246
+ const continueStream = createAsyncIterator([
1247
+ {
1248
+ type: EventType.RUN_STARTED,
1249
+ runId: "run_2",
1250
+ threadId: "thread_123",
1251
+ },
1252
+ { type: EventType.RUN_FINISHED },
1253
+ ]);
1254
+ mockThreadsRunsApi.run
1255
+ .mockResolvedValueOnce(initialStream)
1256
+ .mockResolvedValueOnce(continueStream);
1257
+ function TestWrapper({ children }) {
1258
+ return (React.createElement(QueryClientProvider, { client: queryClient },
1259
+ React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
1260
+ React.createElement(TamboStreamProvider, null, children))));
1261
+ }
1262
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
1263
+ wrapper: TestWrapper,
1264
+ });
1265
+ await act(async () => {
1266
+ await result.current.mutateAsync({
1267
+ message: {
1268
+ role: "user",
1269
+ content: [{ type: "text", text: "Write me a story" }],
1270
+ },
1271
+ });
1272
+ });
1273
+ // Streamable tool should have been called during TOOL_CALL_ARGS events
1274
+ // (at least once per parseable chunk)
1275
+ expect(streamableToolFn.mock.calls.length).toBeGreaterThanOrEqual(1);
1276
+ // Each streaming call should have had partial args
1277
+ const firstStreamingCall = streamableToolFn.mock.calls[0][0];
1278
+ expect(firstStreamingCall).toHaveProperty("text");
1279
+ });
1280
+ it("does NOT call non-streamable tool during TOOL_CALL_ARGS events", async () => {
1281
+ const normalToolFn = jest.fn().mockResolvedValue("result");
1282
+ const normalTool = {
1283
+ name: "normal_tool",
1284
+ description: "Normal tool (not streamable)",
1285
+ tool: normalToolFn,
1286
+ inputSchema: z.object({ query: z.string() }),
1287
+ outputSchema: z.string(),
1288
+ // No tamboStreamableHint
1289
+ };
1290
+ const mockRegistry = {
1291
+ componentList: new Map(),
1292
+ toolRegistry: { normal_tool: normalTool },
1293
+ };
1294
+ const initialStream = createAsyncIterator([
1295
+ {
1296
+ type: EventType.RUN_STARTED,
1297
+ runId: "run_1",
1298
+ threadId: "thread_123",
1299
+ },
1300
+ {
1301
+ type: EventType.TEXT_MESSAGE_START,
1302
+ messageId: "msg_1",
1303
+ role: "assistant",
1304
+ },
1305
+ {
1306
+ type: EventType.TOOL_CALL_START,
1307
+ toolCallId: "call_1",
1308
+ toolCallName: "normal_tool",
1309
+ parentMessageId: "msg_1",
1310
+ },
1311
+ {
1312
+ type: EventType.TOOL_CALL_ARGS,
1313
+ toolCallId: "call_1",
1314
+ delta: '{"query":"test"}',
1315
+ },
1316
+ {
1317
+ type: EventType.TOOL_CALL_END,
1318
+ toolCallId: "call_1",
1319
+ },
1320
+ {
1321
+ type: EventType.CUSTOM,
1322
+ name: "tambo.run.awaiting_input",
1323
+ value: {
1324
+ pendingToolCalls: [
1325
+ { toolCallId: "call_1", toolName: "normal_tool", arguments: "{}" },
1326
+ ],
1327
+ },
1328
+ },
1329
+ ]);
1330
+ const continueStream = createAsyncIterator([
1331
+ {
1332
+ type: EventType.RUN_STARTED,
1333
+ runId: "run_2",
1334
+ threadId: "thread_123",
1335
+ },
1336
+ { type: EventType.RUN_FINISHED },
1337
+ ]);
1338
+ mockThreadsRunsApi.run
1339
+ .mockResolvedValueOnce(initialStream)
1340
+ .mockResolvedValueOnce(continueStream);
1341
+ function TestWrapper({ children }) {
1342
+ return (React.createElement(QueryClientProvider, { client: queryClient },
1343
+ React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
1344
+ React.createElement(TamboStreamProvider, null, children))));
1345
+ }
1346
+ const { result } = renderHook(() => useTamboSendMessage("thread_123"), {
1347
+ wrapper: TestWrapper,
1348
+ });
1349
+ await act(async () => {
1350
+ await result.current.mutateAsync({
1351
+ message: {
1352
+ role: "user",
1353
+ content: [{ type: "text", text: "Test" }],
1354
+ },
1355
+ });
1356
+ });
1357
+ // Tool should only be called once at awaiting_input, not during streaming
1358
+ expect(normalToolFn).toHaveBeenCalledTimes(1);
1359
+ expect(normalToolFn).toHaveBeenCalledWith({ query: "test" });
1360
+ });
1361
+ });
1089
1362
  //# sourceMappingURL=use-tambo-v1-send-message.test.js.map