@tambo-ai/react 0.73.1 → 0.74.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 (407) 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.map +1 -1
  11. package/dist/mcp/mcp-hooks.js +70 -16
  12. package/dist/mcp/mcp-hooks.js.map +1 -1
  13. package/dist/providers/tambo-interactable-provider-partial-updates.test.js +3 -3
  14. package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  15. package/dist/providers/tambo-interactable-provider.js +2 -2
  16. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  17. package/dist/providers/tambo-interactable-provider.test.js +3 -3
  18. package/dist/providers/tambo-interactable-provider.test.js.map +1 -1
  19. package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
  20. package/dist/providers/tambo-thread-input-provider.js +1 -0
  21. package/dist/providers/tambo-thread-input-provider.js.map +1 -1
  22. package/dist/v1/__tests__/v1-interactables.test.d.ts +2 -0
  23. package/dist/v1/__tests__/v1-interactables.test.d.ts.map +1 -0
  24. package/dist/v1/__tests__/v1-interactables.test.js +135 -0
  25. package/dist/v1/__tests__/v1-interactables.test.js.map +1 -0
  26. package/dist/v1/components/v1-component-renderer.d.ts +48 -0
  27. package/dist/v1/components/v1-component-renderer.d.ts.map +1 -0
  28. package/dist/v1/components/v1-component-renderer.js +137 -0
  29. package/dist/v1/components/v1-component-renderer.js.map +1 -0
  30. package/dist/v1/components/v1-component-renderer.test.d.ts +2 -0
  31. package/dist/v1/components/v1-component-renderer.test.d.ts.map +1 -0
  32. package/dist/v1/components/v1-component-renderer.test.js +270 -0
  33. package/dist/v1/components/v1-component-renderer.test.js.map +1 -0
  34. package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  35. package/dist/v1/hooks/use-tambo-v1-component-state.js +2 -25
  36. package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  37. package/dist/v1/hooks/use-tambo-v1-component-state.test.js +2 -1
  38. package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  39. package/dist/v1/hooks/use-tambo-v1-messages.test.js +25 -1
  40. package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  41. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +18 -0
  42. package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  43. package/dist/v1/hooks/use-tambo-v1-send-message.js +204 -17
  44. package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  45. package/dist/v1/hooks/use-tambo-v1-send-message.test.js +261 -7
  46. package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  47. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts +90 -0
  48. package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -0
  49. package/dist/v1/hooks/use-tambo-v1-stream-status.js +179 -0
  50. package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -0
  51. package/dist/v1/hooks/use-tambo-v1-stream-status.test.d.ts +2 -0
  52. package/dist/v1/hooks/use-tambo-v1-stream-status.test.d.ts.map +1 -0
  53. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +371 -0
  54. package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -0
  55. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +78 -54
  56. package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  57. package/dist/v1/hooks/use-tambo-v1-suggestions.js +153 -87
  58. package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  59. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +213 -134
  60. package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  61. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +148 -13
  62. package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  63. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +8 -21
  64. package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  65. package/dist/v1/hooks/use-tambo-v1-thread-list.js +11 -10
  66. package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  67. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +37 -2
  68. package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  69. package/dist/v1/hooks/use-tambo-v1-thread.d.ts +1 -1
  70. package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  71. package/dist/v1/hooks/use-tambo-v1-thread.js +2 -7
  72. package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  73. package/dist/v1/hooks/use-tambo-v1-thread.test.js +2 -0
  74. package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  75. package/dist/v1/hooks/use-tambo-v1.d.ts +12 -28
  76. package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  77. package/dist/v1/hooks/use-tambo-v1.js +164 -31
  78. package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
  79. package/dist/v1/hooks/use-tambo-v1.test.js +891 -18
  80. package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
  81. package/dist/v1/index.d.ts +7 -1
  82. package/dist/v1/index.d.ts.map +1 -1
  83. package/dist/v1/index.js +18 -1
  84. package/dist/v1/index.js.map +1 -1
  85. package/dist/v1/providers/tambo-v1-provider.d.ts +16 -6
  86. package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  87. package/dist/v1/providers/tambo-v1-provider.js +14 -19
  88. package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
  89. package/dist/v1/providers/tambo-v1-provider.test.js +34 -20
  90. package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
  91. package/dist/v1/providers/tambo-v1-stream-context.d.ts +3 -3
  92. package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  93. package/dist/v1/providers/tambo-v1-stream-context.js +60 -12
  94. package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
  95. package/dist/v1/providers/tambo-v1-stream-context.test.js +49 -20
  96. package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  97. package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  98. package/dist/v1/providers/tambo-v1-stub-provider.js +2 -0
  99. package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  100. package/dist/v1/providers/tambo-v1-stub-provider.test.js +7 -6
  101. package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  102. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -6
  103. package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  104. package/dist/v1/providers/tambo-v1-thread-input-provider.js +14 -12
  105. package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  106. package/dist/v1/types/event.d.ts +9 -1
  107. package/dist/v1/types/event.d.ts.map +1 -1
  108. package/dist/v1/types/event.js.map +1 -1
  109. package/dist/v1/types/event.test.js +5 -1
  110. package/dist/v1/types/event.test.js.map +1 -1
  111. package/dist/v1/types/message.d.ts +65 -7
  112. package/dist/v1/types/message.d.ts.map +1 -1
  113. package/dist/v1/types/message.js.map +1 -1
  114. package/dist/v1/types/thread.d.ts +4 -0
  115. package/dist/v1/types/thread.d.ts.map +1 -1
  116. package/dist/v1/types/thread.js.map +1 -1
  117. package/dist/v1/utils/event-accumulator.d.ts +40 -4
  118. package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
  119. package/dist/v1/utils/event-accumulator.js +444 -35
  120. package/dist/v1/utils/event-accumulator.js.map +1 -1
  121. package/dist/v1/utils/event-accumulator.test.js +1041 -28
  122. package/dist/v1/utils/event-accumulator.test.js.map +1 -1
  123. package/dist/v1/utils/registry-conversion.d.ts +9 -9
  124. package/dist/v1/utils/registry-conversion.d.ts.map +1 -1
  125. package/dist/v1/utils/registry-conversion.js +10 -11
  126. package/dist/v1/utils/registry-conversion.js.map +1 -1
  127. package/dist/v1/utils/registry-conversion.test.js +39 -11
  128. package/dist/v1/utils/registry-conversion.test.js.map +1 -1
  129. package/dist/v1/utils/thread-utils.d.ts +16 -0
  130. package/dist/v1/utils/thread-utils.d.ts.map +1 -0
  131. package/dist/v1/utils/thread-utils.js +34 -0
  132. package/dist/v1/utils/thread-utils.js.map +1 -0
  133. package/dist/v1/utils/tool-executor.d.ts.map +1 -1
  134. package/dist/v1/utils/tool-executor.js +2 -0
  135. package/dist/v1/utils/tool-executor.js.map +1 -1
  136. package/dist/v1/utils/tool-executor.test.js +5 -0
  137. package/dist/v1/utils/tool-executor.test.js.map +1 -1
  138. package/esm/context-helpers/context-helpers-provider.test.js +2 -2
  139. package/esm/context-helpers/context-helpers.test.js +1 -1
  140. package/esm/context-helpers/current-interactables-context-helper.d.ts +1 -1
  141. package/esm/context-helpers/current-page-context-helper.d.ts +1 -1
  142. package/esm/context-helpers/current-time-context-helper.d.ts +1 -1
  143. package/esm/context-helpers/index.d.ts +4 -4
  144. package/esm/context-helpers/index.js +4 -4
  145. package/esm/hoc/with-tambo-interactable.d.ts +1 -1
  146. package/esm/hoc/with-tambo-interactable.js +2 -2
  147. package/esm/hoc/with-tambo-interactable.test.js +3 -3
  148. package/esm/hooks/index.d.ts +8 -8
  149. package/esm/hooks/index.js +8 -8
  150. package/esm/hooks/react-query-hooks.js +1 -1
  151. package/esm/hooks/use-component-state.d.ts +1 -1
  152. package/esm/hooks/use-component-state.js +3 -3
  153. package/esm/hooks/use-component-state.js.map +1 -1
  154. package/esm/hooks/use-component-state.test.js +5 -5
  155. package/esm/hooks/use-current-message.d.ts +1 -1
  156. package/esm/hooks/use-current-message.test.js +1 -1
  157. package/esm/hooks/use-message-images.test.js +1 -1
  158. package/esm/hooks/use-streaming-props.d.ts +1 -1
  159. package/esm/hooks/use-streaming-props.js +1 -1
  160. package/esm/hooks/use-streaming-props.js.map +1 -1
  161. package/esm/hooks/use-suggestions.d.ts +2 -2
  162. package/esm/hooks/use-suggestions.js +10 -10
  163. package/esm/hooks/use-suggestions.test.js +7 -7
  164. package/esm/hooks/use-tambo-stream-status.d.ts +1 -1
  165. package/esm/hooks/use-tambo-stream-status.js +4 -4
  166. package/esm/hooks/use-tambo-stream-status.js.map +1 -1
  167. package/esm/hooks/use-tambo-stream-status.test.js +4 -4
  168. package/esm/hooks/use-tambo-threads.js +3 -3
  169. package/esm/hooks/use-tambo-threads.test.js +3 -3
  170. package/esm/hooks/use-tambo-voice.js +2 -2
  171. package/esm/hooks/use-tambo-voice.test.js +3 -3
  172. package/esm/index.d.ts +22 -22
  173. package/esm/index.js +15 -15
  174. package/esm/mcp/elicitation.d.ts +1 -1
  175. package/esm/mcp/elicitation.test.js +1 -1
  176. package/esm/mcp/index.d.ts +7 -7
  177. package/esm/mcp/index.js +3 -3
  178. package/esm/mcp/mcp-client.d.ts +1 -1
  179. package/esm/mcp/mcp-client.js +1 -1
  180. package/esm/mcp/mcp-client.test.js +1 -1
  181. package/esm/mcp/mcp-hooks.d.ts +1 -1
  182. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  183. package/esm/mcp/mcp-hooks.js +74 -20
  184. package/esm/mcp/mcp-hooks.js.map +1 -1
  185. package/esm/mcp/mcp-hooks.test.js +6 -6
  186. package/esm/mcp/tambo-mcp-provider.d.ts +4 -4
  187. package/esm/mcp/tambo-mcp-provider.js +7 -7
  188. package/esm/mcp/tambo-mcp-provider.test.js +5 -5
  189. package/esm/mcp/use-mcp-servers.test.js +4 -4
  190. package/esm/model/generate-component-response.d.ts +1 -1
  191. package/esm/model/tambo-interactable.d.ts +1 -1
  192. package/esm/model/tambo-thread.d.ts +1 -1
  193. package/esm/providers/__tests__/thread-input-resource-resolution.test.js +3 -3
  194. package/esm/providers/hooks/use-tambo-session-token.test.js +1 -1
  195. package/esm/providers/index.d.ts +12 -12
  196. package/esm/providers/index.js +10 -10
  197. package/esm/providers/tambo-client-provider.js +1 -1
  198. package/esm/providers/tambo-client-provider.test.js +2 -2
  199. package/esm/providers/tambo-component-provider.d.ts +1 -1
  200. package/esm/providers/tambo-component-provider.js +2 -2
  201. package/esm/providers/tambo-context-attachment-provider.js +1 -1
  202. package/esm/providers/tambo-context-attachment-provider.test.js +2 -2
  203. package/esm/providers/tambo-context-helpers-provider.d.ts +1 -1
  204. package/esm/providers/tambo-context-helpers-provider.js +1 -1
  205. package/esm/providers/tambo-context-helpers-provider.test.js +2 -2
  206. package/esm/providers/tambo-interactable-provider-partial-updates.test.js +4 -4
  207. package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
  208. package/esm/providers/tambo-interactable-provider.d.ts +5 -5
  209. package/esm/providers/tambo-interactable-provider.js +6 -6
  210. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  211. package/esm/providers/tambo-interactable-provider.test.js +4 -4
  212. package/esm/providers/tambo-interactable-provider.test.js.map +1 -1
  213. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +4 -4
  214. package/esm/providers/tambo-interactables-additional-context.test.js +4 -4
  215. package/esm/providers/tambo-mcp-token-provider.js +2 -2
  216. package/esm/providers/tambo-prop-stream-provider/index.d.ts +8 -8
  217. package/esm/providers/tambo-prop-stream-provider/index.js +9 -9
  218. package/esm/providers/tambo-prop-stream-provider/pending.d.ts +1 -1
  219. package/esm/providers/tambo-prop-stream-provider/pending.js +2 -2
  220. package/esm/providers/tambo-prop-stream-provider/provider.d.ts +1 -1
  221. package/esm/providers/tambo-prop-stream-provider/provider.js +2 -2
  222. package/esm/providers/tambo-prop-stream-provider/streaming.d.ts +1 -1
  223. package/esm/providers/tambo-prop-stream-provider/streaming.js +2 -2
  224. package/esm/providers/tambo-prop-stream-provider/success.d.ts +1 -1
  225. package/esm/providers/tambo-prop-stream-provider/success.js +2 -2
  226. package/esm/providers/tambo-prop-stream-provider/types.d.ts +1 -1
  227. package/esm/providers/tambo-prop-stream-provider.test.js +4 -4
  228. package/esm/providers/tambo-provider.d.ts +7 -7
  229. package/esm/providers/tambo-provider.js +10 -10
  230. package/esm/providers/tambo-registry-provider.d.ts +3 -3
  231. package/esm/providers/tambo-registry-provider.js +3 -3
  232. package/esm/providers/tambo-registry-provider.test.js +2 -2
  233. package/esm/providers/tambo-registry-schema-compat.test.js +2 -2
  234. package/esm/providers/tambo-stubs.d.ts +4 -4
  235. package/esm/providers/tambo-stubs.js +9 -9
  236. package/esm/providers/tambo-stubs.test.js +2 -2
  237. package/esm/providers/tambo-thread-input-provider.d.ts +2 -2
  238. package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
  239. package/esm/providers/tambo-thread-input-provider.js +11 -10
  240. package/esm/providers/tambo-thread-input-provider.js.map +1 -1
  241. package/esm/providers/tambo-thread-provider-initial-messages.test.js +6 -6
  242. package/esm/providers/tambo-thread-provider.d.ts +2 -2
  243. package/esm/providers/tambo-thread-provider.js +8 -8
  244. package/esm/providers/tambo-thread-provider.test.js +7 -7
  245. package/esm/schema/index.d.ts +4 -4
  246. package/esm/schema/index.js +4 -4
  247. package/esm/schema/json-schema.test.js +1 -1
  248. package/esm/schema/schema.d.ts +1 -1
  249. package/esm/schema/schema.js +2 -2
  250. package/esm/schema/schema.test.js +3 -3
  251. package/esm/schema/standard-schema.test.js +1 -1
  252. package/esm/schema/validate.js +2 -2
  253. package/esm/schema/validate.test.js +1 -1
  254. package/esm/testing/tools.d.ts +3 -3
  255. package/esm/testing/tools.js +2 -2
  256. package/esm/util/content-parts.test.js +1 -1
  257. package/esm/util/generate-component.d.ts +2 -2
  258. package/esm/util/generate-component.js +4 -4
  259. package/esm/util/generate-component.test.js +2 -2
  260. package/esm/util/is-promise.test.js +1 -1
  261. package/esm/util/mcp-server-utils.d.ts +1 -1
  262. package/esm/util/mcp-server-utils.js +1 -1
  263. package/esm/util/mcp-server-utils.test.js +2 -2
  264. package/esm/util/message-builder.d.ts +1 -1
  265. package/esm/util/message-builder.test.js +1 -1
  266. package/esm/util/query-utils.test.js +1 -1
  267. package/esm/util/registry-validators.d.ts +1 -1
  268. package/esm/util/registry-validators.js +2 -2
  269. package/esm/util/registry-validators.test.js +1 -1
  270. package/esm/util/registry.d.ts +1 -1
  271. package/esm/util/registry.js +1 -1
  272. package/esm/util/registry.test.js +2 -2
  273. package/esm/util/resource-content-resolver.d.ts +2 -2
  274. package/esm/util/resource-content-resolver.js +1 -1
  275. package/esm/util/resource-content-resolver.test.js +3 -3
  276. package/esm/util/resource-validators.d.ts +1 -1
  277. package/esm/util/resource-validators.test.js +1 -1
  278. package/esm/util/tool-caller.d.ts +1 -1
  279. package/esm/util/tool-caller.js +1 -1
  280. package/esm/util/validate-component-name.test.js +1 -1
  281. package/esm/v1/__tests__/v1-interactables.test.d.ts +2 -0
  282. package/esm/v1/__tests__/v1-interactables.test.d.ts.map +1 -0
  283. package/esm/v1/__tests__/v1-interactables.test.js +130 -0
  284. package/esm/v1/__tests__/v1-interactables.test.js.map +1 -0
  285. package/esm/v1/components/v1-component-renderer.d.ts +48 -0
  286. package/esm/v1/components/v1-component-renderer.d.ts.map +1 -0
  287. package/esm/v1/components/v1-component-renderer.js +100 -0
  288. package/esm/v1/components/v1-component-renderer.js.map +1 -0
  289. package/esm/v1/components/v1-component-renderer.test.d.ts +2 -0
  290. package/esm/v1/components/v1-component-renderer.test.d.ts.map +1 -0
  291. package/esm/v1/components/v1-component-renderer.test.js +265 -0
  292. package/esm/v1/components/v1-component-renderer.test.js.map +1 -0
  293. package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
  294. package/esm/v1/hooks/use-tambo-v1-component-state.js +4 -27
  295. package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
  296. package/esm/v1/hooks/use-tambo-v1-component-state.test.js +6 -5
  297. package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
  298. package/esm/v1/hooks/use-tambo-v1-messages.d.ts +1 -1
  299. package/esm/v1/hooks/use-tambo-v1-messages.js +1 -1
  300. package/esm/v1/hooks/use-tambo-v1-messages.test.js +27 -3
  301. package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
  302. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +20 -2
  303. package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
  304. package/esm/v1/hooks/use-tambo-v1-send-message.js +213 -26
  305. package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
  306. package/esm/v1/hooks/use-tambo-v1-send-message.test.js +266 -12
  307. package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
  308. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts +90 -0
  309. package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -0
  310. package/esm/v1/hooks/use-tambo-v1-stream-status.js +176 -0
  311. package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -0
  312. package/esm/v1/hooks/use-tambo-v1-stream-status.test.d.ts +2 -0
  313. package/esm/v1/hooks/use-tambo-v1-stream-status.test.d.ts.map +1 -0
  314. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +369 -0
  315. package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -0
  316. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +78 -54
  317. package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
  318. package/esm/v1/hooks/use-tambo-v1-suggestions.js +157 -91
  319. package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
  320. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +218 -139
  321. package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
  322. package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +1 -1
  323. package/esm/v1/hooks/use-tambo-v1-thread-input.js +1 -1
  324. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +151 -16
  325. package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
  326. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +8 -21
  327. package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
  328. package/esm/v1/hooks/use-tambo-v1-thread-list.js +12 -11
  329. package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
  330. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +39 -4
  331. package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
  332. package/esm/v1/hooks/use-tambo-v1-thread.d.ts +1 -1
  333. package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
  334. package/esm/v1/hooks/use-tambo-v1-thread.js +3 -8
  335. package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
  336. package/esm/v1/hooks/use-tambo-v1-thread.test.js +4 -2
  337. package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
  338. package/esm/v1/hooks/use-tambo-v1.d.ts +15 -31
  339. package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
  340. package/esm/v1/hooks/use-tambo-v1.js +134 -34
  341. package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
  342. package/esm/v1/hooks/use-tambo-v1.test.js +862 -19
  343. package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
  344. package/esm/v1/index.d.ts +28 -22
  345. package/esm/v1/index.d.ts.map +1 -1
  346. package/esm/v1/index.js +30 -18
  347. package/esm/v1/index.js.map +1 -1
  348. package/esm/v1/providers/tambo-v1-provider.d.ts +21 -11
  349. package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
  350. package/esm/v1/providers/tambo-v1-provider.js +20 -25
  351. package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
  352. package/esm/v1/providers/tambo-v1-provider.test.js +40 -26
  353. package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
  354. package/esm/v1/providers/tambo-v1-stream-context.d.ts +4 -4
  355. package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
  356. package/esm/v1/providers/tambo-v1-stream-context.js +62 -14
  357. package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
  358. package/esm/v1/providers/tambo-v1-stream-context.test.js +50 -21
  359. package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
  360. package/esm/v1/providers/tambo-v1-stub-provider.d.ts +3 -3
  361. package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
  362. package/esm/v1/providers/tambo-v1-stub-provider.js +7 -5
  363. package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
  364. package/esm/v1/providers/tambo-v1-stub-provider.test.js +12 -11
  365. package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
  366. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +3 -8
  367. package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
  368. package/esm/v1/providers/tambo-v1-thread-input-provider.js +18 -16
  369. package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
  370. package/esm/v1/types/event.d.ts +9 -1
  371. package/esm/v1/types/event.d.ts.map +1 -1
  372. package/esm/v1/types/event.js.map +1 -1
  373. package/esm/v1/types/event.test.js +6 -2
  374. package/esm/v1/types/event.test.js.map +1 -1
  375. package/esm/v1/types/message.d.ts +65 -7
  376. package/esm/v1/types/message.d.ts.map +1 -1
  377. package/esm/v1/types/message.js.map +1 -1
  378. package/esm/v1/types/thread.d.ts +5 -1
  379. package/esm/v1/types/thread.d.ts.map +1 -1
  380. package/esm/v1/types/thread.js.map +1 -1
  381. package/esm/v1/utils/component-renderer.test.js +1 -1
  382. package/esm/v1/utils/event-accumulator.d.ts +41 -5
  383. package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
  384. package/esm/v1/utils/event-accumulator.js +444 -36
  385. package/esm/v1/utils/event-accumulator.js.map +1 -1
  386. package/esm/v1/utils/event-accumulator.test.js +1042 -29
  387. package/esm/v1/utils/event-accumulator.test.js.map +1 -1
  388. package/esm/v1/utils/json-patch.test.js +1 -1
  389. package/esm/v1/utils/registry-conversion.d.ts +9 -9
  390. package/esm/v1/utils/registry-conversion.d.ts.map +1 -1
  391. package/esm/v1/utils/registry-conversion.js +11 -12
  392. package/esm/v1/utils/registry-conversion.js.map +1 -1
  393. package/esm/v1/utils/registry-conversion.test.js +40 -12
  394. package/esm/v1/utils/registry-conversion.test.js.map +1 -1
  395. package/esm/v1/utils/stream-handler.test.js +1 -1
  396. package/esm/v1/utils/thread-utils.d.ts +16 -0
  397. package/esm/v1/utils/thread-utils.d.ts.map +1 -0
  398. package/esm/v1/utils/thread-utils.js +31 -0
  399. package/esm/v1/utils/thread-utils.js.map +1 -0
  400. package/esm/v1/utils/tool-call-tracker.d.ts +1 -1
  401. package/esm/v1/utils/tool-executor.d.ts +1 -1
  402. package/esm/v1/utils/tool-executor.d.ts.map +1 -1
  403. package/esm/v1/utils/tool-executor.js +2 -0
  404. package/esm/v1/utils/tool-executor.js.map +1 -1
  405. package/esm/v1/utils/tool-executor.test.js +6 -1
  406. package/esm/v1/utils/tool-executor.test.js.map +1 -1
  407. package/package.json +11 -10
