@tambo-ai/react 1.1.0 → 1.2.1

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 (491) hide show
  1. package/dist/context-helpers/current-interactables-context-helper.d.ts +16 -2
  2. package/dist/context-helpers/current-interactables-context-helper.d.ts.map +1 -1
  3. package/dist/context-helpers/current-interactables-context-helper.js.map +1 -1
  4. package/dist/context-helpers/current-interactables-context-helper.test.d.ts +2 -0
  5. package/dist/context-helpers/current-interactables-context-helper.test.d.ts.map +1 -0
  6. package/dist/context-helpers/current-interactables-context-helper.test.js +70 -0
  7. package/dist/context-helpers/current-interactables-context-helper.test.js.map +1 -0
  8. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -1
  9. package/dist/hoc/with-tambo-interactable.js +11 -2
  10. package/dist/hoc/with-tambo-interactable.js.map +1 -1
  11. package/dist/hoc/with-tambo-interactable.test.js +14 -0
  12. package/dist/hoc/with-tambo-interactable.test.js.map +1 -1
  13. package/dist/mcp/elicitation.d.ts +3 -37
  14. package/dist/mcp/elicitation.d.ts.map +1 -1
  15. package/dist/mcp/elicitation.js +7 -24
  16. package/dist/mcp/elicitation.js.map +1 -1
  17. package/dist/mcp/index.d.ts +4 -4
  18. package/dist/mcp/index.d.ts.map +1 -1
  19. package/dist/mcp/index.js +2 -2
  20. package/dist/mcp/index.js.map +1 -1
  21. package/dist/mcp/mcp-client.test.js +17 -17
  22. package/dist/mcp/mcp-client.test.js.map +1 -1
  23. package/dist/mcp/mcp-hooks.d.ts.map +1 -1
  24. package/dist/mcp/mcp-hooks.js +8 -5
  25. package/dist/mcp/mcp-hooks.js.map +1 -1
  26. package/dist/mcp/mcp-hooks.test.js +30 -29
  27. package/dist/mcp/mcp-hooks.test.js.map +1 -1
  28. package/dist/mcp/tambo-mcp-provider.d.ts +6 -9
  29. package/dist/mcp/tambo-mcp-provider.d.ts.map +1 -1
  30. package/dist/mcp/tambo-mcp-provider.js +9 -13
  31. package/dist/mcp/tambo-mcp-provider.js.map +1 -1
  32. package/dist/mcp/tambo-mcp-provider.test.js +26 -25
  33. package/dist/mcp/tambo-mcp-provider.test.js.map +1 -1
  34. package/dist/mcp/use-mcp-servers.test.js +2 -1
  35. package/dist/mcp/use-mcp-servers.test.js.map +1 -1
  36. package/dist/model/component-metadata.d.ts +7 -372
  37. package/dist/model/component-metadata.d.ts.map +1 -1
  38. package/dist/model/component-metadata.js.map +1 -1
  39. package/dist/model/validate-input.test.d.ts +2 -0
  40. package/dist/model/validate-input.test.d.ts.map +1 -0
  41. package/dist/model/validate-input.test.js +38 -0
  42. package/dist/model/validate-input.test.js.map +1 -0
  43. package/dist/providers/tambo-interactable-provider-partial-updates.test.js +2 -0
  44. package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  45. package/dist/providers/tambo-interactable-provider.d.ts +7 -7
  46. package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
  47. package/dist/providers/tambo-interactable-provider.js +26 -4
  48. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  49. package/dist/providers/tambo-interactable-provider.test.js +78 -0
  50. package/dist/providers/tambo-interactable-provider.test.js.map +1 -1
  51. package/dist/providers/tambo-registry-provider.d.ts +2 -1
  52. package/dist/providers/tambo-registry-provider.d.ts.map +1 -1
  53. package/dist/providers/tambo-registry-provider.js +19 -0
  54. package/dist/providers/tambo-registry-provider.js.map +1 -1
  55. package/dist/providers/tambo-registry-provider.test.js +36 -0
  56. package/dist/providers/tambo-registry-provider.test.js.map +1 -1
  57. package/dist/providers/tambo-registry-schema-compat.test.js +4 -4
  58. package/dist/providers/tambo-registry-schema-compat.test.js.map +1 -1
  59. package/dist/schema/index.d.ts +2 -4
  60. package/dist/schema/index.d.ts.map +1 -1
  61. package/dist/schema/index.js +9 -11
  62. package/dist/schema/index.js.map +1 -1
  63. package/dist/schema/json-schema.d.ts +1 -17
  64. package/dist/schema/json-schema.d.ts.map +1 -1
  65. package/dist/schema/json-schema.js +5 -69
  66. package/dist/schema/json-schema.js.map +1 -1
  67. package/dist/schema/schema.test.js +24 -25
  68. package/dist/schema/schema.test.js.map +1 -1
  69. package/dist/schema/standard-schema.test.js +25 -25
  70. package/dist/schema/standard-schema.test.js.map +1 -1
  71. package/dist/schema/validate.test.js +33 -33
  72. package/dist/schema/validate.test.js.map +1 -1
  73. package/dist/testing/tools.d.ts +4 -4
  74. package/dist/testing/tools.test.d.ts +2 -0
  75. package/dist/testing/tools.test.d.ts.map +1 -0
  76. package/dist/testing/tools.test.js +60 -0
  77. package/dist/testing/tools.test.js.map +1 -0
  78. package/dist/util/mcp-server-utils.d.ts +1 -1
  79. package/dist/util/mcp-server-utils.d.ts.map +1 -1
  80. package/dist/util/mcp-server-utils.js +4 -4
  81. package/dist/util/mcp-server-utils.js.map +1 -1
  82. package/dist/util/mcp-server-utils.test.js +27 -27
  83. package/dist/util/mcp-server-utils.test.js.map +1 -1
  84. package/dist/util/registry.js +1 -1
  85. package/dist/util/registry.js.map +1 -1
  86. package/dist/util/resource-content-resolver.js +5 -5
  87. package/dist/util/resource-content-resolver.js.map +1 -1
  88. package/dist/util/resource-content-resolver.test.js +6 -6
  89. package/dist/util/resource-content-resolver.test.js.map +1 -1
  90. package/dist/util/tool-caller.test.d.ts +2 -0
  91. package/dist/util/tool-caller.test.d.ts.map +1 -0
  92. package/dist/util/tool-caller.test.js +71 -0
  93. package/dist/util/tool-caller.test.js.map +1 -0
  94. package/dist/v1/__tests__/v1-interactables.test.js +6 -0
  95. package/dist/v1/__tests__/v1-interactables.test.js.map +1 -1
  96. package/dist/v1/components/v1-component-renderer.test.js +1 -0
  97. package/dist/v1/components/v1-component-renderer.test.js.map +1 -1
  98. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts +1 -1
  99. package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
  100. package/dist/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
  101. package/dist/v1/hooks/use-tambo-v1-component-state.js +2 -2
  102. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  103. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +1 -1
  104. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  105. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +1 -1
  106. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  107. package/dist/v1/hooks/use-tambo-v1-send-message.js +17 -17
  108. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  109. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +1 -1
  110. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  111. package/dist/v1/hooks/use-tambo-v1-stream-status.js +2 -2
  112. package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  113. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +9 -5
  114. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  115. package/dist/v1/hooks/use-tambo-v1-suggestions.js +2 -2
  116. package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  117. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +1 -0
  118. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  119. package/dist/v1/hooks/use-tambo-v1.d.ts +7 -6
  120. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  121. package/dist/v1/hooks/use-tambo-v1.js +2 -2
  122. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  123. package/dist/v1/hooks/use-tambo-v1.test.js +24 -23
  124. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  125. package/dist/v1/index.d.ts +6 -6
  126. package/dist/v1/index.d.ts.map +1 -1
  127. package/dist/v1/index.js +2 -2
  128. package/dist/v1/index.js.map +1 -1
  129. package/dist/v1/providers/tambo-v1-provider.d.ts +2 -1
  130. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  131. package/dist/v1/providers/tambo-v1-provider.js +2 -0
  132. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  133. package/dist/v1/providers/tambo-v1-stream-context.d.ts +2 -2
  134. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  135. package/dist/v1/providers/tambo-v1-stream-context.js +9 -9
  136. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  137. package/dist/v1/providers/tambo-v1-stream-context.test.js +35 -0
  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 +1 -1
  140. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  141. package/dist/v1/providers/tambo-v1-stub-provider.js +2 -1
  142. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  143. package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  144. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -1
  145. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  146. package/dist/v1/providers/tambo-v1-thread-input-provider.js +2 -2
  147. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  148. package/dist/v1/types/event.test.js +13 -13
  149. package/dist/v1/types/event.test.js.map +1 -1
  150. package/dist/v1/types/message.d.ts +12 -109
  151. package/dist/v1/types/message.d.ts.map +1 -1
  152. package/dist/v1/types/message.js +0 -7
  153. package/dist/v1/types/message.js.map +1 -1
  154. package/dist/v1/utils/event-accumulator.test.js +183 -184
  155. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  156. package/dist/v1/utils/json-patch.test.js +4 -4
  157. package/dist/v1/utils/json-patch.test.js.map +1 -1
  158. package/dist/v1/utils/keyed-throttle.test.js +12 -12
  159. package/dist/v1/utils/keyed-throttle.test.js.map +1 -1
  160. package/dist/v1/utils/registry-conversion.test.js +13 -13
  161. package/dist/v1/utils/registry-conversion.test.js.map +1 -1
  162. package/dist/v1/utils/stream-handler.test.js +5 -5
  163. package/dist/v1/utils/stream-handler.test.js.map +1 -1
  164. package/dist/v1/utils/tool-call-tracker.test.js +15 -9
  165. package/dist/v1/utils/tool-call-tracker.test.js.map +1 -1
  166. package/dist/v1/utils/tool-executor.test.js +25 -26
  167. package/dist/v1/utils/tool-executor.test.js.map +1 -1
  168. package/dist/v1/utils/unstrictify.test.js +16 -16
  169. package/dist/v1/utils/unstrictify.test.js.map +1 -1
  170. package/esm/context-helpers/current-interactables-context-helper.d.ts +16 -2
  171. package/esm/context-helpers/current-interactables-context-helper.d.ts.map +1 -1
  172. package/esm/context-helpers/current-interactables-context-helper.js.map +1 -1
  173. package/esm/context-helpers/current-interactables-context-helper.test.d.ts +2 -0
  174. package/esm/context-helpers/current-interactables-context-helper.test.d.ts.map +1 -0
  175. package/esm/context-helpers/current-interactables-context-helper.test.js +68 -0
  176. package/esm/context-helpers/current-interactables-context-helper.test.js.map +1 -0
  177. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -1
  178. package/esm/hoc/with-tambo-interactable.js +11 -2
  179. package/esm/hoc/with-tambo-interactable.js.map +1 -1
  180. package/esm/hoc/with-tambo-interactable.test.js +14 -0
  181. package/esm/hoc/with-tambo-interactable.test.js.map +1 -1
  182. package/esm/mcp/elicitation.d.ts +3 -37
  183. package/esm/mcp/elicitation.d.ts.map +1 -1
  184. package/esm/mcp/elicitation.js +4 -24
  185. package/esm/mcp/elicitation.js.map +1 -1
  186. package/esm/mcp/index.d.ts +4 -4
  187. package/esm/mcp/index.d.ts.map +1 -1
  188. package/esm/mcp/index.js +1 -1
  189. package/esm/mcp/index.js.map +1 -1
  190. package/esm/mcp/mcp-client.test.js +1 -1
  191. package/esm/mcp/mcp-client.test.js.map +1 -1
  192. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  193. package/esm/mcp/mcp-hooks.js +4 -1
  194. package/esm/mcp/mcp-hooks.js.map +1 -1
  195. package/esm/mcp/mcp-hooks.test.js +3 -2
  196. package/esm/mcp/mcp-hooks.test.js.map +1 -1
  197. package/esm/mcp/tambo-mcp-provider.d.ts +6 -9
  198. package/esm/mcp/tambo-mcp-provider.d.ts.map +1 -1
  199. package/esm/mcp/tambo-mcp-provider.js +4 -8
  200. package/esm/mcp/tambo-mcp-provider.js.map +1 -1
  201. package/esm/mcp/tambo-mcp-provider.test.js +3 -2
  202. package/esm/mcp/tambo-mcp-provider.test.js.map +1 -1
  203. package/esm/mcp/use-mcp-servers.test.js +2 -1
  204. package/esm/mcp/use-mcp-servers.test.js.map +1 -1
  205. package/esm/model/component-metadata.d.ts +7 -372
  206. package/esm/model/component-metadata.d.ts.map +1 -1
  207. package/esm/model/component-metadata.js.map +1 -1
  208. package/esm/model/validate-input.test.d.ts +2 -0
  209. package/esm/model/validate-input.test.d.ts.map +1 -0
  210. package/esm/model/validate-input.test.js +36 -0
  211. package/esm/model/validate-input.test.js.map +1 -0
  212. package/esm/providers/tambo-interactable-provider-partial-updates.test.js +2 -0
  213. package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  214. package/esm/providers/tambo-interactable-provider.d.ts +7 -7
  215. package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
  216. package/esm/providers/tambo-interactable-provider.js +26 -4
  217. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  218. package/esm/providers/tambo-interactable-provider.test.js +78 -0
  219. package/esm/providers/tambo-interactable-provider.test.js.map +1 -1
  220. package/esm/providers/tambo-registry-provider.d.ts +2 -1
  221. package/esm/providers/tambo-registry-provider.d.ts.map +1 -1
  222. package/esm/providers/tambo-registry-provider.js +19 -0
  223. package/esm/providers/tambo-registry-provider.js.map +1 -1
  224. package/esm/providers/tambo-registry-provider.test.js +36 -0
  225. package/esm/providers/tambo-registry-provider.test.js.map +1 -1
  226. package/esm/providers/tambo-registry-schema-compat.test.js +4 -4
  227. package/esm/providers/tambo-registry-schema-compat.test.js.map +1 -1
  228. package/esm/schema/index.d.ts +2 -4
  229. package/esm/schema/index.d.ts.map +1 -1
  230. package/esm/schema/index.js +2 -4
  231. package/esm/schema/index.js.map +1 -1
  232. package/esm/schema/json-schema.d.ts +1 -17
  233. package/esm/schema/json-schema.d.ts.map +1 -1
  234. package/esm/schema/json-schema.js +2 -67
  235. package/esm/schema/json-schema.js.map +1 -1
  236. package/esm/schema/schema.test.js +1 -2
  237. package/esm/schema/schema.test.js.map +1 -1
  238. package/esm/schema/standard-schema.test.js +1 -1
  239. package/esm/schema/standard-schema.test.js.map +1 -1
  240. package/esm/schema/validate.test.js +1 -1
  241. package/esm/schema/validate.test.js.map +1 -1
  242. package/esm/testing/tools.d.ts +4 -4
  243. package/esm/testing/tools.test.d.ts +2 -0
  244. package/esm/testing/tools.test.d.ts.map +1 -0
  245. package/esm/testing/tools.test.js +58 -0
  246. package/esm/testing/tools.test.js.map +1 -0
  247. package/esm/util/mcp-server-utils.d.ts +1 -1
  248. package/esm/util/mcp-server-utils.d.ts.map +1 -1
  249. package/esm/util/mcp-server-utils.js +1 -1
  250. package/esm/util/mcp-server-utils.js.map +1 -1
  251. package/esm/util/mcp-server-utils.test.js +1 -1
  252. package/esm/util/mcp-server-utils.test.js.map +1 -1
  253. package/esm/util/registry.js +1 -1
  254. package/esm/util/registry.js.map +1 -1
  255. package/esm/util/resource-content-resolver.js +1 -1
  256. package/esm/util/resource-content-resolver.js.map +1 -1
  257. package/esm/util/resource-content-resolver.test.js +2 -2
  258. package/esm/util/resource-content-resolver.test.js.map +1 -1
  259. package/esm/util/tool-caller.test.d.ts +2 -0
  260. package/esm/util/tool-caller.test.d.ts.map +1 -0
  261. package/esm/util/tool-caller.test.js +69 -0
  262. package/esm/util/tool-caller.test.js.map +1 -0
  263. package/esm/v1/__tests__/v1-interactables.test.js +6 -0
  264. package/esm/v1/__tests__/v1-interactables.test.js.map +1 -1
  265. package/esm/v1/components/v1-component-renderer.test.js +1 -0
  266. package/esm/v1/components/v1-component-renderer.test.js.map +1 -1
  267. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts +1 -1
  268. package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
  269. package/esm/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
  270. package/esm/v1/hooks/use-tambo-v1-component-state.js +1 -1
  271. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  272. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +1 -1
  273. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  274. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +1 -1
  275. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  276. package/esm/v1/hooks/use-tambo-v1-send-message.js +6 -6
  277. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  278. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +1 -1
  279. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  280. package/esm/v1/hooks/use-tambo-v1-stream-status.js +1 -1
  281. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
  282. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +9 -5
  283. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
  284. package/esm/v1/hooks/use-tambo-v1-suggestions.js +1 -1
  285. package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  286. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +1 -0
  287. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  288. package/esm/v1/hooks/use-tambo-v1.d.ts +7 -6
  289. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  290. package/esm/v1/hooks/use-tambo-v1.js +1 -1
  291. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  292. package/esm/v1/hooks/use-tambo-v1.test.js +23 -22
  293. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  294. package/esm/v1/index.d.ts +6 -6
  295. package/esm/v1/index.d.ts.map +1 -1
  296. package/esm/v1/index.js +1 -1
  297. package/esm/v1/index.js.map +1 -1
  298. package/esm/v1/providers/tambo-v1-provider.d.ts +2 -1
  299. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  300. package/esm/v1/providers/tambo-v1-provider.js +2 -0
  301. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  302. package/esm/v1/providers/tambo-v1-stream-context.d.ts +2 -2
  303. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  304. package/esm/v1/providers/tambo-v1-stream-context.js +1 -1
  305. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  306. package/esm/v1/providers/tambo-v1-stream-context.test.js +35 -0
  307. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  308. package/esm/v1/providers/tambo-v1-stub-provider.d.ts +1 -1
  309. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  310. package/esm/v1/providers/tambo-v1-stub-provider.js +2 -1
  311. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  312. package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  313. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -1
  314. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  315. package/esm/v1/providers/tambo-v1-thread-input-provider.js +1 -1
  316. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  317. package/esm/v1/types/event.test.js +1 -1
  318. package/esm/v1/types/event.test.js.map +1 -1
  319. package/esm/v1/types/message.d.ts +12 -109
  320. package/esm/v1/types/message.d.ts.map +1 -1
  321. package/esm/v1/types/message.js +0 -7
  322. package/esm/v1/types/message.js.map +1 -1
  323. package/esm/v1/utils/event-accumulator.test.js +2 -3
  324. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  325. package/esm/v1/utils/json-patch.test.js +1 -1
  326. package/esm/v1/utils/json-patch.test.js.map +1 -1
  327. package/esm/v1/utils/keyed-throttle.test.js +1 -1
  328. package/esm/v1/utils/keyed-throttle.test.js.map +1 -1
  329. package/esm/v1/utils/registry-conversion.test.js +1 -1
  330. package/esm/v1/utils/registry-conversion.test.js.map +1 -1
  331. package/esm/v1/utils/stream-handler.test.js +1 -1
  332. package/esm/v1/utils/stream-handler.test.js.map +1 -1
  333. package/esm/v1/utils/tool-call-tracker.test.js +9 -3
  334. package/esm/v1/utils/tool-call-tracker.test.js.map +1 -1
  335. package/esm/v1/utils/tool-executor.test.js +1 -2
  336. package/esm/v1/utils/tool-executor.test.js.map +1 -1
  337. package/esm/v1/utils/unstrictify.test.js +1 -1
  338. package/esm/v1/utils/unstrictify.test.js.map +1 -1
  339. package/package.json +10 -11
  340. package/dist/mcp/mcp-client.d.ts +0 -185
  341. package/dist/mcp/mcp-client.d.ts.map +0 -1
  342. package/dist/mcp/mcp-client.js +0 -219
  343. package/dist/mcp/mcp-client.js.map +0 -1
  344. package/dist/mcp/mcp-constants.d.ts +0 -19
  345. package/dist/mcp/mcp-constants.d.ts.map +0 -1
  346. package/dist/mcp/mcp-constants.js +0 -21
  347. package/dist/mcp/mcp-constants.js.map +0 -1
  348. package/dist/model/mcp-server-info.d.ts +0 -76
  349. package/dist/model/mcp-server-info.d.ts.map +0 -1
  350. package/dist/model/mcp-server-info.js +0 -29
  351. package/dist/model/mcp-server-info.js.map +0 -1
  352. package/dist/schema/schema.d.ts +0 -49
  353. package/dist/schema/schema.d.ts.map +0 -1
  354. package/dist/schema/schema.js +0 -129
  355. package/dist/schema/schema.js.map +0 -1
  356. package/dist/schema/standard-schema.d.ts +0 -22
  357. package/dist/schema/standard-schema.d.ts.map +0 -1
  358. package/dist/schema/standard-schema.js +0 -42
  359. package/dist/schema/standard-schema.js.map +0 -1
  360. package/dist/schema/validate.d.ts +0 -14
  361. package/dist/schema/validate.d.ts.map +0 -1
  362. package/dist/schema/validate.js +0 -148
  363. package/dist/schema/validate.js.map +0 -1
  364. package/dist/v1/types/auth.d.ts +0 -24
  365. package/dist/v1/types/auth.d.ts.map +0 -1
  366. package/dist/v1/types/auth.js +0 -3
  367. package/dist/v1/types/auth.js.map +0 -1
  368. package/dist/v1/types/event.d.ts +0 -89
  369. package/dist/v1/types/event.d.ts.map +0 -1
  370. package/dist/v1/types/event.js +0 -57
  371. package/dist/v1/types/event.js.map +0 -1
  372. package/dist/v1/types/thread.d.ts +0 -58
  373. package/dist/v1/types/thread.d.ts.map +0 -1
  374. package/dist/v1/types/thread.js +0 -9
  375. package/dist/v1/types/thread.js.map +0 -1
  376. package/dist/v1/types/tool-choice.d.ts +0 -8
  377. package/dist/v1/types/tool-choice.d.ts.map +0 -1
  378. package/dist/v1/types/tool-choice.js +0 -3
  379. package/dist/v1/types/tool-choice.js.map +0 -1
  380. package/dist/v1/utils/event-accumulator.d.ts +0 -165
  381. package/dist/v1/utils/event-accumulator.d.ts.map +0 -1
  382. package/dist/v1/utils/event-accumulator.js +0 -1277
  383. package/dist/v1/utils/event-accumulator.js.map +0 -1
  384. package/dist/v1/utils/json-patch.d.ts +0 -18
  385. package/dist/v1/utils/json-patch.d.ts.map +0 -1
  386. package/dist/v1/utils/json-patch.js +0 -35
  387. package/dist/v1/utils/json-patch.js.map +0 -1
  388. package/dist/v1/utils/keyed-throttle.d.ts +0 -42
  389. package/dist/v1/utils/keyed-throttle.d.ts.map +0 -1
  390. package/dist/v1/utils/keyed-throttle.js +0 -86
  391. package/dist/v1/utils/keyed-throttle.js.map +0 -1
  392. package/dist/v1/utils/registry-conversion.d.ts +0 -53
  393. package/dist/v1/utils/registry-conversion.d.ts.map +0 -1
  394. package/dist/v1/utils/registry-conversion.js +0 -115
  395. package/dist/v1/utils/registry-conversion.js.map +0 -1
  396. package/dist/v1/utils/stream-handler.d.ts +0 -45
  397. package/dist/v1/utils/stream-handler.d.ts.map +0 -1
  398. package/dist/v1/utils/stream-handler.js +0 -47
  399. package/dist/v1/utils/stream-handler.js.map +0 -1
  400. package/dist/v1/utils/thread-utils.d.ts +0 -16
  401. package/dist/v1/utils/thread-utils.d.ts.map +0 -1
  402. package/dist/v1/utils/thread-utils.js +0 -34
  403. package/dist/v1/utils/thread-utils.js.map +0 -1
  404. package/dist/v1/utils/tool-call-tracker.d.ts +0 -73
  405. package/dist/v1/utils/tool-call-tracker.d.ts.map +0 -1
  406. package/dist/v1/utils/tool-call-tracker.js +0 -180
  407. package/dist/v1/utils/tool-call-tracker.js.map +0 -1
  408. package/dist/v1/utils/tool-executor.d.ts +0 -67
  409. package/dist/v1/utils/tool-executor.d.ts.map +0 -1
  410. package/dist/v1/utils/tool-executor.js +0 -160
  411. package/dist/v1/utils/tool-executor.js.map +0 -1
  412. package/dist/v1/utils/unstrictify.d.ts +0 -32
  413. package/dist/v1/utils/unstrictify.d.ts.map +0 -1
  414. package/dist/v1/utils/unstrictify.js +0 -159
  415. package/dist/v1/utils/unstrictify.js.map +0 -1
  416. package/esm/mcp/mcp-client.d.ts +0 -185
  417. package/esm/mcp/mcp-client.d.ts.map +0 -1
  418. package/esm/mcp/mcp-client.js +0 -216
  419. package/esm/mcp/mcp-client.js.map +0 -1
  420. package/esm/mcp/mcp-constants.d.ts +0 -19
  421. package/esm/mcp/mcp-constants.d.ts.map +0 -1
  422. package/esm/mcp/mcp-constants.js +0 -18
  423. package/esm/mcp/mcp-constants.js.map +0 -1
  424. package/esm/model/mcp-server-info.d.ts +0 -76
  425. package/esm/model/mcp-server-info.d.ts.map +0 -1
  426. package/esm/model/mcp-server-info.js +0 -25
  427. package/esm/model/mcp-server-info.js.map +0 -1
  428. package/esm/schema/schema.d.ts +0 -49
  429. package/esm/schema/schema.d.ts.map +0 -1
  430. package/esm/schema/schema.js +0 -124
  431. package/esm/schema/schema.js.map +0 -1
  432. package/esm/schema/standard-schema.d.ts +0 -22
  433. package/esm/schema/standard-schema.d.ts.map +0 -1
  434. package/esm/schema/standard-schema.js +0 -39
  435. package/esm/schema/standard-schema.js.map +0 -1
  436. package/esm/schema/validate.d.ts +0 -14
  437. package/esm/schema/validate.d.ts.map +0 -1
  438. package/esm/schema/validate.js +0 -145
  439. package/esm/schema/validate.js.map +0 -1
  440. package/esm/v1/types/auth.d.ts +0 -24
  441. package/esm/v1/types/auth.d.ts.map +0 -1
  442. package/esm/v1/types/auth.js +0 -2
  443. package/esm/v1/types/auth.js.map +0 -1
  444. package/esm/v1/types/event.d.ts +0 -89
  445. package/esm/v1/types/event.d.ts.map +0 -1
  446. package/esm/v1/types/event.js +0 -53
  447. package/esm/v1/types/event.js.map +0 -1
  448. package/esm/v1/types/thread.d.ts +0 -58
  449. package/esm/v1/types/thread.d.ts.map +0 -1
  450. package/esm/v1/types/thread.js +0 -8
  451. package/esm/v1/types/thread.js.map +0 -1
  452. package/esm/v1/types/tool-choice.d.ts +0 -8
  453. package/esm/v1/types/tool-choice.d.ts.map +0 -1
  454. package/esm/v1/types/tool-choice.js +0 -2
  455. package/esm/v1/types/tool-choice.js.map +0 -1
  456. package/esm/v1/utils/event-accumulator.d.ts +0 -165
  457. package/esm/v1/utils/event-accumulator.d.ts.map +0 -1
  458. package/esm/v1/utils/event-accumulator.js +0 -1268
  459. package/esm/v1/utils/event-accumulator.js.map +0 -1
  460. package/esm/v1/utils/json-patch.d.ts +0 -18
  461. package/esm/v1/utils/json-patch.d.ts.map +0 -1
  462. package/esm/v1/utils/json-patch.js +0 -32
  463. package/esm/v1/utils/json-patch.js.map +0 -1
  464. package/esm/v1/utils/keyed-throttle.d.ts +0 -42
  465. package/esm/v1/utils/keyed-throttle.d.ts.map +0 -1
  466. package/esm/v1/utils/keyed-throttle.js +0 -83
  467. package/esm/v1/utils/keyed-throttle.js.map +0 -1
  468. package/esm/v1/utils/registry-conversion.d.ts +0 -53
  469. package/esm/v1/utils/registry-conversion.d.ts.map +0 -1
  470. package/esm/v1/utils/registry-conversion.js +0 -109
  471. package/esm/v1/utils/registry-conversion.js.map +0 -1
  472. package/esm/v1/utils/stream-handler.d.ts +0 -45
  473. package/esm/v1/utils/stream-handler.d.ts.map +0 -1
  474. package/esm/v1/utils/stream-handler.js +0 -44
  475. package/esm/v1/utils/stream-handler.js.map +0 -1
  476. package/esm/v1/utils/thread-utils.d.ts +0 -16
  477. package/esm/v1/utils/thread-utils.d.ts.map +0 -1
  478. package/esm/v1/utils/thread-utils.js +0 -31
  479. package/esm/v1/utils/thread-utils.js.map +0 -1
  480. package/esm/v1/utils/tool-call-tracker.d.ts +0 -73
  481. package/esm/v1/utils/tool-call-tracker.d.ts.map +0 -1
  482. package/esm/v1/utils/tool-call-tracker.js +0 -176
  483. package/esm/v1/utils/tool-call-tracker.js.map +0 -1
  484. package/esm/v1/utils/tool-executor.d.ts +0 -67
  485. package/esm/v1/utils/tool-executor.d.ts.map +0 -1
  486. package/esm/v1/utils/tool-executor.js +0 -154
  487. package/esm/v1/utils/tool-executor.js.map +0 -1
  488. package/esm/v1/utils/unstrictify.d.ts +0 -32
  489. package/esm/v1/utils/unstrictify.d.ts.map +0 -1
  490. package/esm/v1/utils/unstrictify.js +0 -155
  491. package/esm/v1/utils/unstrictify.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-tambo-v1.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * useTambo - Main Hook\n *\n * Combines all contexts into a single hook for convenient access\n * to thread state, streaming status, registry, and client.\n */\n\nimport { EventType } from \"@ag-ui/core\";\nimport type TamboAI from \"@tambo-ai/typescript-sdk\";\nimport React, {\n useCallback,\n useContext,\n useMemo,\n useRef,\n type ReactElement,\n} from \"react\";\nimport {\n useTamboClient,\n useTamboQueryClient,\n} from \"../../providers/tambo-client-provider\";\nimport { useTamboConfig } from \"../providers/tambo-v1-provider\";\nimport { useTamboAuthState } from \"./use-tambo-v1-auth-state\";\nimport type { TamboAuthState } from \"../types/auth\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { ComponentRenderer } from \"../components/v1-component-renderer\";\nimport {\n useStreamDispatch,\n useStreamState,\n useThreadManagement,\n type ThreadManagement,\n} from \"../providers/tambo-v1-stream-context\";\nimport type {\n Content,\n TamboToolDisplayProps,\n TamboThreadMessage,\n TamboToolUseContent,\n} from \"../types/message\";\nimport type { StreamingState } from \"../types/thread\";\nimport {\n isPlaceholderThreadId,\n type ThreadState,\n} from \"../utils/event-accumulator\";\n\n/**\n * Return type for useTambo hook\n */\nexport interface UseTamboReturn {\n /**\n * The Tambo API client instance\n */\n client: TamboAI;\n\n /**\n * Current thread state for the given threadId, or undefined if not loaded\n */\n thread: ThreadState | undefined;\n\n /**\n * Messages in the current thread\n */\n messages: TamboThreadMessage[];\n\n /**\n * Current streaming state\n */\n streamingState: StreamingState;\n\n /**\n * Whether the thread is currently streaming a response\n */\n isStreaming: boolean;\n\n /**\n * Whether the thread is waiting for the AI to start responding\n */\n isWaiting: boolean;\n\n /**\n * Whether the thread is idle (not streaming or waiting)\n */\n isIdle: boolean;\n\n /**\n * Register a component with the registry\n */\n registerComponent: TamboRegistryContextType[\"registerComponent\"];\n\n /**\n * Register a tool with the registry\n */\n registerTool: TamboRegistryContextType[\"registerTool\"];\n\n /**\n * Register multiple tools with the registry\n */\n registerTools: TamboRegistryContextType[\"registerTools\"];\n\n /**\n * The component registry (Map of name -> component definition)\n */\n componentList: TamboRegistryContextType[\"componentList\"];\n\n /**\n * The tool registry (Map of name -> tool definition)\n */\n toolRegistry: TamboRegistryContextType[\"toolRegistry\"];\n\n /**\n * Current thread ID (always available - uses \"placeholder\" for new threads)\n */\n currentThreadId: string;\n\n /**\n * Initialize a new thread in the stream context\n */\n initThread: ThreadManagement[\"initThread\"];\n\n /**\n * Switch the current active thread\n */\n switchThread: ThreadManagement[\"switchThread\"];\n\n /**\n * Start a new thread (generates a temporary ID)\n */\n startNewThread: ThreadManagement[\"startNewThread\"];\n\n /**\n * Dispatch function for stream events (advanced usage)\n */\n dispatch: ReturnType<typeof useStreamDispatch>;\n\n /**\n * Cancel the current run on this thread.\n * Optimistically updates local state and sends cancellation request to the API.\n * No-op if there's no active run or thread is a placeholder.\n */\n cancelRun: () => Promise<void>;\n\n /**\n * Current authentication state.\n * Use this to show auth-related UI or conditionally render features.\n */\n authState: TamboAuthState;\n\n /**\n * Shorthand for `authState.status === \"identified\"`.\n * When true, the SDK is ready to make API calls.\n */\n isIdentified: boolean;\n\n /**\n * Update a thread's name.\n * Useful for implementing manual thread renaming UI in history sidebars.\n * Cache invalidation is best-effort; failures will be logged and won't reject.\n * @param threadId - ID of the thread to rename\n * @param name - New name for the thread\n * @returns Promise that resolves when the update completes\n */\n updateThreadName: (threadId: string, name: string) => Promise<void>;\n}\n\n/**\n * Main hook for accessing Tambo functionality.\n *\n * Combines thread state, streaming status, registry, and client\n * into a single convenient hook.\n *\n * Messages returned include renderedComponent on component content blocks,\n * allowing direct rendering via {content.renderedComponent}.\n * @param threadId - Optional thread ID to get state for\n * @returns Combined context with thread state, messages, and utilities\n * @example\n * ```tsx\n * function ChatInterface() {\n * const {\n * thread,\n * messages,\n * isStreaming,\n * registerComponent,\n * } = useTambo('thread_123');\n *\n * return (\n * <div>\n * {messages.map(msg => <Message key={msg.id} message={msg} />)}\n * {isStreaming && <LoadingIndicator />}\n * </div>\n * );\n * }\n * ```\n */\n/**\n * Cache entry for a rendered component wrapper.\n * Stores the element and the props JSON used to create it.\n */\ninterface ComponentCacheEntry {\n element: ReactElement;\n propsJson: string;\n}\n\n/**\n *\n * @returns The combined Tambo context\n */\nexport function useTambo(): UseTamboReturn {\n const client = useTamboClient();\n const queryClient = useTamboQueryClient();\n const { userKey } = useTamboConfig();\n const streamState = useStreamState();\n const dispatch = useStreamDispatch();\n const registry = useContext(TamboRegistryContext);\n const threadManagement = useThreadManagement();\n const authState = useTamboAuthState();\n\n // Cache for rendered component wrappers - maintains stable element references\n // across renders when props haven't changed\n const componentCacheRef = useRef<Map<string, ComponentCacheEntry>>(new Map());\n\n // Get thread state for the current thread\n const threadState = streamState.threadMap[streamState.currentThreadId];\n\n // Keep a live snapshot of the threadMap for callbacks without forcing them to\n // re-create on every stream state update.\n const threadMapRef = useRef(streamState.threadMap);\n threadMapRef.current = streamState.threadMap;\n\n // Cancel the current run on this thread\n const cancelRun = useCallback(async () => {\n const runId = threadState?.streaming.runId;\n const threadId = streamState.currentThreadId;\n\n // No-op if there's no active run or thread is a placeholder\n if (!runId || isPlaceholderThreadId(threadId)) {\n return;\n }\n\n // Optimistically update local state with RUN_ERROR event\n dispatch({\n type: \"EVENT\",\n threadId,\n event: {\n type: EventType.RUN_ERROR,\n message: \"Run cancelled\",\n code: \"CANCELLED\",\n timestamp: Date.now(),\n },\n });\n\n // Call API to cancel the run\n try {\n await client.threads.runs.delete(runId, { threadId, userKey });\n } catch (error) {\n // Log but don't rethrow - local state is already updated\n console.warn(\"Failed to cancel run on server:\", error);\n }\n }, [\n client,\n userKey,\n streamState.currentThreadId,\n threadState?.streaming.runId,\n dispatch,\n ]);\n\n // Update a thread's name\n const updateThreadName = useCallback(\n async (threadId: string, name: string) => {\n await client.threads.update(threadId, { name, userKey });\n\n if (threadMapRef.current[threadId]) {\n dispatch({\n type: \"UPDATE_THREAD_NAME\",\n threadId,\n name: name,\n });\n }\n\n try {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: [\"v1-threads\", \"list\"],\n }),\n queryClient.invalidateQueries({\n queryKey: [\"v1-threads\", threadId],\n }),\n ]);\n } catch (error) {\n console.warn(\n \"[useTambo] Failed to invalidate thread queries after rename:\",\n error,\n );\n }\n },\n [client, userKey, dispatch, queryClient],\n );\n\n // Memoize the return object to prevent unnecessary re-renders\n return useMemo(() => {\n const thread = threadState;\n const rawMessages = thread?.thread.messages ?? [];\n const streamingState: StreamingState = thread?.streaming ?? {\n status: \"idle\" as const,\n };\n\n // Build a set of tool_use IDs that have completed (have a matching tool_result)\n // We need to look across all messages since tool_result might be in a different message\n const completedToolIds = new Set<string>();\n for (const msg of rawMessages) {\n for (const content of msg.content) {\n if (content.type === \"tool_result\") {\n completedToolIds.add(content.toolUseId);\n }\n }\n }\n\n // Transform messages to add computed properties to content blocks\n const messages = rawMessages.map((message): TamboThreadMessage => {\n const transformedContent = message.content.map((content): Content => {\n // Transform tool_use content to add computed state\n if (content.type === \"tool_use\") {\n const hasCompleted = completedToolIds.has(content.id);\n const input = content.input ?? {};\n\n // Extract Tambo display props from input\n const tamboDisplayProps: TamboToolDisplayProps = {\n _tambo_statusMessage:\n typeof input._tambo_statusMessage === \"string\"\n ? input._tambo_statusMessage\n : undefined,\n _tambo_completionStatusMessage:\n typeof input._tambo_completionStatusMessage === \"string\"\n ? input._tambo_completionStatusMessage\n : undefined,\n };\n\n // Compute status message based on completion state\n const statusMessage = hasCompleted\n ? (tamboDisplayProps._tambo_completionStatusMessage ??\n `Called ${content.name}`)\n : (tamboDisplayProps._tambo_statusMessage ??\n `Calling ${content.name}`);\n\n // Filter out _tambo_* properties from input - consumers only see actual tool params\n const cleanInput: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n if (!key.startsWith(\"_tambo_\")) {\n cleanInput[key] = value;\n }\n }\n\n const v1Content: TamboToolUseContent = {\n ...content,\n input: cleanInput,\n hasCompleted,\n statusMessage,\n tamboDisplayProps,\n };\n return v1Content;\n }\n\n if (content.type !== \"component\") {\n return content;\n }\n\n const componentContent = content;\n const propsJson = JSON.stringify(componentContent.props ?? {});\n const cache = componentCacheRef.current;\n const cached = cache.get(componentContent.id);\n\n // Return cached element if props haven't changed\n if (cached?.propsJson === propsJson) {\n return {\n ...componentContent,\n renderedComponent: cached.element,\n };\n }\n\n // Create new wrapper element\n const element = React.createElement(ComponentRenderer, {\n key: componentContent.id,\n content: componentContent,\n threadId: streamState.currentThreadId,\n messageId: message.id,\n });\n\n // Update cache\n cache.set(componentContent.id, { element, propsJson });\n\n return {\n ...componentContent,\n renderedComponent: element,\n };\n });\n\n return {\n ...message,\n content: transformedContent,\n };\n });\n\n return {\n client,\n thread,\n messages,\n streamingState,\n isStreaming: streamingState.status === \"streaming\",\n isWaiting: streamingState.status === \"waiting\",\n isIdle: streamingState.status === \"idle\",\n registerComponent: registry.registerComponent,\n registerTool: registry.registerTool,\n registerTools: registry.registerTools,\n componentList: registry.componentList,\n toolRegistry: registry.toolRegistry,\n currentThreadId: streamState.currentThreadId,\n initThread: threadManagement.initThread,\n switchThread: threadManagement.switchThread,\n startNewThread: threadManagement.startNewThread,\n dispatch,\n cancelRun,\n authState,\n isIdentified: authState.status === \"identified\",\n updateThreadName,\n };\n }, [\n cancelRun,\n updateThreadName,\n client,\n threadState,\n registry,\n streamState.currentThreadId,\n threadManagement,\n dispatch,\n authState,\n ]);\n}\n"]}
