@chatsdk-dev/elements 0.1.3 → 0.2.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 (334) hide show
  1. package/dist/{api-CIYPz72L.d.ts → api-BP4g92-0.d.ts} +1 -1
  2. package/dist/{api-CIYPz72L.d.ts.map → api-BP4g92-0.d.ts.map} +1 -1
  3. package/dist/approval-BODP4NVA.d.ts +5 -0
  4. package/dist/approval-BODP4NVA.d.ts.map +1 -0
  5. package/dist/avatar-CK5WGu6N.d.ts +5 -0
  6. package/dist/avatar-CK5WGu6N.d.ts.map +1 -0
  7. package/dist/{callbacks-PIvHXeEI.d.ts → callbacks-CQelTSwD.d.ts} +1 -1
  8. package/dist/{callbacks-PIvHXeEI.d.ts.map → callbacks-CQelTSwD.d.ts.map} +1 -1
  9. package/dist/chat-element-BbBl5CDM.d.ts +131 -0
  10. package/dist/chat-element-BbBl5CDM.d.ts.map +1 -0
  11. package/dist/chat-error-CST-PRdq.d.ts +15 -0
  12. package/dist/chat-error-CST-PRdq.d.ts.map +1 -0
  13. package/dist/{chatsdk-provider-BhlChLFd.d.ts → chatsdk-provider-t1GEgRPY.d.ts} +2 -2
  14. package/dist/chatsdk-provider-t1GEgRPY.d.ts.map +1 -0
  15. package/dist/{config-CqihvSgz.d.ts → config-BGIY5Hkg.d.ts} +20 -19
  16. package/dist/config-BGIY5Hkg.d.ts.map +1 -0
  17. package/dist/config-Wk7C7AJs.js +95 -0
  18. package/dist/config-Wk7C7AJs.js.map +1 -0
  19. package/dist/config-f4Go--5s.d.ts +194 -0
  20. package/dist/config-f4Go--5s.d.ts.map +1 -0
  21. package/dist/content-BoiPVwgM.d.ts +10 -0
  22. package/dist/content-BoiPVwgM.d.ts.map +1 -0
  23. package/dist/{context-aSaHw-ac.d.ts → context-D4dOffYT.d.ts} +1 -1
  24. package/dist/context-D4dOffYT.d.ts.map +1 -0
  25. package/dist/conversation-CtpcctHL.d.ts +8 -0
  26. package/dist/conversation-CtpcctHL.d.ts.map +1 -0
  27. package/dist/copy-BPB94kUd.d.ts +5 -0
  28. package/dist/copy-BPB94kUd.d.ts.map +1 -0
  29. package/dist/{element-provider-C_nBsftD.d.ts → element-provider-C95jVJV9.d.ts} +4 -5
  30. package/dist/element-provider-C95jVJV9.d.ts.map +1 -0
  31. package/dist/features/chat/chat-element.d.ts +2 -2
  32. package/dist/features/chat/chat-element.js +2 -2
  33. package/dist/features/chat/conversation/conversation.d.ts +2 -0
  34. package/dist/features/chat/conversation/conversation.js +73 -0
  35. package/dist/features/chat/conversation/conversation.js.map +1 -0
  36. package/dist/features/chat/conversation/message/activity.d.ts +12 -0
  37. package/dist/features/chat/conversation/message/activity.d.ts.map +1 -0
  38. package/dist/features/chat/conversation/message/activity.js +48 -0
  39. package/dist/features/chat/conversation/message/activity.js.map +1 -0
  40. package/dist/features/chat/conversation/message/approval.d.ts +2 -0
  41. package/dist/features/chat/conversation/message/approval.js +62 -0
  42. package/dist/features/chat/conversation/message/approval.js.map +1 -0
  43. package/dist/features/chat/conversation/message/avatar.d.ts +2 -0
  44. package/dist/features/chat/conversation/message/avatar.js +18 -0
  45. package/dist/features/chat/conversation/message/avatar.js.map +1 -0
  46. package/dist/features/chat/conversation/message/content.d.ts +2 -0
  47. package/dist/features/chat/conversation/message/content.js +11 -0
  48. package/dist/features/chat/conversation/message/content.js.map +1 -0
  49. package/dist/features/chat/conversation/message/copy.d.ts +2 -0
  50. package/dist/features/chat/conversation/message/copy.js +30 -0
  51. package/dist/features/chat/conversation/message/copy.js.map +1 -0
  52. package/dist/features/chat/conversation/message/feedback.d.ts +2 -0
  53. package/dist/features/chat/conversation/message/feedback.js +36 -0
  54. package/dist/features/chat/conversation/message/feedback.js.map +1 -0
  55. package/dist/features/chat/conversation/message/footer.d.ts +2 -0
  56. package/dist/features/chat/conversation/message/footer.js +20 -0
  57. package/dist/features/chat/conversation/message/footer.js.map +1 -0
  58. package/dist/features/chat/conversation/message/frame.d.ts +2 -0
  59. package/dist/features/chat/conversation/message/frame.js +18 -0
  60. package/dist/features/chat/conversation/message/frame.js.map +1 -0
  61. package/dist/features/chat/conversation/message/index.d.ts +2 -0
  62. package/dist/features/chat/conversation/message/index.js +2 -0
  63. package/dist/features/chat/conversation/message/index.parts.d.ts +22 -0
  64. package/dist/features/chat/conversation/message/index.parts.d.ts.map +1 -0
  65. package/dist/features/chat/conversation/message/index.parts.js +36 -0
  66. package/dist/features/chat/conversation/message/index.parts.js.map +1 -0
  67. package/dist/features/chat/conversation/message/message.d.ts +1 -0
  68. package/dist/features/chat/conversation/message/message.js +1 -0
  69. package/dist/features/chat/conversation/message/part.d.ts +2 -0
  70. package/dist/features/chat/conversation/message/part.js +35 -0
  71. package/dist/features/chat/conversation/message/part.js.map +1 -0
  72. package/dist/features/chat/conversation/message/provider.d.ts +2 -0
  73. package/dist/features/chat/conversation/message/provider.js +26 -0
  74. package/dist/features/chat/conversation/message/provider.js.map +1 -0
  75. package/dist/features/chat/conversation/message/reasoning.d.ts +2 -0
  76. package/dist/features/chat/conversation/message/reasoning.js +33 -0
  77. package/dist/features/chat/conversation/message/reasoning.js.map +1 -0
  78. package/dist/features/chat/conversation/message/sources.d.ts +2 -0
  79. package/dist/features/chat/conversation/message/sources.js +20 -0
  80. package/dist/features/chat/conversation/message/sources.js.map +1 -0
  81. package/dist/features/chat/conversation/message/text.d.ts +2 -0
  82. package/dist/features/chat/conversation/message/text.js +29 -0
  83. package/dist/features/chat/conversation/message/text.js.map +1 -0
  84. package/dist/features/chat/conversation/message/timestamp.d.ts +2 -0
  85. package/dist/features/chat/conversation/message/timestamp.js +36 -0
  86. package/dist/features/chat/conversation/message/timestamp.js.map +1 -0
  87. package/dist/features/chat/conversation/message/tool.d.ts +2 -0
  88. package/dist/features/chat/conversation/message/tool.js +56 -0
  89. package/dist/features/chat/conversation/message/tool.js.map +1 -0
  90. package/dist/features/chat/error/chat-error.d.ts +2 -0
  91. package/dist/features/chat/error/chat-error.js +46 -0
  92. package/dist/features/chat/error/chat-error.js.map +1 -0
  93. package/dist/features/chat/frame/frame.d.ts +2 -0
  94. package/dist/features/chat/frame/frame.js +52 -0
  95. package/dist/features/chat/frame/frame.js.map +1 -0
  96. package/dist/features/chat/frame/header-menu.d.ts +8 -0
  97. package/dist/features/chat/frame/header-menu.d.ts.map +1 -0
  98. package/dist/features/chat/{chat-header/chat-menu.js → frame/header-menu.js} +12 -13
  99. package/dist/features/chat/frame/header-menu.js.map +1 -0
  100. package/dist/features/chat/frame/header.d.ts +2 -0
  101. package/dist/features/chat/frame/header.js +50 -0
  102. package/dist/features/chat/frame/header.js.map +1 -0
  103. package/dist/features/chat/history/history-empty.d.ts +8 -0
  104. package/dist/features/chat/history/history-empty.d.ts.map +1 -0
  105. package/dist/features/chat/{chat-history/chat-history-empty.js → history/history-empty.js} +9 -8
  106. package/dist/features/chat/history/history-empty.js.map +1 -0
  107. package/dist/features/chat/history/history.d.ts +2 -0
  108. package/dist/features/chat/history/history.js +65 -0
  109. package/dist/features/chat/history/history.js.map +1 -0
  110. package/dist/features/chat/history/use-history.d.ts +2 -0
  111. package/dist/features/chat/history/use-history.js +30 -0
  112. package/dist/features/chat/history/use-history.js.map +1 -0
  113. package/dist/features/chat/index.d.ts +2 -2
  114. package/dist/features/chat/index.js +29 -2
  115. package/dist/features/chat/index.js.map +1 -0
  116. package/dist/features/chat/index.parts.d.ts +9 -0
  117. package/dist/features/chat/index.parts.js +24 -0
  118. package/dist/features/chat/index.parts.js.map +1 -0
  119. package/dist/features/chat/main/main.d.ts +2 -0
  120. package/dist/features/chat/main/main.js +40 -0
  121. package/dist/features/chat/main/main.js.map +1 -0
  122. package/dist/features/chat/main/prompt-input.d.ts +2 -0
  123. package/dist/features/chat/main/prompt-input.js +70 -0
  124. package/dist/features/chat/main/prompt-input.js.map +1 -0
  125. package/dist/features/chat/main/use-create-new-chat.d.ts +2 -0
  126. package/dist/features/chat/main/use-create-new-chat.js +24 -0
  127. package/dist/features/chat/main/use-create-new-chat.js.map +1 -0
  128. package/dist/features/chat/main/use-prompt-input.d.ts +2 -0
  129. package/dist/features/chat/main/use-prompt-input.js +27 -0
  130. package/dist/features/chat/main/use-prompt-input.js.map +1 -0
  131. package/dist/features/chat/provider/provider.d.ts +2 -0
  132. package/dist/features/chat/provider/provider.js +3 -0
  133. package/dist/features/chat/provider/use-ai-sdk-chat.d.ts +26 -0
  134. package/dist/features/chat/provider/use-ai-sdk-chat.d.ts.map +1 -0
  135. package/dist/features/chat/provider/use-ai-sdk-chat.js +3 -0
  136. package/dist/features/chat/provider/use-create-chat-store.d.ts +2 -0
  137. package/dist/features/chat/provider/use-create-chat-store.js +42 -0
  138. package/dist/features/chat/provider/use-create-chat-store.js.map +1 -0
  139. package/dist/features/chat/provider/use-visible-messages.d.ts +13 -0
  140. package/dist/features/chat/provider/use-visible-messages.d.ts.map +1 -0
  141. package/dist/features/chat/provider/use-visible-messages.js +23 -0
  142. package/dist/features/chat/provider/use-visible-messages.js.map +1 -0
  143. package/dist/features/chat/queries/query-keys.d.ts +3 -3
  144. package/dist/features/chat/queries/query-keys.d.ts.map +1 -1
  145. package/dist/features/chat/queries/query-keys.js +5 -5
  146. package/dist/features/chat/queries/query-keys.js.map +1 -1
  147. package/dist/features/chat/queries/use-create-conversation-mutation.d.ts +13 -14
  148. package/dist/features/chat/queries/use-create-conversation-mutation.d.ts.map +1 -1
  149. package/dist/features/chat/queries/use-create-conversation-mutation.js +4 -4
  150. package/dist/features/chat/queries/use-create-conversation-mutation.js.map +1 -1
  151. package/dist/features/chat/queries/use-get-agent-query.d.ts +2 -0
  152. package/dist/features/chat/queries/use-get-agent-query.js +2 -0
  153. package/dist/features/chat/queries/use-get-conversation-query.d.ts +2 -72
  154. package/dist/features/chat/queries/use-get-conversation-query.js +1 -1
  155. package/dist/features/chat/queries/use-list-conversations-query.d.ts +2 -33
  156. package/dist/features/chat/queries/use-list-conversations-query.js +23 -1
  157. package/dist/features/chat/queries/use-list-conversations-query.js.map +1 -0
  158. package/dist/features/chat/queries/use-record-feedback-mutation.d.ts +26 -0
  159. package/dist/features/chat/queries/use-record-feedback-mutation.d.ts.map +1 -0
  160. package/dist/features/chat/queries/use-record-feedback-mutation.js +2 -0
  161. package/dist/features/chat/utils.d.ts +7 -2
  162. package/dist/features/chat/utils.d.ts.map +1 -1
  163. package/dist/features/chat/utils.js +12 -1
  164. package/dist/features/chat/utils.js.map +1 -1
  165. package/dist/features/data-fetching/use-api-client.d.ts +1 -3
  166. package/dist/features/data-fetching/use-api-client.d.ts.map +1 -1
  167. package/dist/features/data-fetching/use-api-client.js +1 -1
  168. package/dist/features/element/chatsdk-provider.d.ts +1 -1
  169. package/dist/features/element/chatsdk-provider.js +5 -5
  170. package/dist/features/element/chatsdk-provider.js.map +1 -1
  171. package/dist/features/element/element-provider.d.ts +1 -1
  172. package/dist/features/element/element-provider.js +12 -8
  173. package/dist/features/element/element-provider.js.map +1 -1
  174. package/dist/features/element/store.d.ts +1 -1
  175. package/dist/features/element/store.js.map +1 -1
  176. package/dist/features/element/types/api.d.ts +1 -1
  177. package/dist/features/element/types/callbacks.d.ts +1 -1
  178. package/dist/features/element/types/config.d.ts +1 -1
  179. package/dist/features/element/types/context.d.ts +1 -1
  180. package/dist/features/element/types/locale.d.ts +1 -1
  181. package/dist/features/element/types/theme.d.ts +1 -1
  182. package/dist/features/element/types/translations.d.ts +1 -1
  183. package/dist/features/element/use-element-config.d.ts +14 -33
  184. package/dist/features/element/use-element-config.d.ts.map +1 -1
  185. package/dist/features/element/use-element-config.js +7 -15
  186. package/dist/features/element/use-element-config.js.map +1 -1
  187. package/dist/features/element/use-merge-global-config.d.ts +6 -7
  188. package/dist/features/element/use-merge-global-config.d.ts.map +1 -1
  189. package/dist/features/element/use-merge-global-config.js +2 -2
  190. package/dist/features/element/use-merge-global-config.js.map +1 -1
  191. package/dist/features/element/utils.d.ts +1 -1
  192. package/dist/features/element/utils.js.map +1 -1
  193. package/dist/features/errors/use-app-error-message.d.ts +2 -0
  194. package/dist/features/errors/use-app-error-message.js +25 -0
  195. package/dist/features/errors/use-app-error-message.js.map +1 -0
  196. package/dist/features/logging/logger-provider.d.ts +2 -0
  197. package/dist/features/logging/logger-provider.js +20 -0
  198. package/dist/features/logging/logger-provider.js.map +1 -0
  199. package/dist/feedback-hofC2MHC.d.ts +5 -0
  200. package/dist/feedback-hofC2MHC.d.ts.map +1 -0
  201. package/dist/footer-BdcVsDmw.d.ts +11 -0
  202. package/dist/footer-BdcVsDmw.d.ts.map +1 -0
  203. package/dist/frame-BCN71hMj.d.ts +17 -0
  204. package/dist/frame-BCN71hMj.d.ts.map +1 -0
  205. package/dist/frame-D_ce2ErP.d.ts +10 -0
  206. package/dist/frame-D_ce2ErP.d.ts.map +1 -0
  207. package/dist/header-BDGB3zKD.d.ts +8 -0
  208. package/dist/header-BDGB3zKD.d.ts.map +1 -0
  209. package/dist/history-DDUj4LMJ.d.ts +8 -0
  210. package/dist/history-DDUj4LMJ.d.ts.map +1 -0
  211. package/dist/i18n/config.d.ts +1 -1
  212. package/dist/i18n/config.js +1 -1
  213. package/dist/i18n/i18next.d.ts +1 -1377
  214. package/dist/i18n/i18next.d.ts.map +1 -1
  215. package/dist/i18n/i18next.js +1 -2
  216. package/dist/i18n/i18next.js.map +1 -1
  217. package/dist/i18n/utils.d.ts +1 -1
  218. package/dist/i18n/utils.d.ts.map +1 -1
  219. package/dist/i18n/utils.js.map +1 -1
  220. package/dist/index.d.ts +13 -5
  221. package/dist/index.js +12 -59
  222. package/dist/index.js.map +1 -1
  223. package/dist/{locale-W5Kyyi4X.d.ts → locale-v_zPGRhE.d.ts} +2 -2
  224. package/dist/locale-v_zPGRhE.d.ts.map +1 -0
  225. package/dist/logger-provider-whBIV3Gt.d.ts +16 -0
  226. package/dist/logger-provider-whBIV3Gt.d.ts.map +1 -0
  227. package/dist/main-D8VgMjmL.d.ts +15 -0
  228. package/dist/main-D8VgMjmL.d.ts.map +1 -0
  229. package/dist/part-C8ZA6iZn.d.ts +25 -0
  230. package/dist/part-C8ZA6iZn.d.ts.map +1 -0
  231. package/dist/prompt-input-bclKhGu3.d.ts +15 -0
  232. package/dist/prompt-input-bclKhGu3.d.ts.map +1 -0
  233. package/dist/provider-CkkKc2aq.d.ts +21 -0
  234. package/dist/provider-CkkKc2aq.d.ts.map +1 -0
  235. package/dist/provider-Cps0PPXa.js +383 -0
  236. package/dist/provider-Cps0PPXa.js.map +1 -0
  237. package/dist/reasoning-BRNu_n6T.d.ts +5 -0
  238. package/dist/reasoning-BRNu_n6T.d.ts.map +1 -0
  239. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  240. package/dist/sources-BXoSxNYc.d.ts +5 -0
  241. package/dist/sources-BXoSxNYc.d.ts.map +1 -0
  242. package/dist/{store-CGX9oRlE.d.ts → store-CkswgmIQ.d.ts} +8 -10
  243. package/dist/store-CkswgmIQ.d.ts.map +1 -0
  244. package/dist/styles.css +1677 -948
  245. package/dist/text-Cio_Hj_h.d.ts +5 -0
  246. package/dist/text-Cio_Hj_h.d.ts.map +1 -0
  247. package/dist/{theme-Cb-RBWbR.d.ts → theme-K7rbPHc1.d.ts} +1 -1
  248. package/dist/{theme-Cb-RBWbR.d.ts.map → theme-K7rbPHc1.d.ts.map} +1 -1
  249. package/dist/timestamp-CbU3bLa3.d.ts +5 -0
  250. package/dist/timestamp-CbU3bLa3.d.ts.map +1 -0
  251. package/dist/tool-DskTWxZb.d.ts +5 -0
  252. package/dist/tool-DskTWxZb.d.ts.map +1 -0
  253. package/dist/use-app-error-message-DAHQ4oR_.d.ts +12 -0
  254. package/dist/use-app-error-message-DAHQ4oR_.d.ts.map +1 -0
  255. package/dist/use-create-chat-store-Ccd5tvho.d.ts +26 -0
  256. package/dist/use-create-chat-store-Ccd5tvho.d.ts.map +1 -0
  257. package/dist/use-create-new-chat-H4kM3hPt.d.ts +7 -0
  258. package/dist/use-create-new-chat-H4kM3hPt.d.ts.map +1 -0
  259. package/dist/use-get-agent-query-hQ4uOjfL.d.ts +10 -0
  260. package/dist/use-get-agent-query-hQ4uOjfL.d.ts.map +1 -0
  261. package/dist/use-get-conversation-query-D5bRlewH.d.ts +73 -0
  262. package/dist/use-get-conversation-query-D5bRlewH.d.ts.map +1 -0
  263. package/dist/use-history-DH2KkVDP.d.ts +30 -0
  264. package/dist/use-history-DH2KkVDP.d.ts.map +1 -0
  265. package/dist/use-list-conversations-query-Ny-nP5cZ.d.ts +29 -0
  266. package/dist/use-list-conversations-query-Ny-nP5cZ.d.ts.map +1 -0
  267. package/package.json +27 -24
  268. package/dist/chat-element-CCsDDFif.js +0 -441
  269. package/dist/chat-element-CCsDDFif.js.map +0 -1
  270. package/dist/chat-element-CSpa62Te.d.ts +0 -53
  271. package/dist/chat-element-CSpa62Te.d.ts.map +0 -1
  272. package/dist/chatsdk-provider-BhlChLFd.d.ts.map +0 -1
  273. package/dist/common/utils.d.ts +0 -14
  274. package/dist/common/utils.d.ts.map +0 -1
  275. package/dist/common/utils.js +0 -26
  276. package/dist/common/utils.js.map +0 -1
  277. package/dist/components/info-card.d.ts +0 -23
  278. package/dist/components/info-card.d.ts.map +0 -1
  279. package/dist/components/info-card.js +0 -38
  280. package/dist/components/info-card.js.map +0 -1
  281. package/dist/config-BigIL6TQ.js +0 -29
  282. package/dist/config-BigIL6TQ.js.map +0 -1
  283. package/dist/config-CqihvSgz.d.ts.map +0 -1
  284. package/dist/config-D_jVTH_D.d.ts +0 -58
  285. package/dist/config-D_jVTH_D.d.ts.map +0 -1
  286. package/dist/context-aSaHw-ac.d.ts.map +0 -1
  287. package/dist/element-provider-C_nBsftD.d.ts.map +0 -1
  288. package/dist/features/chat/chat-card.d.ts +0 -7
  289. package/dist/features/chat/chat-card.d.ts.map +0 -1
  290. package/dist/features/chat/chat-card.js +0 -2
  291. package/dist/features/chat/chat-header/chat-header.d.ts +0 -12
  292. package/dist/features/chat/chat-header/chat-header.d.ts.map +0 -1
  293. package/dist/features/chat/chat-header/chat-header.js +0 -2
  294. package/dist/features/chat/chat-header/chat-menu.d.ts +0 -7
  295. package/dist/features/chat/chat-header/chat-menu.d.ts.map +0 -1
  296. package/dist/features/chat/chat-header/chat-menu.js.map +0 -1
  297. package/dist/features/chat/chat-history/chat-history-empty.d.ts +0 -7
  298. package/dist/features/chat/chat-history/chat-history-empty.d.ts.map +0 -1
  299. package/dist/features/chat/chat-history/chat-history-empty.js.map +0 -1
  300. package/dist/features/chat/chat-history/chat-history.d.ts +0 -7
  301. package/dist/features/chat/chat-history/chat-history.d.ts.map +0 -1
  302. package/dist/features/chat/chat-history/chat-history.js +0 -2
  303. package/dist/features/chat/chat-main/chat-main.d.ts +0 -10
  304. package/dist/features/chat/chat-main/chat-main.d.ts.map +0 -1
  305. package/dist/features/chat/chat-main/chat-main.js +0 -3
  306. package/dist/features/chat/chat-main/use-chat.d.ts +0 -23
  307. package/dist/features/chat/chat-main/use-chat.d.ts.map +0 -1
  308. package/dist/features/chat/chat-main/use-chat.js +0 -3
  309. package/dist/features/chat/chat-main/use-initial-messages.d.ts +0 -22
  310. package/dist/features/chat/chat-main/use-initial-messages.d.ts.map +0 -1
  311. package/dist/features/chat/chat-main/use-initial-messages.js +0 -2
  312. package/dist/features/chat/chat-prompt-input.d.ts +0 -24
  313. package/dist/features/chat/chat-prompt-input.d.ts.map +0 -1
  314. package/dist/features/chat/chat-prompt-input.js +0 -3
  315. package/dist/features/chat/chat.context.d.ts +0 -28
  316. package/dist/features/chat/chat.context.d.ts.map +0 -1
  317. package/dist/features/chat/chat.context.js +0 -10
  318. package/dist/features/chat/chat.context.js.map +0 -1
  319. package/dist/features/chat/queries/use-get-chat-query.d.ts +0 -13
  320. package/dist/features/chat/queries/use-get-chat-query.d.ts.map +0 -1
  321. package/dist/features/chat/queries/use-get-chat-query.js +0 -2
  322. package/dist/features/chat/queries/use-get-conversation-query.d.ts.map +0 -1
  323. package/dist/features/chat/queries/use-list-conversations-query.d.ts.map +0 -1
  324. package/dist/features/chat/store.d.ts +0 -15
  325. package/dist/features/chat/store.d.ts.map +0 -1
  326. package/dist/features/chat/store.js +0 -15
  327. package/dist/features/chat/store.js.map +0 -1
  328. package/dist/features/logger/logger.d.ts +0 -2
  329. package/dist/features/logger/logger.js +0 -15
  330. package/dist/features/logger/logger.js.map +0 -1
  331. package/dist/locale-W5Kyyi4X.d.ts.map +0 -1
  332. package/dist/logger-BvmhODdq.d.ts +0 -11
  333. package/dist/logger-BvmhODdq.d.ts.map +0 -1
  334. package/dist/store-CGX9oRlE.d.ts.map +0 -1
