@tambo-ai/react 0.65.2 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (710) hide show
  1. package/README.md +174 -81
  2. package/dist/context-helpers/context-helpers-provider.test.d.ts.map +1 -0
  3. package/dist/context-helpers/{__tests__/context-helpers-provider.test.js → context-helpers-provider.test.js} +2 -2
  4. package/dist/context-helpers/context-helpers-provider.test.js.map +1 -0
  5. package/dist/context-helpers/context-helpers.test.d.ts.map +1 -0
  6. package/dist/context-helpers/{__tests__/context-helpers.test.js → context-helpers.test.js} +1 -1
  7. package/dist/context-helpers/context-helpers.test.js.map +1 -0
  8. package/{esm/providers → dist}/hoc/with-tambo-interactable.d.ts +2 -2
  9. package/dist/hoc/with-tambo-interactable.d.ts.map +1 -0
  10. package/dist/{providers/hoc → hoc}/with-tambo-interactable.js +29 -2
  11. package/dist/hoc/with-tambo-interactable.js.map +1 -0
  12. package/dist/hoc/with-tambo-interactable.test.d.ts +2 -0
  13. package/dist/hoc/with-tambo-interactable.test.d.ts.map +1 -0
  14. package/dist/hoc/with-tambo-interactable.test.js +192 -0
  15. package/dist/hoc/with-tambo-interactable.test.js.map +1 -0
  16. package/dist/hooks/index.d.ts +1 -1
  17. package/dist/hooks/index.d.ts.map +1 -1
  18. package/dist/hooks/index.js +2 -1
  19. package/dist/hooks/index.js.map +1 -1
  20. package/dist/hooks/use-component-state.d.ts +11 -24
  21. package/dist/hooks/use-component-state.d.ts.map +1 -1
  22. package/dist/hooks/use-component-state.js +14 -5
  23. package/dist/hooks/use-component-state.js.map +1 -1
  24. package/dist/hooks/use-component-state.test.d.ts.map +1 -0
  25. package/dist/hooks/{__tests__/use-component-state.test.js → use-component-state.test.js} +7 -7
  26. package/dist/hooks/use-component-state.test.js.map +1 -0
  27. package/dist/hooks/use-current-message.d.ts +51 -7
  28. package/dist/hooks/use-current-message.d.ts.map +1 -1
  29. package/dist/hooks/use-current-message.js +50 -6
  30. package/dist/hooks/use-current-message.js.map +1 -1
  31. package/dist/hooks/use-current-message.test.d.ts +2 -0
  32. package/dist/hooks/use-current-message.test.d.ts.map +1 -0
  33. package/dist/hooks/use-current-message.test.js +264 -0
  34. package/dist/hooks/use-current-message.test.js.map +1 -0
  35. package/dist/hooks/use-message-images.test.d.ts.map +1 -0
  36. package/dist/hooks/{__tests__/use-message-images.test.js → use-message-images.test.js} +1 -1
  37. package/dist/hooks/use-message-images.test.js.map +1 -0
  38. package/dist/hooks/use-streaming-props.d.ts +7 -19
  39. package/dist/hooks/use-streaming-props.d.ts.map +1 -1
  40. package/dist/hooks/use-streaming-props.js +7 -19
  41. package/dist/hooks/use-streaming-props.js.map +1 -1
  42. package/dist/hooks/use-suggestions.d.ts +1 -1
  43. package/dist/hooks/use-suggestions.d.ts.map +1 -1
  44. package/dist/hooks/use-suggestions.js.map +1 -1
  45. package/dist/hooks/use-suggestions.test.d.ts.map +1 -0
  46. package/dist/hooks/{__tests__/use-suggestions.test.js → use-suggestions.test.js} +36 -29
  47. package/dist/hooks/use-suggestions.test.js.map +1 -0
  48. package/dist/hooks/use-tambo-stream-status.d.ts +9 -8
  49. package/dist/hooks/use-tambo-stream-status.d.ts.map +1 -1
  50. package/dist/hooks/use-tambo-stream-status.js +9 -8
  51. package/dist/hooks/use-tambo-stream-status.js.map +1 -1
  52. package/dist/hooks/use-tambo-stream-status.test.d.ts.map +1 -0
  53. package/dist/hooks/{__tests__/use-tambo-stream-status.test.js → use-tambo-stream-status.test.js} +6 -6
  54. package/dist/hooks/use-tambo-stream-status.test.js.map +1 -0
  55. package/dist/hooks/use-tambo-threads.test.d.ts.map +1 -0
  56. package/dist/hooks/{__tests__/use-tambo-threads.test.js → use-tambo-threads.test.js} +3 -3
  57. package/dist/hooks/use-tambo-threads.test.js.map +1 -0
  58. package/dist/index.d.ts +10 -8
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +7 -3
  61. package/dist/index.js.map +1 -1
  62. package/dist/mcp/elicitation.d.ts +10 -2
  63. package/dist/mcp/elicitation.d.ts.map +1 -1
  64. package/dist/mcp/elicitation.js +19 -1
  65. package/dist/mcp/elicitation.js.map +1 -1
  66. package/dist/mcp/elicitation.test.d.ts.map +1 -0
  67. package/dist/mcp/{__tests__/elicitation.test.js → elicitation.test.js} +1 -1
  68. package/dist/mcp/elicitation.test.js.map +1 -0
  69. package/dist/mcp/index.d.ts +11 -2
  70. package/dist/mcp/index.d.ts.map +1 -1
  71. package/dist/mcp/index.js +11 -1
  72. package/dist/mcp/index.js.map +1 -1
  73. package/dist/mcp/mcp-client.d.ts +29 -10
  74. package/dist/mcp/mcp-client.d.ts.map +1 -1
  75. package/dist/mcp/mcp-client.test.d.ts.map +1 -0
  76. package/dist/mcp/{__tests__/mcp-client.test.js → mcp-client.test.js} +1 -1
  77. package/dist/mcp/mcp-client.test.js.map +1 -0
  78. package/dist/mcp/mcp-hooks.d.ts +129 -25
  79. package/dist/mcp/mcp-hooks.d.ts.map +1 -1
  80. package/dist/mcp/mcp-hooks.js +104 -40
  81. package/dist/mcp/mcp-hooks.js.map +1 -1
  82. package/dist/mcp/mcp-hooks.test.d.ts.map +1 -0
  83. package/dist/mcp/{__tests__/mcp-hooks.test.js → mcp-hooks.test.js} +90 -51
  84. package/dist/mcp/mcp-hooks.test.js.map +1 -0
  85. package/dist/mcp/tambo-mcp-provider.d.ts +2 -0
  86. package/dist/mcp/tambo-mcp-provider.d.ts.map +1 -1
  87. package/dist/mcp/tambo-mcp-provider.js +60 -13
  88. package/dist/mcp/tambo-mcp-provider.js.map +1 -1
  89. package/dist/mcp/tambo-mcp-provider.test.d.ts.map +1 -0
  90. package/dist/mcp/{__tests__/tambo-mcp-provider.test.js → tambo-mcp-provider.test.js} +9 -25
  91. package/dist/mcp/tambo-mcp-provider.test.js.map +1 -0
  92. package/dist/mcp/use-mcp-servers.test.d.ts.map +1 -0
  93. package/dist/mcp/{__tests__/use-mcp-servers.test.js → use-mcp-servers.test.js} +5 -11
  94. package/dist/mcp/use-mcp-servers.test.js.map +1 -0
  95. package/dist/model/component-metadata.d.ts +444 -14
  96. package/dist/model/component-metadata.d.ts.map +1 -1
  97. package/dist/model/component-metadata.js.map +1 -1
  98. package/dist/model/generate-component-response.d.ts +12 -1
  99. package/dist/model/generate-component-response.d.ts.map +1 -1
  100. package/dist/model/generate-component-response.js.map +1 -1
  101. package/dist/model/mcp-server-info.d.ts +3 -1
  102. package/dist/model/mcp-server-info.d.ts.map +1 -1
  103. package/dist/model/mcp-server-info.js.map +1 -1
  104. package/dist/model/resource-info.d.ts +55 -0
  105. package/dist/model/resource-info.d.ts.map +1 -0
  106. package/dist/model/resource-info.js +3 -0
  107. package/dist/model/resource-info.js.map +1 -0
  108. package/dist/model/tambo-thread.d.ts +6 -1
  109. package/dist/model/tambo-thread.d.ts.map +1 -1
  110. package/dist/model/tambo-thread.js.map +1 -1
  111. package/dist/providers/hooks/use-tambo-session-token.test.d.ts.map +1 -0
  112. package/dist/providers/hooks/{__tests__/use-tambo-session-token.test.js → use-tambo-session-token.test.js} +1 -1
  113. package/dist/providers/hooks/use-tambo-session-token.test.js.map +1 -0
  114. package/dist/providers/index.d.ts +1 -1
  115. package/dist/providers/index.d.ts.map +1 -1
  116. package/dist/providers/index.js.map +1 -1
  117. package/dist/providers/tambo-client-provider.d.ts +0 -4
  118. package/dist/providers/tambo-client-provider.d.ts.map +1 -1
  119. package/dist/providers/tambo-client-provider.js +0 -3
  120. package/dist/providers/tambo-client-provider.js.map +1 -1
  121. package/dist/providers/tambo-component-provider.d.ts +4 -4
  122. package/dist/providers/tambo-component-provider.d.ts.map +1 -1
  123. package/dist/providers/tambo-component-provider.js.map +1 -1
  124. package/dist/providers/tambo-context-attachment-provider.test.d.ts.map +1 -0
  125. package/dist/providers/{__tests__/tambo-context-attachment-provider.test.js → tambo-context-attachment-provider.test.js} +2 -2
  126. package/dist/providers/tambo-context-attachment-provider.test.js.map +1 -0
  127. package/dist/providers/tambo-context-helpers-provider.test.d.ts.map +1 -0
  128. package/dist/providers/{__tests__/tambo-context-helpers-provider.test.js → tambo-context-helpers-provider.test.js} +2 -2
  129. package/dist/providers/tambo-context-helpers-provider.test.js.map +1 -0
  130. package/dist/providers/tambo-interactable-provider-partial-updates.test.d.ts.map +1 -0
  131. package/dist/providers/{__tests__/tambo-interactable-provider-partial-updates.test.js → tambo-interactable-provider-partial-updates.test.js} +91 -91
  132. package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -0
  133. package/dist/providers/tambo-interactable-provider.d.ts +2 -3
  134. package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
  135. package/dist/providers/tambo-interactable-provider.js +47 -41
  136. package/dist/providers/tambo-interactable-provider.js.map +1 -1
  137. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.d.ts.map +1 -0
  138. package/dist/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.js → tambo-interactables-additional-context-edge-cases.test.js} +17 -17
  139. package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -0
  140. package/dist/providers/tambo-interactables-additional-context.test.d.ts.map +1 -0
  141. package/dist/providers/{__tests__/tambo-interactables-additional-context.test.js → tambo-interactables-additional-context.test.js} +19 -19
  142. package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -0
  143. package/dist/providers/tambo-mcp-token-provider.d.ts +20 -13
  144. package/dist/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  145. package/dist/providers/tambo-mcp-token-provider.js +122 -10
  146. package/dist/providers/tambo-mcp-token-provider.js.map +1 -1
  147. package/dist/providers/tambo-prop-stream-provider.test.d.ts.map +1 -0
  148. package/dist/providers/{__tests__/tambo-prop-stream-provider.test.js → tambo-prop-stream-provider.test.js} +32 -25
  149. package/dist/providers/tambo-prop-stream-provider.test.js.map +1 -0
  150. package/dist/providers/tambo-provider.d.ts +2 -2
  151. package/dist/providers/tambo-provider.d.ts.map +1 -1
  152. package/dist/providers/tambo-provider.js +5 -7
  153. package/dist/providers/tambo-provider.js.map +1 -1
  154. package/dist/providers/tambo-registry-provider.d.ts +28 -7
  155. package/dist/providers/tambo-registry-provider.d.ts.map +1 -1
  156. package/dist/providers/tambo-registry-provider.js +70 -181
  157. package/dist/providers/tambo-registry-provider.js.map +1 -1
  158. package/dist/providers/tambo-registry-provider.test.d.ts.map +1 -0
  159. package/dist/providers/{__tests__/tambo-registry-provider.test.js → tambo-registry-provider.test.js} +153 -31
  160. package/dist/providers/tambo-registry-provider.test.js.map +1 -0
  161. package/dist/providers/tambo-registry-schema-compat.test.d.ts +2 -0
  162. package/dist/providers/tambo-registry-schema-compat.test.d.ts.map +1 -0
  163. package/dist/providers/tambo-registry-schema-compat.test.js +616 -0
  164. package/dist/providers/tambo-registry-schema-compat.test.js.map +1 -0
  165. package/dist/providers/tambo-stubs.d.ts +2 -2
  166. package/dist/providers/tambo-stubs.d.ts.map +1 -1
  167. package/dist/providers/tambo-stubs.js +9 -2
  168. package/dist/providers/tambo-stubs.js.map +1 -1
  169. package/dist/providers/tambo-stubs.test.d.ts.map +1 -0
  170. package/dist/providers/{__tests__/tambo-stubs.test.js → tambo-stubs.test.js} +2 -2
  171. package/dist/providers/tambo-stubs.test.js.map +1 -0
  172. package/dist/providers/tambo-thread-input-provider.d.ts +2 -1
  173. package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
  174. package/dist/providers/tambo-thread-input-provider.js +3 -3
  175. package/dist/providers/tambo-thread-input-provider.js.map +1 -1
  176. package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts.map +1 -0
  177. package/dist/providers/{__tests__/tambo-thread-provider-initial-messages.test.js → tambo-thread-provider-initial-messages.test.js} +7 -9
  178. package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +1 -0
  179. package/dist/providers/tambo-thread-provider.d.ts +8 -0
  180. package/dist/providers/tambo-thread-provider.d.ts.map +1 -1
  181. package/dist/providers/tambo-thread-provider.js +82 -19
  182. package/dist/providers/tambo-thread-provider.js.map +1 -1
  183. package/dist/providers/tambo-thread-provider.test.d.ts.map +1 -0
  184. package/dist/providers/{__tests__/tambo-thread-provider.test.js → tambo-thread-provider.test.js} +42 -78
  185. package/dist/providers/tambo-thread-provider.test.js.map +1 -0
  186. package/dist/schema/index.d.ts +6 -0
  187. package/dist/schema/index.d.ts.map +1 -0
  188. package/dist/schema/index.js +18 -0
  189. package/dist/schema/index.js.map +1 -0
  190. package/dist/schema/json-schema.d.ts +35 -0
  191. package/dist/schema/json-schema.d.ts.map +1 -0
  192. package/dist/schema/json-schema.js +103 -0
  193. package/dist/schema/json-schema.js.map +1 -0
  194. package/dist/schema/schema.d.ts +66 -0
  195. package/dist/schema/schema.d.ts.map +1 -0
  196. package/dist/schema/schema.js +192 -0
  197. package/dist/schema/schema.js.map +1 -0
  198. package/dist/schema/schema.test.d.ts +2 -0
  199. package/dist/schema/schema.test.d.ts.map +1 -0
  200. package/dist/schema/schema.test.js +41 -0
  201. package/dist/schema/schema.test.js.map +1 -0
  202. package/dist/schema/standard-schema.d.ts +21 -0
  203. package/dist/schema/standard-schema.d.ts.map +1 -0
  204. package/dist/schema/standard-schema.js +37 -0
  205. package/dist/schema/standard-schema.js.map +1 -0
  206. package/dist/schema/validate.d.ts +14 -0
  207. package/dist/schema/validate.d.ts.map +1 -0
  208. package/dist/schema/validate.js +148 -0
  209. package/dist/schema/validate.js.map +1 -0
  210. package/dist/schema/validate.test.d.ts +2 -0
  211. package/dist/schema/validate.test.d.ts.map +1 -0
  212. package/dist/schema/validate.test.js +128 -0
  213. package/dist/schema/validate.test.js.map +1 -0
  214. package/dist/schema/zod.d.ts +54 -0
  215. package/dist/schema/zod.d.ts.map +1 -0
  216. package/dist/schema/zod.js +135 -0
  217. package/dist/schema/zod.js.map +1 -0
  218. package/dist/testing/tools.d.ts +29 -15
  219. package/dist/testing/tools.d.ts.map +1 -1
  220. package/dist/testing/tools.js +64 -19
  221. package/dist/testing/tools.js.map +1 -1
  222. package/dist/util/content-parts.test.d.ts.map +1 -0
  223. package/dist/util/{__tests__/content-parts.test.js → content-parts.test.js} +1 -1
  224. package/dist/util/content-parts.test.js.map +1 -0
  225. package/dist/util/generate-component.d.ts.map +1 -1
  226. package/dist/util/generate-component.js +3 -3
  227. package/dist/util/generate-component.js.map +1 -1
  228. package/dist/util/mcp-server-utils.d.ts +23 -0
  229. package/dist/util/mcp-server-utils.d.ts.map +1 -0
  230. package/dist/util/mcp-server-utils.js +107 -0
  231. package/dist/util/mcp-server-utils.js.map +1 -0
  232. package/dist/util/mcp-server-utils.test.d.ts +2 -0
  233. package/dist/util/mcp-server-utils.test.d.ts.map +1 -0
  234. package/dist/util/mcp-server-utils.test.js +287 -0
  235. package/dist/util/mcp-server-utils.test.js.map +1 -0
  236. package/dist/util/message-builder.d.ts +4 -3
  237. package/dist/util/message-builder.d.ts.map +1 -1
  238. package/dist/util/message-builder.js +83 -8
  239. package/dist/util/message-builder.js.map +1 -1
  240. package/dist/util/message-builder.test.d.ts.map +1 -0
  241. package/dist/util/message-builder.test.js +678 -0
  242. package/dist/util/message-builder.test.js.map +1 -0
  243. package/dist/util/query-utils.d.ts.map +1 -1
  244. package/dist/util/query-utils.js +49 -31
  245. package/dist/util/query-utils.js.map +1 -1
  246. package/dist/util/registry-validators.d.ts +26 -0
  247. package/dist/util/registry-validators.d.ts.map +1 -0
  248. package/dist/util/registry-validators.js +105 -0
  249. package/dist/util/registry-validators.js.map +1 -0
  250. package/dist/util/registry-validators.test.d.ts +2 -0
  251. package/dist/util/registry-validators.test.d.ts.map +1 -0
  252. package/dist/util/registry-validators.test.js +235 -0
  253. package/dist/util/registry-validators.test.js.map +1 -0
  254. package/dist/util/registry.d.ts +35 -7
  255. package/dist/util/registry.d.ts.map +1 -1
  256. package/dist/util/registry.js +60 -77
  257. package/dist/util/registry.js.map +1 -1
  258. package/dist/util/registry.test.d.ts +2 -0
  259. package/dist/util/registry.test.d.ts.map +1 -0
  260. package/dist/util/registry.test.js +204 -0
  261. package/dist/util/registry.test.js.map +1 -0
  262. package/dist/util/resource-validators.d.ts +16 -0
  263. package/dist/util/resource-validators.d.ts.map +1 -0
  264. package/dist/util/resource-validators.js +34 -0
  265. package/dist/util/resource-validators.js.map +1 -0
  266. package/dist/util/tool-caller.d.ts +2 -2
  267. package/dist/util/tool-caller.d.ts.map +1 -1
  268. package/dist/util/tool-caller.js +12 -4
  269. package/dist/util/tool-caller.js.map +1 -1
  270. package/esm/context-helpers/context-helpers-provider.test.d.ts.map +1 -0
  271. package/esm/context-helpers/{__tests__/context-helpers-provider.test.js → context-helpers-provider.test.js} +2 -2
  272. package/esm/context-helpers/context-helpers-provider.test.js.map +1 -0
  273. package/esm/context-helpers/context-helpers.test.d.ts.map +1 -0
  274. package/esm/context-helpers/{__tests__/context-helpers.test.js → context-helpers.test.js} +1 -1
  275. package/esm/context-helpers/context-helpers.test.js.map +1 -0
  276. package/{dist/providers → esm}/hoc/with-tambo-interactable.d.ts +2 -2
  277. package/esm/hoc/with-tambo-interactable.d.ts.map +1 -0
  278. package/esm/{providers/hoc → hoc}/with-tambo-interactable.js +29 -2
  279. package/esm/hoc/with-tambo-interactable.js.map +1 -0
  280. package/esm/hoc/with-tambo-interactable.test.d.ts +2 -0
  281. package/esm/hoc/with-tambo-interactable.test.d.ts.map +1 -0
  282. package/esm/hoc/with-tambo-interactable.test.js +187 -0
  283. package/esm/hoc/with-tambo-interactable.test.js.map +1 -0
  284. package/esm/hooks/index.d.ts +1 -1
  285. package/esm/hooks/index.d.ts.map +1 -1
  286. package/esm/hooks/index.js +1 -1
  287. package/esm/hooks/index.js.map +1 -1
  288. package/esm/hooks/use-component-state.d.ts +11 -24
  289. package/esm/hooks/use-component-state.d.ts.map +1 -1
  290. package/esm/hooks/use-component-state.js +14 -5
  291. package/esm/hooks/use-component-state.js.map +1 -1
  292. package/esm/hooks/use-component-state.test.d.ts.map +1 -0
  293. package/esm/hooks/{__tests__/use-component-state.test.js → use-component-state.test.js} +7 -7
  294. package/esm/hooks/use-component-state.test.js.map +1 -0
  295. package/esm/hooks/use-current-message.d.ts +51 -7
  296. package/esm/hooks/use-current-message.d.ts.map +1 -1
  297. package/esm/hooks/use-current-message.js +48 -5
  298. package/esm/hooks/use-current-message.js.map +1 -1
  299. package/esm/hooks/use-current-message.test.d.ts +2 -0
  300. package/esm/hooks/use-current-message.test.d.ts.map +1 -0
  301. package/esm/hooks/use-current-message.test.js +259 -0
  302. package/esm/hooks/use-current-message.test.js.map +1 -0
  303. package/esm/hooks/use-message-images.test.d.ts.map +1 -0
  304. package/esm/hooks/{__tests__/use-message-images.test.js → use-message-images.test.js} +1 -1
  305. package/esm/hooks/use-message-images.test.js.map +1 -0
  306. package/esm/hooks/use-streaming-props.d.ts +7 -19
  307. package/esm/hooks/use-streaming-props.d.ts.map +1 -1
  308. package/esm/hooks/use-streaming-props.js +7 -19
  309. package/esm/hooks/use-streaming-props.js.map +1 -1
  310. package/esm/hooks/use-suggestions.d.ts +1 -1
  311. package/esm/hooks/use-suggestions.d.ts.map +1 -1
  312. package/esm/hooks/use-suggestions.js.map +1 -1
  313. package/esm/hooks/use-suggestions.test.d.ts.map +1 -0
  314. package/esm/hooks/{__tests__/use-suggestions.test.js → use-suggestions.test.js} +36 -29
  315. package/esm/hooks/use-suggestions.test.js.map +1 -0
  316. package/esm/hooks/use-tambo-stream-status.d.ts +9 -8
  317. package/esm/hooks/use-tambo-stream-status.d.ts.map +1 -1
  318. package/esm/hooks/use-tambo-stream-status.js +9 -8
  319. package/esm/hooks/use-tambo-stream-status.js.map +1 -1
  320. package/esm/hooks/use-tambo-stream-status.test.d.ts.map +1 -0
  321. package/esm/hooks/{__tests__/use-tambo-stream-status.test.js → use-tambo-stream-status.test.js} +6 -6
  322. package/esm/hooks/use-tambo-stream-status.test.js.map +1 -0
  323. package/esm/hooks/use-tambo-threads.test.d.ts.map +1 -0
  324. package/esm/hooks/{__tests__/use-tambo-threads.test.js → use-tambo-threads.test.js} +3 -3
  325. package/esm/hooks/use-tambo-threads.test.js.map +1 -0
  326. package/esm/index.d.ts +10 -8
  327. package/esm/index.d.ts.map +1 -1
  328. package/esm/index.js +4 -2
  329. package/esm/index.js.map +1 -1
  330. package/esm/mcp/elicitation.d.ts +10 -2
  331. package/esm/mcp/elicitation.d.ts.map +1 -1
  332. package/esm/mcp/elicitation.js +19 -1
  333. package/esm/mcp/elicitation.js.map +1 -1
  334. package/esm/mcp/elicitation.test.d.ts.map +1 -0
  335. package/esm/mcp/{__tests__/elicitation.test.js → elicitation.test.js} +1 -1
  336. package/esm/mcp/elicitation.test.js.map +1 -0
  337. package/esm/mcp/index.d.ts +11 -2
  338. package/esm/mcp/index.d.ts.map +1 -1
  339. package/esm/mcp/index.js +10 -1
  340. package/esm/mcp/index.js.map +1 -1
  341. package/esm/mcp/mcp-client.d.ts +29 -10
  342. package/esm/mcp/mcp-client.d.ts.map +1 -1
  343. package/esm/mcp/mcp-client.test.d.ts.map +1 -0
  344. package/esm/mcp/{__tests__/mcp-client.test.js → mcp-client.test.js} +1 -1
  345. package/esm/mcp/mcp-client.test.js.map +1 -0
  346. package/esm/mcp/mcp-hooks.d.ts +129 -25
  347. package/esm/mcp/mcp-hooks.d.ts.map +1 -1
  348. package/esm/mcp/mcp-hooks.js +103 -40
  349. package/esm/mcp/mcp-hooks.js.map +1 -1
  350. package/esm/mcp/mcp-hooks.test.d.ts.map +1 -0
  351. package/esm/mcp/{__tests__/mcp-hooks.test.js → mcp-hooks.test.js} +90 -51
  352. package/esm/mcp/mcp-hooks.test.js.map +1 -0
  353. package/esm/mcp/tambo-mcp-provider.d.ts +2 -0
  354. package/esm/mcp/tambo-mcp-provider.d.ts.map +1 -1
  355. package/esm/mcp/tambo-mcp-provider.js +60 -13
  356. package/esm/mcp/tambo-mcp-provider.js.map +1 -1
  357. package/esm/mcp/tambo-mcp-provider.test.d.ts.map +1 -0
  358. package/esm/mcp/{__tests__/tambo-mcp-provider.test.js → tambo-mcp-provider.test.js} +9 -25
  359. package/esm/mcp/tambo-mcp-provider.test.js.map +1 -0
  360. package/esm/mcp/use-mcp-servers.test.d.ts.map +1 -0
  361. package/esm/mcp/{__tests__/use-mcp-servers.test.js → use-mcp-servers.test.js} +5 -11
  362. package/esm/mcp/use-mcp-servers.test.js.map +1 -0
  363. package/esm/model/component-metadata.d.ts +444 -14
  364. package/esm/model/component-metadata.d.ts.map +1 -1
  365. package/esm/model/component-metadata.js.map +1 -1
  366. package/esm/model/generate-component-response.d.ts +12 -1
  367. package/esm/model/generate-component-response.d.ts.map +1 -1
  368. package/esm/model/generate-component-response.js.map +1 -1
  369. package/esm/model/mcp-server-info.d.ts +3 -1
  370. package/esm/model/mcp-server-info.d.ts.map +1 -1
  371. package/esm/model/mcp-server-info.js.map +1 -1
  372. package/esm/model/resource-info.d.ts +55 -0
  373. package/esm/model/resource-info.d.ts.map +1 -0
  374. package/esm/model/resource-info.js +2 -0
  375. package/esm/model/resource-info.js.map +1 -0
  376. package/esm/model/tambo-thread.d.ts +6 -1
  377. package/esm/model/tambo-thread.d.ts.map +1 -1
  378. package/esm/model/tambo-thread.js.map +1 -1
  379. package/esm/providers/hooks/use-tambo-session-token.test.d.ts.map +1 -0
  380. package/esm/providers/hooks/{__tests__/use-tambo-session-token.test.js → use-tambo-session-token.test.js} +1 -1
  381. package/esm/providers/hooks/use-tambo-session-token.test.js.map +1 -0
  382. package/esm/providers/index.d.ts +1 -1
  383. package/esm/providers/index.d.ts.map +1 -1
  384. package/esm/providers/index.js.map +1 -1
  385. package/esm/providers/tambo-client-provider.d.ts +0 -4
  386. package/esm/providers/tambo-client-provider.d.ts.map +1 -1
  387. package/esm/providers/tambo-client-provider.js +0 -3
  388. package/esm/providers/tambo-client-provider.js.map +1 -1
  389. package/esm/providers/tambo-component-provider.d.ts +4 -4
  390. package/esm/providers/tambo-component-provider.d.ts.map +1 -1
  391. package/esm/providers/tambo-component-provider.js.map +1 -1
  392. package/esm/providers/tambo-context-attachment-provider.test.d.ts.map +1 -0
  393. package/esm/providers/{__tests__/tambo-context-attachment-provider.test.js → tambo-context-attachment-provider.test.js} +2 -2
  394. package/esm/providers/tambo-context-attachment-provider.test.js.map +1 -0
  395. package/esm/providers/tambo-context-helpers-provider.test.d.ts.map +1 -0
  396. package/esm/providers/{__tests__/tambo-context-helpers-provider.test.js → tambo-context-helpers-provider.test.js} +2 -2
  397. package/esm/providers/tambo-context-helpers-provider.test.js.map +1 -0
  398. package/esm/providers/tambo-interactable-provider-partial-updates.test.d.ts.map +1 -0
  399. package/esm/providers/{__tests__/tambo-interactable-provider-partial-updates.test.js → tambo-interactable-provider-partial-updates.test.js} +5 -5
  400. package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -0
  401. package/esm/providers/tambo-interactable-provider.d.ts +2 -3
  402. package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
  403. package/esm/providers/tambo-interactable-provider.js +44 -38
  404. package/esm/providers/tambo-interactable-provider.js.map +1 -1
  405. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.d.ts.map +1 -0
  406. package/esm/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.js → tambo-interactables-additional-context-edge-cases.test.js} +10 -10
  407. package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -0
  408. package/esm/providers/tambo-interactables-additional-context.test.d.ts.map +1 -0
  409. package/esm/providers/{__tests__/tambo-interactables-additional-context.test.js → tambo-interactables-additional-context.test.js} +10 -10
  410. package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -0
  411. package/esm/providers/tambo-mcp-token-provider.d.ts +20 -13
  412. package/esm/providers/tambo-mcp-token-provider.d.ts.map +1 -1
  413. package/esm/providers/tambo-mcp-token-provider.js +123 -11
  414. package/esm/providers/tambo-mcp-token-provider.js.map +1 -1
  415. package/esm/providers/tambo-prop-stream-provider.test.d.ts.map +1 -0
  416. package/esm/providers/{__tests__/tambo-prop-stream-provider.test.js → tambo-prop-stream-provider.test.js} +32 -25
  417. package/esm/providers/tambo-prop-stream-provider.test.js.map +1 -0
  418. package/esm/providers/tambo-provider.d.ts +2 -2
  419. package/esm/providers/tambo-provider.d.ts.map +1 -1
  420. package/esm/providers/tambo-provider.js +5 -7
  421. package/esm/providers/tambo-provider.js.map +1 -1
  422. package/esm/providers/tambo-registry-provider.d.ts +28 -7
  423. package/esm/providers/tambo-registry-provider.d.ts.map +1 -1
  424. package/esm/providers/tambo-registry-provider.js +67 -175
  425. package/esm/providers/tambo-registry-provider.js.map +1 -1
  426. package/esm/providers/tambo-registry-provider.test.d.ts.map +1 -0
  427. package/esm/providers/{__tests__/tambo-registry-provider.test.js → tambo-registry-provider.test.js} +149 -27
  428. package/esm/providers/tambo-registry-provider.test.js.map +1 -0
  429. package/esm/providers/tambo-registry-schema-compat.test.d.ts +2 -0
  430. package/esm/providers/tambo-registry-schema-compat.test.d.ts.map +1 -0
  431. package/esm/providers/tambo-registry-schema-compat.test.js +578 -0
  432. package/esm/providers/tambo-registry-schema-compat.test.js.map +1 -0
  433. package/esm/providers/tambo-stubs.d.ts +2 -2
  434. package/esm/providers/tambo-stubs.d.ts.map +1 -1
  435. package/esm/providers/tambo-stubs.js +9 -2
  436. package/esm/providers/tambo-stubs.js.map +1 -1
  437. package/esm/providers/tambo-stubs.test.d.ts.map +1 -0
  438. package/esm/providers/{__tests__/tambo-stubs.test.js → tambo-stubs.test.js} +2 -2
  439. package/esm/providers/tambo-stubs.test.js.map +1 -0
  440. package/esm/providers/tambo-thread-input-provider.d.ts +2 -1
  441. package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
  442. package/esm/providers/tambo-thread-input-provider.js +3 -3
  443. package/esm/providers/tambo-thread-input-provider.js.map +1 -1
  444. package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts.map +1 -0
  445. package/esm/providers/{__tests__/tambo-thread-provider-initial-messages.test.js → tambo-thread-provider-initial-messages.test.js} +7 -9
  446. package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +1 -0
  447. package/esm/providers/tambo-thread-provider.d.ts +8 -0
  448. package/esm/providers/tambo-thread-provider.d.ts.map +1 -1
  449. package/esm/providers/tambo-thread-provider.js +82 -19
  450. package/esm/providers/tambo-thread-provider.js.map +1 -1
  451. package/esm/providers/tambo-thread-provider.test.d.ts.map +1 -0
  452. package/esm/providers/{__tests__/tambo-thread-provider.test.js → tambo-thread-provider.test.js} +34 -70
  453. package/esm/providers/tambo-thread-provider.test.js.map +1 -0
  454. package/esm/schema/index.d.ts +6 -0
  455. package/esm/schema/index.d.ts.map +1 -0
  456. package/esm/schema/index.js +6 -0
  457. package/esm/schema/index.js.map +1 -0
  458. package/esm/schema/json-schema.d.ts +35 -0
  459. package/esm/schema/json-schema.d.ts.map +1 -0
  460. package/esm/schema/json-schema.js +98 -0
  461. package/esm/schema/json-schema.js.map +1 -0
  462. package/esm/schema/schema.d.ts +66 -0
  463. package/esm/schema/schema.d.ts.map +1 -0
  464. package/esm/schema/schema.js +185 -0
  465. package/esm/schema/schema.js.map +1 -0
  466. package/esm/schema/schema.test.d.ts +2 -0
  467. package/esm/schema/schema.test.d.ts.map +1 -0
  468. package/esm/schema/schema.test.js +39 -0
  469. package/esm/schema/schema.test.js.map +1 -0
  470. package/esm/schema/standard-schema.d.ts +21 -0
  471. package/esm/schema/standard-schema.d.ts.map +1 -0
  472. package/esm/schema/standard-schema.js +34 -0
  473. package/esm/schema/standard-schema.js.map +1 -0
  474. package/esm/schema/validate.d.ts +14 -0
  475. package/esm/schema/validate.d.ts.map +1 -0
  476. package/esm/schema/validate.js +145 -0
  477. package/esm/schema/validate.js.map +1 -0
  478. package/esm/schema/validate.test.d.ts +2 -0
  479. package/esm/schema/validate.test.d.ts.map +1 -0
  480. package/esm/schema/validate.test.js +126 -0
  481. package/esm/schema/validate.test.js.map +1 -0
  482. package/esm/schema/zod.d.ts +54 -0
  483. package/esm/schema/zod.d.ts.map +1 -0
  484. package/esm/schema/zod.js +124 -0
  485. package/esm/schema/zod.js.map +1 -0
  486. package/esm/testing/tools.d.ts +29 -15
  487. package/esm/testing/tools.d.ts.map +1 -1
  488. package/esm/testing/tools.js +62 -16
  489. package/esm/testing/tools.js.map +1 -1
  490. package/esm/util/content-parts.test.d.ts.map +1 -0
  491. package/esm/util/{__tests__/content-parts.test.js → content-parts.test.js} +1 -1
  492. package/esm/util/content-parts.test.js.map +1 -0
  493. package/esm/util/generate-component.d.ts.map +1 -1
  494. package/esm/util/generate-component.js +3 -3
  495. package/esm/util/generate-component.js.map +1 -1
  496. package/esm/util/mcp-server-utils.d.ts +23 -0
  497. package/esm/util/mcp-server-utils.d.ts.map +1 -0
  498. package/esm/util/mcp-server-utils.js +102 -0
  499. package/esm/util/mcp-server-utils.js.map +1 -0
  500. package/esm/util/mcp-server-utils.test.d.ts +2 -0
  501. package/esm/util/mcp-server-utils.test.d.ts.map +1 -0
  502. package/esm/util/mcp-server-utils.test.js +285 -0
  503. package/esm/util/mcp-server-utils.test.js.map +1 -0
  504. package/esm/util/message-builder.d.ts +4 -3
  505. package/esm/util/message-builder.d.ts.map +1 -1
  506. package/esm/util/message-builder.js +83 -8
  507. package/esm/util/message-builder.js.map +1 -1
  508. package/esm/util/message-builder.test.d.ts.map +1 -0
  509. package/esm/util/message-builder.test.js +676 -0
  510. package/esm/util/message-builder.test.js.map +1 -0
  511. package/esm/util/query-utils.d.ts.map +1 -1
  512. package/esm/util/query-utils.js +49 -31
  513. package/esm/util/query-utils.js.map +1 -1
  514. package/esm/util/registry-validators.d.ts +26 -0
  515. package/esm/util/registry-validators.d.ts.map +1 -0
  516. package/esm/util/registry-validators.js +100 -0
  517. package/esm/util/registry-validators.js.map +1 -0
  518. package/esm/util/registry-validators.test.d.ts +2 -0
  519. package/esm/util/registry-validators.test.d.ts.map +1 -0
  520. package/esm/util/registry-validators.test.js +233 -0
  521. package/esm/util/registry-validators.test.js.map +1 -0
  522. package/esm/util/registry.d.ts +35 -7
  523. package/esm/util/registry.d.ts.map +1 -1
  524. package/esm/util/registry.js +57 -73
  525. package/esm/util/registry.js.map +1 -1
  526. package/esm/util/registry.test.d.ts +2 -0
  527. package/esm/util/registry.test.d.ts.map +1 -0
  528. package/esm/util/registry.test.js +169 -0
  529. package/esm/util/registry.test.js.map +1 -0
  530. package/esm/util/resource-validators.d.ts +16 -0
  531. package/esm/util/resource-validators.d.ts.map +1 -0
  532. package/esm/util/resource-validators.js +30 -0
  533. package/esm/util/resource-validators.js.map +1 -0
  534. package/esm/util/tool-caller.d.ts +2 -2
  535. package/esm/util/tool-caller.d.ts.map +1 -1
  536. package/esm/util/tool-caller.js +12 -4
  537. package/esm/util/tool-caller.js.map +1 -1
  538. package/package.json +30 -11
  539. package/dist/__tests__/util/validate-zod-schema.test.d.ts +0 -2
  540. package/dist/__tests__/util/validate-zod-schema.test.d.ts.map +0 -1
  541. package/dist/__tests__/util/validate-zod-schema.test.js +0 -96
  542. package/dist/__tests__/util/validate-zod-schema.test.js.map +0 -1
  543. package/dist/context-helpers/__tests__/context-helpers-provider.test.d.ts.map +0 -1
  544. package/dist/context-helpers/__tests__/context-helpers-provider.test.js.map +0 -1
  545. package/dist/context-helpers/__tests__/context-helpers.test.d.ts.map +0 -1
  546. package/dist/context-helpers/__tests__/context-helpers.test.js.map +0 -1
  547. package/dist/hooks/__tests__/use-component-state.test.d.ts.map +0 -1
  548. package/dist/hooks/__tests__/use-component-state.test.js.map +0 -1
  549. package/dist/hooks/__tests__/use-message-images.test.d.ts.map +0 -1
  550. package/dist/hooks/__tests__/use-message-images.test.js.map +0 -1
  551. package/dist/hooks/__tests__/use-suggestions.test.d.ts.map +0 -1
  552. package/dist/hooks/__tests__/use-suggestions.test.js.map +0 -1
  553. package/dist/hooks/__tests__/use-tambo-stream-status.test.d.ts.map +0 -1
  554. package/dist/hooks/__tests__/use-tambo-stream-status.test.js.map +0 -1
  555. package/dist/hooks/__tests__/use-tambo-threads.test.d.ts.map +0 -1
  556. package/dist/hooks/__tests__/use-tambo-threads.test.js.map +0 -1
  557. package/dist/mcp/__tests__/elicitation.test.d.ts.map +0 -1
  558. package/dist/mcp/__tests__/elicitation.test.js.map +0 -1
  559. package/dist/mcp/__tests__/mcp-client.test.d.ts.map +0 -1
  560. package/dist/mcp/__tests__/mcp-client.test.js.map +0 -1
  561. package/dist/mcp/__tests__/mcp-hooks.test.d.ts.map +0 -1
  562. package/dist/mcp/__tests__/mcp-hooks.test.js.map +0 -1
  563. package/dist/mcp/__tests__/tambo-mcp-provider.test.d.ts.map +0 -1
  564. package/dist/mcp/__tests__/tambo-mcp-provider.test.js.map +0 -1
  565. package/dist/mcp/__tests__/use-mcp-servers.test.d.ts.map +0 -1
  566. package/dist/mcp/__tests__/use-mcp-servers.test.js.map +0 -1
  567. package/dist/providers/__tests__/tambo-context-attachment-provider.test.d.ts.map +0 -1
  568. package/dist/providers/__tests__/tambo-context-attachment-provider.test.js.map +0 -1
  569. package/dist/providers/__tests__/tambo-context-helpers-provider.test.d.ts.map +0 -1
  570. package/dist/providers/__tests__/tambo-context-helpers-provider.test.js.map +0 -1
  571. package/dist/providers/__tests__/tambo-interactable-provider-partial-updates.test.d.ts.map +0 -1
  572. package/dist/providers/__tests__/tambo-interactable-provider-partial-updates.test.js.map +0 -1
  573. package/dist/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts.map +0 -1
  574. package/dist/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.js.map +0 -1
  575. package/dist/providers/__tests__/tambo-interactables-additional-context.test.d.ts.map +0 -1
  576. package/dist/providers/__tests__/tambo-interactables-additional-context.test.js.map +0 -1
  577. package/dist/providers/__tests__/tambo-prop-stream-provider.test.d.ts.map +0 -1
  578. package/dist/providers/__tests__/tambo-prop-stream-provider.test.js.map +0 -1
  579. package/dist/providers/__tests__/tambo-registry-provider.test.d.ts.map +0 -1
  580. package/dist/providers/__tests__/tambo-registry-provider.test.js.map +0 -1
  581. package/dist/providers/__tests__/tambo-stubs.test.d.ts.map +0 -1
  582. package/dist/providers/__tests__/tambo-stubs.test.js.map +0 -1
  583. package/dist/providers/__tests__/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  584. package/dist/providers/__tests__/tambo-thread-provider-initial-messages.test.js.map +0 -1
  585. package/dist/providers/__tests__/tambo-thread-provider.test.d.ts.map +0 -1
  586. package/dist/providers/__tests__/tambo-thread-provider.test.js.map +0 -1
  587. package/dist/providers/hoc/with-tambo-interactable.d.ts.map +0 -1
  588. package/dist/providers/hoc/with-tambo-interactable.js.map +0 -1
  589. package/dist/providers/hooks/__tests__/use-tambo-session-token.test.d.ts.map +0 -1
  590. package/dist/providers/hooks/__tests__/use-tambo-session-token.test.js.map +0 -1
  591. package/dist/util/__tests__/content-parts.test.d.ts.map +0 -1
  592. package/dist/util/__tests__/content-parts.test.js.map +0 -1
  593. package/dist/util/__tests__/message-builder.test.d.ts.map +0 -1
  594. package/dist/util/__tests__/message-builder.test.js +0 -191
  595. package/dist/util/__tests__/message-builder.test.js.map +0 -1
  596. package/dist/util/validate-zod-schema.d.ts +0 -10
  597. package/dist/util/validate-zod-schema.d.ts.map +0 -1
  598. package/dist/util/validate-zod-schema.js +0 -100
  599. package/dist/util/validate-zod-schema.js.map +0 -1
  600. package/esm/__tests__/util/validate-zod-schema.test.d.ts +0 -2
  601. package/esm/__tests__/util/validate-zod-schema.test.d.ts.map +0 -1
  602. package/esm/__tests__/util/validate-zod-schema.test.js +0 -94
  603. package/esm/__tests__/util/validate-zod-schema.test.js.map +0 -1
  604. package/esm/context-helpers/__tests__/context-helpers-provider.test.d.ts.map +0 -1
  605. package/esm/context-helpers/__tests__/context-helpers-provider.test.js.map +0 -1
  606. package/esm/context-helpers/__tests__/context-helpers.test.d.ts.map +0 -1
  607. package/esm/context-helpers/__tests__/context-helpers.test.js.map +0 -1
  608. package/esm/hooks/__tests__/use-component-state.test.d.ts.map +0 -1
  609. package/esm/hooks/__tests__/use-component-state.test.js.map +0 -1
  610. package/esm/hooks/__tests__/use-message-images.test.d.ts.map +0 -1
  611. package/esm/hooks/__tests__/use-message-images.test.js.map +0 -1
  612. package/esm/hooks/__tests__/use-suggestions.test.d.ts.map +0 -1
  613. package/esm/hooks/__tests__/use-suggestions.test.js.map +0 -1
  614. package/esm/hooks/__tests__/use-tambo-stream-status.test.d.ts.map +0 -1
  615. package/esm/hooks/__tests__/use-tambo-stream-status.test.js.map +0 -1
  616. package/esm/hooks/__tests__/use-tambo-threads.test.d.ts.map +0 -1
  617. package/esm/hooks/__tests__/use-tambo-threads.test.js.map +0 -1
  618. package/esm/mcp/__tests__/elicitation.test.d.ts.map +0 -1
  619. package/esm/mcp/__tests__/elicitation.test.js.map +0 -1
  620. package/esm/mcp/__tests__/mcp-client.test.d.ts.map +0 -1
  621. package/esm/mcp/__tests__/mcp-client.test.js.map +0 -1
  622. package/esm/mcp/__tests__/mcp-hooks.test.d.ts.map +0 -1
  623. package/esm/mcp/__tests__/mcp-hooks.test.js.map +0 -1
  624. package/esm/mcp/__tests__/tambo-mcp-provider.test.d.ts.map +0 -1
  625. package/esm/mcp/__tests__/tambo-mcp-provider.test.js.map +0 -1
  626. package/esm/mcp/__tests__/use-mcp-servers.test.d.ts.map +0 -1
  627. package/esm/mcp/__tests__/use-mcp-servers.test.js.map +0 -1
  628. package/esm/providers/__tests__/tambo-context-attachment-provider.test.d.ts.map +0 -1
  629. package/esm/providers/__tests__/tambo-context-attachment-provider.test.js.map +0 -1
  630. package/esm/providers/__tests__/tambo-context-helpers-provider.test.d.ts.map +0 -1
  631. package/esm/providers/__tests__/tambo-context-helpers-provider.test.js.map +0 -1
  632. package/esm/providers/__tests__/tambo-interactable-provider-partial-updates.test.d.ts.map +0 -1
  633. package/esm/providers/__tests__/tambo-interactable-provider-partial-updates.test.js.map +0 -1
  634. package/esm/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts.map +0 -1
  635. package/esm/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.js.map +0 -1
  636. package/esm/providers/__tests__/tambo-interactables-additional-context.test.d.ts.map +0 -1
  637. package/esm/providers/__tests__/tambo-interactables-additional-context.test.js.map +0 -1
  638. package/esm/providers/__tests__/tambo-prop-stream-provider.test.d.ts.map +0 -1
  639. package/esm/providers/__tests__/tambo-prop-stream-provider.test.js.map +0 -1
  640. package/esm/providers/__tests__/tambo-registry-provider.test.d.ts.map +0 -1
  641. package/esm/providers/__tests__/tambo-registry-provider.test.js.map +0 -1
  642. package/esm/providers/__tests__/tambo-stubs.test.d.ts.map +0 -1
  643. package/esm/providers/__tests__/tambo-stubs.test.js.map +0 -1
  644. package/esm/providers/__tests__/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
  645. package/esm/providers/__tests__/tambo-thread-provider-initial-messages.test.js.map +0 -1
  646. package/esm/providers/__tests__/tambo-thread-provider.test.d.ts.map +0 -1
  647. package/esm/providers/__tests__/tambo-thread-provider.test.js.map +0 -1
  648. package/esm/providers/hoc/with-tambo-interactable.d.ts.map +0 -1
  649. package/esm/providers/hoc/with-tambo-interactable.js.map +0 -1
  650. package/esm/providers/hooks/__tests__/use-tambo-session-token.test.d.ts.map +0 -1
  651. package/esm/providers/hooks/__tests__/use-tambo-session-token.test.js.map +0 -1
  652. package/esm/util/__tests__/content-parts.test.d.ts.map +0 -1
  653. package/esm/util/__tests__/content-parts.test.js.map +0 -1
  654. package/esm/util/__tests__/message-builder.test.d.ts.map +0 -1
  655. package/esm/util/__tests__/message-builder.test.js +0 -189
  656. package/esm/util/__tests__/message-builder.test.js.map +0 -1
  657. package/esm/util/validate-zod-schema.d.ts +0 -10
  658. package/esm/util/validate-zod-schema.d.ts.map +0 -1
  659. package/esm/util/validate-zod-schema.js +0 -97
  660. package/esm/util/validate-zod-schema.js.map +0 -1
  661. /package/dist/context-helpers/{__tests__/context-helpers-provider.test.d.ts → context-helpers-provider.test.d.ts} +0 -0
  662. /package/dist/context-helpers/{__tests__/context-helpers.test.d.ts → context-helpers.test.d.ts} +0 -0
  663. /package/dist/hooks/{__tests__/use-component-state.test.d.ts → use-component-state.test.d.ts} +0 -0
  664. /package/dist/hooks/{__tests__/use-message-images.test.d.ts → use-message-images.test.d.ts} +0 -0
  665. /package/dist/hooks/{__tests__/use-suggestions.test.d.ts → use-suggestions.test.d.ts} +0 -0
  666. /package/dist/hooks/{__tests__/use-tambo-stream-status.test.d.ts → use-tambo-stream-status.test.d.ts} +0 -0
  667. /package/dist/hooks/{__tests__/use-tambo-threads.test.d.ts → use-tambo-threads.test.d.ts} +0 -0
  668. /package/dist/mcp/{__tests__/elicitation.test.d.ts → elicitation.test.d.ts} +0 -0
  669. /package/dist/mcp/{__tests__/mcp-client.test.d.ts → mcp-client.test.d.ts} +0 -0
  670. /package/dist/mcp/{__tests__/mcp-hooks.test.d.ts → mcp-hooks.test.d.ts} +0 -0
  671. /package/dist/mcp/{__tests__/tambo-mcp-provider.test.d.ts → tambo-mcp-provider.test.d.ts} +0 -0
  672. /package/dist/mcp/{__tests__/use-mcp-servers.test.d.ts → use-mcp-servers.test.d.ts} +0 -0
  673. /package/dist/providers/hooks/{__tests__/use-tambo-session-token.test.d.ts → use-tambo-session-token.test.d.ts} +0 -0
  674. /package/dist/providers/{__tests__/tambo-context-attachment-provider.test.d.ts → tambo-context-attachment-provider.test.d.ts} +0 -0
  675. /package/dist/providers/{__tests__/tambo-context-helpers-provider.test.d.ts → tambo-context-helpers-provider.test.d.ts} +0 -0
  676. /package/dist/providers/{__tests__/tambo-interactable-provider-partial-updates.test.d.ts → tambo-interactable-provider-partial-updates.test.d.ts} +0 -0
  677. /package/dist/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts → tambo-interactables-additional-context-edge-cases.test.d.ts} +0 -0
  678. /package/dist/providers/{__tests__/tambo-interactables-additional-context.test.d.ts → tambo-interactables-additional-context.test.d.ts} +0 -0
  679. /package/dist/providers/{__tests__/tambo-prop-stream-provider.test.d.ts → tambo-prop-stream-provider.test.d.ts} +0 -0
  680. /package/dist/providers/{__tests__/tambo-registry-provider.test.d.ts → tambo-registry-provider.test.d.ts} +0 -0
  681. /package/dist/providers/{__tests__/tambo-stubs.test.d.ts → tambo-stubs.test.d.ts} +0 -0
  682. /package/dist/providers/{__tests__/tambo-thread-provider-initial-messages.test.d.ts → tambo-thread-provider-initial-messages.test.d.ts} +0 -0
  683. /package/dist/providers/{__tests__/tambo-thread-provider.test.d.ts → tambo-thread-provider.test.d.ts} +0 -0
  684. /package/dist/util/{__tests__/content-parts.test.d.ts → content-parts.test.d.ts} +0 -0
  685. /package/dist/util/{__tests__/message-builder.test.d.ts → message-builder.test.d.ts} +0 -0
  686. /package/esm/context-helpers/{__tests__/context-helpers-provider.test.d.ts → context-helpers-provider.test.d.ts} +0 -0
  687. /package/esm/context-helpers/{__tests__/context-helpers.test.d.ts → context-helpers.test.d.ts} +0 -0
  688. /package/esm/hooks/{__tests__/use-component-state.test.d.ts → use-component-state.test.d.ts} +0 -0
  689. /package/esm/hooks/{__tests__/use-message-images.test.d.ts → use-message-images.test.d.ts} +0 -0
  690. /package/esm/hooks/{__tests__/use-suggestions.test.d.ts → use-suggestions.test.d.ts} +0 -0
  691. /package/esm/hooks/{__tests__/use-tambo-stream-status.test.d.ts → use-tambo-stream-status.test.d.ts} +0 -0
  692. /package/esm/hooks/{__tests__/use-tambo-threads.test.d.ts → use-tambo-threads.test.d.ts} +0 -0
  693. /package/esm/mcp/{__tests__/elicitation.test.d.ts → elicitation.test.d.ts} +0 -0
  694. /package/esm/mcp/{__tests__/mcp-client.test.d.ts → mcp-client.test.d.ts} +0 -0
  695. /package/esm/mcp/{__tests__/mcp-hooks.test.d.ts → mcp-hooks.test.d.ts} +0 -0
  696. /package/esm/mcp/{__tests__/tambo-mcp-provider.test.d.ts → tambo-mcp-provider.test.d.ts} +0 -0
  697. /package/esm/mcp/{__tests__/use-mcp-servers.test.d.ts → use-mcp-servers.test.d.ts} +0 -0
  698. /package/esm/providers/hooks/{__tests__/use-tambo-session-token.test.d.ts → use-tambo-session-token.test.d.ts} +0 -0
  699. /package/esm/providers/{__tests__/tambo-context-attachment-provider.test.d.ts → tambo-context-attachment-provider.test.d.ts} +0 -0
  700. /package/esm/providers/{__tests__/tambo-context-helpers-provider.test.d.ts → tambo-context-helpers-provider.test.d.ts} +0 -0
  701. /package/esm/providers/{__tests__/tambo-interactable-provider-partial-updates.test.d.ts → tambo-interactable-provider-partial-updates.test.d.ts} +0 -0
  702. /package/esm/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts → tambo-interactables-additional-context-edge-cases.test.d.ts} +0 -0
  703. /package/esm/providers/{__tests__/tambo-interactables-additional-context.test.d.ts → tambo-interactables-additional-context.test.d.ts} +0 -0
  704. /package/esm/providers/{__tests__/tambo-prop-stream-provider.test.d.ts → tambo-prop-stream-provider.test.d.ts} +0 -0
  705. /package/esm/providers/{__tests__/tambo-registry-provider.test.d.ts → tambo-registry-provider.test.d.ts} +0 -0
  706. /package/esm/providers/{__tests__/tambo-stubs.test.d.ts → tambo-stubs.test.d.ts} +0 -0
  707. /package/esm/providers/{__tests__/tambo-thread-provider-initial-messages.test.d.ts → tambo-thread-provider-initial-messages.test.d.ts} +0 -0
  708. /package/esm/providers/{__tests__/tambo-thread-provider.test.d.ts → tambo-thread-provider.test.d.ts} +0 -0
  709. /package/esm/util/{__tests__/content-parts.test.d.ts → content-parts.test.d.ts} +0 -0
  710. /package/esm/util/{__tests__/message-builder.test.d.ts → message-builder.test.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-utils.test.js","sourceRoot":"","sources":["../../src/util/mcp-server-utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n McpServerInfo,\n NormalizedMcpServerInfo,\n} from \"../model/mcp-server-info\";\nimport { MCPTransport } from \"../model/mcp-server-info\";\nimport {\n deduplicateMcpServers,\n deriveServerKey,\n normalizeServerInfo,\n} from \"./mcp-server-utils\";\n\ndescribe(\"deriveServerKey\", () => {\n it(\"should extract key from simple domain\", () => {\n expect(deriveServerKey(\"https://linear.app/mcp\")).toBe(\"linear\");\n });\n\n it(\"should extract key from subdomain\", () => {\n expect(deriveServerKey(\"https://mcp.linear.app/mcp\")).toBe(\"linear\");\n });\n\n it(\"should extract key from www subdomain\", () => {\n expect(deriveServerKey(\"https://www.example.com/mcp\")).toBe(\"example\");\n });\n\n it(\"should extract key from api subdomain\", () => {\n expect(deriveServerKey(\"https://api.service.com/mcp\")).toBe(\"service\");\n });\n\n it(\"should extract key from app subdomain\", () => {\n expect(deriveServerKey(\"https://app.tool.com/mcp\")).toBe(\"tool\");\n });\n\n it(\"should handle multi-part TLDs like .co.uk\", () => {\n expect(deriveServerKey(\"https://example.co.uk/mcp\")).toBe(\"example\");\n });\n\n it(\"should handle .com.au TLDs\", () => {\n expect(deriveServerKey(\"https://service.com.au/mcp\")).toBe(\"service\");\n });\n\n it(\"should prefer meaningful part over common prefixes\", () => {\n // mcp.staging.app.com -> after removing TLD: [\"mcp\", \"staging\", \"app\"]\n // Working backwards: checks \"app\" (index 2) - common prefix, continue\n // Checks \"staging\" (index 1) - common prefix, continue\n // Checks \"mcp\" (index 0) - common prefix, continue\n // Falls back - actual behavior returns \"staging\"\n expect(deriveServerKey(\"https://mcp.staging.app.com/mcp\")).toBe(\"staging\");\n });\n\n it(\"should fallback to last part if all are common prefixes\", () => {\n // www.api.mcp.com -> after removing TLD: [\"www\", \"api\", \"mcp\"]\n // All are common prefixes, so falls back to last relevant part\n // The actual implementation returns \"api\" (the middle part)\n // This appears to be the behavior, so we test for it\n expect(deriveServerKey(\"https://www.api.mcp.com/mcp\")).toBe(\"api\");\n });\n\n it(\"should handle single-part hostname\", () => {\n expect(deriveServerKey(\"https://localhost:3000/mcp\")).toBe(\"localhost\");\n });\n\n it(\"should handle invalid URL by sanitizing\", () => {\n const result = deriveServerKey(\"not-a-url!!!\");\n expect(result).toBe(\"not_a_url___\");\n expect(result).toMatch(/^[a-z0-9_]+$/);\n });\n\n it(\"should lowercase the result\", () => {\n expect(deriveServerKey(\"https://EXAMPLE.COM/mcp\")).toBe(\"example\");\n });\n\n it(\"should handle staging subdomain\", () => {\n expect(deriveServerKey(\"https://staging.service.com/mcp\")).toBe(\"service\");\n });\n\n it(\"should handle dev subdomain\", () => {\n expect(deriveServerKey(\"https://dev.tool.com/mcp\")).toBe(\"tool\");\n });\n\n it(\"should handle prod subdomain\", () => {\n expect(deriveServerKey(\"https://prod.service.com/mcp\")).toBe(\"service\");\n });\n});\n\ndescribe(\"normalizeServerInfo\", () => {\n it(\"should normalize string URL to server info\", () => {\n const result = normalizeServerInfo(\"https://example.com/mcp\");\n\n expect(result).toEqual({\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n });\n });\n\n it(\"should preserve existing serverKey\", () => {\n const server: McpServerInfo = {\n url: \"https://example.com/mcp\",\n serverKey: \"custom-key\",\n };\n\n const result = normalizeServerInfo(server);\n\n expect(result.serverKey).toBe(\"custom-key\");\n expect(result.transport).toBe(MCPTransport.HTTP);\n });\n\n it(\"should derive serverKey when not provided\", () => {\n const server: McpServerInfo = {\n url: \"https://mcp.linear.app/mcp\",\n };\n\n const result = normalizeServerInfo(server);\n\n expect(result.serverKey).toBe(\"linear\");\n });\n\n it(\"should preserve existing transport\", () => {\n const server: McpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.SSE,\n };\n\n const result = normalizeServerInfo(server);\n\n expect(result.transport).toBe(MCPTransport.SSE);\n });\n\n it(\"should default transport to HTTP when not provided\", () => {\n const server: McpServerInfo = {\n url: \"https://example.com/mcp\",\n };\n\n const result = normalizeServerInfo(server);\n\n expect(result.transport).toBe(MCPTransport.HTTP);\n });\n\n it(\"should preserve all other properties\", () => {\n const server: McpServerInfo = {\n url: \"https://example.com/mcp\",\n name: \"Test Server\",\n description: \"A test server\",\n customHeaders: { \"X-API-Key\": \"secret\" },\n handlers: {},\n };\n\n const result = normalizeServerInfo(server);\n\n expect(result.name).toBe(\"Test Server\");\n expect(result.description).toBe(\"A test server\");\n expect(result.customHeaders).toEqual({ \"X-API-Key\": \"secret\" });\n expect(result.handlers).toEqual({});\n });\n\n it(\"should handle server with all optional fields\", () => {\n const server: McpServerInfo = {\n url: \"https://example.com/mcp\",\n name: \"My Server\",\n description: \"Description\",\n transport: MCPTransport.SSE,\n serverKey: \"my-server\",\n customHeaders: { Authorization: \"Bearer token\" },\n };\n\n const result = normalizeServerInfo(server);\n\n expect(result).toEqual({\n url: \"https://example.com/mcp\",\n name: \"My Server\",\n description: \"Description\",\n transport: MCPTransport.SSE,\n serverKey: \"my-server\",\n customHeaders: { Authorization: \"Bearer token\" },\n });\n });\n});\n\ndescribe(\"deduplicateMcpServers\", () => {\n it(\"should return empty array for empty input\", () => {\n expect(deduplicateMcpServers([])).toEqual([]);\n });\n\n it(\"should return single server unchanged\", () => {\n const server: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n };\n\n expect(deduplicateMcpServers([server])).toEqual([server]);\n });\n\n it(\"should deduplicate servers with same URL and transport\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n };\n\n const result = deduplicateMcpServers([server1, server2]);\n\n expect(result).toHaveLength(1);\n expect(result[0].url).toBe(\"https://example.com/mcp\");\n });\n\n it(\"should keep servers with different URLs\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://other.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"other\",\n };\n\n const result = deduplicateMcpServers([server1, server2]);\n\n expect(result).toHaveLength(2);\n });\n\n it(\"should keep servers with same URL but different transport\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.SSE,\n serverKey: \"example\",\n };\n\n const result = deduplicateMcpServers([server1, server2]);\n\n expect(result).toHaveLength(2);\n });\n\n it(\"should ensure unique serverKeys by appending suffixes\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example1.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"linear\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example2.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"linear\",\n };\n const server3: NormalizedMcpServerInfo = {\n url: \"https://example3.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"linear\",\n };\n\n const result = deduplicateMcpServers([server1, server2, server3]);\n\n expect(result).toHaveLength(3);\n expect(result[0].serverKey).toBe(\"linear\");\n expect(result[1].serverKey).toBe(\"linear-2\");\n expect(result[2].serverKey).toBe(\"linear-3\");\n });\n\n it(\"should handle mixed unique and duplicate serverKeys\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example1.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"linear\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example2.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"notion\",\n };\n const server3: NormalizedMcpServerInfo = {\n url: \"https://example3.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"linear\",\n };\n\n const result = deduplicateMcpServers([server1, server2, server3]);\n\n expect(result).toHaveLength(3);\n expect(result[0].serverKey).toBe(\"linear\");\n expect(result[1].serverKey).toBe(\"notion\");\n expect(result[2].serverKey).toBe(\"linear-2\");\n });\n\n it(\"should deduplicate by connection first, then ensure serverKey uniqueness\", () => {\n // Same connection, different serverKeys (shouldn't happen in practice but test the logic)\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"linear\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"notion\",\n };\n\n const result = deduplicateMcpServers([server1, server2]);\n\n // Should deduplicate by connection, keeping only one\n expect(result).toHaveLength(1);\n });\n\n it(\"should preserve server properties when deduplicating\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n name: \"First Server\",\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n name: \"Second Server\",\n };\n\n const result = deduplicateMcpServers([server1, server2]);\n\n expect(result).toHaveLength(1);\n // Should keep the last one encountered\n expect(result[0].name).toBe(\"Second Server\");\n });\n\n it(\"should handle servers with different customHeaders as different connections\", () => {\n const server1: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n customHeaders: { Authorization: \"Bearer token1\" },\n };\n const server2: NormalizedMcpServerInfo = {\n url: \"https://example.com/mcp\",\n transport: MCPTransport.HTTP,\n serverKey: \"example\",\n customHeaders: { Authorization: \"Bearer token2\" },\n };\n\n const result = deduplicateMcpServers([server1, server2]);\n\n expect(result).toHaveLength(2);\n });\n});\n"]}
