@copilotkit/react-core 1.10.7-next.0 → 1.50.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/CHANGELOG.md +0 -7
  2. package/dist/chunk-24SCZAB4.mjs +143 -0
  3. package/dist/chunk-24SCZAB4.mjs.map +1 -0
  4. package/dist/chunk-36KQV2NA.mjs +1 -0
  5. package/dist/{chunk-U7QULEVO.mjs → chunk-3GURHDG7.mjs} +3 -3
  6. package/dist/{chunk-OAGAFMUM.mjs → chunk-3R423LZT.mjs} +6 -5
  7. package/dist/{chunk-OAGAFMUM.mjs.map → chunk-3R423LZT.mjs.map} +1 -1
  8. package/dist/chunk-5X5DJRQQ.mjs +71 -0
  9. package/dist/chunk-5X5DJRQQ.mjs.map +1 -0
  10. package/dist/{chunk-N4WEHORG.mjs → chunk-6PUNP7CD.mjs} +4 -4
  11. package/dist/chunk-6PUNP7CD.mjs.map +1 -0
  12. package/dist/chunk-7BYHZLPL.mjs +32 -0
  13. package/dist/chunk-7BYHZLPL.mjs.map +1 -0
  14. package/dist/chunk-7DTB7S5V.mjs +83 -0
  15. package/dist/chunk-7DTB7S5V.mjs.map +1 -0
  16. package/dist/chunk-A6NKSGH3.mjs +1 -0
  17. package/dist/{chunk-GT5WI3AF.mjs → chunk-BR5YEYZJ.mjs} +7 -9
  18. package/dist/chunk-BR5YEYZJ.mjs.map +1 -0
  19. package/dist/chunk-CB7CRBDG.mjs +48 -0
  20. package/dist/chunk-CB7CRBDG.mjs.map +1 -0
  21. package/dist/chunk-CYDWEPFL.mjs +1 -0
  22. package/dist/{chunk-BBUQMG45.mjs → chunk-D3QSYDJR.mjs} +3 -3
  23. package/dist/{chunk-BBUQMG45.mjs.map → chunk-D3QSYDJR.mjs.map} +1 -1
  24. package/dist/chunk-DCHSCK62.mjs +549 -0
  25. package/dist/chunk-DCHSCK62.mjs.map +1 -0
  26. package/dist/{chunk-ZLQVRPDS.mjs → chunk-DMLQZG75.mjs} +1 -1
  27. package/dist/chunk-DMLQZG75.mjs.map +1 -0
  28. package/dist/chunk-F555TVE4.mjs +33 -0
  29. package/dist/chunk-F555TVE4.mjs.map +1 -0
  30. package/dist/{chunk-C6IANC2R.mjs → chunk-FBD24VEH.mjs} +7 -43
  31. package/dist/chunk-FBD24VEH.mjs.map +1 -0
  32. package/dist/chunk-FD6FGKYY.mjs +1 -0
  33. package/dist/chunk-FDOMAPJY.mjs +59 -0
  34. package/dist/chunk-FDOMAPJY.mjs.map +1 -0
  35. package/dist/{chunk-E3624YDU.mjs → chunk-GMI4KO4X.mjs} +8 -6
  36. package/dist/{chunk-E3624YDU.mjs.map → chunk-GMI4KO4X.mjs.map} +1 -1
  37. package/dist/chunk-IUSKVYUI.mjs +13 -0
  38. package/dist/chunk-IUSKVYUI.mjs.map +1 -0
  39. package/dist/chunk-JD7BAH7U.mjs +1 -0
  40. package/dist/{chunk-EDBI5PCJ.mjs → chunk-JRT5BJF3.mjs} +2 -2
  41. package/dist/{chunk-N4VN2B5S.mjs → chunk-LHERIF3L.mjs} +2 -2
  42. package/dist/{chunk-DXEQPN43.mjs → chunk-LHKZJ2ND.mjs} +3 -3
  43. package/dist/chunk-NB2FKV2V.mjs +1 -0
  44. package/dist/chunk-NBK4KBLX.mjs +54 -0
  45. package/dist/chunk-NBK4KBLX.mjs.map +1 -0
  46. package/dist/chunk-NG26QEGF.mjs +46 -0
  47. package/dist/chunk-NG26QEGF.mjs.map +1 -0
  48. package/dist/chunk-NROJOTQP.mjs +163 -0
  49. package/dist/chunk-NROJOTQP.mjs.map +1 -0
  50. package/dist/{chunk-MGWRDFBE.mjs → chunk-OVYFRPSN.mjs} +2 -2
  51. package/dist/{chunk-MQYWH4E6.mjs → chunk-QU6NONOD.mjs} +2 -2
  52. package/dist/chunk-R4MR43UQ.mjs +101 -0
  53. package/dist/chunk-R4MR43UQ.mjs.map +1 -0
  54. package/dist/chunk-SPCZTZCY.mjs +1 -0
  55. package/dist/chunk-SPCZTZCY.mjs.map +1 -0
  56. package/dist/chunk-TXI72QHK.mjs +80 -0
  57. package/dist/chunk-TXI72QHK.mjs.map +1 -0
  58. package/dist/chunk-UJBV5GAG.mjs +767 -0
  59. package/dist/chunk-UJBV5GAG.mjs.map +1 -0
  60. package/dist/{chunk-OKCYPO4I.mjs → chunk-WMJVBMUX.mjs} +3 -3
  61. package/dist/{chunk-EUX2P2E7.mjs → chunk-WVLHXIFP.mjs} +11 -9
  62. package/dist/chunk-WVLHXIFP.mjs.map +1 -0
  63. package/dist/{chunk-5FHSUKQL.mjs → chunk-YYN33GSG.mjs} +5 -2
  64. package/dist/chunk-YYN33GSG.mjs.map +1 -0
  65. package/dist/chunk-ZVF5Q6IH.mjs +29 -0
  66. package/dist/chunk-ZVF5Q6IH.mjs.map +1 -0
  67. package/dist/components/CopilotListeners.d.ts +3 -0
  68. package/dist/components/CopilotListeners.js +234 -0
  69. package/dist/components/CopilotListeners.js.map +1 -0
  70. package/dist/components/CopilotListeners.mjs +14 -0
  71. package/dist/components/CopilotListeners.mjs.map +1 -0
  72. package/dist/components/copilot-provider/copilot-messages.js +14 -48
  73. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  74. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  75. package/dist/components/copilot-provider/copilotkit-props.d.ts +9 -2
  76. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  77. package/dist/components/copilot-provider/copilotkit.d.ts +2 -1
  78. package/dist/components/copilot-provider/copilotkit.js +528 -370
  79. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  80. package/dist/components/copilot-provider/copilotkit.mjs +15 -10
  81. package/dist/components/copilot-provider/index.d.ts +2 -1
  82. package/dist/components/copilot-provider/index.js +528 -370
  83. package/dist/components/copilot-provider/index.js.map +1 -1
  84. package/dist/components/copilot-provider/index.mjs +16 -10
  85. package/dist/components/dev-console/console-trigger.js +10 -8
  86. package/dist/components/dev-console/console-trigger.js.map +1 -1
  87. package/dist/components/dev-console/console-trigger.mjs +4 -4
  88. package/dist/components/dev-console/developer-console-modal.js +10 -8
  89. package/dist/components/dev-console/developer-console-modal.js.map +1 -1
  90. package/dist/components/dev-console/developer-console-modal.mjs +3 -3
  91. package/dist/components/error-boundary/error-boundary.d.ts +7 -7
  92. package/dist/components/error-boundary/error-boundary.js +3 -3
  93. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  94. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  95. package/dist/components/error-boundary/error-utils.d.ts +1 -1
  96. package/dist/components/error-boundary/error-utils.js +3 -3
  97. package/dist/components/error-boundary/error-utils.js.map +1 -1
  98. package/dist/components/error-boundary/error-utils.mjs +1 -1
  99. package/dist/components/index.d.ts +2 -1
  100. package/dist/components/index.js +528 -370
  101. package/dist/components/index.js.map +1 -1
  102. package/dist/components/index.mjs +17 -10
  103. package/dist/components/toast/exclamation-mark-icon.d.ts +2 -2
  104. package/dist/components/toast/toast-provider.d.ts +3 -3
  105. package/dist/components/usage-banner.d.ts +2 -2
  106. package/dist/context/coagent-state-renders-context.d.ts +24 -0
  107. package/dist/context/coagent-state-renders-context.js +91 -0
  108. package/dist/context/coagent-state-renders-context.js.map +1 -0
  109. package/dist/context/coagent-state-renders-context.mjs +12 -0
  110. package/dist/context/coagent-state-renders-context.mjs.map +1 -0
  111. package/dist/context/copilot-context.d.ts +1 -1
  112. package/dist/context/copilot-context.js +10 -8
  113. package/dist/context/copilot-context.js.map +1 -1
  114. package/dist/context/copilot-context.mjs +1 -1
  115. package/dist/context/copilot-messages-context.d.ts +18 -11
  116. package/dist/context/copilot-messages-context.js.map +1 -1
  117. package/dist/context/copilot-messages-context.mjs +1 -1
  118. package/dist/context/index.d.ts +6 -2
  119. package/dist/context/index.js +110 -10
  120. package/dist/context/index.js.map +1 -1
  121. package/dist/context/index.mjs +20 -4
  122. package/dist/context/threads-context.d.ts +16 -0
  123. package/dist/context/threads-context.js +59 -0
  124. package/dist/context/threads-context.js.map +1 -0
  125. package/dist/context/threads-context.mjs +12 -0
  126. package/dist/context/threads-context.mjs.map +1 -0
  127. package/dist/{copilot-context-cf9de848.d.ts → copilot-context-1cd70a3f.d.ts} +36 -32
  128. package/dist/hooks/index.d.ts +9 -6
  129. package/dist/hooks/index.js +1445 -1839
  130. package/dist/hooks/index.js.map +1 -1
  131. package/dist/hooks/index.mjs +47 -56
  132. package/dist/hooks/use-coagent-state-render-bridge.d.ts +100 -0
  133. package/dist/hooks/use-coagent-state-render-bridge.js +211 -0
  134. package/dist/hooks/use-coagent-state-render-bridge.js.map +1 -0
  135. package/dist/hooks/use-coagent-state-render-bridge.mjs +15 -0
  136. package/dist/hooks/use-coagent-state-render-bridge.mjs.map +1 -0
  137. package/dist/hooks/use-coagent-state-render.js +31 -20
  138. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  139. package/dist/hooks/use-coagent-state-render.mjs +3 -2
  140. package/dist/hooks/use-coagent.d.ts +2 -14
  141. package/dist/hooks/use-coagent.js +109 -1906
  142. package/dist/hooks/use-coagent.js.map +1 -1
  143. package/dist/hooks/use-coagent.mjs +1 -30
  144. package/dist/hooks/use-configure-chat-suggestions.d.ts +36 -0
  145. package/dist/hooks/use-configure-chat-suggestions.js +210 -0
  146. package/dist/hooks/use-configure-chat-suggestions.js.map +1 -0
  147. package/dist/hooks/use-configure-chat-suggestions.mjs +13 -0
  148. package/dist/hooks/use-configure-chat-suggestions.mjs.map +1 -0
  149. package/dist/hooks/use-copilot-action.d.ts +8 -45
  150. package/dist/hooks/use-copilot-action.js +207 -349
  151. package/dist/hooks/use-copilot-action.js.map +1 -1
  152. package/dist/hooks/use-copilot-action.mjs +4 -5
  153. package/dist/hooks/use-copilot-additional-instructions.js +10 -8
  154. package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
  155. package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
  156. package/dist/hooks/use-copilot-authenticated-action.js +224 -248
  157. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  158. package/dist/hooks/use-copilot-authenticated-action.mjs +6 -6
  159. package/dist/hooks/use-copilot-chat-headless_c.d.ts +2 -10
  160. package/dist/hooks/use-copilot-chat-headless_c.js +973 -1369
  161. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  162. package/dist/hooks/use-copilot-chat-headless_c.mjs +12 -22
  163. package/dist/hooks/use-copilot-chat.d.ts +2 -10
  164. package/dist/hooks/use-copilot-chat.js +967 -1388
  165. package/dist/hooks/use-copilot-chat.js.map +1 -1
  166. package/dist/hooks/use-copilot-chat.mjs +12 -22
  167. package/dist/hooks/use-copilot-chat_internal.d.ts +38 -14
  168. package/dist/hooks/use-copilot-chat_internal.js +965 -1362
  169. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  170. package/dist/hooks/use-copilot-chat_internal.mjs +13 -23
  171. package/dist/hooks/use-copilot-readable.d.ts +1 -1
  172. package/dist/hooks/use-copilot-readable.js +6 -157
  173. package/dist/hooks/use-copilot-readable.js.map +1 -1
  174. package/dist/hooks/use-copilot-readable.mjs +1 -2
  175. package/dist/hooks/use-default-tool.js +204 -349
  176. package/dist/hooks/use-default-tool.js.map +1 -1
  177. package/dist/hooks/use-default-tool.mjs +5 -6
  178. package/dist/hooks/use-flat-category-store.js +4 -1
  179. package/dist/hooks/use-flat-category-store.js.map +1 -1
  180. package/dist/hooks/use-flat-category-store.mjs +1 -1
  181. package/dist/hooks/use-frontend-tool.d.ts +3 -3
  182. package/dist/hooks/use-frontend-tool.js +30 -370
  183. package/dist/hooks/use-frontend-tool.js.map +1 -1
  184. package/dist/hooks/use-frontend-tool.mjs +1 -6
  185. package/dist/hooks/use-human-in-the-loop.d.ts +4 -3
  186. package/dist/hooks/use-human-in-the-loop.js +61 -393
  187. package/dist/hooks/use-human-in-the-loop.js.map +1 -1
  188. package/dist/hooks/use-human-in-the-loop.mjs +1 -6
  189. package/dist/hooks/use-langgraph-interrupt-render.d.ts +3 -2
  190. package/dist/hooks/use-langgraph-interrupt-render.js +92 -36
  191. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
  192. package/dist/hooks/use-langgraph-interrupt-render.mjs +6 -4
  193. package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
  194. package/dist/hooks/use-langgraph-interrupt.js +24 -1642
  195. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  196. package/dist/hooks/use-langgraph-interrupt.mjs +2 -23
  197. package/dist/hooks/use-lazy-tool-renderer.d.ts +6 -0
  198. package/dist/hooks/use-lazy-tool-renderer.js +53 -0
  199. package/dist/hooks/use-lazy-tool-renderer.js.map +1 -0
  200. package/dist/hooks/use-lazy-tool-renderer.mjs +8 -0
  201. package/dist/hooks/use-lazy-tool-renderer.mjs.map +1 -0
  202. package/dist/hooks/use-make-copilot-document-readable.js +11 -9
  203. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  204. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  205. package/dist/hooks/use-render-tool-call.d.ts +7 -6
  206. package/dist/hooks/use-render-tool-call.js +36 -386
  207. package/dist/hooks/use-render-tool-call.js.map +1 -1
  208. package/dist/hooks/use-render-tool-call.mjs +1 -6
  209. package/dist/index.d.ts +11 -6
  210. package/dist/index.js +1841 -2056
  211. package/dist/index.js.map +1 -1
  212. package/dist/index.mjs +78 -59
  213. package/dist/lib/copilot-task.d.ts +1 -1
  214. package/dist/lib/copilot-task.js +1 -0
  215. package/dist/lib/copilot-task.js.map +1 -1
  216. package/dist/lib/copilot-task.mjs +18 -11
  217. package/dist/lib/index.d.ts +1 -1
  218. package/dist/lib/index.js +1 -0
  219. package/dist/lib/index.js.map +1 -1
  220. package/dist/lib/index.mjs +18 -11
  221. package/dist/setupTests.d.ts +2 -2
  222. package/dist/types/frontend-action.d.ts +5 -5
  223. package/dist/types/index.d.ts +4 -0
  224. package/dist/types/index.js.map +1 -1
  225. package/dist/types/index.mjs +2 -1
  226. package/dist/types/interrupt-action.d.ts +1 -1
  227. package/dist/types/interrupt-action.js.map +1 -1
  228. package/dist/types/interrupt-action.mjs +1 -0
  229. package/dist/utils/index.d.ts +0 -12
  230. package/dist/utils/index.js +6 -325
  231. package/dist/utils/index.js.map +1 -1
  232. package/dist/utils/index.mjs +1 -21
  233. package/dist/utils/utils.js.map +1 -1
  234. package/dist/v2/index.d.ts +2 -0
  235. package/dist/v2/index.js +27 -0
  236. package/dist/v2/index.js.map +1 -0
  237. package/dist/v2/index.mjs +4 -0
  238. package/dist/v2/index.mjs.map +1 -0
  239. package/package.json +20 -9
  240. package/src/components/CopilotListeners.tsx +82 -0
  241. package/src/components/copilot-provider/copilot-messages.tsx +46 -47
  242. package/src/components/copilot-provider/copilotkit-props.tsx +8 -1
  243. package/src/components/copilot-provider/copilotkit.tsx +177 -144
  244. package/src/components/error-boundary/error-utils.tsx +3 -3
  245. package/src/context/coagent-state-renders-context.tsx +76 -0
  246. package/src/context/copilot-context.tsx +21 -21
  247. package/src/context/copilot-messages-context.tsx +3 -3
  248. package/src/context/index.ts +8 -0
  249. package/src/context/threads-context.tsx +41 -0
  250. package/src/hooks/index.ts +7 -3
  251. package/src/hooks/use-coagent-state-render-bridge.tsx +293 -0
  252. package/src/hooks/use-coagent-state-render.ts +4 -7
  253. package/src/hooks/use-coagent.ts +129 -249
  254. package/src/hooks/use-configure-chat-suggestions.tsx +85 -0
  255. package/src/hooks/use-copilot-action.ts +88 -199
  256. package/src/hooks/use-copilot-chat-headless_c.ts +2 -1
  257. package/src/hooks/use-copilot-chat.ts +4 -1
  258. package/src/hooks/use-copilot-chat_internal.ts +349 -258
  259. package/src/hooks/use-copilot-readable.ts +6 -26
  260. package/src/hooks/use-flat-category-store.ts +4 -3
  261. package/src/hooks/use-frontend-tool.ts +67 -8
  262. package/src/hooks/use-human-in-the-loop.ts +111 -13
  263. package/src/hooks/use-langgraph-interrupt-render.ts +90 -40
  264. package/src/hooks/use-langgraph-interrupt.ts +18 -47
  265. package/src/hooks/use-lazy-tool-renderer.tsx +30 -0
  266. package/src/hooks/use-make-copilot-document-readable.ts +1 -1
  267. package/src/hooks/use-render-tool-call.ts +73 -13
  268. package/src/types/index.ts +1 -0
  269. package/src/types/interrupt-action.ts +8 -4
  270. package/src/utils/index.ts +0 -3
  271. package/src/utils/utils.ts +7 -0
  272. package/src/v2/index.ts +2 -0
  273. package/src/v2/styles.css +1 -0
  274. package/tsup.config.ts +1 -1
  275. package/dist/chunk-5FHSUKQL.mjs.map +0 -1
  276. package/dist/chunk-6GPVUMBU.mjs +0 -13
  277. package/dist/chunk-6GPVUMBU.mjs.map +0 -1
  278. package/dist/chunk-AKR2SSUJ.mjs +0 -22
  279. package/dist/chunk-AKR2SSUJ.mjs.map +0 -1
  280. package/dist/chunk-BXXJQ2BL.mjs +0 -239
  281. package/dist/chunk-BXXJQ2BL.mjs.map +0 -1
  282. package/dist/chunk-C6IANC2R.mjs.map +0 -1
  283. package/dist/chunk-DZTU6PGS.mjs +0 -1
  284. package/dist/chunk-EUX2P2E7.mjs.map +0 -1
  285. package/dist/chunk-EVVO67QO.mjs +0 -25
  286. package/dist/chunk-EVVO67QO.mjs.map +0 -1
  287. package/dist/chunk-GGLAHG3I.mjs +0 -804
  288. package/dist/chunk-GGLAHG3I.mjs.map +0 -1
  289. package/dist/chunk-GT5WI3AF.mjs.map +0 -1
  290. package/dist/chunk-HDOG2RTM.mjs +0 -37
  291. package/dist/chunk-HDOG2RTM.mjs.map +0 -1
  292. package/dist/chunk-MIXSWZSB.mjs +0 -71
  293. package/dist/chunk-MIXSWZSB.mjs.map +0 -1
  294. package/dist/chunk-N4WEHORG.mjs.map +0 -1
  295. package/dist/chunk-NSBAWITG.mjs +0 -332
  296. package/dist/chunk-NSBAWITG.mjs.map +0 -1
  297. package/dist/chunk-OT5NHMEC.mjs +0 -723
  298. package/dist/chunk-OT5NHMEC.mjs.map +0 -1
  299. package/dist/chunk-T3376SZS.mjs +0 -142
  300. package/dist/chunk-T3376SZS.mjs.map +0 -1
  301. package/dist/chunk-YPBKY4KY.mjs +0 -1
  302. package/dist/chunk-YPSGKPDA.mjs +0 -1
  303. package/dist/chunk-ZLQVRPDS.mjs.map +0 -1
  304. package/dist/chunk-ZVOLWJCY.mjs +0 -47
  305. package/dist/chunk-ZVOLWJCY.mjs.map +0 -1
  306. package/dist/hooks/use-chat.d.ts +0 -145
  307. package/dist/hooks/use-chat.js +0 -1129
  308. package/dist/hooks/use-chat.js.map +0 -1
  309. package/dist/hooks/use-chat.mjs +0 -14
  310. package/dist/index-1f5b66ac.d.ts +0 -36
  311. package/dist/utils/extract.d.ts +0 -43
  312. package/dist/utils/extract.js +0 -208
  313. package/dist/utils/extract.js.map +0 -1
  314. package/dist/utils/extract.mjs +0 -25
  315. package/dist/utils/suggestions.d.ts +0 -11
  316. package/dist/utils/suggestions.js +0 -343
  317. package/dist/utils/suggestions.js.map +0 -1
  318. package/dist/utils/suggestions.mjs +0 -25
  319. package/src/hooks/use-chat.ts +0 -1142
  320. package/src/utils/extract.ts +0 -215
  321. package/src/utils/suggestions.ts +0 -208
  322. /package/dist/{chunk-DZTU6PGS.mjs.map → chunk-36KQV2NA.mjs.map} +0 -0
  323. /package/dist/{chunk-U7QULEVO.mjs.map → chunk-3GURHDG7.mjs.map} +0 -0
  324. /package/dist/{chunk-YPBKY4KY.mjs.map → chunk-A6NKSGH3.mjs.map} +0 -0
  325. /package/dist/{chunk-YPSGKPDA.mjs.map → chunk-CYDWEPFL.mjs.map} +0 -0
  326. /package/dist/{hooks/use-chat.mjs.map → chunk-FD6FGKYY.mjs.map} +0 -0
  327. /package/dist/{utils/extract.mjs.map → chunk-JD7BAH7U.mjs.map} +0 -0
  328. /package/dist/{chunk-EDBI5PCJ.mjs.map → chunk-JRT5BJF3.mjs.map} +0 -0
  329. /package/dist/{chunk-N4VN2B5S.mjs.map → chunk-LHERIF3L.mjs.map} +0 -0
  330. /package/dist/{chunk-DXEQPN43.mjs.map → chunk-LHKZJ2ND.mjs.map} +0 -0
  331. /package/dist/{utils/suggestions.mjs.map → chunk-NB2FKV2V.mjs.map} +0 -0
  332. /package/dist/{chunk-MGWRDFBE.mjs.map → chunk-OVYFRPSN.mjs.map} +0 -0
  333. /package/dist/{chunk-MQYWH4E6.mjs.map → chunk-QU6NONOD.mjs.map} +0 -0
  334. /package/dist/{chunk-OKCYPO4I.mjs.map → chunk-WMJVBMUX.mjs.map} +0 -0
