@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
@@ -3,17 +3,23 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
3
  import { renderHook, waitFor, act } from "@testing-library/react";
4
4
  import React from "react";
5
5
  import { z } from "zod";
6
- import { useTamboClient } from "../../providers/tambo-client-provider";
7
- import { TamboRegistryContext } from "../../providers/tambo-registry-provider";
8
- import { useTamboV1Config } from "../providers/tambo-v1-provider";
9
- import { TamboV1StreamProvider } from "../providers/tambo-v1-stream-context";
10
- import { createRunStream, useTamboV1SendMessage, } from "./use-tambo-v1-send-message";
6
+ import { useTamboClient, useTamboQueryClient, } from "../../providers/tambo-client-provider.js";
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";
11
11
  jest.mock("../../providers/tambo-client-provider", () => ({
12
12
  useTamboClient: jest.fn(),
13
+ useTamboQueryClient: jest.fn(),
13
14
  }));
14
15
  jest.mock("../providers/tambo-v1-provider", () => ({
15
16
  useTamboV1Config: jest.fn(),
16
17
  }));
18
+ jest.mock("../../providers/tambo-context-helpers-provider", () => ({
19
+ useTamboContextHelpers: () => ({
20
+ getAdditionalContext: jest.fn().mockResolvedValue([]),
21
+ }),
22
+ }));
17
23
  describe("useTamboV1SendMessage", () => {
18
24
  const mockThreadsRunsApi = {
19
25
  run: jest.fn(),
@@ -43,6 +49,7 @@ describe("useTamboV1SendMessage", () => {
43
49
  },
44
50
  });
45
51
  jest.mocked(useTamboClient).mockReturnValue(mockTamboAI);
52
+ jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);
46
53
  jest.mocked(useTamboV1Config).mockReturnValue({ userKey: undefined });
47
54
  mockThreadsRunsApi.run.mockReset();
48
55
  mockThreadsRunsApi.create.mockReset();
@@ -86,7 +93,13 @@ describe("createRunStream", () => {
86
93
  name: "TestComponent",
87
94
  description: "A test component",
88
95
  component: () => null,
89
- propsSchema: z.object({ title: z.string() }),
96
+ // RegisteredComponent has props as JSON Schema (already converted from propsSchema)
97
+ props: {
98
+ type: "object",
99
+ properties: { title: { type: "string" } },
100
+ required: ["title"],
101
+ },
102
+ contextTools: [],
90
103
  },
91
104
  ],
92
105
  ]),
@@ -118,17 +131,39 @@ describe("createRunStream", () => {
118
131
  message: testMessage,
119
132
  registry: mockRegistry,
120
133
  userKey: undefined,
134
+ previousRunId: undefined,
121
135
  });
122
136
  expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", {
123
137
  message: testMessage,
124
138
  availableComponents: expect.any(Array),
125
139
  tools: expect.any(Array),
126
140
  userKey: undefined,
141
+ previousRunId: undefined,
127
142
  });
128
143
  expect(mockThreadsRunsApi.create).not.toHaveBeenCalled();
129
144
  expect(result.stream).toBe(mockStream);
130
145
  expect(result.initialThreadId).toBe("thread_123");
131
146
  });