@@ -1,10 +1,11 @@
1
1
  import type TamboAI from "@tambo-ai/typescript-sdk";
2
2
  import { StagedImage } from "../hooks/use-message-images";
3
3
  /**
4
- * Builds message content with text and images
5
- * @param text - The text content
4
+ * Builds message content with text, MCP resource references, and images
5
+ * @param text - The text content, may include \@serverKey:uri resource references
6
6
  * @param images - Array of staged images
7
+ * @param resourceNames - Map of resource IDs (serverKey:uri) to their display names
7
8
  * @returns Array of message content parts
8
9
  */
9
- export declare function buildMessageContent(text: string, images: StagedImage[]): TamboAI.Beta.Threads.ChatCompletionContentPart[];
10
+ export declare function buildMessageContent(text: string, images: StagedImage[], resourceNames?: Record<string, string>): TamboAI.Beta.Threads.ChatCompletionContentPart[];
10
11
  //# sourceMappingURL=message-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-builder.d.ts","sourceRoot":"","sources":["../../src/util/message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAwBlD"}
1
+ {"version":3,"file":"message-builder.d.ts","sourceRoot":"","sources":["../../src/util/message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAsF1D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EAAE,EACrB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CA4BlD"}
@@ -1,17 +1,92 @@
1
1
  /**
2
- * Builds message content with text and images
3
- * @param text - The text content
2
+ * Regular expression to match MCP resource references in the format: \@serverKey:uri
3
+ *
4
+ * Examples:
5
+ * - \@tambo-1hfs429:tambo:test://static/resource/1
6
+ * - \@linear:file://path/to/file
7
+ *
8
+ * Pattern breakdown:
9
+ * - \@ - Literal \@ symbol
10
+ * - ([a-zA-Z0-9-]+) - Server key (alphanumeric + hyphens, client-side routing key)
11
+ * - : - Literal colon separator
12
+ * - (\S+) - URI (non-whitespace characters, actual resource URI)
13
+ */
14
+ const RESOURCE_REFERENCE_PATTERN = /@([a-zA-Z0-9-]+):(\S+)/g;
15
+ /**
16
+ * Parses text with resource references and returns interleaved content parts.
17
+ * Resource references have the format: \@serverKey:uri
18
+ *
19
+ * The serverKey prefix is stripped before sending to the backend because:
20
+ * - It's a client-side routing key (e.g., "tambo-1hfs429") used by React SDK to route to the correct MCP connection
21
+ * - The backend only needs the actual resource URI (e.g., "tambo:test://static/resource/1")
22
+ * - The backend routes resources based on the thread's MCP server configuration, not client-side keys
23
+ * @param text - Text potentially containing resource references
24
+ * @param resourceNames - Map of full resource IDs (serverKey:uri) to their display names
25
+ * @returns Array of content parts in order (text and resource parts interleaved)
26
+ */
27
+ function parseResourceReferences(text, resourceNames) {
28
+ const parts = [];
29
+ // Use matchAll to avoid global regex state issues
30
+ const matches = Array.from(text.matchAll(RESOURCE_REFERENCE_PATTERN));
31
+ let lastIndex = 0;
32
+ // Find all resource references and interleave with text
33
+ for (const match of matches) {
34
+ const [fullMatch, serverKey, uri] = match;
35
+ const fullId = `${serverKey}:${uri}`;
36
+ // Add text before this resource reference (preserve whitespace)
37
+ if (match.index !== undefined && match.index > lastIndex) {
38
+ const textBefore = text.slice(lastIndex, match.index);
39
+ if (textBefore.length > 0) {
40
+ parts.push({
41
+ type: "text",
42
+ text: textBefore,
43
+ });
44
+ }
45
+ }
46
+ const resource = { uri };
47
+ const name = resourceNames[fullId];
48
+ if (name) {
49
+ resource.name = name;
50
+ }
51
+ parts.push({ type: "resource", resource });
52
+ if (match.index !== undefined) {
53
+ lastIndex = match.index + fullMatch.length;
54
+ }
55
+ }
56
+ // Add remaining text after the last resource reference (preserve whitespace)
57
+ if (lastIndex < text.length) {
58
+ const textAfter = text.slice(lastIndex);
59
+ if (textAfter.length > 0) {
60
+ parts.push({
61
+ type: "text",
62
+ text: textAfter,
63
+ });
64
+ }
65
+ }
66
+ // If no resource references were found, return the whole text as a single text part
67
+ if (parts.length === 0 && text.trim()) {
68
+ parts.push({ type: "text", text });
69
+ }
70
+ return parts;
71
+ }
72
+ /**
73
+ * Builds message content with text, MCP resource references, and images
74
+ * @param text - The text content, may include \@serverKey:uri resource references
4
75
  * @param images - Array of staged images
76
+ * @param resourceNames - Map of resource IDs (serverKey:uri) to their display names
5
77
  * @returns Array of message content parts
6
78
  */
7
- export function buildMessageContent(text, images) {
79
+ export function buildMessageContent(text, images, resourceNames = {}) {
8
80
  const content = [];
9
- if (text.trim()) {
10
- content.push({
11
- type: "text",
12
- text: text.trim(),
13
- });
81
+ const hasNonWhitespaceText = text.trim().length > 0;
82
+ if (hasNonWhitespaceText) {
83
+ // Parse resource references from the original text so that all
84
+ // user-visible whitespace (including leading/trailing spaces and
85
+ // internal spacing) is preserved in the resulting content parts.
86
+ const parts = parseResourceReferences(text, resourceNames);
87
+ content.push(...parts);
14
88
  }
89
+ // Add images at the end
15
90
  for (const image of images) {
16
91
  content.push({
17
92
  type: "image_url",
@@ -1 +1 @@
1
- {"version":3,"file":"message-builder.js","sourceRoot":"","sources":["../../src/util/message-builder.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,MAAqB;IAErB,MAAM,OAAO,GAAqD,EAAE,CAAC;IAErE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE;gBACT,GAAG,EAAE,KAAK,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import type TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { StagedImage } from \"../hooks/use-message-images\";\n\n/**\n * Builds message content with text and images\n * @param text - The text content\n * @param images - Array of staged images\n * @returns Array of message content parts\n */\nexport function buildMessageContent(\n text: string,\n images: StagedImage[],\n): TamboAI.Beta.Threads.ChatCompletionContentPart[] {\n const content: TamboAI.Beta.Threads.ChatCompletionContentPart[] = [];\n\n if (text.trim()) {\n content.push({\n type: \"text\",\n text: text.trim(),\n });\n }\n\n for (const image of images) {\n content.push({\n type: \"image_url\",\n image_url: {\n url: image.dataUrl,\n },\n });\n }\n\n if (content.length === 0) {\n throw new Error(\"Message must contain text or images\");\n }\n\n return content;\n}\n"]}
1
+ {"version":3,"file":"message-builder.js","sourceRoot":"","sources":["../../src/util/message-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import type TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { StagedImage } from \"../hooks/use-message-images\";\n\n/**\n * Regular expression to match MCP resource references in the format: \\@serverKey:uri\n *\n * Examples:\n * - \\@tambo-1hfs429:tambo:test://static/resource/1\n * - \\@linear:file://path/to/file\n *\n * Pattern breakdown:\n * - \\@ - Literal \\@ symbol\n * - ([a-zA-Z0-9-]+) - Server key (alphanumeric + hyphens, client-side routing key)\n * - : - Literal colon separator\n * - (\\S+) - URI (non-whitespace characters, actual resource URI)\n */\nconst RESOURCE_REFERENCE_PATTERN = /@([a-zA-Z0-9-]+):(\\S+)/g;\n\n/**\n * Parses text with resource references and returns interleaved content parts.\n * Resource references have the format: \\@serverKey:uri\n *\n * The serverKey prefix is stripped before sending to the backend because:\n * - It's a client-side routing key (e.g., \"tambo-1hfs429\") used by React SDK to route to the correct MCP connection\n * - The backend only needs the actual resource URI (e.g., \"tambo:test://static/resource/1\")\n * - The backend routes resources based on the thread's MCP server configuration, not client-side keys\n * @param text - Text potentially containing resource references\n * @param resourceNames - Map of full resource IDs (serverKey:uri) to their display names\n * @returns Array of content parts in order (text and resource parts interleaved)\n */\nfunction parseResourceReferences(\n text: string,\n resourceNames: Record<string, string>,\n): TamboAI.Beta.Threads.ChatCompletionContentPart[] {\n const parts: TamboAI.Beta.Threads.ChatCompletionContentPart[] = [];\n\n // Use matchAll to avoid global regex state issues\n const matches = Array.from(text.matchAll(RESOURCE_REFERENCE_PATTERN));\n let lastIndex = 0;\n\n // Find all resource references and interleave with text\n for (const match of matches) {\n const [fullMatch, serverKey, uri] = match;\n const fullId = `${serverKey}:${uri}`;\n\n // Add text before this resource reference (preserve whitespace)\n if (match.index !== undefined && match.index > lastIndex) {\n const textBefore = text.slice(lastIndex, match.index);\n if (textBefore.length > 0) {\n parts.push({\n type: \"text\",\n text: textBefore,\n });\n }\n }\n\n const resource: TamboAI.Resource = { uri };\n const name = resourceNames[fullId];\n if (name) {\n resource.name = name;\n }\n parts.push({ type: \"resource\", resource });\n\n if (match.index !== undefined) {\n lastIndex = match.index + fullMatch.length;\n }\n }\n\n // Add remaining text after the last resource reference (preserve whitespace)\n if (lastIndex < text.length) {\n const textAfter = text.slice(lastIndex);\n if (textAfter.length > 0) {\n parts.push({\n type: \"text\",\n text: textAfter,\n });\n }\n }\n\n // If no resource references were found, return the whole text as a single text part\n if (parts.length === 0 && text.trim()) {\n parts.push({ type: \"text\", text });\n }\n\n return parts;\n}\n\n/**\n * Builds message content with text, MCP resource references, and images\n * @param text - The text content, may include \\@serverKey:uri resource references\n * @param images - Array of staged images\n * @param resourceNames - Map of resource IDs (serverKey:uri) to their display names\n * @returns Array of message content parts\n */\nexport function buildMessageContent(\n text: string,\n images: StagedImage[],\n resourceNames: Record<string, string> = {},\n): TamboAI.Beta.Threads.ChatCompletionContentPart[] {\n const content: TamboAI.Beta.Threads.ChatCompletionContentPart[] = [];\n\n const hasNonWhitespaceText = text.trim().length > 0;\n\n if (hasNonWhitespaceText) {\n // Parse resource references from the original text so that all\n // user-visible whitespace (including leading/trailing spaces and\n // internal spacing) is preserved in the resulting content parts.\n const parts = parseResourceReferences(text, resourceNames);\n content.push(...parts);\n }\n\n // Add images at the end\n for (const image of images) {\n content.push({\n type: \"image_url\",\n image_url: {\n url: image.dataUrl,\n },\n });\n }\n\n if (content.length === 0) {\n throw new Error(\"Message must contain text or images\");\n }\n\n return content;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-builder.test.d.ts","sourceRoot":"","sources":["../../src/util/message-builder.test.ts"],"names":[],"mappings":""}