@tambo-ai/react 0.73.0 → 0.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/README.md +12 -12
  2. package/dist/hooks/use-component-state.d.ts +1 -1
  3. package/dist/hooks/use-component-state.js.map +1 -1
  4. package/dist/hooks/use-streaming-props.d.ts +1 -1
  5. package/dist/hooks/use-streaming-props.js +1 -1
  6. package/dist/hooks/use-streaming-props.js.map +1 -1
  7. package/dist/hooks/use-tambo-stream-status.d.ts +1 -1
  8. package/dist/hooks/use-tambo-stream-status.js +1 -1
  9. package/dist/hooks/use-tambo-stream-status.js.map +1 -1
  10. package/dist/mcp/mcp-hooks.d.ts +4 -0
  11. package/dist/mcp/mcp-hooks.d.ts.map +1 -1
  12. package/dist/mcp/mcp-hooks.js +4 -0
  13. package/dist/mcp/mcp-hooks.js.map +1 -1
  14. package/dist/providers/tambo-interactable-provider-partial-updates.test.js +3 -3
  15. package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  16. package/dist/providers/tambo-interactable-provider.js +2 -2
  17. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  18. package/dist/providers/tambo-interactable-provider.test.js +3 -3
  19. package/dist/providers/tambo-interactable-provider.test.js.map +1 -1
  20. package/dist/providers/tambo-provider.d.ts +3 -0
  21. package/dist/providers/tambo-provider.d.ts.map +1 -1
  22. package/dist/providers/tambo-provider.js +3 -0
  23. package/dist/providers/tambo-provider.js.map +1 -1
  24. package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
  25. package/dist/providers/tambo-thread-input-provider.js +1 -0
  26. package/dist/providers/tambo-thread-input-provider.js.map +1 -1
  27. package/dist/util/resource-content-resolver.d.ts.map +1 -1
  28. package/dist/util/resource-content-resolver.js +2 -0
  29. package/dist/util/resource-content-resolver.js.map +1 -1
  30. package/dist/v1/__tests__/v1-interactables.test.d.ts +2 -0
  31. package/dist/v1/__tests__/v1-interactables.test.d.ts.map +1 -0
  32. package/dist/v1/__tests__/v1-interactables.test.js +135 -0
  33. package/dist/v1/__tests__/v1-interactables.test.js.map +1 -0
  34. package/dist/v1/components/v1-component-renderer.d.ts +48 -0
  35. package/dist/v1/components/v1-component-renderer.d.ts.map +1 -0
  36. package/dist/v1/components/v1-component-renderer.js +137 -0
  37. package/dist/v1/components/v1-component-renderer.js.map +1 -0
  38. package/dist/v1/components/v1-component-renderer.test.d.ts +2 -0
  39. package/dist/v1/components/v1-component-renderer.test.d.ts.map +1 -0
  40. package/dist/v1/components/v1-component-renderer.test.js +270 -0
  41. package/dist/v1/components/v1-component-renderer.test.js.map +1 -0
  42. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  43. package/dist/v1/hooks/use-tambo-v1-component-state.js +2 -25
  44. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  45. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +2 -1
  46. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  47. package/dist/v1/hooks/use-tambo-v1-messages.test.js +25 -1
  48. package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  49. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +18 -0
  50. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  51. package/dist/v1/hooks/use-tambo-v1-send-message.js +204 -17
  52. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  53. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +261 -7
  54. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  55. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts +90 -0
  56. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -0
  57. package/dist/v1/hooks/use-tambo-v1-stream-status.js +179 -0
  58. package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -0
  59. package/dist/v1/hooks/use-tambo-v1-stream-status.test.d.ts +2 -0
  60. package/dist/v1/hooks/use-tambo-v1-stream-status.test.d.ts.map +1 -0
  61. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +371 -0
  62. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -0
  63. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +78 -54
  64. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  65. package/dist/v1/hooks/use-tambo-v1-suggestions.js +153 -87
  66. package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  67. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +213 -134
  68. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  69. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +148 -13
  70. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  71. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +8 -21
  72. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  73. package/dist/v1/hooks/use-tambo-v1-thread-list.js +11 -10
  74. package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  75. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +37 -2
  76. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  77. package/dist/v1/hooks/use-tambo-v1-thread.d.ts +1 -1
  78. package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  79. package/dist/v1/hooks/use-tambo-v1-thread.js +2 -7
  80. package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  81. package/dist/v1/hooks/use-tambo-v1-thread.test.js +2 -0
  82. package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  83. package/dist/v1/hooks/use-tambo-v1.d.ts +12 -28
  84. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  85. package/dist/v1/hooks/use-tambo-v1.js +164 -31
  86. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  87. package/dist/v1/hooks/use-tambo-v1.test.js +891 -18
  88. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  89. package/dist/v1/index.d.ts +7 -1
  90. package/dist/v1/index.d.ts.map +1 -1
  91. package/dist/v1/index.js +18 -1
  92. package/dist/v1/index.js.map +1 -1
  93. package/dist/v1/providers/tambo-v1-provider.d.ts +16 -6
  94. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  95. package/dist/v1/providers/tambo-v1-provider.js +14 -19
  96. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  97. package/dist/v1/providers/tambo-v1-provider.test.js +34 -20
  98. package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
  99. package/dist/v1/providers/tambo-v1-stream-context.d.ts +3 -3
  100. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  101. package/dist/v1/providers/tambo-v1-stream-context.js +60 -12
  102. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  103. package/dist/v1/providers/tambo-v1-stream-context.test.js +49 -20
  104. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  105. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  106. package/dist/v1/providers/tambo-v1-stub-provider.js +2 -0
  107. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  108. package/dist/v1/providers/tambo-v1-stub-provider.test.js +7 -6
  109. package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  110. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -6
  111. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  112. package/dist/v1/providers/tambo-v1-thread-input-provider.js +14 -12
  113. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  114. package/dist/v1/types/event.d.ts +9 -1
  115. package/dist/v1/types/event.d.ts.map +1 -1
  116. package/dist/v1/types/event.js.map +1 -1
  117. package/dist/v1/types/event.test.js +5 -1
  118. package/dist/v1/types/event.test.js.map +1 -1
  119. package/dist/v1/types/message.d.ts +65 -7
  120. package/dist/v1/types/message.d.ts.map +1 -1
  121. package/dist/v1/types/message.js.map +1 -1
  122. package/dist/v1/types/thread.d.ts +4 -0
  123. package/dist/v1/types/thread.d.ts.map +1 -1
  124. package/dist/v1/types/thread.js.map +1 -1
  125. package/dist/v1/utils/event-accumulator.d.ts +40 -4
  126. package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
  127. package/dist/v1/utils/event-accumulator.js +444 -35
  128. package/dist/v1/utils/event-accumulator.js.map +1 -1
  129. package/dist/v1/utils/event-accumulator.test.js +1041 -28
  130. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  131. package/dist/v1/utils/registry-conversion.d.ts +9 -9
  132. package/dist/v1/utils/registry-conversion.d.ts.map +1 -1
  133. package/dist/v1/utils/registry-conversion.js +10 -11
  134. package/dist/v1/utils/registry-conversion.js.map +1 -1
  135. package/dist/v1/utils/registry-conversion.test.js +39 -11
  136. package/dist/v1/utils/registry-conversion.test.js.map +1 -1
  137. package/dist/v1/utils/thread-utils.d.ts +16 -0
  138. package/dist/v1/utils/thread-utils.d.ts.map +1 -0
  139. package/dist/v1/utils/thread-utils.js +34 -0
  140. package/dist/v1/utils/thread-utils.js.map +1 -0
  141. package/dist/v1/utils/tool-executor.d.ts.map +1 -1
  142. package/dist/v1/utils/tool-executor.js +2 -0
  143. package/dist/v1/utils/tool-executor.js.map +1 -1
  144. package/dist/v1/utils/tool-executor.test.js +5 -0
  145. package/dist/v1/utils/tool-executor.test.js.map +1 -1
  146. package/esm/context-helpers/context-helpers-provider.test.js +2 -2
  147. package/esm/context-helpers/context-helpers.test.js +1 -1
  148. package/esm/context-helpers/current-interactables-context-helper.d.ts +1 -1
  149. package/esm/context-helpers/current-page-context-helper.d.ts +1 -1
  150. package/esm/context-helpers/current-time-context-helper.d.ts +1 -1
  151. package/esm/context-helpers/index.d.ts +4 -4
  152. package/esm/context-helpers/index.js +4 -4
  153. package/esm/hoc/with-tambo-interactable.d.ts +1 -1
  154. package/esm/hoc/with-tambo-interactable.js +2 -2
  155. package/esm/hoc/with-tambo-interactable.test.js +3 -3
  156. package/esm/hooks/index.d.ts +8 -8
  157. package/esm/hooks/index.js +8 -8
  158. package/esm/hooks/react-query-hooks.js +1 -1
  159. package/esm/hooks/use-component-state.d.ts +1 -1
  160. package/esm/hooks/use-component-state.js +3 -3
  161. package/esm/hooks/use-component-state.js.map +1 -1
  162. package/esm/hooks/use-component-state.test.js +5 -5
  163. package/esm/hooks/use-current-message.d.ts +1 -1
  164. package/esm/hooks/use-current-message.test.js +1 -1
  165. package/esm/hooks/use-message-images.test.js +1 -1
  166. package/esm/hooks/use-streaming-props.d.ts +1 -1
  167. package/esm/hooks/use-streaming-props.js +1 -1
  168. package/esm/hooks/use-streaming-props.js.map +1 -1
  169. package/esm/hooks/use-suggestions.d.ts +2 -2
  170. package/esm/hooks/use-suggestions.js +10 -10
  171. package/esm/hooks/use-suggestions.test.js +7 -7
  172. package/esm/hooks/use-tambo-stream-status.d.ts +1 -1
  173. package/esm/hooks/use-tambo-stream-status.js +4 -4
  174. package/esm/hooks/use-tambo-stream-status.js.map +1 -1
  175. package/esm/hooks/use-tambo-stream-status.test.js +4 -4
  176. package/esm/hooks/use-tambo-threads.js +3 -3
  177. package/esm/hooks/use-tambo-threads.test.js +3 -3
  178. package/esm/hooks/use-tambo-voice.js +2 -2
  179. package/esm/hooks/use-tambo-voice.test.js +3 -3
  180. package/esm/index.d.ts +22 -22
  181. package/esm/index.js +15 -15
  182. package/esm/mcp/elicitation.d.ts +1 -1
  183. package/esm/mcp/elicitation.test.js +1 -1
  184. package/esm/mcp/index.d.ts +7 -7
  185. package/esm/mcp/index.js +3 -3
  186. package/esm/mcp/mcp-client.d.ts +1 -1
  187. package/esm/mcp/mcp-client.js +1 -1
  188. package/esm/mcp/mcp-client.test.js +1 -1
  189. package/esm/mcp/mcp-hooks.d.ts +5 -1
  190. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  191. package/esm/mcp/mcp-hooks.js +8 -4
  192. package/esm/mcp/mcp-hooks.js.map +1 -1
  193. package/esm/mcp/mcp-hooks.test.js +6 -6
  194. package/esm/mcp/tambo-mcp-provider.d.ts +4 -4
  195. package/esm/mcp/tambo-mcp-provider.js +7 -7
  196. package/esm/mcp/tambo-mcp-provider.test.js +5 -5
  197. package/esm/mcp/use-mcp-servers.test.js +4 -4
  198. package/esm/model/generate-component-response.d.ts +1 -1
  199. package/esm/model/tambo-interactable.d.ts +1 -1
  200. package/esm/model/tambo-thread.d.ts +1 -1
  201. package/esm/providers/__tests__/thread-input-resource-resolution.test.js +3 -3
  202. package/esm/providers/hooks/use-tambo-session-token.test.js +1 -1
  203. package/esm/providers/index.d.ts +12 -12
  204. package/esm/providers/index.js +10 -10
  205. package/esm/providers/tambo-client-provider.js +1 -1
  206. package/esm/providers/tambo-client-provider.test.js +2 -2
  207. package/esm/providers/tambo-component-provider.d.ts +1 -1
  208. package/esm/providers/tambo-component-provider.js +2 -2
  209. package/esm/providers/tambo-context-attachment-provider.js +1 -1
  210. package/esm/providers/tambo-context-attachment-provider.test.js +2 -2
  211. package/esm/providers/tambo-context-helpers-provider.d.ts +1 -1
  212. package/esm/providers/tambo-context-helpers-provider.js +1 -1
  213. package/esm/providers/tambo-context-helpers-provider.test.js +2 -2
  214. package/esm/providers/tambo-interactable-provider-partial-updates.test.js +4 -4
  215. package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  216. package/esm/providers/tambo-interactable-provider.d.ts +5 -5
  217. package/esm/providers/tambo-interactable-provider.js +6 -6
  218. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  219. package/esm/providers/tambo-interactable-provider.test.js +4 -4
  220. package/esm/providers/tambo-interactable-provider.test.js.map +1 -1
  221. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +4 -4
  222. package/esm/providers/tambo-interactables-additional-context.test.js +4 -4
  223. package/esm/providers/tambo-mcp-token-provider.js +2 -2
  224. package/esm/providers/tambo-prop-stream-provider/index.d.ts +8 -8
  225. package/esm/providers/tambo-prop-stream-provider/index.js +9 -9
  226. package/esm/providers/tambo-prop-stream-provider/pending.d.ts +1 -1
  227. package/esm/providers/tambo-prop-stream-provider/pending.js +2 -2
  228. package/esm/providers/tambo-prop-stream-provider/provider.d.ts +1 -1
  229. package/esm/providers/tambo-prop-stream-provider/provider.js +2 -2
  230. package/esm/providers/tambo-prop-stream-provider/streaming.d.ts +1 -1
  231. package/esm/providers/tambo-prop-stream-provider/streaming.js +2 -2
  232. package/esm/providers/tambo-prop-stream-provider/success.d.ts +1 -1
  233. package/esm/providers/tambo-prop-stream-provider/success.js +2 -2
  234. package/esm/providers/tambo-prop-stream-provider/types.d.ts +1 -1
  235. package/esm/providers/tambo-prop-stream-provider.test.js +4 -4
  236. package/esm/providers/tambo-provider.d.ts +10 -7
  237. package/esm/providers/tambo-provider.d.ts.map +1 -1
  238. package/esm/providers/tambo-provider.js +13 -10
  239. package/esm/providers/tambo-provider.js.map +1 -1
  240. package/esm/providers/tambo-registry-provider.d.ts +3 -3
  241. package/esm/providers/tambo-registry-provider.js +3 -3
  242. package/esm/providers/tambo-registry-provider.test.js +2 -2
  243. package/esm/providers/tambo-registry-schema-compat.test.js +2 -2
  244. package/esm/providers/tambo-stubs.d.ts +4 -4
  245. package/esm/providers/tambo-stubs.js +9 -9
  246. package/esm/providers/tambo-stubs.test.js +2 -2
  247. package/esm/providers/tambo-thread-input-provider.d.ts +2 -2
  248. package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
  249. package/esm/providers/tambo-thread-input-provider.js +11 -10
  250. package/esm/providers/tambo-thread-input-provider.js.map +1 -1
  251. package/esm/providers/tambo-thread-provider-initial-messages.test.js +6 -6
  252. package/esm/providers/tambo-thread-provider.d.ts +2 -2
  253. package/esm/providers/tambo-thread-provider.js +8 -8
  254. package/esm/providers/tambo-thread-provider.test.js +7 -7
  255. package/esm/schema/index.d.ts +4 -4
  256. package/esm/schema/index.js +4 -4
  257. package/esm/schema/json-schema.test.js +1 -1
  258. package/esm/schema/schema.d.ts +1 -1
  259. package/esm/schema/schema.js +2 -2
  260. package/esm/schema/schema.test.js +3 -3
  261. package/esm/schema/standard-schema.test.js +1 -1
  262. package/esm/schema/validate.js +2 -2
  263. package/esm/schema/validate.test.js +1 -1
  264. package/esm/testing/tools.d.ts +3 -3
  265. package/esm/testing/tools.js +2 -2
  266. package/esm/util/content-parts.test.js +1 -1
  267. package/esm/util/generate-component.d.ts +2 -2
  268. package/esm/util/generate-component.js +4 -4
  269. package/esm/util/generate-component.test.js +2 -2
  270. package/esm/util/is-promise.test.js +1 -1
  271. package/esm/util/mcp-server-utils.d.ts +1 -1
  272. package/esm/util/mcp-server-utils.js +1 -1
  273. package/esm/util/mcp-server-utils.test.js +2 -2
  274. package/esm/util/message-builder.d.ts +1 -1
  275. package/esm/util/message-builder.test.js +1 -1
  276. package/esm/util/query-utils.test.js +1 -1
  277. package/esm/util/registry-validators.d.ts +1 -1
  278. package/esm/util/registry-validators.js +2 -2
  279. package/esm/util/registry-validators.test.js +1 -1
  280. package/esm/util/registry.d.ts +1 -1
  281. package/esm/util/registry.js +1 -1
  282. package/esm/util/registry.test.js +2 -2
  283. package/esm/util/resource-content-resolver.d.ts +2 -2
  284. package/esm/util/resource-content-resolver.d.ts.map +1 -1
  285. package/esm/util/resource-content-resolver.js +3 -1
  286. package/esm/util/resource-content-resolver.js.map +1 -1
  287. package/esm/util/resource-content-resolver.test.js +3 -3
  288. package/esm/util/resource-validators.d.ts +1 -1
  289. package/esm/util/resource-validators.test.js +1 -1
  290. package/esm/util/tool-caller.d.ts +1 -1
  291. package/esm/util/tool-caller.js +1 -1
  292. package/esm/util/validate-component-name.test.js +1 -1
  293. package/esm/v1/__tests__/v1-interactables.test.d.ts +2 -0
  294. package/esm/v1/__tests__/v1-interactables.test.d.ts.map +1 -0
  295. package/esm/v1/__tests__/v1-interactables.test.js +130 -0
  296. package/esm/v1/__tests__/v1-interactables.test.js.map +1 -0
  297. package/esm/v1/components/v1-component-renderer.d.ts +48 -0
  298. package/esm/v1/components/v1-component-renderer.d.ts.map +1 -0
  299. package/esm/v1/components/v1-component-renderer.js +100 -0
  300. package/esm/v1/components/v1-component-renderer.js.map +1 -0
  301. package/esm/v1/components/v1-component-renderer.test.d.ts +2 -0
  302. package/esm/v1/components/v1-component-renderer.test.d.ts.map +1 -0
  303. package/esm/v1/components/v1-component-renderer.test.js +265 -0
  304. package/esm/v1/components/v1-component-renderer.test.js.map +1 -0
  305. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  306. package/esm/v1/hooks/use-tambo-v1-component-state.js +4 -27
  307. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  308. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +6 -5
  309. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  310. package/esm/v1/hooks/use-tambo-v1-messages.d.ts +1 -1
  311. package/esm/v1/hooks/use-tambo-v1-messages.js +1 -1
  312. package/esm/v1/hooks/use-tambo-v1-messages.test.js +27 -3
  313. package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  314. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +20 -2
  315. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  316. package/esm/v1/hooks/use-tambo-v1-send-message.js +213 -26
  317. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  318. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +266 -12
  319. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  320. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts +90 -0
  321. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -0
  322. package/esm/v1/hooks/use-tambo-v1-stream-status.js +176 -0
  323. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -0
  324. package/esm/v1/hooks/use-tambo-v1-stream-status.test.d.ts +2 -0
  325. package/esm/v1/hooks/use-tambo-v1-stream-status.test.d.ts.map +1 -0
  326. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +369 -0
  327. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -0
  328. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +78 -54
  329. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  330. package/esm/v1/hooks/use-tambo-v1-suggestions.js +157 -91
  331. package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  332. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +218 -139
  333. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  334. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +1 -1
  335. package/esm/v1/hooks/use-tambo-v1-thread-input.js +1 -1
  336. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +151 -16
  337. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  338. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +8 -21
  339. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  340. package/esm/v1/hooks/use-tambo-v1-thread-list.js +12 -11
  341. package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  342. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +39 -4
  343. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  344. package/esm/v1/hooks/use-tambo-v1-thread.d.ts +1 -1
  345. package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  346. package/esm/v1/hooks/use-tambo-v1-thread.js +3 -8
  347. package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  348. package/esm/v1/hooks/use-tambo-v1-thread.test.js +4 -2
  349. package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  350. package/esm/v1/hooks/use-tambo-v1.d.ts +15 -31
  351. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  352. package/esm/v1/hooks/use-tambo-v1.js +134 -34
  353. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  354. package/esm/v1/hooks/use-tambo-v1.test.js +862 -19
  355. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  356. package/esm/v1/index.d.ts +28 -22
  357. package/esm/v1/index.d.ts.map +1 -1
  358. package/esm/v1/index.js +30 -18
  359. package/esm/v1/index.js.map +1 -1
  360. package/esm/v1/providers/tambo-v1-provider.d.ts +21 -11
  361. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  362. package/esm/v1/providers/tambo-v1-provider.js +20 -25
  363. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  364. package/esm/v1/providers/tambo-v1-provider.test.js +40 -26
  365. package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
  366. package/esm/v1/providers/tambo-v1-stream-context.d.ts +4 -4
  367. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  368. package/esm/v1/providers/tambo-v1-stream-context.js +62 -14
  369. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  370. package/esm/v1/providers/tambo-v1-stream-context.test.js +50 -21
  371. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  372. package/esm/v1/providers/tambo-v1-stub-provider.d.ts +3 -3
  373. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  374. package/esm/v1/providers/tambo-v1-stub-provider.js +7 -5
  375. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  376. package/esm/v1/providers/tambo-v1-stub-provider.test.js +12 -11
  377. package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  378. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +3 -8
  379. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  380. package/esm/v1/providers/tambo-v1-thread-input-provider.js +18 -16
  381. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  382. package/esm/v1/types/event.d.ts +9 -1
  383. package/esm/v1/types/event.d.ts.map +1 -1
  384. package/esm/v1/types/event.js.map +1 -1
  385. package/esm/v1/types/event.test.js +6 -2
  386. package/esm/v1/types/event.test.js.map +1 -1
  387. package/esm/v1/types/message.d.ts +65 -7
  388. package/esm/v1/types/message.d.ts.map +1 -1
  389. package/esm/v1/types/message.js.map +1 -1
  390. package/esm/v1/types/thread.d.ts +5 -1
  391. package/esm/v1/types/thread.d.ts.map +1 -1
  392. package/esm/v1/types/thread.js.map +1 -1
  393. package/esm/v1/utils/component-renderer.test.js +1 -1
  394. package/esm/v1/utils/event-accumulator.d.ts +41 -5
  395. package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
  396. package/esm/v1/utils/event-accumulator.js +444 -36
  397. package/esm/v1/utils/event-accumulator.js.map +1 -1
  398. package/esm/v1/utils/event-accumulator.test.js +1042 -29
  399. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  400. package/esm/v1/utils/json-patch.test.js +1 -1
  401. package/esm/v1/utils/registry-conversion.d.ts +9 -9
  402. package/esm/v1/utils/registry-conversion.d.ts.map +1 -1
  403. package/esm/v1/utils/registry-conversion.js +11 -12
  404. package/esm/v1/utils/registry-conversion.js.map +1 -1
  405. package/esm/v1/utils/registry-conversion.test.js +40 -12
  406. package/esm/v1/utils/registry-conversion.test.js.map +1 -1
  407. package/esm/v1/utils/stream-handler.test.js +1 -1
  408. package/esm/v1/utils/thread-utils.d.ts +16 -0
  409. package/esm/v1/utils/thread-utils.d.ts.map +1 -0
  410. package/esm/v1/utils/thread-utils.js +31 -0
  411. package/esm/v1/utils/thread-utils.js.map +1 -0
  412. package/esm/v1/utils/tool-call-tracker.d.ts +1 -1
  413. package/esm/v1/utils/tool-executor.d.ts +1 -1
  414. package/esm/v1/utils/tool-executor.d.ts.map +1 -1
  415. package/esm/v1/utils/tool-executor.js +2 -0
  416. package/esm/v1/utils/tool-executor.js.map +1 -1
  417. package/esm/v1/utils/tool-executor.test.js +6 -1
  418. package/esm/v1/utils/tool-executor.test.js.map +1 -1
  419. package/package.json +11 -10