1
+ {"version":3,"file":"use-tambo-v1.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * useTambo - Main Hook\n *\n * Combines all contexts into a single hook for convenient access\n * to thread state, streaming status, registry, and client.\n */\n\nimport { EventType } from \"@ag-ui/core\";\nimport type TamboAI from \"@tambo-ai/typescript-sdk\";\nimport React, {\n useCallback,\n useContext,\n useMemo,\n useRef,\n type ReactElement,\n} from \"react\";\nimport {\n useTamboClient,\n useTamboQueryClient,\n} from \"../../providers/tambo-client-provider\";\nimport { useTamboConfig } from \"../providers/tambo-v1-provider\";\nimport { useTamboAuthState } from \"./use-tambo-v1-auth-state\";\nimport type { TamboAuthState } from \"@tambo-ai/client\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { ComponentRenderer } from \"../components/v1-component-renderer\";\nimport {\n useStreamDispatch,\n useStreamState,\n useThreadManagement,\n type ThreadManagement,\n} from \"../providers/tambo-v1-stream-context\";\nimport type {\n Content,\n ReactTamboThreadMessage,\n TamboToolDisplayProps,\n TamboToolUseContent,\n} from \"../types/message\";\nimport type { StreamingState } from \"@tambo-ai/client\";\nimport { isPlaceholderThreadId, type ThreadState } from \"@tambo-ai/client\";\n\n/**\n * Return type for useTambo hook\n */\nexport interface UseTamboReturn {\n /**\n * The Tambo API client instance\n */\n client: TamboAI;\n\n /**\n * Current thread state for the given threadId, or undefined if not loaded\n */\n thread: ThreadState | undefined;\n\n /**\n * Messages in the current thread.\n * Component content blocks include `renderedComponent` for direct rendering.\n */\n messages: ReactTamboThreadMessage[];\n\n /**\n * Current streaming state\n */\n streamingState: StreamingState;\n\n /**\n * Whether the thread is currently streaming a response\n */\n isStreaming: boolean;\n\n /**\n * Whether the thread is waiting for the AI to start responding\n */\n isWaiting: boolean;\n\n /**\n * Whether the thread is idle (not streaming or waiting)\n */\n isIdle: boolean;\n\n /**\n * Register a component with the registry\n */\n registerComponent: TamboRegistryContextType[\"registerComponent\"];\n\n /**\n * Register a tool with the registry\n */\n registerTool: TamboRegistryContextType[\"registerTool\"];\n\n /**\n * Register multiple tools with the registry\n */\n registerTools: TamboRegistryContextType[\"registerTools\"];\n\n /**\n * The component registry (Map of name -> component definition)\n */\n componentList: TamboRegistryContextType[\"componentList\"];\n\n /**\n * The tool registry (Map of name -> tool definition)\n */\n toolRegistry: TamboRegistryContextType[\"toolRegistry\"];\n\n /**\n * Current thread ID (always available - uses \"placeholder\" for new threads)\n */\n currentThreadId: string;\n\n /**\n * Initialize a new thread in the stream context\n */\n initThread: ThreadManagement[\"initThread\"];\n\n /**\n * Switch the current active thread\n */\n switchThread: ThreadManagement[\"switchThread\"];\n\n /**\n * Start a new thread (generates a temporary ID)\n */\n startNewThread: ThreadManagement[\"startNewThread\"];\n\n /**\n * Dispatch function for stream events (advanced usage)\n */\n dispatch: ReturnType<typeof useStreamDispatch>;\n\n /**\n * Cancel the current run on this thread.\n * Optimistically updates local state and sends cancellation request to the API.\n * No-op if there's no active run or thread is a placeholder.\n */\n cancelRun: () => Promise<void>;\n\n /**\n * Current authentication state.\n * Use this to show auth-related UI or conditionally render features.\n */\n authState: TamboAuthState;\n\n /**\n * Shorthand for `authState.status === \"identified\"`.\n * When true, the SDK is ready to make API calls.\n */\n isIdentified: boolean;\n\n /**\n * Update a thread's name.\n * Useful for implementing manual thread renaming UI in history sidebars.\n * Cache invalidation is best-effort; failures will be logged and won't reject.\n * @param threadId - ID of the thread to rename\n * @param name - New name for the thread\n * @returns Promise that resolves when the update completes\n */\n updateThreadName: (threadId: string, name: string) => Promise<void>;\n}\n\n/**\n * Main hook for accessing Tambo functionality.\n *\n * Combines thread state, streaming status, registry, and client\n * into a single convenient hook.\n *\n * Messages returned include renderedComponent on component content blocks,\n * allowing direct rendering via {content.renderedComponent}.\n * @param threadId - Optional thread ID to get state for\n * @returns Combined context with thread state, messages, and utilities\n * @example\n * ```tsx\n * function ChatInterface() {\n * const {\n * thread,\n * messages,\n * isStreaming,\n * registerComponent,\n * } = useTambo('thread_123');\n *\n * return (\n * <div>\n * {messages.map(msg => <Message key={msg.id} message={msg} />)}\n * {isStreaming && <LoadingIndicator />}\n * </div>\n * );\n * }\n * ```\n */\n/**\n * Cache entry for a rendered component wrapper.\n * Stores the element and the props JSON used to create it.\n */\ninterface ComponentCacheEntry {\n element: ReactElement;\n propsJson: string;\n}\n\n/**\n *\n * @returns The combined Tambo context\n */\nexport function useTambo(): UseTamboReturn {\n const client = useTamboClient();\n const queryClient = useTamboQueryClient();\n const { userKey } = useTamboConfig();\n const streamState = useStreamState();\n const dispatch = useStreamDispatch();\n const registry = useContext(TamboRegistryContext);\n const threadManagement = useThreadManagement();\n const authState = useTamboAuthState();\n\n // Cache for rendered component wrappers - maintains stable element references\n // across renders when props haven't changed\n const componentCacheRef = useRef<Map<string, ComponentCacheEntry>>(new Map());\n\n // Get thread state for the current thread\n const threadState = streamState.threadMap[streamState.currentThreadId];\n\n // Keep a live snapshot of the threadMap for callbacks without forcing them to\n // re-create on every stream state update.\n const threadMapRef = useRef(streamState.threadMap);\n threadMapRef.current = streamState.threadMap;\n\n // Cancel the current run on this thread\n const cancelRun = useCallback(async () => {\n const runId = threadState?.streaming.runId;\n const threadId = streamState.currentThreadId;\n\n // No-op if there's no active run or thread is a placeholder\n if (!runId || isPlaceholderThreadId(threadId)) {\n return;\n }\n\n // Optimistically update local state with RUN_ERROR event\n dispatch({\n type: \"EVENT\",\n threadId,\n event: {\n type: EventType.RUN_ERROR,\n message: \"Run cancelled\",\n code: \"CANCELLED\",\n timestamp: Date.now(),\n },\n });\n\n // Call API to cancel the run\n try {\n await client.threads.runs.delete(runId, { threadId, userKey });\n } catch (error) {\n // Log but don't rethrow - local state is already updated\n console.warn(\"Failed to cancel run on server:\", error);\n }\n }, [\n client,\n userKey,\n streamState.currentThreadId,\n threadState?.streaming.runId,\n dispatch,\n ]);\n\n // Update a thread's name\n const updateThreadName = useCallback(\n async (threadId: string, name: string) => {\n await client.threads.update(threadId, { name, userKey });\n\n if (threadMapRef.current[threadId]) {\n dispatch({\n type: \"UPDATE_THREAD_NAME\",\n threadId,\n name: name,\n });\n }\n\n try {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: [\"v1-threads\", \"list\"],\n }),\n queryClient.invalidateQueries({\n queryKey: [\"v1-threads\", threadId],\n }),\n ]);\n } catch (error) {\n console.warn(\n \"[useTambo] Failed to invalidate thread queries after rename:\",\n error,\n );\n }\n },\n [client, userKey, dispatch, queryClient],\n );\n\n // Memoize the return object to prevent unnecessary re-renders\n return useMemo(() => {\n const thread = threadState;\n const rawMessages = thread?.thread.messages ?? [];\n const streamingState: StreamingState = thread?.streaming ?? {\n status: \"idle\" as const,\n };\n\n // Build a set of tool_use IDs that have completed (have a matching tool_result)\n // We need to look across all messages since tool_result might be in a different message\n const completedToolIds = new Set<string>();\n for (const msg of rawMessages) {\n for (const content of msg.content) {\n if (content.type === \"tool_result\") {\n completedToolIds.add(content.toolUseId);\n }\n }\n }\n\n // Transform messages to add computed properties to content blocks\n const messages = rawMessages.map((message): ReactTamboThreadMessage => {\n const transformedContent = message.content.map((content): Content => {\n // Transform tool_use content to add computed state\n if (content.type === \"tool_use\") {\n const hasCompleted = completedToolIds.has(content.id);\n const input = content.input ?? {};\n\n // Extract Tambo display props from input\n const tamboDisplayProps: TamboToolDisplayProps = {\n _tambo_statusMessage:\n typeof input._tambo_statusMessage === \"string\"\n ? input._tambo_statusMessage\n : undefined,\n _tambo_completionStatusMessage:\n typeof input._tambo_completionStatusMessage === \"string\"\n ? input._tambo_completionStatusMessage\n : undefined,\n };\n\n // Compute status message based on completion state\n const statusMessage = hasCompleted\n ? (tamboDisplayProps._tambo_completionStatusMessage ??\n `Called ${content.name}`)\n : (tamboDisplayProps._tambo_statusMessage ??\n `Calling ${content.name}`);\n\n // Filter out _tambo_* properties from input - consumers only see actual tool params\n const cleanInput: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n if (!key.startsWith(\"_tambo_\")) {\n cleanInput[key] = value;\n }\n }\n\n const v1Content: TamboToolUseContent = {\n ...content,\n input: cleanInput,\n hasCompleted,\n statusMessage,\n tamboDisplayProps,\n };\n return v1Content;\n }\n\n if (content.type !== \"component\") {\n return content;\n }\n\n const componentContent = content;\n const propsJson = JSON.stringify(componentContent.props ?? {});\n const cache = componentCacheRef.current;\n const cached = cache.get(componentContent.id);\n\n // Return cached element if props haven't changed\n if (cached?.propsJson === propsJson) {\n return {\n ...componentContent,\n renderedComponent: cached.element,\n };\n }\n\n // Create new wrapper element\n const element = React.createElement(ComponentRenderer, {\n key: componentContent.id,\n content: componentContent,\n threadId: streamState.currentThreadId,\n messageId: message.id,\n });\n\n // Update cache\n cache.set(componentContent.id, { element, propsJson });\n\n return {\n ...componentContent,\n renderedComponent: element,\n };\n });\n\n return {\n ...message,\n content: transformedContent,\n };\n });\n\n return {\n client,\n thread,\n messages,\n streamingState,\n isStreaming: streamingState.status === \"streaming\",\n isWaiting: streamingState.status === \"waiting\",\n isIdle: streamingState.status === \"idle\",\n registerComponent: registry.registerComponent,\n registerTool: registry.registerTool,\n registerTools: registry.registerTools,\n componentList: registry.componentList,\n toolRegistry: registry.toolRegistry,\n currentThreadId: streamState.currentThreadId,\n initThread: threadManagement.initThread,\n switchThread: threadManagement.switchThread,\n startNewThread: threadManagement.startNewThread,\n dispatch,\n cancelRun,\n authState,\n isIdentified: authState.status === \"identified\",\n updateThreadName,\n };\n }, [\n cancelRun,\n updateThreadName,\n client,\n threadState,\n registry,\n streamState.currentThreadId,\n threadManagement,\n dispatch,\n authState,\n ]);\n}\n"]}
@@ -4,7 +4,7 @@ import React, { useReducer } from "react";
4
4
  import { useTamboClient } from "../../providers/tambo-client-provider.js";