@@ -1,723 +0,0 @@
1
- import {
2
- processActionsForRuntimeRequest
3
- } from "./chunk-4CEQJ2X6.mjs";
4
- import {
5
- useCopilotRuntimeClient
6
- } from "./chunk-6ESSSQ7Q.mjs";
7
- import {
8
- useAsyncCallback,
9
- useErrorToast
10
- } from "./chunk-N4WEHORG.mjs";
11
- import {
12
- useToast
13
- } from "./chunk-EFL5OBKN.mjs";
14
- import {
15
- useCopilotContext
16
- } from "./chunk-EUX2P2E7.mjs";
17
- import {
18
- __async,
19
- __spreadProps,
20
- __spreadValues
21
- } from "./chunk-SKC7AJIV.mjs";
22
-
23
- // src/hooks/use-chat.ts
24
- import { useCallback, useEffect, useMemo, useRef } from "react";
25
- import { flushSync } from "react-dom";
26
- import {
27
- COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
28
- randomId,
29
- parseJson,
30
- CopilotKitError,
31
- CopilotKitErrorCode
32
- } from "@copilotkit/shared";
33
- import {
34
- TextMessage,
35
- ResultMessage,
36
- convertMessagesToGqlInput,
37
- filterAdjacentAgentStateMessages,
38
- filterAgentStateMessages,
39
- convertGqlOutputToMessages,
40
- MessageStatusCode,
41
- MessageRole,
42
- Role,
43
- CopilotRequestType,
44
- loadMessagesFromJsonRepresentation,
45
- CopilotRuntimeClient,
46
- langGraphInterruptEvent,
47
- MetaEventName,
48
- ActionExecutionMessage
49
- } from "@copilotkit/runtime-client-gql";
50
- function useChat(options) {
51
- const {
52
- messages,
53
- setMessages,
54
- makeSystemMessageCallback,
55
- copilotConfig,
56
- setIsLoading,
57
- initialMessages,
58
- isLoading,
59
- actions,
60
- onFunctionCall,
61
- onCoAgentStateRender,
62
- setCoagentStatesWithRef,
63
- coagentStatesRef,
64
- agentSession,
65
- setAgentSession,
66
- threadId,
67
- setThreadId,
68
- runId,
69
- setRunId,
70
- chatAbortControllerRef,
71
- agentLock,
72
- extensions,
73
- setExtensions,
74
- langGraphInterruptAction,
75
- setLangGraphInterruptAction,
76
- disableSystemMessage = false
77
- } = options;
78
- const runChatCompletionRef = useRef();
79
- const addErrorToast = useErrorToast();
80
- const { setBannerError } = useToast();
81
- const { onError, showDevConsole, getAllContext } = useCopilotContext();
82
- const copilotReadableContext = getAllContext();
83
- const context = useMemo(
84
- () => copilotReadableContext.map((contextItem) => {
85
- const [description, ...valueParts] = contextItem.value.split(":");
86
- return {
87
- description: description.trim(),
88
- value: valueParts.join(":").trim()
89
- };
90
- }),
91
- [copilotReadableContext]
92
- );
93
- const traceUIError = (error, originalError) => __async(this, null, function* () {
94
- try {
95
- const traceEvent = {
96
- type: "error",
97
- timestamp: Date.now(),
98
- context: {
99
- source: "ui",
100
- request: {
101
- operation: "useChatCompletion",
102
- url: copilotConfig.chatApiEndpoint,
103
- startTime: Date.now()
104
- },
105
- technical: {
106
- environment: "browser",
107
- userAgent: typeof navigator !== "undefined" ? navigator.userAgent : void 0,
108
- stackTrace: originalError instanceof Error ? originalError.stack : void 0
109
- }
110
- },
111
- error
112
- };
113
- yield onError(traceEvent);
114
- } catch (traceError) {
115
- console.error("Error in use-chat onError handler:", traceError);
116
- }
117
- });
118
- const agentSessionRef = useRef(agentSession);
119
- agentSessionRef.current = agentSession;
120
- const runIdRef = useRef(runId);
121
- runIdRef.current = runId;
122
- const extensionsRef = useRef(extensions);
123
- extensionsRef.current = extensions;
124
- const publicApiKey = copilotConfig.publicApiKey;
125
- const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
126
- const runtimeClient = useCopilotRuntimeClient({
127
- url: copilotConfig.chatApiEndpoint,
128
- publicApiKey: copilotConfig.publicApiKey,
129
- headers,
130
- credentials: copilotConfig.credentials,
131
- showDevConsole,
132
- onError
133
- });
134
- const pendingAppendsRef = useRef([]);
135
- const runChatCompletion = useAsyncCallback(
136
- (previousMessages) => __async(this, null, function* () {
137
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
138
- setIsLoading(true);
139
- const interruptEvent = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event;
140
- if ((interruptEvent == null ? void 0 : interruptEvent.name) === MetaEventName.LangGraphInterruptEvent && (interruptEvent == null ? void 0 : interruptEvent.value) && !(interruptEvent == null ? void 0 : interruptEvent.response) && agentSessionRef.current) {
141
- addErrorToast([
142
- new Error(
143
- "A message was sent while interrupt is active. This will cause failure on the agent side"
144
- )
145
- ]);
146
- }
147
- let newMessages = [
148
- new TextMessage({
149
- content: "",
150
- role: Role.Assistant
151
- })
152
- ];
153
- chatAbortControllerRef.current = new AbortController();
154
- setMessages([...previousMessages, ...newMessages]);
155
- const messagesWithContext = disableSystemMessage ? [...initialMessages || [], ...previousMessages] : [makeSystemMessageCallback(), ...initialMessages || [], ...previousMessages];
156
- const finalProperties = __spreadValues({}, copilotConfig.properties || {});
157
- let mcpServersToUse = null;
158
- if (copilotConfig.mcpServers && Array.isArray(copilotConfig.mcpServers) && copilotConfig.mcpServers.length > 0) {
159
- mcpServersToUse = copilotConfig.mcpServers;
160
- } else if (((_a = copilotConfig.properties) == null ? void 0 : _a.mcpServers) && Array.isArray(copilotConfig.properties.mcpServers) && copilotConfig.properties.mcpServers.length > 0) {
161
- mcpServersToUse = copilotConfig.properties.mcpServers;
162
- }
163
- if (mcpServersToUse) {
164
- finalProperties.mcpServers = mcpServersToUse;
165
- copilotConfig.mcpServers = mcpServersToUse;
166
- }
167
- const isAgentRun = agentSessionRef.current !== null;
168
- const stream = runtimeClient.asStream(
169
- runtimeClient.generateCopilotResponse({
170
- data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
171
- frontend: {
172
- actions: processActionsForRuntimeRequest(actions),
173
- url: window.location.href
174
- },
175
- threadId,
176
- runId: runIdRef.current,
177
- extensions: extensionsRef.current,
178
- metaEvents: composeAndFlushMetaEventsInput([langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event]),
179
- messages: convertMessagesToGqlInput(filterAgentStateMessages(messagesWithContext))
180
- }, copilotConfig.cloud ? {
181
- cloud: __spreadValues({}, ((_d = (_c = (_b = copilotConfig.cloud.guardrails) == null ? void 0 : _b.input) == null ? void 0 : _c.restrictToTopic) == null ? void 0 : _d.enabled) ? {
182
- guardrails: {
183
- inputValidationRules: {
184
- allowList: copilotConfig.cloud.guardrails.input.restrictToTopic.validTopics,
185
- denyList: copilotConfig.cloud.guardrails.input.restrictToTopic.invalidTopics
186
- }
187
- }
188
- } : {})
189
- } : {}), {
190
- metadata: {
191
- requestType: CopilotRequestType.Chat
192
- }
193
- }), agentSessionRef.current ? {
194
- agentSession: agentSessionRef.current
195
- } : {}), {
196
- agentStates: Object.values(coagentStatesRef.current).map((state) => {
197
- const stateObject = {
198
- agentName: state.name,
199
- state: JSON.stringify(state.state)
200
- };
201
- if (state.config !== void 0) {
202
- stateObject.config = JSON.stringify(state.config);
203
- }
204
- return stateObject;
205
- }),
206
- forwardedParameters: options.forwardedParameters || {},
207
- context
208
- }),
209
- properties: finalProperties,
210
- signal: (_e = chatAbortControllerRef.current) == null ? void 0 : _e.signal
211
- })
212
- );
213
- const guardrailsEnabled = ((_h = (_g = (_f = copilotConfig.cloud) == null ? void 0 : _f.guardrails) == null ? void 0 : _g.input) == null ? void 0 : _h.restrictToTopic.enabled) || false;
214
- const reader = stream.getReader();
215
- let executedCoAgentStateRenders = [];
216
- let followUp = void 0;
217
- let messages2 = [];
218
- let syncedMessages = [];
219
- let interruptMessages = [];
220
- try {
221
- while (true) {
222
- let done, value;
223
- try {
224
- const readResult = yield reader.read();
225
- done = readResult.done;
226
- value = readResult.value;
227
- } catch (readError) {
228
- break;
229
- }
230
- if (done) {
231
- if (chatAbortControllerRef.current.signal.aborted) {
232
- return [];
233
- }
234
- break;
235
- }
236
- if (!(value == null ? void 0 : value.generateCopilotResponse)) {
237
- continue;
238
- }
239
- runIdRef.current = value.generateCopilotResponse.runId || null;
240
- extensionsRef.current = CopilotRuntimeClient.removeGraphQLTypename(
241
- value.generateCopilotResponse.extensions || {}
242
- );
243
- setRunId(runIdRef.current);
244
- setExtensions(extensionsRef.current);
245
- let rawMessagesResponse = value.generateCopilotResponse.messages;
246
- const metaEvents = (_j = (_i = value.generateCopilotResponse) == null ? void 0 : _i.metaEvents) != null ? _j : [];
247
- (metaEvents != null ? metaEvents : []).forEach((ev) => {
248
- if (ev.name === MetaEventName.LangGraphInterruptEvent) {
249
- let eventValue = langGraphInterruptEvent(ev).value;
250
- eventValue = parseJson(eventValue, eventValue);
251
- setLangGraphInterruptAction(threadId, {
252
- event: __spreadProps(__spreadValues({}, langGraphInterruptEvent(ev)), {
253
- value: eventValue
254
- })
255
- });
256
- }
257
- if (ev.name === MetaEventName.CopilotKitLangGraphInterruptEvent) {
258
- const data = ev.data;
259
- rawMessagesResponse = [...rawMessagesResponse, ...data.messages];
260
- interruptMessages = convertGqlOutputToMessages(
261
- // @ts-ignore
262
- filterAdjacentAgentStateMessages(data.messages)
263
- );
264
- }
265
- });
266
- messages2 = convertGqlOutputToMessages(
267
- filterAdjacentAgentStateMessages(rawMessagesResponse)
268
- );
269
- newMessages = [];
270
- if (((_k = value.generateCopilotResponse.status) == null ? void 0 : _k.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
271
- const guardrailsReason = ((_l = value.generateCopilotResponse.status.details) == null ? void 0 : _l.guardrailsReason) || "";
272
- newMessages = [
273
- new TextMessage({
274
- role: MessageRole.Assistant,
275
- content: guardrailsReason
276
- })
277
- ];
278
- const guardrailsError = new CopilotKitError({
279
- message: `Guardrails validation failed: ${guardrailsReason}`,
280
- code: CopilotKitErrorCode.MISUSE
281
- });
282
- yield traceUIError(guardrailsError, {
283
- statusReason: value.generateCopilotResponse.status.reason,
284
- statusDetails: value.generateCopilotResponse.status.details
285
- });
286
- setMessages([...previousMessages, ...newMessages]);
287
- break;
288
- }
289
- if (((_m = value.generateCopilotResponse.status) == null ? void 0 : _m.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "UNKNOWN_ERROR") {
290
- const errorMessage = ((_n = value.generateCopilotResponse.status.details) == null ? void 0 : _n.description) || "An unknown error occurred";
291
- const statusDetails = value.generateCopilotResponse.status.details;
292
- const originalError = (statusDetails == null ? void 0 : statusDetails.originalError) || (statusDetails == null ? void 0 : statusDetails.error);
293
- const originalCode = (originalError == null ? void 0 : originalError.code) || ((_o = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _o.code);
294
- const originalSeverity = (originalError == null ? void 0 : originalError.severity) || ((_p = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _p.severity);
295
- const originalVisibility = (originalError == null ? void 0 : originalError.visibility) || ((_q = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _q.visibility);
296
- let errorCode = CopilotKitErrorCode.NETWORK_ERROR;
297
- if (originalCode && Object.values(CopilotKitErrorCode).includes(originalCode)) {
298
- errorCode = originalCode;
299
- }
300
- const structuredError = new CopilotKitError({
301
- message: errorMessage,
302
- code: errorCode,
303
- severity: originalSeverity,
304
- visibility: originalVisibility
305
- });
306
- setBannerError(structuredError);
307
- yield traceUIError(structuredError, {
308
- statusReason: value.generateCopilotResponse.status.reason,
309
- statusDetails: value.generateCopilotResponse.status.details,
310
- originalErrorCode: originalCode,
311
- preservedStructure: !!originalCode
312
- });
313
- setIsLoading(false);
314
- throw new Error(structuredError.message);
315
- } else if (messages2.length > 0) {
316
- newMessages = [...messages2];
317
- for (const message of messages2) {
318
- if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
319
- if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
320
- break;
321
- }
322
- yield onCoAgentStateRender({
323
- name: message.agentName,
324
- nodeName: message.nodeName,
325
- state: message.state
326
- });
327
- executedCoAgentStateRenders.push(message.id);
328
- }
329
- }
330
- const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
331
- if (lastAgentStateMessage) {
332
- if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
333
- syncedMessages = loadMessagesFromJsonRepresentation(
334
- lastAgentStateMessage.state.messages
335
- );
336
- }
337
- setCoagentStatesWithRef((prevAgentStates) => {
338
- var _a2;
339
- return __spreadProps(__spreadValues({}, prevAgentStates), {
340
- [lastAgentStateMessage.agentName]: {
341
- name: lastAgentStateMessage.agentName,
342
- state: lastAgentStateMessage.state,
343
- running: lastAgentStateMessage.running,
344
- active: lastAgentStateMessage.active,
345
- threadId: lastAgentStateMessage.threadId,
346
- nodeName: lastAgentStateMessage.nodeName,
347
- runId: lastAgentStateMessage.runId,
348
- // Preserve existing config from previous state
349
- config: (_a2 = prevAgentStates[lastAgentStateMessage.agentName]) == null ? void 0 : _a2.config
350
- }
351
- });
352
- });
353
- if (lastAgentStateMessage.running) {
354
- setAgentSession({
355
- threadId: lastAgentStateMessage.threadId,
356
- agentName: lastAgentStateMessage.agentName,
357
- nodeName: lastAgentStateMessage.nodeName
358
- });
359
- } else {
360
- if (agentLock) {
361
- setAgentSession({
362
- threadId: randomId(),
363
- agentName: agentLock,
364
- nodeName: void 0
365
- });
366
- } else {
367
- setAgentSession(null);
368
- }
369
- }
370
- }
371
- }
372
- if (newMessages.length > 0) {
373
- setMessages([...previousMessages, ...newMessages]);
374
- }
375
- }
376
- let finalMessages = constructFinalMessages(
377
- [...syncedMessages, ...interruptMessages],
378
- previousMessages,
379
- newMessages
380
- );
381
- let didExecuteAction = false;
382
- const executeActionFromMessage = (currentAction, actionMessage) => __async(this, null, function* () {
383
- var _a2;
384
- const isInterruptAction = interruptMessages.find((m) => m.id === actionMessage.id);
385
- followUp = (_a2 = currentAction == null ? void 0 : currentAction.followUp) != null ? _a2 : !isInterruptAction;
386
- if (currentAction == null ? void 0 : currentAction._setActivatingMessageId) {
387
- currentAction._setActivatingMessageId(actionMessage.id);
388
- }
389
- const resultMessage = yield executeAction({
390
- onFunctionCall,
391
- message: actionMessage,
392
- chatAbortControllerRef,
393
- onError: (error) => {
394
- addErrorToast([error]);
395
- console.error(`Failed to execute action ${actionMessage.name}: ${error}`);
396
- },
397
- setMessages,
398
- getFinalMessages: () => finalMessages,
399
- isRenderAndWait: (currentAction == null ? void 0 : currentAction._isRenderAndWait) || false
400
- });
401
- didExecuteAction = true;
402
- const messageIndex = finalMessages.findIndex((msg) => msg.id === actionMessage.id);
403
- finalMessages.splice(messageIndex + 1, 0, resultMessage);
404
- if (currentAction == null ? void 0 : currentAction._isRenderAndWait) {
405
- const messagesForImmediateUpdate = [...finalMessages];
406
- flushSync(() => {
407
- setMessages(messagesForImmediateUpdate);
408
- });
409
- }
410
- if (currentAction == null ? void 0 : currentAction._setActivatingMessageId) {
411
- currentAction._setActivatingMessageId(null);
412
- }
413
- return resultMessage;
414
- });
415
- if (onFunctionCall) {
416
- const lastMessages = [];
417
- for (let i = finalMessages.length - 1; i >= 0; i--) {
418
- const message = finalMessages[i];
419
- if ((message.isActionExecutionMessage() || message.isResultMessage()) && message.status.code !== MessageStatusCode.Pending) {
420
- lastMessages.unshift(message);
421
- } else if (!message.isAgentStateMessage()) {
422
- break;
423
- }
424
- }
425
- for (const message of lastMessages) {
426
- setMessages(finalMessages);
427
- const action = actions.find(
428
- (action2) => action2.name === message.name
429
- );
430
- if (action && action.available === "frontend") {
431
- continue;
432
- }
433
- const currentResultMessagePairedFeAction = message.isResultMessage() ? getPairedFeAction(actions, message) : null;
434
- if (action && message.isActionExecutionMessage()) {
435
- const isRenderAndWaitAction = (action == null ? void 0 : action._isRenderAndWait) || false;
436
- const alreadyProcessed = isRenderAndWaitAction && finalMessages.some(
437
- (fm) => fm.isResultMessage() && fm.actionExecutionId === message.id
438
- );
439
- if (alreadyProcessed) {
440
- } else {
441
- const resultMessage = yield executeActionFromMessage(
442
- action,
443
- message
444
- );
445
- const pairedFeAction = getPairedFeAction(actions, resultMessage);
446
- if (pairedFeAction) {
447
- const newExecutionMessage = new ActionExecutionMessage({
448
- name: pairedFeAction.name,
449
- arguments: parseJson(resultMessage.result, resultMessage.result),
450
- status: message.status,
451
- createdAt: message.createdAt,
452
- parentMessageId: message.parentMessageId
453
- });
454
- yield executeActionFromMessage(pairedFeAction, newExecutionMessage);
455
- }
456
- }
457
- } else if (message.isResultMessage() && currentResultMessagePairedFeAction) {
458
- const newExecutionMessage = new ActionExecutionMessage({
459
- name: currentResultMessagePairedFeAction.name,
460
- arguments: parseJson(message.result, message.result),
461
- status: message.status,
462
- createdAt: message.createdAt
463
- });
464
- finalMessages.push(newExecutionMessage);
465
- yield executeActionFromMessage(
466
- currentResultMessagePairedFeAction,
467
- newExecutionMessage
468
- );
469
- }
470
- }
471
- setMessages(finalMessages);
472
- }
473
- if (followUp !== false && (didExecuteAction || // the last message is a server side result
474
- !isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
475
- !((_r = chatAbortControllerRef.current) == null ? void 0 : _r.signal.aborted)) {
476
- yield new Promise((resolve) => setTimeout(resolve, 10));
477
- return yield runChatCompletionRef.current(finalMessages);
478
- } else if ((_s = chatAbortControllerRef.current) == null ? void 0 : _s.signal.aborted) {
479
- const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
480
- if (message.isActionExecutionMessage()) {
481
- return finalMessages.find(
482
- (msg, resultIndex) => msg.isResultMessage() && msg.actionExecutionId === message.id && resultIndex === actionExecutionIndex + 1
483
- );
484
- }
485
- return true;
486
- });
487
- const repairedMessageIds = repairedMessages.map((message) => message.id);
488
- setMessages(repairedMessages);
489
- if ((_t = agentSessionRef.current) == null ? void 0 : _t.nodeName) {
490
- setAgentSession({
491
- threadId: agentSessionRef.current.threadId,
492
- agentName: agentSessionRef.current.agentName,
493
- nodeName: "__end__"
494
- });
495
- }
496
- return newMessages.filter((message) => repairedMessageIds.includes(message.id));
497
- } else {
498
- return newMessages.slice();
499
- }
500
- } finally {
501
- setIsLoading(false);
502
- }
503
- }),
504
- [
505
- messages,
506
- setMessages,
507
- makeSystemMessageCallback,
508
- copilotConfig,
509
- setIsLoading,
510
- initialMessages,
511
- isLoading,
512
- actions,
513
- onFunctionCall,
514
- onCoAgentStateRender,
515
- setCoagentStatesWithRef,
516
- coagentStatesRef,
517
- agentSession,
518
- setAgentSession,
519
- disableSystemMessage,
520
- context
521
- ]
522
- );
523
- runChatCompletionRef.current = runChatCompletion;
524
- const runChatCompletionAndHandleFunctionCall = useAsyncCallback(
525
- (messages2) => __async(this, null, function* () {
526
- yield runChatCompletionRef.current(messages2);
527
- }),
528
- [messages]
529
- );
530
- useEffect(() => {
531
- if (!isLoading && pendingAppendsRef.current.length > 0) {
532
- const pending = pendingAppendsRef.current.splice(0);
533
- const followUp = pending.some((p) => p.followUp);
534
- const newMessages = [...messages, ...pending.map((p) => p.message)];
535
- setMessages(newMessages);
536
- if (followUp) {
537
- runChatCompletionAndHandleFunctionCall(newMessages);
538
- }
539
- }
540
- }, [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]);
541
- const composeAndFlushMetaEventsInput = useCallback(
542
- (metaEvents) => {
543
- return metaEvents.reduce((acc, event) => {
544
- if (!event)
545
- return acc;
546
- switch (event.name) {
547
- case MetaEventName.LangGraphInterruptEvent:
548
- if (event.response) {
549
- setLangGraphInterruptAction(threadId, null);
550
- const value = event.value;
551
- return [
552
- ...acc,
553
- {
554
- name: event.name,
555
- value: typeof value === "string" ? value : JSON.stringify(value),
556
- response: typeof event.response === "string" ? event.response : JSON.stringify(event.response)
557
- }
558
- ];
559
- }
560
- return acc;
561
- default:
562
- return acc;
563
- }
564
- }, []);
565
- },
566
- [setLangGraphInterruptAction]
567
- );
568
- const append = useAsyncCallback(
569
- (message, options2) => __async(this, null, function* () {
570
- var _a;
571
- const followUp = (_a = options2 == null ? void 0 : options2.followUp) != null ? _a : true;
572
- if (isLoading) {
573
- pendingAppendsRef.current.push({ message, followUp });
574
- return;
575
- }
576
- const newMessages = [...messages, message];
577
- setMessages(newMessages);
578
- if (followUp) {
579
- return runChatCompletionAndHandleFunctionCall(newMessages);
580
- }
581
- }),
582
- [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]
583
- );
584
- const reload = useAsyncCallback(
585
- (reloadMessageId) => __async(this, null, function* () {
586
- if (isLoading || messages.length === 0) {
587
- return;
588
- }
589
- const reloadMessageIndex = messages.findIndex((msg) => msg.id === reloadMessageId);
590
- if (reloadMessageIndex === -1) {
591
- console.warn(`Message with id ${reloadMessageId} not found`);
592
- return;
593
- }
594
- const reloadMessageRole = messages[reloadMessageIndex].role;
595
- if (reloadMessageRole !== MessageRole.Assistant) {
596
- console.warn(`Regenerate cannot be performed on ${reloadMessageRole} role`);
597
- return;
598
- }
599
- let historyCutoff = [messages[0]];
600
- if (messages.length > 2 && reloadMessageIndex !== 0) {
601
- const lastUserMessageBeforeRegenerate = messages.slice(0, reloadMessageIndex).reverse().find(
602
- (msg) => (
603
- // @ts-expect-error -- message has role
604
- msg.role === MessageRole.User
605
- )
606
- );
607
- const indexOfLastUserMessageBeforeRegenerate = messages.findIndex(
608
- (msg) => msg.id === lastUserMessageBeforeRegenerate.id
609
- );
610
- historyCutoff = messages.slice(0, indexOfLastUserMessageBeforeRegenerate + 1);
611
- } else if (messages.length > 2 && reloadMessageIndex === 0) {
612
- historyCutoff = [messages[0], messages[1]];
613
- }
614
- setMessages(historyCutoff);
615
- return runChatCompletionAndHandleFunctionCall(historyCutoff);
616
- }),
617
- [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]
618
- );
619
- const stop = () => {
620
- var _a;
621
- (_a = chatAbortControllerRef.current) == null ? void 0 : _a.abort("Stop was called");
622
- };
623
- return {
624
- append,
625
- reload,
626
- stop,
627
- runChatCompletion: () => runChatCompletionRef.current(messages)
628
- };
629
- }
630
- function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
631
- const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
632
- if (syncedMessages.length > 0) {
633
- const messagesWithAgentState = [...previousMessages, ...newMessages];
634
- let previousMessageId = void 0;
635
- for (const message of messagesWithAgentState) {
636
- if (message.isAgentStateMessage()) {
637
- const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
638
- if (index !== -1) {
639
- finalMessages.splice(index + 1, 0, message);
640
- }
641
- }
642
- previousMessageId = message.id;
643
- }
644
- }
645
- return finalMessages;
646
- }
647
- function executeAction(_0) {
648
- return __async(this, arguments, function* ({
649
- onFunctionCall,
650
- message,
651
- chatAbortControllerRef,
652
- onError,
653
- setMessages,
654
- getFinalMessages,
655
- isRenderAndWait
656
- }) {
657
- let result;
658
- let error = null;
659
- const currentMessagesForHandler = getFinalMessages();
660
- const handlerReturnedPromise = onFunctionCall({
661
- messages: currentMessagesForHandler,
662
- name: message.name,
663
- args: message.arguments
664
- });
665
- if (isRenderAndWait) {
666
- const currentMessagesForRender = getFinalMessages();
667
- flushSync(() => {
668
- setMessages([...currentMessagesForRender]);
669
- });
670
- }
671
- try {
672
- result = yield Promise.race([
673
- handlerReturnedPromise,
674
- // Await the promise returned by the handler
675
- new Promise(
676
- (resolve) => {
677
- var _a;
678
- return (_a = chatAbortControllerRef.current) == null ? void 0 : _a.signal.addEventListener(
679
- "abort",
680
- () => resolve("Operation was aborted by the user")
681
- );
682
- }
683
- ),
684
- // if the user stopped generation, we also abort consecutive actions
685
- new Promise((resolve) => {
686
- var _a;
687
- if ((_a = chatAbortControllerRef.current) == null ? void 0 : _a.signal.aborted) {
688
- resolve("Operation was aborted by the user");
689
- }
690
- })
691
- ]);
692
- } catch (e) {
693
- onError(e);
694
- }
695
- return new ResultMessage({
696
- id: "result-" + message.id,
697
- result: ResultMessage.encodeResult(
698
- error ? {
699
- content: result,
700
- error: JSON.parse(JSON.stringify(error, Object.getOwnPropertyNames(error)))
701
- } : result
702
- ),
703
- actionExecutionId: message.id,
704
- actionName: message.name
705
- });
706
- });
707
- }
708
- function getPairedFeAction(actions, message) {
709
- let actionName = null;
710
- if (message.isActionExecutionMessage()) {
711
- actionName = message.name;
712
- } else if (message.isResultMessage()) {
713
- actionName = message.actionName;
714
- }
715
- return actions.find(
716
- (action) => action.name === actionName && action.available === "frontend" || action.pairedAction === actionName
717
- );
718
- }
719
-
720
- export {
721
- useChat
722
- };
723
- //# sourceMappingURL=chunk-OT5NHMEC.mjs.map