@@ -15,10 +15,16 @@ const tambo_v1_stream_context_1 = require("../providers/tambo-v1-stream-context"
15
15
  const use_tambo_v1_send_message_1 = require("./use-tambo-v1-send-message");
16
16
  jest.mock("../../providers/tambo-client-provider", () => ({
17
17
  useTamboClient: jest.fn(),
18
+ useTamboQueryClient: jest.fn(),
18
19
  }));
19
20
  jest.mock("../providers/tambo-v1-provider", () => ({
20
21
  useTamboV1Config: jest.fn(),
21
22
  }));
23
+ jest.mock("../../providers/tambo-context-helpers-provider", () => ({
24
+ useTamboContextHelpers: () => ({
25
+ getAdditionalContext: jest.fn().mockResolvedValue([]),
26
+ }),
27
+ }));
22
28
  describe("useTamboV1SendMessage", () => {
23
29
  const mockThreadsRunsApi = {
24
30
  run: jest.fn(),
@@ -48,6 +54,7 @@ describe("useTamboV1SendMessage", () => {
48
54
  },
49
55
  });
50
56
  jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboAI);
57
+ jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
51
58
  jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({ userKey: undefined });
52
59
  mockThreadsRunsApi.run.mockReset();
53
60
  mockThreadsRunsApi.create.mockReset();
@@ -91,7 +98,13 @@ describe("createRunStream", () => {
91
98
  name: "TestComponent",
92
99
  description: "A test component",
93
100
  component: () => null,
94
- propsSchema: zod_1.z.object({ title: zod_1.z.string() }),
101
+ // RegisteredComponent has props as JSON Schema (already converted from propsSchema)
102
+ props: {
103
+ type: "object",
104
+ properties: { title: { type: "string" } },
105
+ required: ["title"],
106
+ },
107
+ contextTools: [],
95
108
  },
96
109
  ],
97
110
  ]),