5
5
  import { TamboRegistryContext, } from "../../providers/tambo-registry-provider.js";
6
6
  import { TamboStreamProvider } from "../providers/tambo-v1-stream-context.js";
7
- import { streamReducer, } from "../utils/event-accumulator.js";
7
+ import { streamReducer, } from "@tambo-ai/client";
8
8
  import { useTambo } from "./use-tambo-v1.js";
9
9
  jest.mock("../../providers/tambo-client-provider", () => ({
10
10
  useTamboClient: jest.fn(),
@@ -47,6 +47,7 @@ describe("useTambo", () => {
47
47
  registerComponent: jest.fn(),
48
48
  registerTool: jest.fn(),
49
49
  registerTools: jest.fn(),
50
+ unregisterTools: jest.fn(),
50
51
  addToolAssociation: jest.fn(),
51
52
  registerMcpServer: jest.fn(),
52
53
  registerMcpServers: jest.fn(),
@@ -240,7 +241,7 @@ describe("useTambo", () => {
240
241
  lastRunCancelled: false,
241
242
  },
242
243
  streaming: { status: "idle" },
243
- accumulatingToolArgs: new Map(),
244
+ accumulatingToolArgs: {},
244
245
  },
245
246
  },
246
247
  currentThreadId: "thread_123",
@@ -278,7 +279,7 @@ describe("useTambo", () => {
278
279
  lastRunCancelled: false,
279
280
  },
280
281
  streaming: { status: "idle" },
281
- accumulatingToolArgs: new Map(),
282
+ accumulatingToolArgs: {},
282
283
  },
283
284
  },
284
285
  currentThreadId: "thread_123",
@@ -318,7 +319,7 @@ describe("useTambo", () => {
318
319
  lastRunCancelled: false,
319
320
  },
320
321
  streaming: { status: "idle" },
321
- accumulatingToolArgs: new Map(),
322
+ accumulatingToolArgs: {},
322
323
  },
323
324
  },
324
325
  currentThreadId: "thread_123",
@@ -355,7 +356,7 @@ describe("useTambo", () => {
355
356
  lastRunCancelled: false,
356
357
  },
357
358
  streaming: { status: "idle" },
358
- accumulatingToolArgs: new Map(),
359
+ accumulatingToolArgs: {},
359
360
  },
360
361
  },
361
362
  currentThreadId: "thread_123",
@@ -395,7 +396,7 @@ describe("useTambo", () => {
395
396
  lastRunCancelled: false,
396
397
  },
397
398
  streaming: { status: "idle" },
398
- accumulatingToolArgs: new Map(),
399
+ accumulatingToolArgs: {},
399
400
  },
400
401
  },