@@ -1 +1 @@
1
- {"version":3,"file":"tambo-interactable-provider.test.js","sourceRoot":"","sources":["../../src/providers/tambo-interactable-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { act, renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport { z } from \"zod\";\nimport { TamboInteractableComponent } from \"../model/tambo-interactable\";\nimport {\n TamboInteractableProvider,\n useTamboInteractable,\n} from \"./tambo-interactable-provider\";\n\n// Mock the context helpers\nconst mockAddContextHelper = jest.fn();\nconst mockRemoveContextHelper = jest.fn();\n\njest.mock(\"./tambo-context-helpers-provider\", () => ({\n TamboContextHelpersProvider: ({\n children,\n }: {\n children: React.ReactNode;\n }) => <>{children}</>,\n useTamboContextHelpers: () => ({\n addContextHelper: mockAddContextHelper,\n removeContextHelper: mockRemoveContextHelper,\n }),\n}));\n\n// Mock the component provider\nconst mockRegisterTool = jest.fn();\n\njest.mock(\"./tambo-component-provider\", () => ({\n useTamboComponent: () => ({\n registerTool: mockRegisterTool,\n }),\n}));\n\n// Mock the context helper creation\njest.mock(\"../context-helpers/current-interactables-context-helper\", () => ({\n createInteractablesContextHelper: () =>\n jest.fn(() => ({\n name: \"interactables\",\n context: {\n description: \"Test interactables context\",\n components: [],\n },\n })),\n}));\n\ndescribe(\"TamboInteractableProvider - State Tracking\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should set and get state for a component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n act(() => {\n result.current.setInteractableState(componentId, \"count\", 10);\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 10 });\n });\n});\n\ndescribe(\"TamboInteractableProvider - State Update Tool Registration\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should register both prop and state update tools when component is added\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Should register both update_component_ and update_component_state_ tools\n const registeredToolNames = mockRegisterTool.mock.calls.map(\n (call) => call[0].name,\n );\n expect(registeredToolNames).toContain(\n `update_component_props_${componentId}`,\n );\n expect(registeredToolNames).toContain(\n `update_component_state_${componentId}`,\n );\n });\n\n it(\"should register state update tool with correct description\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"MyComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n expect(stateToolCall[0].description).toContain(componentId);\n expect(stateToolCall[0].description).toContain(\"MyComponent\");\n });\n\n it(\"should allow state update tool to update multiple state values\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { count: 5, name: \"test\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 5, name: \"test\" });\n });\n\n it(\"should preserve existing state when updating partial state\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Set initial state\n act(() => {\n result.current.setInteractableState(componentId, \"existingKey\", \"value1\");\n });\n\n // Find the state update tool and call it with a new key\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { newKey: \"value2\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ existingKey: \"value1\", newKey: \"value2\" });\n });\n\n it(\"should use stateSchema when provided for tool registration\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n // The inputSchema should contain the partial stateSchema\n expect(stateToolCall[0].inputSchema).toBeDefined();\n });\n\n it(\"should return warning when updating state with empty object\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it with empty state\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n let updateResult = \"\";\n act(() => {\n updateResult = toolFn({ componentId, newState: {} });\n });\n\n expect(updateResult).toContain(\"Warning\");\n expect(updateResult).toContain(\"No state values provided\");\n });\n\n it(\"should preserve stateSchema in interactable component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const interactable = result.current.getInteractableComponent(componentId);\n expect(interactable?.stateSchema).toBe(stateSchema);\n });\n\n it(\"should convert stateSchema to partial JSON Schema (no required fields)\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should not have required fields (partial schema)\n expect(inputSchema.properties.newState).toBeDefined();\n expect(inputSchema.properties.newState.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newState.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no stateSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n // No stateSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should allow additional properties\n expect(inputSchema.properties.newState.additionalProperties).toBe(true);\n });\n\n it(\"should convert propsSchema to partial JSON Schema for props update tool\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const propsSchema = z.object({\n title: z.string(),\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\", count: 0 },\n propsSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool (not the state one)\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should not have required fields (partial schema)\n expect(inputSchema.properties.newProps).toBeDefined();\n expect(inputSchema.properties.newProps.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newProps.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no propsSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\" },\n // No propsSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should allow additional properties\n expect(inputSchema.properties.newProps.additionalProperties).toBe(true);\n });\n});\n"]}
1
+ {"version":3,"file":"tambo-interactable-provider.test.js","sourceRoot":"","sources":["../../src/providers/tambo-interactable-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { act, renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport { z } from \"zod\";\nimport { TamboInteractableComponent } from \"../model/tambo-interactable\";\nimport {\n TamboInteractableProvider,\n useTamboInteractable,\n} from \"./tambo-interactable-provider\";\n\n// Mock the context helpers\nconst mockAddContextHelper = jest.fn();\nconst mockRemoveContextHelper = jest.fn();\n\njest.mock(\"./tambo-context-helpers-provider\", () => ({\n TamboContextHelpersProvider: ({\n children,\n }: {\n children: React.ReactNode;\n }) => <>{children}</>,\n useTamboContextHelpers: () => ({\n addContextHelper: mockAddContextHelper,\n removeContextHelper: mockRemoveContextHelper,\n }),\n}));\n\n// Mock the registry provider\nconst mockRegisterTool = jest.fn();\n\njest.mock(\"./tambo-registry-provider\", () => ({\n useTamboRegistry: () => ({\n registerTool: mockRegisterTool,\n }),\n}));\n\n// Mock the context helper creation\njest.mock(\"../context-helpers/current-interactables-context-helper\", () => ({\n createInteractablesContextHelper: () =>\n jest.fn(() => ({\n name: \"interactables\",\n context: {\n description: \"Test interactables context\",\n components: [],\n },\n })),\n}));\n\ndescribe(\"TamboInteractableProvider - State Tracking\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should set and get state for a component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n act(() => {\n result.current.setInteractableState(componentId, \"count\", 10);\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 10 });\n });\n});\n\ndescribe(\"TamboInteractableProvider - State Update Tool Registration\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should register both prop and state update tools when component is added\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Should register both update_component_ and update_component_state_ tools\n const registeredToolNames = mockRegisterTool.mock.calls.map(\n (call) => call[0].name,\n );\n expect(registeredToolNames).toContain(\n `update_component_props_${componentId}`,\n );\n expect(registeredToolNames).toContain(\n `update_component_state_${componentId}`,\n );\n });\n\n it(\"should register state update tool with correct description\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"MyComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n expect(stateToolCall[0].description).toContain(componentId);\n expect(stateToolCall[0].description).toContain(\"MyComponent\");\n });\n\n it(\"should allow state update tool to update multiple state values\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { count: 5, name: \"test\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 5, name: \"test\" });\n });\n\n it(\"should preserve existing state when updating partial state\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Set initial state\n act(() => {\n result.current.setInteractableState(componentId, \"existingKey\", \"value1\");\n });\n\n // Find the state update tool and call it with a new key\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { newKey: \"value2\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ existingKey: \"value1\", newKey: \"value2\" });\n });\n\n it(\"should use stateSchema when provided for tool registration\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n // The inputSchema should contain the partial stateSchema\n expect(stateToolCall[0].inputSchema).toBeDefined();\n });\n\n it(\"should return warning when updating state with empty object\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it with empty state\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n let updateResult = \"\";\n act(() => {\n updateResult = toolFn({ componentId, newState: {} });\n });\n\n expect(updateResult).toContain(\"Warning\");\n expect(updateResult).toContain(\"No state values provided\");\n });\n\n it(\"should preserve stateSchema in interactable component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const interactable = result.current.getInteractableComponent(componentId);\n expect(interactable?.stateSchema).toBe(stateSchema);\n });\n\n it(\"should convert stateSchema to partial JSON Schema (no required fields)\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should not have required fields (partial schema)\n expect(inputSchema.properties.newState).toBeDefined();\n expect(inputSchema.properties.newState.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newState.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no stateSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n // No stateSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should allow additional properties\n expect(inputSchema.properties.newState.additionalProperties).toBe(true);\n });\n\n it(\"should convert propsSchema to partial JSON Schema for props update tool\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const propsSchema = z.object({\n title: z.string(),\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\", count: 0 },\n propsSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool (not the state one)\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should not have required fields (partial schema)\n expect(inputSchema.properties.newProps).toBeDefined();\n expect(inputSchema.properties.newProps.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newProps.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no propsSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\" },\n // No propsSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should allow additional properties\n expect(inputSchema.properties.newProps.additionalProperties).toBe(true);\n });\n});\n"]}
@@ -1,10 +1,10 @@
1
1
  import { render, waitFor } from "@testing-library/react";
2
2
  import React from "react";
3
3
  import { z } from "zod/v4";
4
- import { withTamboInteractable } from "../hoc/with-tambo-interactable";
5
- import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider";
6
- import { TamboInteractableProvider } from "./tambo-interactable-provider";
7
- import { TamboStubProvider } from "./tambo-stubs";
4
+ import { withTamboInteractable } from "../hoc/with-tambo-interactable.js";
5
+ import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider.js";
6
+ import { TamboInteractableProvider } from "./tambo-interactable-provider.js";
7
+ import { TamboStubProvider } from "./tambo-stubs.js";
8
8
  function wrapperWithProviders(children) {
9
9
  const thread = {
10
10
  id: "t-1",
@@ -1,10 +1,10 @@
1
1
  import { render, waitFor } from "@testing-library/react";
2
2
  import React from "react";
3
3
  import { z } from "zod/v4";
4
- import { withTamboInteractable } from "../hoc/with-tambo-interactable";
5
- import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider";
6
- import { TamboInteractableProvider, useCurrentInteractablesSnapshot, } from "./tambo-interactable-provider";
7
- import { TamboStubProvider } from "./tambo-stubs";
4
+ import { withTamboInteractable } from "../hoc/with-tambo-interactable.js";
5
+ import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider.js";
6
+ import { TamboInteractableProvider, useCurrentInteractablesSnapshot, } from "./tambo-interactable-provider.js";
7
+ import { TamboStubProvider } from "./tambo-stubs.js";
8
8
  function wrapperWithProviders(children) {
9
9
  const thread = {
10
10
  id: "t-1",
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import React, { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
3
- import { TamboClientContext } from "./tambo-client-provider";
4
- import { PLACEHOLDER_THREAD, TamboThreadContext, } from "./tambo-thread-provider";
3
+ import { TamboClientContext } from "./tambo-client-provider.js";
4
+ import { PLACEHOLDER_THREAD, TamboThreadContext, } from "./tambo-thread-provider.js";
5
5
  const TamboMcpTokenContext = createContext(undefined);
6
6
  /**
7
7
  * Provider for managing the MCP access token that is returned by the Tambo API.
@@ -7,13 +7,13 @@
7
7
  export declare const TamboPropStreamProvider: import("react").FC<{
8
8
  children?: import("react").ReactNode | undefined;
9
9
  }> & {
10
- Streaming: import("react").FC<import("./types").StreamStateComponentProps>;
11
- Pending: import("react").FC<import("./types").StreamStateComponentProps>;
12
- Success: import("react").FC<import("./types").StreamStateComponentProps>;
10
+ Streaming: import("react").FC<import("./types.js").StreamStateComponentProps>;
11
+ Pending: import("react").FC<import("./types.js").StreamStateComponentProps>;
12
+ Success: import("react").FC<import("./types.js").StreamStateComponentProps>;
13
13
  };
14
- export { Pending } from "./pending";
15
- export { useTamboStream } from "./provider";
16
- export { Streaming } from "./streaming";
17
- export { Success } from "./success";
18
- export * from "./types";
14
+ export { Pending } from "./pending.js";
15
+ export { useTamboStream } from "./provider.js";
16
+ export { Streaming } from "./streaming.js";
17
+ export { Success } from "./success.js";
18
+ export * from "./types.js";
19
19
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- import { Pending } from "./pending";
2
- import { TamboPropStreamProviderComponent } from "./provider";
3
- import { Streaming } from "./streaming";
4
- import { Success } from "./success";
1
+ import { Pending } from "./pending.js";
2
+ import { TamboPropStreamProviderComponent } from "./provider.js";
3
+ import { Streaming } from "./streaming.js";
4
+ import { Success } from "./success.js";
5
5
  /**
6
6
  * The TamboPropStreamProvider provides a context for managing stream states
7
7
  * with compound components for Pending, Streaming, and Success states.
@@ -14,9 +14,9 @@ export const TamboPropStreamProvider = Object.assign(TamboPropStreamProviderComp
14
14
  Success,
15
15
  });
16
16
  // Re-export components for individual use
17
- export { Pending } from "./pending";
18
- export { useTamboStream } from "./provider";
19
- export { Streaming } from "./streaming";
20
- export { Success } from "./success";
21
- export * from "./types";
17
+ export { Pending } from "./pending.js";
18
+ export { useTamboStream } from "./provider.js";
19
+ export { Streaming } from "./streaming.js";
20
+ export { Success } from "./success.js";
21
+ export * from "./types.js";
22
22
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { StreamStateComponentProps } from "./types";
2
+ import { StreamStateComponentProps } from "./types.js";
3
3
  /**
4
4
  * Pending component that renders children when the stream has no data
5
5
  * @param props - The props for the Pending component
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { useTamboStream } from "./provider";
3
- import { DEFAULT_STREAM_KEY } from "./types";
2
+ import { useTamboStream } from "./provider.js";
3
+ import { DEFAULT_STREAM_KEY } from "./types.js";
4
4
  /**
5
5
  * Pending component that renders children when the stream has no data
6
6
  * @param props - The props for the Pending component
@@ -1,5 +1,5 @@
1
1
  import React, { PropsWithChildren } from "react";
2
- import { TamboPropStreamContextValue } from "./types";
2
+ import { TamboPropStreamContextValue } from "./types.js";
3
3
  /**
4
4
  * Hook to use the TamboStream context
5
5
  * @returns The TamboStream context
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import React, { createContext, useCallback, useContext, useMemo, } from "react";
3
- import { useTamboStreamStatus } from "../../hooks/use-tambo-stream-status";
4
- import { DEFAULT_STREAM_KEY, } from "./types";
3
+ import { useTamboStreamStatus } from "../../hooks/use-tambo-stream-status.js";
4
+ import { DEFAULT_STREAM_KEY, } from "./types.js";
5
5
  const TamboPropStreamContext = createContext(null);
6
6
  /**
7
7
  * Hook to use the TamboStream context
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { StreamStateComponentProps } from "./types";
2
+ import { StreamStateComponentProps } from "./types.js";
3
3
  /**
4
4
  * Streaming component that renders children when the stream is in a streaming state
5
5
  * @param props - The props for the Streaming component
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { useTamboStream } from "./provider";
3
- import { DEFAULT_STREAM_KEY } from "./types";
2
+ import { useTamboStream } from "./provider.js";
3
+ import { DEFAULT_STREAM_KEY } from "./types.js";
4
4
  /**
5
5
  * Streaming component that renders children when the stream is in a streaming state
6
6
  * @param props - The props for the Streaming component
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { StreamStateComponentProps } from "./types";
2
+ import { StreamStateComponentProps } from "./types.js";
3
3
  /**
4
4
  * Success component that renders children when the stream has data
5
5
  * @param props - The props for the Success component
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { useTamboStream } from "./provider";
3
- import { DEFAULT_STREAM_KEY } from "./types";
2
+ import { useTamboStream } from "./provider.js";
3
+ import { DEFAULT_STREAM_KEY } from "./types.js";
4
4
  /**
5
5
  * Success component that renders children when the stream has data
6
6
  * @param props - The props for the Success component
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { StreamStatus as HookStreamStatus } from "../../hooks/use-tambo-stream-status";
2
+ import { StreamStatus as HookStreamStatus } from "../../hooks/use-tambo-stream-status.js";
3
3
  export declare const DEFAULT_STREAM_KEY = "default";
4
4
  export interface StreamStateComponentProps {
5
5
  /** The key to identify this stream state */
@@ -1,9 +1,9 @@
1
1
  import { render, screen } from "@testing-library/react";
2
2
  import React from "react";
3
- import { useTamboCurrentMessage } from "../hooks/use-current-message";
4
- import { GenerationStage, } from "../model/generate-component-response";
5
- import { useTamboGenerationStage, useTamboThread, } from "../providers/tambo-thread-provider";
6
- import { TamboPropStreamProvider, useTamboStream, } from "./tambo-prop-stream-provider";
3
+ import { useTamboCurrentMessage } from "../hooks/use-current-message.js";
4
+ import { GenerationStage, } from "../model/generate-component-response.js";
5
+ import { useTamboGenerationStage, useTamboThread, } from "../providers/tambo-thread-provider.js";
6
+ import { TamboPropStreamProvider, useTamboStream, } from "./tambo-prop-stream-provider/index.js";
7
7
  // Mock the required providers
8
8
  jest.mock("../providers/tambo-thread-provider", () => ({
9
9
  useTamboThread: jest.fn(),
@@ -1,11 +1,11 @@
1
1
  import React, { PropsWithChildren } from "react";
2
- import { TamboInteractableContext } from "../model/tambo-interactable";
3
- import { TamboClientContextProps, TamboClientProviderProps } from "./tambo-client-provider";
4
- import { TamboComponentContextProps } from "./tambo-component-provider";
5
- import { ContextAttachmentState } from "./tambo-context-attachment-provider";
6
- import { TamboContextHelpersContextProps, TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider";
7
- import { TamboRegistryProviderProps } from "./tambo-registry-provider";
8
- import { TamboGenerationStageContextProps, TamboThreadContextProps, TamboThreadProviderProps } from "./tambo-thread-provider";
2
+ import { TamboInteractableContext } from "../model/tambo-interactable.js";
3
+ import { TamboClientContextProps, TamboClientProviderProps } from "./tambo-client-provider.js";
4
+ import { TamboComponentContextProps } from "./tambo-component-provider.js";
5
+ import { ContextAttachmentState } from "./tambo-context-attachment-provider.js";
6
+ import { TamboContextHelpersContextProps, TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider.js";
7
+ import { TamboRegistryProviderProps } from "./tambo-registry-provider.js";
8
+ import { TamboGenerationStageContextProps, TamboThreadContextProps, TamboThreadProviderProps } from "./tambo-thread-provider.js";
9
9
  /**
10
10
  * The TamboProvider gives full access to the whole Tambo API. This includes the
11
11
  * TamboAI client, the component registry, the current thread context, and interactable components.
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import React, { createContext, useContext } from "react";
3
- import { TamboMcpProvider } from "../mcp/tambo-mcp-provider";
4
- import { TamboClientContext, TamboClientProvider, } from "./tambo-client-provider";
5
- import { TamboComponentProvider, useTamboComponent, } from "./tambo-component-provider";
6
- import { TamboContextAttachmentProvider, useTamboContextAttachment, } from "./tambo-context-attachment-provider";
7
- import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider";
8
- import { TamboInteractableProvider, useTamboInteractable, } from "./tambo-interactable-provider";
9
- import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider";
10
- import { TamboRegistryProvider, } from "./tambo-registry-provider";
11
- import { TamboThreadInputProvider } from "./tambo-thread-input-provider";
12
- import { TamboThreadProvider, useTamboThread, } from "./tambo-thread-provider";
3
+ import { TamboMcpProvider } from "../mcp/tambo-mcp-provider.js";
4
+ import { TamboClientContext, TamboClientProvider, } from "./tambo-client-provider.js";
5
+ import { TamboComponentProvider, useTamboComponent, } from "./tambo-component-provider.js";
6
+ import { TamboContextAttachmentProvider, useTamboContextAttachment, } from "./tambo-context-attachment-provider.js";
7
+ import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider.js";
8
+ import { TamboInteractableProvider, useTamboInteractable, } from "./tambo-interactable-provider.js";
9
+ import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider.js";
10
+ import { TamboRegistryProvider, } from "./tambo-registry-provider.js";
11
+ import { TamboThreadInputProvider } from "./tambo-thread-input-provider.js";
12
+ import { TamboThreadProvider, useTamboThread, } from "./tambo-thread-provider.js";
13
13
  /**
14
14
  * The TamboProvider gives full access to the whole Tambo API. This includes the
15
15
  * TamboAI client, the component registry, the current thread context, and interactable components.
@@ -1,8 +1,8 @@
1
1
  import type TamboAI from "@tambo-ai/typescript-sdk";
2
2
  import React, { PropsWithChildren } from "react";
3
- import type { ComponentRegistry, RegisterToolFn, RegisterToolsFn, TamboComponent, TamboTool, TamboToolRegistry } from "../model/component-metadata";
4
- import type { McpServerInfo, NormalizedMcpServerInfo } from "../model/mcp-server-info";
5
- import type { ListResourceItem, ResourceSource } from "../model/resource-info";
3
+ import type { ComponentRegistry, RegisterToolFn, RegisterToolsFn, TamboComponent, TamboTool, TamboToolRegistry } from "../model/component-metadata.js";
4
+ import type { McpServerInfo, NormalizedMcpServerInfo } from "../model/mcp-server-info.js";
5
+ import type { ListResourceItem, ResourceSource } from "../model/resource-info.js";
6
6
  export interface TamboRegistryContext {
7
7
  componentList: ComponentRegistry;
8
8
  toolRegistry: TamboToolRegistry;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useState, } from "react";
3
- import { deduplicateMcpServers, normalizeServerInfo, } from "../util/mcp-server-utils";
4
- import { validateAndPrepareComponent, validateTool, validateToolAssociation, } from "../util/registry-validators";
5
- import { validateResource, validateResourceSource, } from "../util/resource-validators";
3
+ import { deduplicateMcpServers, normalizeServerInfo, } from "../util/mcp-server-utils.js";
4
+ import { validateAndPrepareComponent, validateTool, validateToolAssociation, } from "../util/registry-validators.js";
5
+ import { validateResource, validateResourceSource, } from "../util/resource-validators.js";
6
6
  export const TamboRegistryContext = createContext({
7
7
  componentList: {},
8
8
  toolRegistry: {},
@@ -1,8 +1,8 @@
1
1
  import { act, renderHook } from "@testing-library/react";
2
2
  import React from "react";
3
3
  import { z } from "zod/v4";
4
- import { defineTool } from "../util/registry";
5
- import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider";
4
+ import { defineTool } from "../util/registry.js";
5
+ import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider.js";
6
6
  // Shared tool registry for all tests
7
7
  const createMockTools = () => [
8
8
  defineTool({
@@ -10,8 +10,8 @@ import { act, renderHook } from "@testing-library/react";
10
10
  import React from "react";
11
11
  import * as z3 from "zod/v3";
12
12
  import * as z4 from "zod/v4";
13
- import { defineTool } from "../util/registry";
14
- import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider";
13
+ import { defineTool } from "../util/registry.js";
14
+ import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider.js";
15
15
  // Test component for registration tests
16
16
  const TestComponent = ({ message }) => (React.createElement("div", null, message));
17
17
  describe("Schema Compatibility", () => {
@@ -1,9 +1,9 @@
1
1
  import TamboAI from "@tambo-ai/typescript-sdk";
2
2
  import React, { PropsWithChildren } from "react";
3
- import { TamboComponent, TamboTool } from "../model/component-metadata";
4
- import { TamboThread } from "../model/tambo-thread";
5
- import { TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider";
6
- import { type TamboContextProps } from "./tambo-provider";
3
+ import { TamboComponent, TamboTool } from "../model/component-metadata.js";
4
+ import { TamboThread } from "../model/tambo-thread.js";
5
+ import { TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider.js";
6
+ import { type TamboContextProps } from "./tambo-provider.js";
7
7
  /**
8
8
  * TamboStubProvider props - includes all the data that would normally be inferred
9
9
  */
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { QueryClient } from "@tanstack/react-query";
3
3
  import React, { useEffect } from "react";
4
- import { GenerationStage } from "../model/generate-component-response";
5
- import { TamboClientContext } from "./tambo-client-provider";
6
- import { TamboComponentProvider, } from "./tambo-component-provider";
7
- import { TamboContextAttachmentProvider } from "./tambo-context-attachment-provider";
8
- import { TamboContextHelpersProvider, } from "./tambo-context-helpers-provider";
9
- import { TamboInteractableProvider } from "./tambo-interactable-provider";
10
- import { TamboCompositeProvider, } from "./tambo-provider";
11
- import { TamboRegistryContext } from "./tambo-registry-provider";
12
- import { TamboGenerationStageProvider, TamboThreadContext, } from "./tambo-thread-provider";
4
+ import { GenerationStage } from "../model/generate-component-response.js";
5
+ import { TamboClientContext } from "./tambo-client-provider.js";
6
+ import { TamboComponentProvider, } from "./tambo-component-provider.js";
7
+ import { TamboContextAttachmentProvider } from "./tambo-context-attachment-provider.js";
8
+ import { TamboContextHelpersProvider, } from "./tambo-context-helpers-provider.js";
9
+ import { TamboInteractableProvider } from "./tambo-interactable-provider.js";
10
+ import { TamboCompositeProvider, } from "./tambo-provider.js";
11
+ import { TamboRegistryContext } from "./tambo-registry-provider.js";
12
+ import { TamboGenerationStageProvider, TamboThreadContext, } from "./tambo-thread-provider.js";
13
13
  /**
14
14
  * Stub client provider that accepts a client and queryClient as props
15
15
  * @returns The TamboStubClientProvider component
@@ -1,7 +1,7 @@
1
1
  import { renderHook } from "@testing-library/react";
2
2
  import React, { act } from "react";
3
- import { useTamboThreadList } from "../hooks/use-tambo-threads";
4
- import { TamboStubProvider } from "./tambo-stubs";
3
+ import { useTamboThreadList } from "../hooks/use-tambo-threads.js";
4
+ import { TamboStubProvider } from "./tambo-stubs.js";
5
5
  describe("TamboStubProvider threads functionality", () => {
6
6
  const mockThread = {
7
7
  id: "test-thread",
@@ -1,6 +1,6 @@
1
1
  import React, { PropsWithChildren } from "react";
2
- import { UseTamboMutationResult } from "../hooks/react-query-hooks";
3
- import { StagedImage } from "../hooks/use-message-images";
2
+ import { UseTamboMutationResult } from "../hooks/react-query-hooks.js";
3
+ import { StagedImage } from "../hooks/use-message-images.js";
4
4
  /**
5
5
  * Error messages for various input-related error scenarios
6
6
  * These messages are used to provide user-friendly error feedback
@@ -1 +1 @@
1
- {"version":3,"file":"tambo-thread-input-provider.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-thread-input-provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAoB,MAAM,6BAA6B,CAAC;AAa5E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,sBAAsB,CACpB,IAAI,EACJ,KAAK,EACH;IACE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,GACD,SAAS,CACZ,EACD,QAAQ,GAAG,aAAa,CACzB;IACC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,0BAA0B;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8BAA8B;IAC9B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,yDAExB,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoKhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,oCAS/B,CAAC"}
1
+ {"version":3,"file":"tambo-thread-input-provider.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-thread-input-provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAoB,MAAM,6BAA6B,CAAC;AAa5E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,sBAAsB,CACpB,IAAI,EACJ,KAAK,EACH;IACE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,GACD,SAAS,CACZ,EACD,QAAQ,GAAG,aAAa,CACzB;IACC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,0BAA0B;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8BAA8B;IAC9B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,yDAExB,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqKhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,oCAS/B,CAAC"}
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import React, { createContext, useCallback, useContext, useState, } from "react";
3
- import { useTamboMutation, } from "../hooks/react-query-hooks";
4
- import { useMessageImages } from "../hooks/use-message-images";
5
- import { useTamboMcpServers } from "../mcp/tambo-mcp-provider";
6
- import { ThreadInputError } from "../model/thread-input-error";
7
- import { validateInput } from "../model/validate-input";
8
- import { buildMessageContent } from "../util/message-builder";
9
- import { extractResourceUris, resolveResourceContents, } from "../util/resource-content-resolver";
10
- import { useTamboInteractable } from "./tambo-interactable-provider";
11
- import { useTamboRegistry } from "./tambo-registry-provider";
12
- import { useTamboThread } from "./tambo-thread-provider";
3
+ import { useTamboMutation, } from "../hooks/react-query-hooks.js";
4
+ import { useMessageImages } from "../hooks/use-message-images.js";
5
+ import { useTamboMcpServers } from "../mcp/tambo-mcp-provider.js";
6
+ import { ThreadInputError } from "../model/thread-input-error.js";
7
+ import { validateInput } from "../model/validate-input.js";
8
+ import { buildMessageContent } from "../util/message-builder.js";
9
+ import { extractResourceUris, resolveResourceContents, } from "../util/resource-content-resolver.js";
10
+ import { useTamboInteractable } from "./tambo-interactable-provider.js";
11
+ import { useTamboRegistry } from "./tambo-registry-provider.js";
12
+ import { useTamboThread } from "./tambo-thread-provider.js";
13
13
  /**
14
14
  * Error messages for various input-related error scenarios
15
15
  * These messages are used to provide user-friendly error feedback
@@ -110,6 +110,7 @@ export const TamboThreadInputProvider = ({ children, }) => {
110
110
  clearInteractableSelections,
111
111
  ]);
112
112
  const { mutateAsync: submitAsync, mutate: _unusedSubmit, ...mutationState } = useTamboMutation({
113
+ mutationKey: ["thread-input", thread.id],
113
114
  mutationFn: submit,
114
115
  });
115
116
  const value = {