@@ -0,0 +1,383 @@
1
+ import { createElementContext } from "./features/element/element-provider.js";
2
+ import { useMergeElementConfig } from "./features/element/use-element-config.js";
3
+ import { LoggingProvider, useLogger } from "./features/logging/logger-provider.js";
4
+ import { chatQueryKeys } from "./features/chat/queries/query-keys.js";
5
+ import { getInitialMessagesFromStrings } from "./features/chat/utils.js";
6
+ import { useCreateChatStore } from "./features/chat/provider/use-create-chat-store.js";
7
+ import { useStore } from "zustand";
8
+ import { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
9
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
10
+ import { jsx } from "react/jsx-runtime";
11
+ import { getClient } from "@chatsdk-dev/api-client";
12
+ import { useChat } from "@ai-sdk/react";
13
+ import { createAgent, parseAppError } from "@chatsdk-dev/agent";
14
+ //#region src/features/data-fetching/use-api-client.ts
15
+ function useApiClient() {
16
+ const { api } = useElementConfig();
17
+ return getClient(api ?? {});
18
+ }
19
+ //#endregion
20
+ //#region src/features/chat/queries/use-get-conversation-query.ts
21
+ async function getConversation({ client, agentId, actorId, conversationId }) {
22
+ if (!conversationId) {
23
+ const { data: newConversation, error } = await client.agents.conversations.create({
24
+ path: { agentId },
25
+ body: { actorId }
26
+ });
27
+ if (error) throw new Error("error" in error ? error.error : "Failed to create conversation");
28
+ return newConversation;
29
+ }
30
+ const { data, error } = await client.agents.conversations.get({ path: {
31
+ agentId,
32
+ conversationId
33
+ } });
34
+ if (error) throw new Error("error" in error ? error.error : "Failed to fetch conversation");
35
+ return data;
36
+ }
37
+ function getConversationQueryConfig({ agentId, conversationId, client, actorId }) {
38
+ return {
39
+ queryKey: chatQueryKeys.conversation(agentId, conversationId),
40
+ queryFn: () => getConversation({
41
+ client,
42
+ agentId,
43
+ conversationId,
44
+ actorId
45
+ })
46
+ };
47
+ }
48
+ function useGetConversationQuery({ agentId, conversationId }) {
49
+ const client = useApiClient();
50
+ const { context } = useElementConfig();
51
+ return useQuery({
52
+ ...getConversationQueryConfig({
53
+ agentId,
54
+ conversationId,
55
+ client,
56
+ actorId: context?.actor?.id ?? ""
57
+ }),
58
+ enabled: !!agentId,
59
+ staleTime: 200
60
+ });
61
+ }
62
+ //#endregion
63
+ //#region src/features/chat/queries/use-record-feedback-mutation.ts
64
+ const recordFeedbackMutationKey = ["record-feedback"];
65
+ function useRecordFeedbackMutation({ agentId }) {
66
+ const client = useApiClient();
67
+ const queryClient = useQueryClient();
68
+ return useMutation({
69
+ mutationKey: recordFeedbackMutationKey,
70
+ mutationFn: async ({ conversationId, messageId, sentiment, reason }) => {
71
+ const { data, error } = await client.agents.conversations.recordFeedback({
72
+ path: {
73
+ agentId,
74
+ conversationId,
75
+ messageId
76
+ },
77
+ body: {
78
+ sentiment,
79
+ reason
80
+ }
81
+ });
82
+ if (error) throw new Error("error" in error ? error.error : "Failed to record feedback");
83
+ return data;
84
+ },
85
+ onMutate: async ({ conversationId, messageId, sentiment }) => {
86
+ const queryKey = chatQueryKeys.conversation(agentId, conversationId);
87
+ await queryClient.cancelQueries({ queryKey });
88
+ const previous = queryClient.getQueryData(queryKey);
89
+ queryClient.setQueryData(queryKey, (prev) => {
90
+ if (!prev) return prev;
91
+ const feedback = { ...prev.feedback };
92
+ if (feedback[messageId] === sentiment) delete feedback[messageId];
93
+ else feedback[messageId] = sentiment;
94
+ return {
95
+ ...prev,
96
+ feedback
97
+ };
98
+ });
99
+ return {
100
+ queryKey,
101
+ previous
102
+ };
103
+ },
104
+ onError: (_error, _vars, context) => {
105
+ if (context) queryClient.setQueryData(context.queryKey, context.previous);
106
+ },
107
+ onSettled: (_data, _error, _vars, context) => {
108
+ if (!context) return;
109
+ if (queryClient.isMutating({ mutationKey: recordFeedbackMutationKey }) === 1) queryClient.invalidateQueries({ queryKey: context.queryKey });
110
+ }
111
+ });
112
+ }
113
+ //#endregion
114
+ //#region src/features/chat/queries/use-get-agent-query.ts
115
+ function useGetAgentQuery({ agentId }) {
116
+ const client = useApiClient();
117
+ return useQuery({
118
+ queryKey: chatQueryKeys.get(agentId),
119
+ queryFn: async () => {
120
+ const { data, error } = await client.agents.get({ path: { agentId } });
121
+ if (error) throw new Error("error" in error ? error.error : "Failed to fetch agent");
122
+ return data;
123
+ },
124
+ enabled: !!agentId
125
+ });
126
+ }
127
+ //#endregion
128
+ //#region src/features/chat/provider/use-ai-sdk-chat.tsx
129
+ function useKeyedSession(key, create) {
130
+ const [state, setState] = useState(() => ({
131
+ key,
132
+ session: create()
133
+ }));
134
+ if (state.key !== key) {
135
+ const session = create();
136
+ setState({
137
+ key,
138
+ session
139
+ });
140
+ return session;
141
+ }
142
+ return state.session;
143
+ }
144
+ function useInitialMessages({ selectedConversationId }) {
145
+ const { agentId } = useElementComponent();
146
+ const { data } = useGetAgentQuery({ agentId });
147
+ const { data: conversation } = useGetConversationQuery({
148
+ agentId,
149
+ conversationId: selectedConversationId
150
+ });
151
+ const conversationMessages = useMemo(() => {
152
+ if (!selectedConversationId) return void 0;
153
+ return conversation?.messages ?? [];
154
+ }, [conversation, selectedConversationId]);
155
+ return useMemo(() => {
156
+ if (selectedConversationId) return conversationMessages ?? [];
157
+ return getInitialMessagesFromStrings(data?.agentSettingsSurface?.initialChatMessages ?? []);
158
+ }, [
159
+ selectedConversationId,
160
+ data?.agentSettingsSurface?.initialChatMessages,
161
+ conversationMessages
162
+ ]);
163
+ }
164
+ function useAiSdkChat({ selectedConversationId, conversationType }) {
165
+ const queryClient = useQueryClient();
166
+ const { config, component } = useElement();
167
+ const { agentId } = useElementComponent();
168
+ const logger = useLogger();
169
+ const initialMessages = useInitialMessages({ selectedConversationId });
170
+ const sessionKey = conversationType === "history" ? selectedConversationId : void 0;
171
+ const session = useKeyedSession(`${agentId}::${config.api?.baseUrl ?? ""}::${sessionKey ?? "new"}`, () => createAgent({
172
+ agentId,
173
+ tools: component.clientTools,
174
+ logger,
175
+ transport: {
176
+ ...config.api?.baseUrl ? { baseUrl: config.api.baseUrl } : {},
177
+ ...config.api?.headers ? { headers: config.api.headers } : {},
178
+ ...config.api?.credentials ? { credentials: config.api.credentials } : {},
179
+ ...config.api?.fetch ? { fetch: config.api.fetch } : {}
180
+ }
181
+ }).session({
182
+ conversationId: sessionKey,
183
+ actorId: config.context?.actor?.id ?? "",
184
+ messages: initialMessages
185
+ }));
186
+ const useChatResult = useChat({
187
+ chat: session,
188
+ resume: conversationType === "history" && Boolean(selectedConversationId)
189
+ });
190
+ const prevStatus = useRef(useChatResult.status);
191
+ useEffect(() => {
192
+ const settledThisRender = (prevStatus.current === "streaming" || prevStatus.current === "submitted") && useChatResult.status === "ready";
193
+ prevStatus.current = useChatResult.status;
194
+ if (!settledThisRender) return;
195
+ queryClient.invalidateQueries({ queryKey: chatQueryKeys.listConversations(agentId) });
196
+ const conversationId = session.conversationId ?? selectedConversationId;
197
+ if (conversationId) queryClient.invalidateQueries({ queryKey: chatQueryKeys.conversation(agentId, conversationId) });
198
+ }, [
199
+ useChatResult.status,
200
+ queryClient,
201
+ agentId,
202
+ session,
203
+ selectedConversationId
204
+ ]);
205
+ useEffect(() => {
206
+ if (useChatResult.status === "streaming" || useChatResult.status === "submitted") return;
207
+ if (conversationType === "history" || !selectedConversationId) useChatResult.setMessages(initialMessages);
208
+ }, [
209
+ conversationType,
210
+ selectedConversationId,
211
+ initialMessages
212
+ ]);
213
+ const resetChat = useCallback(() => {
214
+ session.reset(initialMessages);
215
+ }, [session, initialMessages]);
216
+ const appError = useMemo(() => useChatResult.error ? parseAppError(useChatResult.error) : void 0, [useChatResult.error]);
217
+ return {
218
+ ...useChatResult,
219
+ resetChat,
220
+ session,
221
+ appError
222
+ };
223
+ }
224
+ //#endregion
225
+ //#region src/features/chat/provider/provider.tsx
226
+ const defaultChatProps = {
227
+ agentId: "",
228
+ withAvatar: false,
229
+ withTools: false,
230
+ withReasoning: false,
231
+ persistConversation: false,
232
+ autoScrollWhileStreaming: false
233
+ };
234
+ const { ElementProvider, useElement, useElementConfig, useElementCallbacks, useElementComponent } = createElementContext({ name: "ChatSDK.Chat" });
235
+ const ChatStateContext = createContext(null);
236
+ /**
237
+ * Prepares the immutable chat state for the provider, to be used by the `useChat` hook.
238
+ * @param param0
239
+ *
240
+ * @returns
241
+ */
242
+ function useProvideChat({ store }) {
243
+ const queryClient = useQueryClient();
244
+ const conversationType = useStore(store, (s) => s.conversationType);
245
+ const setSelectedConversationId = useStore(store, (s) => s.setSelectedConversationId);
246
+ const selectedConversationId = useStore(store, (s) => s.selectedConversationId);
247
+ const { agentId } = useElementComponent();
248
+ const promptInputRef = useRef(null);
249
+ const { data: conversation } = useGetConversationQuery({
250
+ agentId,
251
+ conversationId: selectedConversationId
252
+ });
253
+ const { messages, sendMessage, status, stop, session, appError, regenerate, clearError, resetChat: resetChatMessages } = useAiSdkChat({
254
+ selectedConversationId,
255
+ conversationType
256
+ });
257
+ const sessionConversationId = session.conversationId;
258
+ useEffect(() => {
259
+ if (sessionConversationId && sessionConversationId !== selectedConversationId) {
260
+ setSelectedConversationId(sessionConversationId);
261
+ queryClient.invalidateQueries({ queryKey: chatQueryKeys.listConversations(agentId) });
262
+ }
263
+ }, [
264
+ sessionConversationId,
265
+ selectedConversationId,
266
+ setSelectedConversationId,
267
+ queryClient,
268
+ agentId
269
+ ]);
270
+ const retryLastMessage = useCallback(() => {
271
+ clearError();
272
+ regenerate();
273
+ }, [clearError, regenerate]);
274
+ const dismissError = useCallback(() => {
275
+ clearError();
276
+ }, [clearError]);
277
+ useEffect(() => {
278
+ promptInputRef.current?.focus();
279
+ }, [selectedConversationId]);
280
+ const handleSubmit = useCallback((message) => {
281
+ sendMessage({ text: message.text });
282
+ }, [sendMessage]);
283
+ const respondToToolApproval = useCallback((params) => {
284
+ session.addToolApprovalResponse({
285
+ id: params.approvalId,
286
+ approved: params.approved,
287
+ reason: params.reason
288
+ });
289
+ }, [session]);
290
+ const { mutate: recordFeedback } = useRecordFeedbackMutation({ agentId });
291
+ return {
292
+ agentId,
293
+ messages,
294
+ handleSubmit,
295
+ sendMessage,
296
+ respondToToolApproval,
297
+ recordMessageFeedback: useCallback((params) => {
298
+ const conversationId = session.conversationId ?? selectedConversationId;
299
+ if (!conversationId) return;
300
+ recordFeedback({
301
+ conversationId,
302
+ ...params
303
+ });
304
+ }, [
305
+ recordFeedback,
306
+ session,
307
+ selectedConversationId
308
+ ]),
309
+ toolTitles: conversation?.toolTitles,
310
+ conversation,
311
+ status,
312
+ stop,
313
+ appError,
314
+ retryLastMessage,
315
+ dismissError,
316
+ resetChat: resetChatMessages,
317
+ promptInputRef
318
+ };
319
+ }
320
+ function useChat$1() {
321
+ const v = use(ChatStateContext);
322
+ if (!v) throw new Error("useChat must be used within a Chat.Provider");
323
+ return v;
324
+ }
325
+ /**
326
+ * Allows access to a mutable global chat state via zustand store
327
+ *
328
+ * @example
329
+ * const { tab, setTab } = useChatStore((s) => s.tab);
330
+ *
331
+ * @param selector - A function that returns a subset of the chat state.
332
+ * @returns The selected subset of the chat state.
333
+ */
334
+ function useChatStore(selector) {
335
+ const chat = use(ChatStateContext);
336
+ if (!chat) throw new Error("useChatStore must be used within a Chat.Provider");
337
+ return useStore(chat.store, selector);
338
+ }
339
+ function ChatStateProvider({ children }) {
340
+ const { agentId, persistConversation = true } = useElementComponent();
341
+ const store = useCreateChatStore(agentId, persistConversation);
342
+ const chatState = useProvideChat({ store });
343
+ useEffect(() => {
344
+ store.persist.rehydrate();
345
+ }, [store]);
346
+ return /* @__PURE__ */ jsx(ChatStateContext.Provider, {
347
+ value: {
348
+ ...chatState,
349
+ store
350
+ },
351
+ children
352
+ });
353
+ }
354
+ function Provider({ children, ...rest }) {
355
+ const { config, callbacks, ...componentProps } = useMergeElementConfig({
356
+ props: {
357
+ ...rest,
358
+ defaultProps: defaultChatProps
359
+ },
360
+ name: "ChatSDK.Chat"
361
+ });
362
+ if (!componentProps.agentId) {
363
+ config.logger.error({
364
+ event: "missing_agent_id",
365
+ element: "ChatSDK.Chat",
366
+ message: "Missing Agent Id"
367
+ });
368
+ return null;
369
+ }
370
+ return /* @__PURE__ */ jsx(LoggingProvider, {
371
+ logger: config.logger,
372
+ children: /* @__PURE__ */ jsx(ElementProvider, {
373
+ config,
374
+ component: componentProps,
375
+ callbacks,
376
+ children: /* @__PURE__ */ jsx(ChatStateProvider, { children }, componentProps.agentId)
377
+ })
378
+ });
379
+ }
380
+ //#endregion
381
+ export { useApiClient as _, useChatStore as a, useElementComponent as c, useInitialMessages as d, useGetAgentQuery as f, useGetConversationQuery as g, getConversationQueryConfig as h, useChat$1 as i, useElementConfig as l, useRecordFeedbackMutation as m, Provider as n, useElement as o, recordFeedbackMutationKey as p, defaultChatProps as r, useElementCallbacks as s, ElementProvider as t, useAiSdkChat as u };
382
+
383
+ //# sourceMappingURL=provider-Cps0PPXa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-Cps0PPXa.js","names":["useAiChat","useChat"],"sources":["../src/features/data-fetching/use-api-client.ts","../src/features/chat/queries/use-get-conversation-query.ts","../src/features/chat/queries/use-record-feedback-mutation.ts","../src/features/chat/queries/use-get-agent-query.ts","../src/features/chat/provider/use-ai-sdk-chat.tsx","../src/features/chat/provider/provider.tsx"],"sourcesContent":["import { getClient } from \"@chatsdk-dev/api-client\";\n\nimport { useElementConfig } from \"../chat/provider/provider\";\n\nexport function useApiClient() {\n const { api } = useElementConfig();\n return getClient(api ?? {});\n}\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { ChatSDK } from \"@chatsdk-dev/api-client\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { useElementConfig } from \"../provider/provider\";\nimport { chatQueryKeys } from \"./query-keys\";\n\ninterface GetConversationParams {\n client: ChatSDK;\n agentId: string;\n actorId: string;\n conversationId?: string;\n}\n\nasync function getConversation({\n client,\n agentId,\n actorId,\n conversationId,\n}: GetConversationParams) {\n // create conversation if no conversation id is provided (conversation doesn't exist yet)\n if (!conversationId) {\n const { data: newConversation, error } =\n await client.agents.conversations.create({\n path: { agentId: agentId! },\n body: { actorId },\n });\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to create conversation\",\n );\n }\n return newConversation;\n }\n\n const { data, error } = await client.agents.conversations.get({\n path: { agentId, conversationId },\n });\n\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to fetch conversation\",\n );\n }\n\n return data;\n}\n\ninterface GetConversationQueryConfigParams {\n agentId: string;\n conversationId?: string;\n actorId: string;\n client: ChatSDK;\n}\n\nexport function getConversationQueryConfig({\n agentId,\n conversationId,\n client,\n actorId,\n}: GetConversationQueryConfigParams) {\n return {\n queryKey: chatQueryKeys.conversation(agentId, conversationId),\n queryFn: () =>\n getConversation({ client, agentId, conversationId, actorId }),\n };\n}\n\ninterface UseGetConversationQueryProps {\n agentId?: string;\n conversationId?: string | null;\n}\n\nexport function useGetConversationQuery({\n agentId,\n conversationId,\n}: UseGetConversationQueryProps) {\n const client = useApiClient();\n const { context } = useElementConfig();\n\n return useQuery({\n ...getConversationQueryConfig({\n agentId: agentId!,\n conversationId: conversationId!,\n client,\n actorId: context?.actor?.id ?? \"\",\n }),\n enabled: !!agentId,\n staleTime: 200,\n });\n}\n","import { useMutation, useQueryClient } from \"@tanstack/react-query\";\n\nimport type { AgentsConversationsGetResponse } from \"@chatsdk-dev/api-client\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { chatQueryKeys } from \"./query-keys\";\n\n// Shared key so the settle handler can count in-flight feedback mutations and\n// only refetch once the last one resolves.\nexport const recordFeedbackMutationKey = [\"record-feedback\"];\n\ninterface UseRecordFeedbackMutationProps {\n agentId?: string;\n}\n\ninterface RecordFeedbackParams {\n conversationId: string;\n messageId: string;\n sentiment: \"positive\" | \"negative\";\n reason?: string;\n}\n\ninterface FeedbackContext {\n queryKey: ReturnType<typeof chatQueryKeys.conversation>;\n previous: AgentsConversationsGetResponse | undefined;\n}\n\nexport function useRecordFeedbackMutation({\n agentId,\n}: UseRecordFeedbackMutationProps) {\n const client = useApiClient();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: recordFeedbackMutationKey,\n mutationFn: async ({\n conversationId,\n messageId,\n sentiment,\n reason,\n }: RecordFeedbackParams) => {\n const { data, error } = await client.agents.conversations.recordFeedback({\n path: { agentId: agentId!, conversationId, messageId },\n body: { sentiment, reason },\n });\n\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to record feedback\",\n );\n }\n\n return data;\n },\n // Optimistically toggle the feedback map on the conversation cache (the\n // server-seeded source of truth). Cancel in-flight refetches first so a\n // settling sibling click can't clobber it; snapshot for rollback.\n onMutate: async ({\n conversationId,\n messageId,\n sentiment,\n }): Promise<FeedbackContext> => {\n const queryKey = chatQueryKeys.conversation(agentId, conversationId);\n await queryClient.cancelQueries({ queryKey });\n const previous =\n queryClient.getQueryData<AgentsConversationsGetResponse>(queryKey);\n\n queryClient.setQueryData<AgentsConversationsGetResponse>(\n queryKey,\n (prev) => {\n if (!prev) return prev;\n const feedback = { ...prev.feedback };\n if (feedback[messageId] === sentiment) {\n delete feedback[messageId];\n } else {\n feedback[messageId] = sentiment;\n }\n return { ...prev, feedback };\n },\n );\n\n return { queryKey, previous };\n },\n onError: (_error, _vars, context) => {\n if (context) {\n queryClient.setQueryData(context.queryKey, context.previous);\n }\n },\n // Only the last in-flight feedback mutation refetches — otherwise an earlier\n // click's refetch snaps the UI back to stale server state.\n onSettled: (_data, _error, _vars, context) => {\n if (!context) return;\n if (\n queryClient.isMutating({ mutationKey: recordFeedbackMutationKey }) === 1\n ) {\n queryClient.invalidateQueries({ queryKey: context.queryKey });\n }\n },\n });\n}\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { chatQueryKeys } from \"./query-keys\";\n\ninterface UseGetAgentQueryProps {\n agentId?: string;\n}\n\nexport function useGetAgentQuery({ agentId }: UseGetAgentQueryProps) {\n const client = useApiClient();\n\n return useQuery({\n queryKey: chatQueryKeys.get(agentId),\n queryFn: async () => {\n const { data, error } = await client.agents.get({\n path: { agentId: agentId! },\n });\n\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to fetch agent\",\n );\n }\n\n return data;\n },\n enabled: !!agentId,\n });\n}\n","\"use client\";\n\nimport {\n useChat as useAiChat,\n type Chat,\n type UseChatHelpers,\n} from \"@ai-sdk/react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n createAgent,\n parseAppError,\n type AppError,\n type ConversationMessage,\n type Session,\n} from \"@chatsdk-dev/agent\";\n\nimport { useLogger } from \"../../logging/logger-provider\";\nimport { useElement, useElementComponent } from \"../provider/provider\";\nimport { chatQueryKeys } from \"../queries/query-keys\";\nimport { useGetAgentQuery } from \"../queries/use-get-agent-query\";\nimport { useGetConversationQuery } from \"../queries/use-get-conversation-query\";\nimport { getInitialMessagesFromStrings } from \"../utils\";\n\n// Session held in keyed state, not useMemo: memo identity is a hint React may\n// drop, and a session recreated mid-stream abandons the live turn. A hook\n// can't use a `key` prop, so the reset-on-key-change lives here.\nfunction useKeyedSession(key: string, create: () => Session): Session {\n const [state, setState] = useState(() => ({ key, session: create() }));\n if (state.key !== key) {\n const session = create();\n setState({ key, session });\n return session;\n }\n return state.session;\n}\n\ninterface UseInitialMessagesProps {\n selectedConversationId?: string;\n}\n\nexport function useInitialMessages({\n selectedConversationId,\n}: UseInitialMessagesProps) {\n const { agentId } = useElementComponent();\n const { data } = useGetAgentQuery({ agentId });\n const { data: conversation } = useGetConversationQuery({\n agentId,\n conversationId: selectedConversationId,\n });\n\n const conversationMessages = useMemo(() => {\n if (!selectedConversationId) return undefined;\n\n const conversationMessages: ConversationMessage[] =\n conversation?.messages ?? [];\n\n return conversationMessages;\n }, [conversation, selectedConversationId]);\n\n const initialMessages = useMemo(() => {\n // The backend saves the greeting into the conversation when it's created.\n // So for a saved conversation, its messages already include the greeting;\n // only a brand-new chat builds greeting messages from the config.\n if (selectedConversationId) return conversationMessages ?? [];\n\n return getInitialMessagesFromStrings(\n data?.agentSettingsSurface?.initialChatMessages ?? [],\n );\n }, [\n selectedConversationId,\n data?.agentSettingsSurface?.initialChatMessages,\n conversationMessages,\n ]);\n\n return initialMessages;\n}\n\ninterface UseAiSdkChatProps {\n selectedConversationId?: string;\n conversationType: \"new\" | \"history\";\n}\n\ntype UseAiSdkChatResult = UseChatHelpers<ConversationMessage> & {\n resetChat: () => void;\n /** The bound agent session (the chat instance behind useChat). */\n session: Session;\n /** Stream error reconstructed as a typed `AppError` (undefined when none). */\n appError?: AppError;\n};\n\nexport function useAiSdkChat({\n selectedConversationId,\n conversationType,\n}: UseAiSdkChatProps): UseAiSdkChatResult {\n const queryClient = useQueryClient();\n const { config, component } = useElement();\n const { agentId } = useElementComponent();\n const logger = useLogger();\n\n const initialMessages = useInitialMessages({ selectedConversationId });\n\n // The headless @chatsdk-dev/agent client owns the transport AND the whole\n // client-tool loop (onToolCall → addToolOutput → auto-resubmit, resume,\n // lazy conversation creation). We just bind its session to useChat — the\n // session IS the chat (subclasses AbstractChat), so all of that lives in one\n // place instead of being re-implemented here. The host's `clientTools` are\n // passed straight through (executed in the browser, sent as declarations).\n //\n // History keys by id; a new chat is one stable \"new\"-keyed session that\n // resetChat() clears.\n const sessionKey =\n conversationType === \"history\" ? selectedConversationId : undefined;\n const session = useKeyedSession(\n `${agentId}::${config.api?.baseUrl ?? \"\"}::${sessionKey ?? \"new\"}`,\n () =>\n createAgent({\n agentId,\n tools: component.clientTools,\n logger,\n transport: {\n ...(config.api?.baseUrl ? { baseUrl: config.api.baseUrl } : {}),\n ...(config.api?.headers ? { headers: config.api.headers } : {}),\n ...(config.api?.credentials\n ? { credentials: config.api.credentials }\n : {}),\n ...(config.api?.fetch ? { fetch: config.api.fetch } : {}),\n },\n }).session({\n conversationId: sessionKey,\n actorId: config.context?.actor?.id ?? \"\",\n messages: initialMessages,\n }),\n );\n\n const useChatResult = useAiChat<ConversationMessage>({\n // The session IS the chat. One nominal cast: @ai-sdk/react types `chat` as\n // its own concrete `Chat` subclass (private field), so a foreign\n // AbstractChat subclass isn't structurally assignable.\n chat: session as unknown as Chat<ConversationMessage>,\n // Resume an in-flight stream only when reopening history; a new chat's POST\n // stream is already live, so there is nothing to reconnect to. Backend\n // returns 204 when there's nothing to resume, which AI SDK treats as a no-op.\n resume: conversationType === \"history\" && Boolean(selectedConversationId),\n });\n\n // Replaces useChat's `onFinish`: invalidate the conversation + list on the\n // streaming→ready edge (useChat re-renders on every status change). Reads the\n // session's own conversationId so a just-minted new chat invalidates correctly.\n const prevStatus = useRef(useChatResult.status);\n useEffect(() => {\n const settledThisRender =\n (prevStatus.current === \"streaming\" ||\n prevStatus.current === \"submitted\") &&\n useChatResult.status === \"ready\";\n prevStatus.current = useChatResult.status;\n if (!settledThisRender) return;\n\n queryClient.invalidateQueries({\n queryKey: chatQueryKeys.listConversations(agentId),\n });\n const conversationId = session.conversationId ?? selectedConversationId;\n if (conversationId) {\n queryClient.invalidateQueries({\n queryKey: chatQueryKeys.conversation(agentId, conversationId),\n });\n }\n }, [\n useChatResult.status,\n queryClient,\n agentId,\n session,\n selectedConversationId,\n ]);\n\n // Re-seed messages when the initial set loads late (history) or on reset to a\n // new chat — but never mid-stream. The session is seeded at creation too;\n // this catches the async-loaded history case without recreating it.\n useEffect(() => {\n const streaming =\n useChatResult.status === \"streaming\" ||\n useChatResult.status === \"submitted\";\n if (streaming) return;\n if (conversationType === \"history\" || !selectedConversationId) {\n useChatResult.setMessages(initialMessages);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [conversationType, selectedConversationId, initialMessages]);\n\n // Start a fresh conversation on the same session instance.\n const resetChat = useCallback(() => {\n session.reset(initialMessages);\n }, [session, initialMessages]);\n\n // The backend JSON-encodes the AppError envelope into the stream error text;\n // parseAppError reconstructs the typed instance (public fields only).\n const appError = useMemo(\n () =>\n useChatResult.error ? parseAppError(useChatResult.error) : undefined,\n [useChatResult.error],\n );\n\n return { ...useChatResult, resetChat, session, appError };\n}\n","\"use client\";\n\nimport type { UseChatHelpers } from \"@ai-sdk/react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport React, {\n createContext,\n use,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { StoreApi, useStore } from \"zustand\";\n\nimport type { AppError } from \"@chatsdk-dev/agent\";\nimport {\n type ClientTool,\n type ConversationMessage,\n} from \"@chatsdk-dev/api-client\";\nimport type { PromptInputMessage } from \"@chatsdk-dev/ui/molecules/ai/prompt-input\";\n\nimport { createElementContext } from \"../../element/element-provider\";\nimport type { ElementConfig } from \"../../element/types/config\";\nimport { useMergeElementConfig } from \"../../element/use-element-config\";\nimport { LoggingProvider } from \"../../logging/logger-provider\";\nimport { chatQueryKeys } from \"../queries/query-keys\";\nimport { useGetConversationQuery } from \"../queries/use-get-conversation-query\";\nimport { useRecordFeedbackMutation } from \"../queries/use-record-feedback-mutation\";\nimport { useAiSdkChat } from \"./use-ai-sdk-chat\";\nimport { useCreateChatStore, type ChatStore } from \"./use-create-chat-store\";\n\n// A client-side tool the host app declares so the agent can request its\n// execution. Declaration shape (description / inputSchema / outputSchema) is\n// pulled from api-client codegen — single source of truth with the backend\n// Zod schema. The SDK adds `execute` and drops `name`: in the SDK record the\n// name is the key (e.g. `clientTools: { searchWiki: { description, … } }`);\n// `use-ai-sdk-chat` lifts it back into the wire payload on send.\nexport type ClientToolDefinition<TInput = unknown, TOutput = unknown> = Omit<\n ClientTool,\n \"name\"\n> & {\n execute: (input: TInput) => TOutput | Promise<TOutput>;\n};\n\nexport type ChatProps = {\n agentId: string;\n withTools?: boolean;\n withAvatar?: boolean;\n withReasoning?: boolean;\n clientTools?: Record<string, ClientToolDefinition>;\n // Persist the active conversation so a reload reopens it (default true).\n persistConversation?: boolean;\n // Follow the live edge while the assistant streams (chases new tokens). Off by\n // default: streaming text is faster than reading, so the view stays put.\n autoScrollWhileStreaming?: boolean;\n};\nexport type ChatData = { agentId: string };\nexport type ChatElementProps = ElementConfig<ChatProps, ChatData>;\n\nexport const defaultChatProps: ChatProps = {\n agentId: \"\",\n withAvatar: false,\n withTools: false,\n withReasoning: false,\n persistConversation: false,\n autoScrollWhileStreaming: false,\n};\n\nexport const {\n ElementProvider,\n useElement,\n useElementConfig,\n useElementCallbacks,\n useElementComponent,\n} = createElementContext<ChatProps, ChatData>({\n name: \"ChatSDK.Chat\",\n});\n\ninterface ChatStateValue {\n agentId: string;\n messages: ConversationMessage[];\n status: UseChatHelpers<ConversationMessage>[\"status\"];\n sendMessage: UseChatHelpers<ConversationMessage>[\"sendMessage\"];\n stop: UseChatHelpers<ConversationMessage>[\"stop\"];\n respondToToolApproval: (params: {\n approvalId: string;\n approved: boolean;\n reason?: string;\n }) => void;\n /** Record thumbs up/down; re-sending the active sentiment clears it. */\n recordMessageFeedback: (params: {\n messageId: string;\n sentiment: \"positive\" | \"negative\";\n }) => void;\n /** Active conversation (messages, feedback map, toolTitles); undefined for a\n * brand-new chat before its first send. */\n conversation: ReturnType<typeof useGetConversationQuery>[\"data\"];\n toolTitles: Record<string, string> | undefined;\n /** Stream/transport error as a typed `AppError` (undefined when none). */\n appError?: AppError;\n /** Re-run the last turn after a failure (clears the error first). */\n retryLastMessage: () => void;\n /** Clear the current error without retrying. */\n dismissError: () => void;\n promptInputRef: React.RefObject<HTMLTextAreaElement | null>;\n handleSubmit: (\n message: PromptInputMessage,\n event: React.SubmitEvent<HTMLFormElement>,\n ) => void;\n resetChat: () => void;\n store: StoreApi<ChatStore>;\n}\n\nconst ChatStateContext = createContext<ChatStateValue | null>(null);\n\n/**\n * Prepares the immutable chat state for the provider, to be used by the `useChat` hook.\n * @param param0\n *\n * @returns\n */\nfunction useProvideChat({ store }: UseProvideChatProps) {\n const queryClient = useQueryClient();\n const conversationType = useStore(store, (s) => s.conversationType);\n const setSelectedConversationId = useStore(\n store,\n (s) => s.setSelectedConversationId,\n );\n const selectedConversationId = useStore(\n store,\n (s) => s.selectedConversationId,\n );\n const { agentId } = useElementComponent();\n\n const promptInputRef = useRef<HTMLTextAreaElement>(null);\n const { data: conversation } = useGetConversationQuery({\n agentId,\n conversationId: selectedConversationId,\n });\n const {\n messages,\n sendMessage,\n status,\n stop,\n session,\n appError,\n regenerate,\n clearError,\n resetChat: resetChatMessages,\n } = useAiSdkChat({\n selectedConversationId,\n conversationType,\n });\n\n // The session mints its conversation lazily on the first send. Reflect that\n // id back into the store (so history/URL follow) and refresh the list. The\n // session keys on a stable view, so this does NOT recreate it mid-stream.\n const sessionConversationId = session.conversationId;\n useEffect(() => {\n if (\n sessionConversationId &&\n sessionConversationId !== selectedConversationId\n ) {\n setSelectedConversationId(sessionConversationId);\n queryClient.invalidateQueries({\n queryKey: chatQueryKeys.listConversations(agentId),\n });\n }\n }, [\n sessionConversationId,\n selectedConversationId,\n setSelectedConversationId,\n queryClient,\n agentId,\n ]);\n // Retry re-runs the last turn (the optimistic user message survives the\n // failure); clear the error first so the banner hides while it reconnects.\n const retryLastMessage = useCallback(() => {\n clearError();\n void regenerate();\n }, [clearError, regenerate]);\n const dismissError = useCallback(() => {\n clearError();\n }, [clearError]);\n\n useEffect(() => {\n promptInputRef.current?.focus();\n }, [selectedConversationId]);\n\n const handleSubmit = useCallback(\n (message: PromptInputMessage) => {\n // The session owns its conversation — it's minted lazily on this first\n // send and reflected back into the store by the effect above.\n sendMessage({ text: message.text });\n },\n [sendMessage],\n );\n\n // Adapt the UI's `{ approvalId }` shape to the session's native\n // `addToolApprovalResponse({ id })`.\n const respondToToolApproval = useCallback(\n (params: { approvalId: string; approved: boolean; reason?: string }) => {\n void session.addToolApprovalResponse({\n id: params.approvalId,\n approved: params.approved,\n reason: params.reason,\n });\n },\n [session],\n );\n\n // Thumbs up/down. The optimistic update, rollback, and reconcile live in the\n // mutation hook; here we only resolve which conversation to target.\n const { mutate: recordFeedback } = useRecordFeedbackMutation({ agentId });\n const recordMessageFeedback = useCallback(\n (params: { messageId: string; sentiment: \"positive\" | \"negative\" }) => {\n const conversationId = session.conversationId ?? selectedConversationId;\n if (!conversationId) return;\n recordFeedback({ conversationId, ...params });\n },\n [recordFeedback, session, selectedConversationId],\n );\n\n return {\n agentId,\n messages,\n handleSubmit,\n sendMessage,\n respondToToolApproval,\n recordMessageFeedback,\n toolTitles: conversation?.toolTitles,\n conversation,\n status,\n stop,\n appError,\n retryLastMessage,\n dismissError,\n resetChat: resetChatMessages,\n promptInputRef,\n };\n}\n\n// contains immutable global chat state\nexport function useChat() {\n const v = use(ChatStateContext);\n if (!v) {\n throw new Error(\"useChat must be used within a Chat.Provider\");\n }\n return v;\n}\n\ninterface UseProvideChatProps {\n store: ReturnType<typeof useCreateChatStore>;\n}\n\n/**\n * Allows access to a mutable global chat state via zustand store\n *\n * @example\n * const { tab, setTab } = useChatStore((s) => s.tab);\n *\n * @param selector - A function that returns a subset of the chat state.\n * @returns The selected subset of the chat state.\n */\nexport function useChatStore<T>(selector: (state: ChatStore) => T) {\n const chat = use(ChatStateContext);\n if (!chat) {\n throw new Error(\"useChatStore must be used within a Chat.Provider\");\n }\n return useStore<StoreApi<ChatStore>, T>(chat.store, selector);\n}\n\nfunction ChatStateProvider({ children }: { children: React.ReactNode }) {\n const { agentId, persistConversation = true } = useElementComponent();\n const store = useCreateChatStore(agentId, persistConversation);\n const chatState = useProvideChat({ store });\n\n // WARN: effect — zustand persist (skipHydration) must rehydrate post-mount so\n // SSR markup stays stable; no render-time equivalent. Keyed per agentId, so a\n // chat switch remounts and rehydrates that chat's last conversation.\n useEffect(() => {\n void store.persist.rehydrate();\n }, [store]);\n\n return (\n <ChatStateContext.Provider value={{ ...chatState, store }}>\n {children}\n </ChatStateContext.Provider>\n );\n}\n\ninterface ChatProviderProps extends ChatElementProps {\n children: React.ReactNode;\n}\n\nexport function Provider({ children, ...rest }: ChatProviderProps) {\n const { config, callbacks, ...componentProps } = useMergeElementConfig({\n props: { ...rest, defaultProps: defaultChatProps },\n name: \"ChatSDK.Chat\",\n });\n\n if (!componentProps.agentId) {\n config.logger.error({\n event: \"missing_agent_id\",\n element: \"ChatSDK.Chat\",\n message: \"Missing Agent Id\",\n });\n return null;\n }\n\n return (\n <LoggingProvider logger={config.logger}>\n <ElementProvider\n config={config}\n component={componentProps}\n callbacks={callbacks}\n >\n {/* Keyed on agentId: a chat switch remounts, resetting all per-chat state\n (store identity, refs, pin) and rehydrating that chat's persistence. */}\n <ChatStateProvider key={componentProps.agentId}>\n {children}\n </ChatStateProvider>\n </ElementProvider>\n </LoggingProvider>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ //#region src/features/chat/conversation/message/reasoning.d.ts
2
+ declare function MessageReasoning(): import("react").JSX.Element | null;
3
+ //#endregion
4
+ export { MessageReasoning as t };
5
+ //# sourceMappingURL=reasoning-BRNu_n6T.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-BRNu_n6T.d.ts","names":[],"sources":["../src/features/chat/conversation/message/reasoning.tsx"],"mappings":";iBAYgB,gBAAA,oBAAgB,GAAA,CAAA,OAAA"}
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
@@ -0,0 +1,5 @@
1
+ //#region src/features/chat/conversation/message/sources.d.ts
2
+ declare function MessageSources(): false | import("react").JSX.Element;
3
+ //#endregion
4
+ export { MessageSources as t };
5
+ //# sourceMappingURL=sources-BXoSxNYc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources-BXoSxNYc.d.ts","names":[],"sources":["../src/features/chat/conversation/message/sources.tsx"],"mappings":";iBAMgB,cAAA,4BAAc,GAAA,CAAA,OAAA"}
@@ -1,6 +1,4 @@
1
- import { r as RootConfig } from "./config-CqihvSgz.js";
2
- import * as zustand from "zustand";
3
- import * as zustand_middleware0 from "zustand/middleware";
1
+ import { r as RootConfig } from "./config-BGIY5Hkg.js";
4
2
 
5
3
  //#region src/features/element/store.d.ts
6
4
  interface ChatSDKStore extends RootConfig {
@@ -15,32 +13,32 @@ interface ChatSDKStore extends RootConfig {
15
13
  reset: (config?: Partial<RootConfig>) => void;
16
14
  }
17
15
  declare const defaultInitialState: Omit<ChatSDKStore, "setContext" | "setTheme" | "setApi" | "setLocale" | "setOptions" | "setLogger" | "setConfig" | "reset">;
18
- declare const createChatSDKStore: (customInitialState?: Partial<typeof defaultInitialState>) => zustand.UseBoundStore<Omit<zustand.StoreApi<ChatSDKStore>, "setState" | "persist"> & {
16
+ declare const createChatSDKStore: (customInitialState?: Partial<typeof defaultInitialState>) => import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ChatSDKStore>, "setState" | "persist"> & {
19
17
  setState(partial: ChatSDKStore | Partial<ChatSDKStore> | ((state: ChatSDKStore) => ChatSDKStore | Partial<ChatSDKStore>), replace?: false | undefined): unknown;
20
18
  setState(state: ChatSDKStore | ((state: ChatSDKStore) => ChatSDKStore), replace: true): unknown;
21
19
  persist: {
22
- setOptions: (options: Partial<zustand_middleware0.PersistOptions<ChatSDKStore, unknown, unknown>>) => void;
20
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<ChatSDKStore, unknown, unknown>>) => void;
23
21
  clearStorage: () => void;
24
22
  rehydrate: () => Promise<void> | void;
25
23
  hasHydrated: () => boolean;
26
24
  onHydrate: (fn: (state: ChatSDKStore) => void) => () => void;
27
25
  onFinishHydration: (fn: (state: ChatSDKStore) => void) => () => void;
28
- getOptions: () => Partial<zustand_middleware0.PersistOptions<ChatSDKStore, unknown, unknown>>;
26
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<ChatSDKStore, unknown, unknown>>;
29
27
  };
30
28
  }>;
31
- declare const useChatSDKStore: zustand.UseBoundStore<Omit<zustand.StoreApi<ChatSDKStore>, "setState" | "persist"> & {
29
+ declare const useChatSDKStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ChatSDKStore>, "setState" | "persist"> & {
32
30
  setState(partial: ChatSDKStore | Partial<ChatSDKStore> | ((state: ChatSDKStore) => ChatSDKStore | Partial<ChatSDKStore>), replace?: false | undefined): unknown;
33
31
  setState(state: ChatSDKStore | ((state: ChatSDKStore) => ChatSDKStore), replace: true): unknown;
34
32
  persist: {
35
- setOptions: (options: Partial<zustand_middleware0.PersistOptions<ChatSDKStore, unknown, unknown>>) => void;
33
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<ChatSDKStore, unknown, unknown>>) => void;
36
34
  clearStorage: () => void;
37
35
  rehydrate: () => Promise<void> | void;
38
36
  hasHydrated: () => boolean;
39
37
  onHydrate: (fn: (state: ChatSDKStore) => void) => () => void;
40
38
  onFinishHydration: (fn: (state: ChatSDKStore) => void) => () => void;
41
- getOptions: () => Partial<zustand_middleware0.PersistOptions<ChatSDKStore, unknown, unknown>>;
39
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<ChatSDKStore, unknown, unknown>>;
42
40
  };
43
41
  }>;
44
42
  //#endregion
45
43
  export { createChatSDKStore as n, useChatSDKStore as r, ChatSDKStore as t };
46
- //# sourceMappingURL=store-CGX9oRlE.d.ts.map
44
+ //# sourceMappingURL=store-CkswgmIQ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-CkswgmIQ.d.ts","names":[],"sources":["../src/features/element/store.ts"],"mappings":";;;UAOiB,YAAA,SAAqB,UAAA;EACpC,UAAA,GAAa,OAAA,EAAS,UAAA;EACtB,QAAA,GAAW,KAAA,EAAO,UAAA;EAClB,MAAA,GAAS,GAAA,EAAK,UAAA;EACd,SAAA,GAAY,MAAA,EAAQ,UAAA;EACpB,eAAA,IAAmB,YAAA,EAAc,UAAA;EACjC,UAAA,GAAa,OAAA,EAAS,UAAA;EACtB,SAAA,GAAY,MAAA,EAAQ,UAAA;EAEpB,SAAA,GAAY,MAAA,EAAQ,OAAA,CAAQ,UAAA,GAAa,KAAA;EACzC,KAAA,GAAQ,MAAA,GAAS,OAAA,CAAQ,UAAA;AAAA;AAAA,cAGrB,mBAAA,EAAqB,IAAI,CAC7B,YAAA;AAAA,cAoBW,kBAAA,GACX,kBAAA,GAAqB,OAAA,QAAe,mBAAA,wBAAoB,aAAA,CAAA,IAAA,mBAAA,QAAA,CAAA,YAAA;;;;;;;;;;;;;cA0E7C,eAAA,oBAAe,aAAA,CAAA,IAAA,mBAAA,QAAA,CAAA,YAAA"}