401
402
  currentThreadId: "thread_123",
@@ -437,7 +438,7 @@ describe("useTambo", () => {
437
438
  lastRunCancelled: false,
438
439
  },
439
440
  streaming: { status: "idle" },
440
- accumulatingToolArgs: new Map(),
441
+ accumulatingToolArgs: {},
441
442
  },
442
443
  },
443
444
  currentThreadId: "thread_123",
@@ -475,7 +476,7 @@ describe("useTambo", () => {
475
476
  lastRunCancelled: false,
476
477
  },
477
478
  streaming: { status: "idle" },
478
- accumulatingToolArgs: new Map(),
479
+ accumulatingToolArgs: {},
479
480
  },
480
481
  },
481
482
  currentThreadId: "placeholder",
@@ -518,7 +519,7 @@ describe("useTambo", () => {
518
519
  lastRunCancelled: false,
519
520
  },
520
521
  streaming: { status: "idle" },
521
- accumulatingToolArgs: new Map(),
522
+ accumulatingToolArgs: {},
522
523
  },
523
524
  },
524
525
  currentThreadId: "thread_123",
@@ -572,7 +573,7 @@ describe("useTambo", () => {
572
573
  lastRunCancelled: false,
573
574
  },
574
575
  streaming: { status: "idle" },
575
- accumulatingToolArgs: new Map(),
576
+ accumulatingToolArgs: {},
576
577
  },