@@ -123,17 +136,39 @@ describe("createRunStream", () => {
123
136
  message: testMessage,
124
137
  registry: mockRegistry,
125
138
  userKey: undefined,
139
+ previousRunId: undefined,
126
140
  });
127
141
  expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", {
128
142
  message: testMessage,
129
143
  availableComponents: expect.any(Array),
130
144
  tools: expect.any(Array),
131
145
  userKey: undefined,
146
+ previousRunId: undefined,
132
147
  });
133
148
  expect(mockThreadsRunsApi.create).not.toHaveBeenCalled();
134
149
  expect(result.stream).toBe(mockStream);
135
150
  expect(result.initialThreadId).toBe("thread_123");
136
151
  });
152
+ it("calls client.threads.runs.run with previousRunId when provided", async () => {
153
+ mockThreadsRunsApi.run.mockResolvedValue(mockStream);
154
+ const result = await (0, use_tambo_v1_send_message_1.createRunStream)({
155
+ client: mockClient,
156
+ threadId: "thread_123",
157
+ message: testMessage,
158
+ registry: mockRegistry,
159
+ userKey: undefined,
160
+ previousRunId: "run_456",
161
+ });
162
+ expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", {
163
+ message: testMessage,
164
+ availableComponents: expect.any(Array),
165
+ tools: expect.any(Array),
166
+ userKey: undefined,
167
+ previousRunId: "run_456",
168
+ });
169
+ expect(result.stream).toBe(mockStream);
170
+ expect(result.initialThreadId).toBe("thread_123");
171
+ });
137
172
  it("calls client.threads.runs.create when threadId is not provided", async () => {
138
173
  mockThreadsRunsApi.create.mockResolvedValue(mockStream);
139
174
  const result = await (0, use_tambo_v1_send_message_1.createRunStream)({
@@ -142,6 +177,7 @@ describe("createRunStream", () => {
142
177
  message: testMessage,
143
178
  registry: mockRegistry,
144
179
  userKey: undefined,
180
+ previousRunId: undefined,
145
181
  });
146
182
  expect(mockThreadsRunsApi.create).toHaveBeenCalledWith({
147
183
  message: testMessage,
@@ -161,6 +197,7 @@ describe("createRunStream", () => {
161
197
  message: testMessage,
162
198
  registry: mockRegistry,
163
199
  userKey: undefined,
200
+ previousRunId: undefined,
164
201
  });
165
202
  const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
166
203
  expect(callArgs.availableComponents).toEqual([
@@ -179,6 +216,7 @@ describe("createRunStream", () => {
179
216
  message: testMessage,
180
217
  registry: mockRegistry,
181
218
  userKey: undefined,
219
+ previousRunId: undefined,
182
220
  });
183
221
  const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
184
222
  expect(callArgs.tools).toEqual([
@@ -200,6 +238,7 @@ describe("createRunStream", () => {
200
238
  message: testMessage,
201
239
  registry: emptyRegistry,
202
240
  userKey: undefined,
241
+ previousRunId: undefined,
203
242
  });
204
243
  const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
205
244
  expect(callArgs.availableComponents).toEqual([]);
@@ -235,6 +274,7 @@ describe("useTamboV1SendMessage mutation", () => {
235
274
  },
236
275
  });
237
276
  jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboAI);
277
+ jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
238
278
  jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({ userKey: undefined });
239
279
  mockThreadsRunsApi.run.mockReset();
240
280
  mockThreadsRunsApi.create.mockReset();
@@ -340,7 +380,11 @@ describe("useTamboV1SendMessage mutation", () => {
340
380
  {
341
381
  type: core_1.EventType.CUSTOM,
342
382
  name: "tambo.run.awaiting_input",
343
- value: { pendingToolCallIds: ["call_1"] },
383
+ value: {
384
+ pendingToolCalls: [
385
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
386
+ ],
387
+ },
344
388
  },
345
389
  ]);
346
390
  const continueStream = createAsyncIterator([
@@ -434,7 +478,11 @@ describe("useTamboV1SendMessage mutation", () => {
434
478
  {
435
479
  type: core_1.EventType.CUSTOM,
436
480
  name: "tambo.run.awaiting_input",
437
- value: { pendingToolCallIds: ["call_1"] },
481
+ value: {
482
+ pendingToolCalls: [
483
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
484
+ ],
485
+ },
438
486
  },
439
487
  ]);
440
488
  const continueStream = createAsyncIterator([
@@ -506,7 +554,11 @@ describe("useTamboV1SendMessage mutation", () => {
506
554
  {
507
555
  type: core_1.EventType.CUSTOM,
508
556
  name: "tambo.run.awaiting_input",
509
- value: { pendingToolCallIds: ["call_1"] },
557
+ value: {
558
+ pendingToolCalls: [
559
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
560
+ ],
561
+ },
510
562
  },
511
563
  ]);
512
564
  const continueStream = createAsyncIterator([
@@ -573,7 +625,11 @@ describe("useTamboV1SendMessage mutation", () => {
573
625
  {
574
626
  type: core_1.EventType.CUSTOM,
575
627
  name: "tambo.run.awaiting_input",
576
- value: { pendingToolCallIds: ["call_1"] },
628
+ value: {
629
+ pendingToolCalls: [
630
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
631
+ ],
632
+ },
577
633
  },
578
634
  ]);
579
635
  const continueStream = createAsyncIterator([
@@ -610,6 +666,7 @@ describe("useTamboV1SendMessage mutation", () => {
610
666
  expect(continueCall[1].message.content[0]).toEqual({
611
667
  type: "tool_result",
612
668
  toolUseId: "call_1",
669
+ isError: true,
613
670
  content: [
614
671
  { type: "text", text: 'Tool "unknown_tool" not found in registry' },
615
672
  ],
@@ -716,7 +773,11 @@ describe("useTamboV1SendMessage mutation", () => {
716
773
  {
717
774
  type: core_1.EventType.CUSTOM,
718
775
  name: "tambo.run.awaiting_input",
719
- value: { pendingToolCallIds: ["call_1"] },
776
+ value: {
777
+ pendingToolCalls: [
778
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
779
+ ],
780
+ },
720
781
  },
721
782
  ]);
722
783
  // Second stream: AI receives tool_1 result, then calls tool_2
@@ -746,7 +807,11 @@ describe("useTamboV1SendMessage mutation", () => {
746
807
  {
747
808
  type: core_1.EventType.CUSTOM,
748
809
  name: "tambo.run.awaiting_input",
749
- value: { pendingToolCallIds: ["call_2"] },
810
+ value: {
811
+ pendingToolCalls: [
812
+ { toolCallId: "call_2", toolName: "test", arguments: "{}" },
813
+ ],
814
+ },
750
815
  },
751
816
  ]);
752
817
  // Third stream: AI receives tool_2 result, finishes
@@ -837,4 +902,193 @@ describe("useTamboV1SendMessage mutation", () => {
837
902
  consoleSpy.mockRestore();
838
903
  });
839
904
  });
905
+ describe("useTamboV1SendMessage auto thread name generation", () => {
906
+ const mockGenerateName = jest.fn();
907
+ const mockThreadsRunsApi = {
908
+ run: jest.fn(),
909
+ create: jest.fn(),
910
+ };
911
+ const mockTamboAI = {
912
+ apiKey: "",
913
+ threads: {
914
+ runs: mockThreadsRunsApi,
915
+ },
916
+ beta: {
917
+ threads: {
918
+ generateName: mockGenerateName,
919
+ },
920
+ },
921
+ };
922
+ let queryClient;
923
+ function createAsyncIterator(events) {
924
+ return {
925
+ [Symbol.asyncIterator]: async function* () {
926
+ for (const event of events) {
927
+ yield event;
928
+ }
929
+ },
930
+ };
931
+ }
932
+ const mockRegistry = {
933
+ componentList: new Map(),
934
+ toolRegistry: new Map(),
935
+ };
936
+ function TestWrapper({ children }) {
937
+ return (react_2.default.createElement(react_query_1.QueryClientProvider, { client: queryClient },
938
+ react_2.default.createElement(tambo_registry_provider_1.TamboRegistryContext.Provider, { value: mockRegistry },
939
+ react_2.default.createElement(tambo_v1_stream_context_1.TamboV1StreamProvider, null, children))));
940
+ }
941
+ function createFinishedStream(threadId) {
942
+ return createAsyncIterator([
943
+ {
944
+ type: core_1.EventType.RUN_STARTED,
945
+ runId: "run_1",
946
+ threadId,
947
+ },
948
+ {
949
+ type: core_1.EventType.TEXT_MESSAGE_START,
950
+ messageId: "msg_assistant_1",
951
+ role: "assistant",
952
+ },
953
+ {
954
+ type: core_1.EventType.TEXT_MESSAGE_CONTENT,
955
+ messageId: "msg_assistant_1",
956
+ delta: "Hello!",
957
+ },
958
+ {
959
+ type: core_1.EventType.TEXT_MESSAGE_END,
960
+ messageId: "msg_assistant_1",
961
+ },
962
+ { type: core_1.EventType.RUN_FINISHED },
963
+ ]);
964
+ }
965
+ beforeEach(() => {
966
+ queryClient = new react_query_1.QueryClient({
967
+ defaultOptions: {
968
+ queries: { retry: false },
969
+ mutations: { retry: false },
970
+ },
971
+ });
972
+ jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboAI);
973
+ jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
974
+ mockThreadsRunsApi.run.mockReset();
975
+ mockThreadsRunsApi.create.mockReset();
976
+ mockGenerateName.mockReset();
977
+ });
978
+ it("calls generateName when message count reaches threshold", async () => {
979
+ // Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
980
+ jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
981
+ userKey: undefined,
982
+ autoGenerateThreadName: true,
983
+ autoGenerateNameThreshold: 2,
984
+ });
985
+ mockGenerateName.mockResolvedValue({ name: "Generated Thread Name" });
986
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
987
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
988
+ wrapper: TestWrapper,
989
+ });
990
+ await (0, react_1.act)(async () => {
991
+ await result.current.mutateAsync({
992
+ message: {
993
+ role: "user",
994
+ content: [{ type: "text", text: "Hello" }],
995
+ },
996
+ });
997
+ });
998
+ await (0, react_1.waitFor)(() => {
999
+ expect(mockGenerateName).toHaveBeenCalledWith("thread_123");
1000
+ });
1001
+ });
1002
+ it("does not call generateName when autoGenerateThreadName is false", async () => {
1003
+ jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
1004
+ userKey: undefined,
1005
+ autoGenerateThreadName: false,
1006
+ autoGenerateNameThreshold: 3,
1007
+ });
1008
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1009
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
1010
+ wrapper: TestWrapper,
1011
+ });
1012
+ await (0, react_1.act)(async () => {
1013
+ await result.current.mutateAsync({
1014
+ message: {
1015
+ role: "user",
1016
+ content: [{ type: "text", text: "Hello" }],
1017
+ },
1018
+ });
1019
+ });
1020
+ // mutateAsync resolves after onSuccess, so all async work has settled
1021
+ expect(mockGenerateName).not.toHaveBeenCalled();
1022
+ });
1023
+ it("does not call generateName when message count is below threshold", async () => {
1024
+ // With threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → skip
1025
+ jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
1026
+ userKey: undefined,
1027
+ autoGenerateThreadName: true,
1028
+ autoGenerateNameThreshold: 3,
1029
+ });
1030
+ mockThreadsRunsApi.create.mockResolvedValue(createFinishedStream("new_thread"));
1031
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)(), {
1032
+ wrapper: TestWrapper,
1033
+ });
1034
+ await (0, react_1.act)(async () => {
1035
+ await result.current.mutateAsync({
1036
+ message: {
1037
+ role: "user",
1038
+ content: [{ type: "text", text: "Hello" }],
1039
+ },
1040
+ });
1041
+ });
1042
+ expect(mockGenerateName).not.toHaveBeenCalled();
1043
+ });
1044
+ it("logs error when generateName fails (does not throw)", async () => {
1045
+ // Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
1046
+ jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
1047
+ userKey: undefined,
1048
+ autoGenerateThreadName: true,
1049
+ autoGenerateNameThreshold: 2,
1050
+ });
1051
+ const consoleSpy = jest
1052
+ .spyOn(console, "error")
1053
+ .mockImplementation(() => { });
1054
+ mockGenerateName.mockRejectedValue(new Error("API error"));
1055
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1056
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
1057
+ wrapper: TestWrapper,
1058
+ });
1059
+ await (0, react_1.act)(async () => {
1060
+ await result.current.mutateAsync({
1061
+ message: {
1062
+ role: "user",
1063
+ content: [{ type: "text", text: "Hello" }],
1064
+ },
1065
+ });
1066
+ });
1067
+ await (0, react_1.waitFor)(() => {
1068
+ expect(consoleSpy).toHaveBeenCalledWith("[useTamboV1SendMessage] Failed to auto-generate thread name:", expect.any(Error));
1069
+ });
1070
+ consoleSpy.mockRestore();
1071
+ });
1072
+ it("uses default config values (enabled, threshold=3)", async () => {
1073
+ // Don't set autoGenerateThreadName/autoGenerateNameThreshold — defaults apply
1074
+ jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
1075
+ userKey: undefined,
1076
+ });
1077
+ mockGenerateName.mockResolvedValue({ name: "Auto Name" });
1078
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1079
+ const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
1080
+ wrapper: TestWrapper,
1081
+ });
1082
+ await (0, react_1.act)(async () => {
1083
+ await result.current.mutateAsync({
1084
+ message: {
1085
+ role: "user",
1086
+ content: [{ type: "text", text: "Hello" }],
1087
+ },
1088
+ });
1089
+ });
1090
+ // Default threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → should NOT fire
1091
+ expect(mockGenerateName).not.toHaveBeenCalled();
1092
+ });
1093
+ });
840
1094
  //# sourceMappingURL=use-tambo-v1-send-message.test.js.map