147
+ it("calls client.threads.runs.run with previousRunId when provided", async () => {
148
+ mockThreadsRunsApi.run.mockResolvedValue(mockStream);
149
+ const result = await createRunStream({
150
+ client: mockClient,
151
+ threadId: "thread_123",
152
+ message: testMessage,
153
+ registry: mockRegistry,
154
+ userKey: undefined,
155
+ previousRunId: "run_456",
156
+ });
157
+ expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", {
158
+ message: testMessage,
159
+ availableComponents: expect.any(Array),
160
+ tools: expect.any(Array),
161
+ userKey: undefined,
162
+ previousRunId: "run_456",
163
+ });
164
+ expect(result.stream).toBe(mockStream);
165
+ expect(result.initialThreadId).toBe("thread_123");
166
+ });
132
167
  it("calls client.threads.runs.create when threadId is not provided", async () => {
133
168
  mockThreadsRunsApi.create.mockResolvedValue(mockStream);
134
169
  const result = await createRunStream({
@@ -137,6 +172,7 @@ describe("createRunStream", () => {
137
172
  message: testMessage,
138
173
  registry: mockRegistry,
139
174
  userKey: undefined,
175
+ previousRunId: undefined,
140
176
  });
141
177
  expect(mockThreadsRunsApi.create).toHaveBeenCalledWith({
142
178
  message: testMessage,
@@ -156,6 +192,7 @@ describe("createRunStream", () => {
156
192
  message: testMessage,
157
193
  registry: mockRegistry,
158
194
  userKey: undefined,
195
+ previousRunId: undefined,
159
196
  });
160
197
  const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
161
198
  expect(callArgs.availableComponents).toEqual([
@@ -174,6 +211,7 @@ describe("createRunStream", () => {
174
211
  message: testMessage,
175
212
  registry: mockRegistry,
176
213
  userKey: undefined,
214
+ previousRunId: undefined,
177
215
  });
178
216
  const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
179
217
  expect(callArgs.tools).toEqual([
@@ -195,6 +233,7 @@ describe("createRunStream", () => {
195
233
  message: testMessage,
196
234
  registry: emptyRegistry,
197
235
  userKey: undefined,
236
+ previousRunId: undefined,
198
237
  });
199
238
  const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
200
239
  expect(callArgs.availableComponents).toEqual([]);
@@ -230,6 +269,7 @@ describe("useTamboV1SendMessage mutation", () => {
230
269
  },
231
270
  });
232
271
  jest.mocked(useTamboClient).mockReturnValue(mockTamboAI);
272
+ jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);
233
273
  jest.mocked(useTamboV1Config).mockReturnValue({ userKey: undefined });
234
274
  mockThreadsRunsApi.run.mockReset();
235
275
  mockThreadsRunsApi.create.mockReset();
@@ -335,7 +375,11 @@ describe("useTamboV1SendMessage mutation", () => {
335
375
  {
336
376
  type: EventType.CUSTOM,
337
377
  name: "tambo.run.awaiting_input",
338
- value: { pendingToolCallIds: ["call_1"] },
378
+ value: {
379
+ pendingToolCalls: [
380
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
381
+ ],
382
+ },
339
383
  },
340
384
  ]);
341
385
  const continueStream = createAsyncIterator([
@@ -429,7 +473,11 @@ describe("useTamboV1SendMessage mutation", () => {
429
473
  {
430
474
  type: EventType.CUSTOM,
431
475
  name: "tambo.run.awaiting_input",
432
- value: { pendingToolCallIds: ["call_1"] },
476
+ value: {
477
+ pendingToolCalls: [
478
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
479
+ ],
480
+ },
433
481
  },
434
482
  ]);
435
483
  const continueStream = createAsyncIterator([
@@ -501,7 +549,11 @@ describe("useTamboV1SendMessage mutation", () => {
501
549
  {
502
550
  type: EventType.CUSTOM,
503
551
  name: "tambo.run.awaiting_input",
504
- value: { pendingToolCallIds: ["call_1"] },
552
+ value: {
553
+ pendingToolCalls: [
554
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
555
+ ],
556
+ },
505
557
  },
506
558
  ]);
507
559
  const continueStream = createAsyncIterator([
@@ -568,7 +620,11 @@ describe("useTamboV1SendMessage mutation", () => {
568
620
  {
569
621
  type: EventType.CUSTOM,
570
622
  name: "tambo.run.awaiting_input",
571
- value: { pendingToolCallIds: ["call_1"] },
623
+ value: {
624
+ pendingToolCalls: [
625
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
626
+ ],
627
+ },
572
628
  },
573
629
  ]);
574
630
  const continueStream = createAsyncIterator([
@@ -605,6 +661,7 @@ describe("useTamboV1SendMessage mutation", () => {
605
661
  expect(continueCall[1].message.content[0]).toEqual({
606
662
  type: "tool_result",
607
663
  toolUseId: "call_1",
664
+ isError: true,
608
665
  content: [
609
666
  { type: "text", text: 'Tool "unknown_tool" not found in registry' },
610
667
  ],
@@ -711,7 +768,11 @@ describe("useTamboV1SendMessage mutation", () => {
711
768
  {
712
769
  type: EventType.CUSTOM,
713
770
  name: "tambo.run.awaiting_input",
714
- value: { pendingToolCallIds: ["call_1"] },
771
+ value: {
772
+ pendingToolCalls: [
773
+ { toolCallId: "call_1", toolName: "test", arguments: "{}" },
774
+ ],
775
+ },
715
776
  },
716
777
  ]);
717
778
  // Second stream: AI receives tool_1 result, then calls tool_2
@@ -741,7 +802,11 @@ describe("useTamboV1SendMessage mutation", () => {
741
802
  {
742
803
  type: EventType.CUSTOM,
743
804
  name: "tambo.run.awaiting_input",
744
- value: { pendingToolCallIds: ["call_2"] },
805
+ value: {
806
+ pendingToolCalls: [
807
+ { toolCallId: "call_2", toolName: "test", arguments: "{}" },
808
+ ],
809
+ },
745
810
  },
746
811
  ]);
747
812
  // Third stream: AI receives tool_2 result, finishes
@@ -832,4 +897,193 @@ describe("useTamboV1SendMessage mutation", () => {
832
897
  consoleSpy.mockRestore();
833
898
  });
834
899
  });
900
+ describe("useTamboV1SendMessage auto thread name generation", () => {
901
+ const mockGenerateName = jest.fn();
902
+ const mockThreadsRunsApi = {
903
+ run: jest.fn(),
904
+ create: jest.fn(),
905
+ };
906
+ const mockTamboAI = {
907
+ apiKey: "",
908
+ threads: {
909
+ runs: mockThreadsRunsApi,
910
+ },
911
+ beta: {
912
+ threads: {
913
+ generateName: mockGenerateName,
914
+ },
915
+ },
916
+ };
917
+ let queryClient;
918
+ function createAsyncIterator(events) {
919
+ return {
920
+ [Symbol.asyncIterator]: async function* () {
921
+ for (const event of events) {
922
+ yield event;
923
+ }
924
+ },
925
+ };
926
+ }
927
+ const mockRegistry = {
928
+ componentList: new Map(),
929
+ toolRegistry: new Map(),
930
+ };
931
+ function TestWrapper({ children }) {
932
+ return (React.createElement(QueryClientProvider, { client: queryClient },
933
+ React.createElement(TamboRegistryContext.Provider, { value: mockRegistry },
934
+ React.createElement(TamboV1StreamProvider, null, children))));
935
+ }
936
+ function createFinishedStream(threadId) {
937
+ return createAsyncIterator([
938
+ {
939
+ type: EventType.RUN_STARTED,
940
+ runId: "run_1",
941
+ threadId,
942
+ },
943
+ {
944
+ type: EventType.TEXT_MESSAGE_START,
945
+ messageId: "msg_assistant_1",
946
+ role: "assistant",
947
+ },
948
+ {
949
+ type: EventType.TEXT_MESSAGE_CONTENT,
950
+ messageId: "msg_assistant_1",
951
+ delta: "Hello!",
952
+ },
953
+ {
954
+ type: EventType.TEXT_MESSAGE_END,
955
+ messageId: "msg_assistant_1",
956
+ },
957
+ { type: EventType.RUN_FINISHED },
958
+ ]);
959
+ }
960
+ beforeEach(() => {
961
+ queryClient = new QueryClient({
962
+ defaultOptions: {
963
+ queries: { retry: false },
964
+ mutations: { retry: false },
965
+ },
966
+ });
967
+ jest.mocked(useTamboClient).mockReturnValue(mockTamboAI);
968
+ jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);
969
+ mockThreadsRunsApi.run.mockReset();
970
+ mockThreadsRunsApi.create.mockReset();
971
+ mockGenerateName.mockReset();
972
+ });
973
+ it("calls generateName when message count reaches threshold", async () => {
974
+ // Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
975
+ jest.mocked(useTamboV1Config).mockReturnValue({
976
+ userKey: undefined,
977
+ autoGenerateThreadName: true,
978
+ autoGenerateNameThreshold: 2,
979
+ });
980
+ mockGenerateName.mockResolvedValue({ name: "Generated Thread Name" });
981
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
982
+ const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
983
+ wrapper: TestWrapper,
984
+ });
985
+ await act(async () => {
986
+ await result.current.mutateAsync({
987
+ message: {
988
+ role: "user",
989
+ content: [{ type: "text", text: "Hello" }],
990
+ },
991
+ });
992
+ });
993
+ await waitFor(() => {
994
+ expect(mockGenerateName).toHaveBeenCalledWith("thread_123");
995
+ });
996
+ });
997
+ it("does not call generateName when autoGenerateThreadName is false", async () => {
998
+ jest.mocked(useTamboV1Config).mockReturnValue({
999
+ userKey: undefined,
1000
+ autoGenerateThreadName: false,
1001
+ autoGenerateNameThreshold: 3,
1002
+ });
1003
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1004
+ const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1005
+ wrapper: TestWrapper,
1006
+ });
1007
+ await act(async () => {
1008
+ await result.current.mutateAsync({
1009
+ message: {
1010
+ role: "user",
1011
+ content: [{ type: "text", text: "Hello" }],
1012
+ },
1013
+ });
1014
+ });
1015
+ // mutateAsync resolves after onSuccess, so all async work has settled
1016
+ expect(mockGenerateName).not.toHaveBeenCalled();
1017
+ });
1018
+ it("does not call generateName when message count is below threshold", async () => {
1019
+ // With threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → skip
1020
+ jest.mocked(useTamboV1Config).mockReturnValue({
1021
+ userKey: undefined,
1022
+ autoGenerateThreadName: true,
1023
+ autoGenerateNameThreshold: 3,
1024
+ });
1025
+ mockThreadsRunsApi.create.mockResolvedValue(createFinishedStream("new_thread"));
1026
+ const { result } = renderHook(() => useTamboV1SendMessage(), {
1027
+ wrapper: TestWrapper,
1028
+ });
1029
+ await act(async () => {
1030
+ await result.current.mutateAsync({
1031
+ message: {
1032
+ role: "user",
1033
+ content: [{ type: "text", text: "Hello" }],
1034
+ },
1035
+ });
1036
+ });
1037
+ expect(mockGenerateName).not.toHaveBeenCalled();
1038
+ });
1039
+ it("logs error when generateName fails (does not throw)", async () => {
1040
+ // Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
1041
+ jest.mocked(useTamboV1Config).mockReturnValue({
1042
+ userKey: undefined,
1043
+ autoGenerateThreadName: true,
1044
+ autoGenerateNameThreshold: 2,
1045
+ });
1046
+ const consoleSpy = jest
1047
+ .spyOn(console, "error")
1048
+ .mockImplementation(() => { });
1049
+ mockGenerateName.mockRejectedValue(new Error("API error"));
1050
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1051
+ const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1052
+ wrapper: TestWrapper,
1053
+ });
1054
+ await act(async () => {
1055
+ await result.current.mutateAsync({
1056
+ message: {
1057
+ role: "user",
1058
+ content: [{ type: "text", text: "Hello" }],
1059
+ },
1060
+ });
1061
+ });
1062
+ await waitFor(() => {
1063
+ expect(consoleSpy).toHaveBeenCalledWith("[useTamboV1SendMessage] Failed to auto-generate thread name:", expect.any(Error));
1064
+ });
1065
+ consoleSpy.mockRestore();
1066
+ });
1067
+ it("uses default config values (enabled, threshold=3)", async () => {
1068
+ // Don't set autoGenerateThreadName/autoGenerateNameThreshold — defaults apply
1069
+ jest.mocked(useTamboV1Config).mockReturnValue({
1070
+ userKey: undefined,
1071
+ });
1072
+ mockGenerateName.mockResolvedValue({ name: "Auto Name" });
1073
+ mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
1074
+ const { result } = renderHook(() => useTamboV1SendMessage("thread_123"), {
1075
+ wrapper: TestWrapper,
1076
+ });
1077
+ await act(async () => {
1078
+ await result.current.mutateAsync({
1079
+ message: {
1080
+ role: "user",
1081
+ content: [{ type: "text", text: "Hello" }],
1082
+ },
1083
+ });
1084
+ });
1085
+ // Default threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → should NOT fire
1086
+ expect(mockGenerateName).not.toHaveBeenCalled();
1087
+ });
1088
+ });
835
1089
  //# sourceMappingURL=use-tambo-v1-send-message.test.js.map