577
578
  },
578
579
  currentThreadId: "thread_123",
@@ -615,7 +616,7 @@ describe("useTambo", () => {
615
616
  lastRunCancelled: false,
616
617
  },
617
618
  streaming: { status: "idle" },
618
- accumulatingToolArgs: new Map(),
619
+ accumulatingToolArgs: {},
619
620
  },
620
621
  },
621
622
  currentThreadId: "thread_123",
@@ -671,7 +672,7 @@ describe("useTambo", () => {
671
672
  lastRunCancelled: false,
672
673
  },
673
674
  streaming: { status: "idle" },
674
- accumulatingToolArgs: new Map(),
675
+ accumulatingToolArgs: {},
675
676
  },
676
677
  },
677
678
  currentThreadId: "thread_123",
@@ -716,7 +717,7 @@ describe("useTambo", () => {
716
717
  lastRunCancelled: false,
717
718
  },
718
719
  streaming: { status: "idle" },
719
- accumulatingToolArgs: new Map(),
720
+ accumulatingToolArgs: {},
720
721
  },
721
722
  },
722
723
  currentThreadId: "thread_123",
@@ -758,7 +759,7 @@ describe("useTambo", () => {
758
759
  lastRunCancelled: false,
759
760
  },
760
761
  streaming: { status: "idle" },
761
- accumulatingToolArgs: new Map(),
762
+ accumulatingToolArgs: {},
762
763
  },
763
764
  },
764
765
  currentThreadId: "thread_123",
@@ -799,7 +800,7 @@ describe("useTambo", () => {
799
800
  lastRunCancelled: false,
800
801
  },
801
802
  streaming: { status: "idle" },
802
- accumulatingToolArgs: new Map(),
803
+ accumulatingToolArgs: {},
803
804
  },
804
805
  },
805
806
  currentThreadId: "thread_123",
@@ -858,7 +859,7 @@ describe("useTambo", () => {
858
859
  lastRunCancelled: false,
859
860
  },
860
861
  streaming: { status: "idle" },
861
- accumulatingToolArgs: new Map(),
862
+ accumulatingToolArgs: {},
862
863
  },
863
864
  },
864
865
  currentThreadId: "thread_123",
@@ -890,7 +891,7 @@ describe("useTambo", () => {
890
891
  lastRunCancelled: false,
891
892
  },
892
893
  streaming: { status: "streaming", runId: "run_456" },
893
- accumulatingToolArgs: new Map(),
894
+ accumulatingToolArgs: {},
894
895
  },
895
896
  },
896
897
  currentThreadId: "thread_123",
@@ -925,7 +926,7 @@ describe("useTambo", () => {
925
926
  lastRunCancelled: false,
926
927
  },
927
928
  streaming: { status: "idle" }, // No runId
928
- accumulatingToolArgs: new Map(),
929
+ accumulatingToolArgs: {},
929
930
  },
930
931
  },
931
932
  currentThreadId: "thread_123",
@@ -958,7 +959,7 @@ describe("useTambo", () => {
958
959
  lastRunCancelled: false,
959
960
  },
960
961
  streaming: { status: "streaming", runId: "run_123" },
961
- accumulatingToolArgs: new Map(),
962
+ accumulatingToolArgs: {},
962
963
  },
963
964
  },
964
965
  currentThreadId: "placeholder",
@@ -998,7 +999,7 @@ describe("useTambo", () => {
998
999
  lastRunCancelled: false,
999
1000
  },
1000
1001
  streaming: { status: "streaming", runId: "run_456" },
1001
- accumulatingToolArgs: new Map(),
1002
+ accumulatingToolArgs: {},
1002
1003
  },
1003
1004
  },
1004
1005
  currentThreadId: "thread_123",
@@ -1036,7 +1037,7 @@ describe("useTambo", () => {
1036
1037
  name: "Old Name",
1037
1038
  },
1038
1039
  streaming: { status: "idle" },
1039
- accumulatingToolArgs: new Map(),
1040
+ accumulatingToolArgs: {},
1040
1041
  },
1041
1042
  },
1042
1043
  currentThreadId: "thread_456",
@@ -1113,7 +1114,7 @@ describe("useTambo", () => {
1113
1114
  name: "Old Name",
1114
1115
  },
1115
1116
  streaming: { status: "idle" },
1116
- accumulatingToolArgs: new Map(),
1117
+ accumulatingToolArgs: {},
1117
1118
  },
1118
1119
  },
1119
1120
  currentThreadId: "thread_456",