@copilotkit/react-core 1.10.6 → 1.50.0-beta.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 (333) hide show
  1. package/dist/chunk-24SCZAB4.mjs +143 -0
  2. package/dist/chunk-24SCZAB4.mjs.map +1 -0
  3. package/dist/chunk-36KQV2NA.mjs +1 -0
  4. package/dist/{chunk-U7QULEVO.mjs → chunk-3GURHDG7.mjs} +3 -3
  5. package/dist/{chunk-4BHIQMN6.mjs → chunk-3R423LZT.mjs} +6 -5
  6. package/dist/{chunk-4BHIQMN6.mjs.map → chunk-3R423LZT.mjs.map} +1 -1
  7. package/dist/chunk-5X5DJRQQ.mjs +71 -0
  8. package/dist/chunk-5X5DJRQQ.mjs.map +1 -0
  9. package/dist/{chunk-N4WEHORG.mjs → chunk-6PUNP7CD.mjs} +4 -4
  10. package/dist/chunk-6PUNP7CD.mjs.map +1 -0
  11. package/dist/chunk-7BYHZLPL.mjs +32 -0
  12. package/dist/chunk-7BYHZLPL.mjs.map +1 -0
  13. package/dist/chunk-7DTB7S5V.mjs +83 -0
  14. package/dist/chunk-7DTB7S5V.mjs.map +1 -0
  15. package/dist/chunk-A6NKSGH3.mjs +1 -0
  16. package/dist/{chunk-GT5WI3AF.mjs → chunk-BR5YEYZJ.mjs} +7 -9
  17. package/dist/chunk-BR5YEYZJ.mjs.map +1 -0
  18. package/dist/chunk-CB7CRBDG.mjs +48 -0
  19. package/dist/chunk-CB7CRBDG.mjs.map +1 -0
  20. package/dist/chunk-CYDWEPFL.mjs +1 -0
  21. package/dist/{chunk-BBUQMG45.mjs → chunk-D3QSYDJR.mjs} +3 -3
  22. package/dist/{chunk-BBUQMG45.mjs.map → chunk-D3QSYDJR.mjs.map} +1 -1
  23. package/dist/chunk-DCHSCK62.mjs +549 -0
  24. package/dist/chunk-DCHSCK62.mjs.map +1 -0
  25. package/dist/{chunk-ZLQVRPDS.mjs → chunk-DMLQZG75.mjs} +1 -1
  26. package/dist/chunk-DMLQZG75.mjs.map +1 -0
  27. package/dist/chunk-F555TVE4.mjs +33 -0
  28. package/dist/chunk-F555TVE4.mjs.map +1 -0
  29. package/dist/{chunk-C6IANC2R.mjs → chunk-FBD24VEH.mjs} +7 -43
  30. package/dist/chunk-FBD24VEH.mjs.map +1 -0
  31. package/dist/chunk-FD6FGKYY.mjs +1 -0
  32. package/dist/chunk-FDOMAPJY.mjs +59 -0
  33. package/dist/chunk-FDOMAPJY.mjs.map +1 -0
  34. package/dist/{chunk-X7MJWPI7.mjs → chunk-GMI4KO4X.mjs} +8 -6
  35. package/dist/{chunk-X7MJWPI7.mjs.map → chunk-GMI4KO4X.mjs.map} +1 -1
  36. package/dist/chunk-IUSKVYUI.mjs +13 -0
  37. package/dist/chunk-IUSKVYUI.mjs.map +1 -0
  38. package/dist/chunk-JD7BAH7U.mjs +1 -0
  39. package/dist/{chunk-N5HOP3PG.mjs → chunk-JRT5BJF3.mjs} +2 -2
  40. package/dist/{chunk-N4VN2B5S.mjs → chunk-LHERIF3L.mjs} +2 -2
  41. package/dist/{chunk-DXEQPN43.mjs → chunk-LHKZJ2ND.mjs} +3 -3
  42. package/dist/chunk-NB2FKV2V.mjs +1 -0
  43. package/dist/chunk-NBK4KBLX.mjs +54 -0
  44. package/dist/chunk-NBK4KBLX.mjs.map +1 -0
  45. package/dist/chunk-NG26QEGF.mjs +46 -0
  46. package/dist/chunk-NG26QEGF.mjs.map +1 -0
  47. package/dist/chunk-NROJOTQP.mjs +163 -0
  48. package/dist/chunk-NROJOTQP.mjs.map +1 -0
  49. package/dist/{chunk-MGWRDFBE.mjs → chunk-OVYFRPSN.mjs} +2 -2
  50. package/dist/{chunk-MQYWH4E6.mjs → chunk-QU6NONOD.mjs} +2 -2
  51. package/dist/chunk-R4MR43UQ.mjs +101 -0
  52. package/dist/chunk-R4MR43UQ.mjs.map +1 -0
  53. package/dist/chunk-SPCZTZCY.mjs +1 -0
  54. package/dist/chunk-SPCZTZCY.mjs.map +1 -0
  55. package/dist/chunk-TXI72QHK.mjs +80 -0
  56. package/dist/chunk-TXI72QHK.mjs.map +1 -0
  57. package/dist/chunk-UJBV5GAG.mjs +767 -0
  58. package/dist/chunk-UJBV5GAG.mjs.map +1 -0
  59. package/dist/{chunk-OKCYPO4I.mjs → chunk-WMJVBMUX.mjs} +3 -3
  60. package/dist/{chunk-EUX2P2E7.mjs → chunk-WVLHXIFP.mjs} +11 -9
  61. package/dist/chunk-WVLHXIFP.mjs.map +1 -0
  62. package/dist/{chunk-5FHSUKQL.mjs → chunk-YYN33GSG.mjs} +5 -2
  63. package/dist/chunk-YYN33GSG.mjs.map +1 -0
  64. package/dist/chunk-ZVF5Q6IH.mjs +29 -0
  65. package/dist/chunk-ZVF5Q6IH.mjs.map +1 -0
  66. package/dist/components/CopilotListeners.d.ts +3 -0
  67. package/dist/components/CopilotListeners.js +234 -0
  68. package/dist/components/CopilotListeners.js.map +1 -0
  69. package/dist/components/CopilotListeners.mjs +14 -0
  70. package/dist/components/CopilotListeners.mjs.map +1 -0
  71. package/dist/components/copilot-provider/copilot-messages.js +14 -48
  72. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  73. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  74. package/dist/components/copilot-provider/copilotkit-props.d.ts +9 -2
  75. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  76. package/dist/components/copilot-provider/copilotkit.d.ts +2 -1
  77. package/dist/components/copilot-provider/copilotkit.js +528 -370
  78. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  79. package/dist/components/copilot-provider/copilotkit.mjs +17 -12
  80. package/dist/components/copilot-provider/index.d.ts +2 -1
  81. package/dist/components/copilot-provider/index.js +528 -370
  82. package/dist/components/copilot-provider/index.js.map +1 -1
  83. package/dist/components/copilot-provider/index.mjs +18 -12
  84. package/dist/components/dev-console/console-trigger.js +10 -8
  85. package/dist/components/dev-console/console-trigger.js.map +1 -1
  86. package/dist/components/dev-console/console-trigger.mjs +4 -4
  87. package/dist/components/dev-console/developer-console-modal.js +10 -8
  88. package/dist/components/dev-console/developer-console-modal.js.map +1 -1
  89. package/dist/components/dev-console/developer-console-modal.mjs +3 -3
  90. package/dist/components/error-boundary/error-boundary.d.ts +7 -7
  91. package/dist/components/error-boundary/error-boundary.js +3 -3
  92. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  93. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  94. package/dist/components/error-boundary/error-utils.d.ts +1 -1
  95. package/dist/components/error-boundary/error-utils.js +3 -3
  96. package/dist/components/error-boundary/error-utils.js.map +1 -1
  97. package/dist/components/error-boundary/error-utils.mjs +1 -1
  98. package/dist/components/index.d.ts +2 -1
  99. package/dist/components/index.js +528 -370
  100. package/dist/components/index.js.map +1 -1
  101. package/dist/components/index.mjs +19 -12
  102. package/dist/components/toast/exclamation-mark-icon.d.ts +2 -2
  103. package/dist/components/toast/toast-provider.d.ts +3 -3
  104. package/dist/components/usage-banner.d.ts +2 -2
  105. package/dist/context/coagent-state-renders-context.d.ts +24 -0
  106. package/dist/context/coagent-state-renders-context.js +91 -0
  107. package/dist/context/coagent-state-renders-context.js.map +1 -0
  108. package/dist/context/coagent-state-renders-context.mjs +12 -0
  109. package/dist/context/coagent-state-renders-context.mjs.map +1 -0
  110. package/dist/context/copilot-context.d.ts +1 -1
  111. package/dist/context/copilot-context.js +10 -8
  112. package/dist/context/copilot-context.js.map +1 -1
  113. package/dist/context/copilot-context.mjs +1 -1
  114. package/dist/context/copilot-messages-context.d.ts +18 -11
  115. package/dist/context/copilot-messages-context.js.map +1 -1
  116. package/dist/context/copilot-messages-context.mjs +1 -1
  117. package/dist/context/index.d.ts +6 -2
  118. package/dist/context/index.js +110 -10
  119. package/dist/context/index.js.map +1 -1
  120. package/dist/context/index.mjs +20 -4
  121. package/dist/context/threads-context.d.ts +16 -0
  122. package/dist/context/threads-context.js +59 -0
  123. package/dist/context/threads-context.js.map +1 -0
  124. package/dist/context/threads-context.mjs +12 -0
  125. package/dist/context/threads-context.mjs.map +1 -0
  126. package/dist/{copilot-context-cf9de848.d.ts → copilot-context-1cd70a3f.d.ts} +36 -32
  127. package/dist/hooks/index.d.ts +9 -6
  128. package/dist/hooks/index.js +1445 -1839
  129. package/dist/hooks/index.js.map +1 -1
  130. package/dist/hooks/index.mjs +47 -56
  131. package/dist/hooks/use-coagent-state-render-bridge.d.ts +100 -0
  132. package/dist/hooks/use-coagent-state-render-bridge.js +211 -0
  133. package/dist/hooks/use-coagent-state-render-bridge.js.map +1 -0
  134. package/dist/hooks/use-coagent-state-render-bridge.mjs +15 -0
  135. package/dist/hooks/use-coagent-state-render-bridge.mjs.map +1 -0
  136. package/dist/hooks/use-coagent-state-render.js +31 -20
  137. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  138. package/dist/hooks/use-coagent-state-render.mjs +3 -2
  139. package/dist/hooks/use-coagent.d.ts +2 -14
  140. package/dist/hooks/use-coagent.js +109 -1906
  141. package/dist/hooks/use-coagent.js.map +1 -1
  142. package/dist/hooks/use-coagent.mjs +1 -30
  143. package/dist/hooks/use-configure-chat-suggestions.d.ts +36 -0
  144. package/dist/hooks/use-configure-chat-suggestions.js +210 -0
  145. package/dist/hooks/use-configure-chat-suggestions.js.map +1 -0
  146. package/dist/hooks/use-configure-chat-suggestions.mjs +13 -0
  147. package/dist/hooks/use-configure-chat-suggestions.mjs.map +1 -0
  148. package/dist/hooks/use-copilot-action.d.ts +8 -45
  149. package/dist/hooks/use-copilot-action.js +207 -349
  150. package/dist/hooks/use-copilot-action.js.map +1 -1
  151. package/dist/hooks/use-copilot-action.mjs +4 -5
  152. package/dist/hooks/use-copilot-additional-instructions.js +10 -8
  153. package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
  154. package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
  155. package/dist/hooks/use-copilot-authenticated-action.js +224 -248
  156. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  157. package/dist/hooks/use-copilot-authenticated-action.mjs +6 -6
  158. package/dist/hooks/use-copilot-chat-headless_c.d.ts +2 -10
  159. package/dist/hooks/use-copilot-chat-headless_c.js +973 -1369
  160. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  161. package/dist/hooks/use-copilot-chat-headless_c.mjs +12 -22
  162. package/dist/hooks/use-copilot-chat.d.ts +2 -10
  163. package/dist/hooks/use-copilot-chat.js +967 -1388
  164. package/dist/hooks/use-copilot-chat.js.map +1 -1
  165. package/dist/hooks/use-copilot-chat.mjs +12 -22
  166. package/dist/hooks/use-copilot-chat_internal.d.ts +38 -14
  167. package/dist/hooks/use-copilot-chat_internal.js +965 -1362
  168. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  169. package/dist/hooks/use-copilot-chat_internal.mjs +13 -23
  170. package/dist/hooks/use-copilot-readable.d.ts +1 -1
  171. package/dist/hooks/use-copilot-readable.js +6 -157
  172. package/dist/hooks/use-copilot-readable.js.map +1 -1
  173. package/dist/hooks/use-copilot-readable.mjs +1 -2
  174. package/dist/hooks/use-default-tool.js +204 -349
  175. package/dist/hooks/use-default-tool.js.map +1 -1
  176. package/dist/hooks/use-default-tool.mjs +5 -6
  177. package/dist/hooks/use-flat-category-store.js +4 -1
  178. package/dist/hooks/use-flat-category-store.js.map +1 -1
  179. package/dist/hooks/use-flat-category-store.mjs +1 -1
  180. package/dist/hooks/use-frontend-tool.d.ts +3 -3
  181. package/dist/hooks/use-frontend-tool.js +30 -370
  182. package/dist/hooks/use-frontend-tool.js.map +1 -1
  183. package/dist/hooks/use-frontend-tool.mjs +1 -6
  184. package/dist/hooks/use-human-in-the-loop.d.ts +4 -3
  185. package/dist/hooks/use-human-in-the-loop.js +61 -393
  186. package/dist/hooks/use-human-in-the-loop.js.map +1 -1
  187. package/dist/hooks/use-human-in-the-loop.mjs +1 -6
  188. package/dist/hooks/use-langgraph-interrupt-render.d.ts +3 -2
  189. package/dist/hooks/use-langgraph-interrupt-render.js +92 -36
  190. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
  191. package/dist/hooks/use-langgraph-interrupt-render.mjs +6 -4
  192. package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
  193. package/dist/hooks/use-langgraph-interrupt.js +24 -1642
  194. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  195. package/dist/hooks/use-langgraph-interrupt.mjs +2 -23
  196. package/dist/hooks/use-lazy-tool-renderer.d.ts +6 -0
  197. package/dist/hooks/use-lazy-tool-renderer.js +53 -0
  198. package/dist/hooks/use-lazy-tool-renderer.js.map +1 -0
  199. package/dist/hooks/use-lazy-tool-renderer.mjs +8 -0
  200. package/dist/hooks/use-lazy-tool-renderer.mjs.map +1 -0
  201. package/dist/hooks/use-make-copilot-document-readable.js +11 -9
  202. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  203. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  204. package/dist/hooks/use-render-tool-call.d.ts +7 -6
  205. package/dist/hooks/use-render-tool-call.js +36 -386
  206. package/dist/hooks/use-render-tool-call.js.map +1 -1
  207. package/dist/hooks/use-render-tool-call.mjs +1 -6
  208. package/dist/index.d.ts +11 -6
  209. package/dist/index.js +1841 -2056
  210. package/dist/index.js.map +1 -1
  211. package/dist/index.mjs +82 -63
  212. package/dist/lib/copilot-task.d.ts +1 -1
  213. package/dist/lib/copilot-task.js +1 -0
  214. package/dist/lib/copilot-task.js.map +1 -1
  215. package/dist/lib/copilot-task.mjs +20 -13
  216. package/dist/lib/index.d.ts +1 -1
  217. package/dist/lib/index.js +1 -0
  218. package/dist/lib/index.js.map +1 -1
  219. package/dist/lib/index.mjs +20 -13
  220. package/dist/setupTests.d.ts +2 -2
  221. package/dist/types/frontend-action.d.ts +5 -5
  222. package/dist/types/index.d.ts +4 -0
  223. package/dist/types/index.js.map +1 -1
  224. package/dist/types/index.mjs +2 -1
  225. package/dist/types/interrupt-action.d.ts +1 -1
  226. package/dist/types/interrupt-action.js.map +1 -1
  227. package/dist/types/interrupt-action.mjs +1 -0
  228. package/dist/utils/index.d.ts +0 -12
  229. package/dist/utils/index.js +6 -325
  230. package/dist/utils/index.js.map +1 -1
  231. package/dist/utils/index.mjs +3 -23
  232. package/dist/utils/utils.js.map +1 -1
  233. package/dist/v2/index.d.ts +2 -0
  234. package/dist/v2/index.js +27 -0
  235. package/dist/v2/index.js.map +1 -0
  236. package/dist/v2/index.mjs +4 -0
  237. package/dist/v2/index.mjs.map +1 -0
  238. package/package.json +34 -23
  239. package/src/components/CopilotListeners.tsx +82 -0
  240. package/src/components/copilot-provider/copilot-messages.tsx +46 -47
  241. package/src/components/copilot-provider/copilotkit-props.tsx +8 -1
  242. package/src/components/copilot-provider/copilotkit.tsx +177 -144
  243. package/src/components/error-boundary/error-utils.tsx +3 -3
  244. package/src/context/coagent-state-renders-context.tsx +76 -0
  245. package/src/context/copilot-context.tsx +21 -21
  246. package/src/context/copilot-messages-context.tsx +3 -3
  247. package/src/context/index.ts +8 -0
  248. package/src/context/threads-context.tsx +41 -0
  249. package/src/hooks/index.ts +7 -3
  250. package/src/hooks/use-coagent-state-render-bridge.tsx +293 -0
  251. package/src/hooks/use-coagent-state-render.ts +4 -7
  252. package/src/hooks/use-coagent.ts +129 -249
  253. package/src/hooks/use-configure-chat-suggestions.tsx +85 -0
  254. package/src/hooks/use-copilot-action.ts +88 -199
  255. package/src/hooks/use-copilot-chat-headless_c.ts +2 -1
  256. package/src/hooks/use-copilot-chat.ts +4 -1
  257. package/src/hooks/use-copilot-chat_internal.ts +349 -258
  258. package/src/hooks/use-copilot-readable.ts +6 -26
  259. package/src/hooks/use-flat-category-store.ts +4 -3
  260. package/src/hooks/use-frontend-tool.ts +67 -8
  261. package/src/hooks/use-human-in-the-loop.ts +111 -13
  262. package/src/hooks/use-langgraph-interrupt-render.ts +90 -40
  263. package/src/hooks/use-langgraph-interrupt.ts +18 -47
  264. package/src/hooks/use-lazy-tool-renderer.tsx +30 -0
  265. package/src/hooks/use-make-copilot-document-readable.ts +1 -1
  266. package/src/hooks/use-render-tool-call.ts +73 -13
  267. package/src/types/index.ts +1 -0
  268. package/src/types/interrupt-action.ts +8 -4
  269. package/src/utils/index.ts +0 -3
  270. package/src/utils/utils.ts +7 -0
  271. package/src/v2/index.ts +2 -0
  272. package/src/v2/styles.css +1 -0
  273. package/tsup.config.ts +1 -1
  274. package/dist/chunk-5FHSUKQL.mjs.map +0 -1
  275. package/dist/chunk-6GPVUMBU.mjs +0 -13
  276. package/dist/chunk-6GPVUMBU.mjs.map +0 -1
  277. package/dist/chunk-AKR2SSUJ.mjs +0 -22
  278. package/dist/chunk-AKR2SSUJ.mjs.map +0 -1
  279. package/dist/chunk-C6IANC2R.mjs.map +0 -1
  280. package/dist/chunk-CI4KD357.mjs +0 -804
  281. package/dist/chunk-CI4KD357.mjs.map +0 -1
  282. package/dist/chunk-DZTU6PGS.mjs +0 -1
  283. package/dist/chunk-EUX2P2E7.mjs.map +0 -1
  284. package/dist/chunk-EVVO67QO.mjs +0 -25
  285. package/dist/chunk-EVVO67QO.mjs.map +0 -1
  286. package/dist/chunk-GT5WI3AF.mjs.map +0 -1
  287. package/dist/chunk-HDOG2RTM.mjs +0 -37
  288. package/dist/chunk-HDOG2RTM.mjs.map +0 -1
  289. package/dist/chunk-N4WEHORG.mjs.map +0 -1
  290. package/dist/chunk-OT5NHMEC.mjs +0 -723
  291. package/dist/chunk-OT5NHMEC.mjs.map +0 -1
  292. package/dist/chunk-QHCLJODF.mjs +0 -332
  293. package/dist/chunk-QHCLJODF.mjs.map +0 -1
  294. package/dist/chunk-QV5SBF2S.mjs +0 -239
  295. package/dist/chunk-QV5SBF2S.mjs.map +0 -1
  296. package/dist/chunk-T3376SZS.mjs +0 -142
  297. package/dist/chunk-T3376SZS.mjs.map +0 -1
  298. package/dist/chunk-U3DQY67T.mjs +0 -71
  299. package/dist/chunk-U3DQY67T.mjs.map +0 -1
  300. package/dist/chunk-YPBKY4KY.mjs +0 -1
  301. package/dist/chunk-YPSGKPDA.mjs +0 -1
  302. package/dist/chunk-ZLQVRPDS.mjs.map +0 -1
  303. package/dist/chunk-ZVOLWJCY.mjs +0 -47
  304. package/dist/chunk-ZVOLWJCY.mjs.map +0 -1
  305. package/dist/hooks/use-chat.d.ts +0 -145
  306. package/dist/hooks/use-chat.js +0 -1129
  307. package/dist/hooks/use-chat.js.map +0 -1
  308. package/dist/hooks/use-chat.mjs +0 -14
  309. package/dist/index-1f5b66ac.d.ts +0 -36
  310. package/dist/utils/extract.d.ts +0 -43
  311. package/dist/utils/extract.js +0 -208
  312. package/dist/utils/extract.js.map +0 -1
  313. package/dist/utils/extract.mjs +0 -25
  314. package/dist/utils/suggestions.d.ts +0 -11
  315. package/dist/utils/suggestions.js +0 -343
  316. package/dist/utils/suggestions.js.map +0 -1
  317. package/dist/utils/suggestions.mjs +0 -25
  318. package/src/hooks/use-chat.ts +0 -1142
  319. package/src/utils/extract.ts +0 -215
  320. package/src/utils/suggestions.ts +0 -208
  321. /package/dist/{chunk-DZTU6PGS.mjs.map → chunk-36KQV2NA.mjs.map} +0 -0
  322. /package/dist/{chunk-U7QULEVO.mjs.map → chunk-3GURHDG7.mjs.map} +0 -0
  323. /package/dist/{chunk-YPBKY4KY.mjs.map → chunk-A6NKSGH3.mjs.map} +0 -0
  324. /package/dist/{chunk-YPSGKPDA.mjs.map → chunk-CYDWEPFL.mjs.map} +0 -0
  325. /package/dist/{hooks/use-chat.mjs.map → chunk-FD6FGKYY.mjs.map} +0 -0
  326. /package/dist/{utils/extract.mjs.map → chunk-JD7BAH7U.mjs.map} +0 -0
  327. /package/dist/{chunk-N5HOP3PG.mjs.map → chunk-JRT5BJF3.mjs.map} +0 -0
  328. /package/dist/{chunk-N4VN2B5S.mjs.map → chunk-LHERIF3L.mjs.map} +0 -0
  329. /package/dist/{chunk-DXEQPN43.mjs.map → chunk-LHKZJ2ND.mjs.map} +0 -0
  330. /package/dist/{utils/suggestions.mjs.map → chunk-NB2FKV2V.mjs.map} +0 -0
  331. /package/dist/{chunk-MGWRDFBE.mjs.map → chunk-OVYFRPSN.mjs.map} +0 -0
  332. /package/dist/{chunk-MQYWH4E6.mjs.map → chunk-QU6NONOD.mjs.map} +0 -0
  333. /package/dist/{chunk-OKCYPO4I.mjs.map → chunk-WMJVBMUX.mjs.map} +0 -0
@@ -88,17 +88,10 @@
88
88
  * </PropertyReference>
89
89
  */
90
90
 
91
- import { useCallback, useEffect, useMemo, useRef } from "react";
92
- import { CopilotContextParams, useCopilotContext } from "../context";
93
- import { CoagentState } from "../types/coagent-state";
94
- import { useCopilotChat } from "./use-copilot-chat_internal";
91
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
95
92
  import { Message } from "@copilotkit/shared";
96
- import { useAsyncCallback } from "../components/error-boundary/error-utils";
97
- import { useToast } from "../components/toast/toast-provider";
98
- import { useCopilotRuntimeClient } from "./use-copilot-runtime-client";
99
- import { parseJson, CopilotKitAgentDiscoveryError } from "@copilotkit/shared";
100
- import { useMessagesTap } from "../components/copilot-provider/copilot-messages";
101
- import { Message as GqlMessage } from "@copilotkit/runtime-client-gql";
93
+ import { useAgent } from "@copilotkitnext/react";
94
+ import { type AgentSubscriber } from "@ag-ui/client";
102
95
 
103
96
  interface UseCoagentOptionsBase {
104
97
  /**
@@ -186,7 +179,7 @@ export interface UseCoagentReturnType<T> {
186
179
  * A function to re-run the agent. The hint function can be used to provide a hint to the agent
187
180
  * about why it is being re-run again.
188
181
  */
189
- run: (hint?: HintFunction) => Promise<void>;
182
+ run: (...args: any[]) => Promise<any>;
190
183
  }
191
184
 
192
185
  export interface HintFunctionParams {
@@ -209,230 +202,152 @@ export type HintFunction = (params: HintFunctionParams) => Message | undefined;
209
202
  * we refer to as CoAgents, checkout the documentation at https://docs.copilotkit.ai/coagents/quickstart/langgraph.
210
203
  */
211
204
  export function useCoAgent<T = any>(options: UseCoagentOptions<T>): UseCoagentReturnType<T> {
212
- const context = useCopilotContext();
213
- const { availableAgents, onError } = context;
214
- const { setBannerError } = useToast();
215
- const lastLoadedThreadId = useRef<string>();
216
- const lastLoadedState = useRef<any>();
205
+ const { agent } = useAgent({ agentId: options.name });
206
+ const nodeNameRef = useRef<string>("start");
217
207
 
218
- const { name } = options;
219
- useEffect(() => {
220
- if (availableAgents?.length && !availableAgents.some((a) => a.name === name)) {
221
- const message = `(useCoAgent): Agent "${name}" not found. Make sure the agent exists and is properly configured.`;
222
- console.warn(message);
223
-
224
- // Route to banner instead of toast for consistency
225
- const agentError = new CopilotKitAgentDiscoveryError({
226
- agentName: name,
227
- availableAgents: availableAgents.map((a) => ({ name: a.name, id: a.id })),
228
- });
229
- setBannerError(agentError);
230
- }
231
- }, [availableAgents]);
232
-
233
- const { getMessagesFromTap } = useMessagesTap();
234
-
235
- const { coagentStates, coagentStatesRef, setCoagentStatesWithRef, threadId, copilotApiConfig } =
236
- context;
237
- const { sendMessage, runChatCompletion } = useCopilotChat();
238
- const headers = {
239
- ...(copilotApiConfig.headers || {}),
240
- };
241
-
242
- const runtimeClient = useCopilotRuntimeClient({
243
- url: copilotApiConfig.chatApiEndpoint,
244
- publicApiKey: copilotApiConfig.publicApiKey,
245
- headers,
246
- credentials: copilotApiConfig.credentials,
247
- showDevConsole: context.showDevConsole,
248
- onError,
249
- });
250
-
251
- // if we manage state internally, we need to provide a function to set the state
252
- const setState = useCallback(
208
+ const handleStateUpdate = useCallback(
253
209
  (newState: T | ((prevState: T | undefined) => T)) => {
254
- // coagentStatesRef.current || {}
255
- let coagentState: CoagentState = getCoagentState({ coagentStates, name, options });
256
- const updatedState =
257
- typeof newState === "function" ? (newState as Function)(coagentState.state) : newState;
210
+ if (!agent) return;
258
211
 
259
- setCoagentStatesWithRef({
260
- ...coagentStatesRef.current,
261
- [name]: {
262
- ...coagentState,
263
- state: updatedState,
264
- },
265
- });
212
+ if (typeof newState === "function") {
213
+ const updater = newState as (prevState: T | undefined) => T;
214
+ agent.setState(updater(agent.state));
215
+ } else {
216
+ agent.setState({ ...agent.state, ...newState });
217
+ }
266
218
  },
267
- [coagentStates, name],
219
+ [agent?.state, agent?.setState],
268
220
  );
269
221
 
270
- useEffect(() => {
271
- const fetchAgentState = async () => {
272
- if (!threadId || threadId === lastLoadedThreadId.current) return;
273
-
274
- const result = await runtimeClient.loadAgentState({
275
- threadId,
276
- agentName: name,
277
- });
278
-
279
- // Runtime client handles errors automatically via handleGQLErrors
280
- if (result.error) {
281
- return; // Don't process data on error
282
- }
283
-
284
- const newState = result.data?.loadAgentState?.state;
285
- if (newState === lastLoadedState.current) return;
286
-
287
- if (result.data?.loadAgentState?.threadExists && newState && newState != "{}") {
288
- lastLoadedState.current = newState;
289
- lastLoadedThreadId.current = threadId;
290
- const fetchedState = parseJson(newState, {});
291
- isExternalStateManagement(options)
292
- ? options.setState(fetchedState)
293
- : setState(fetchedState);
294
- }
295
- };
296
- void fetchAgentState();
297
- }, [threadId]);
222
+ const externalStateStr = useMemo(
223
+ () => (isExternalStateManagement(options) ? JSON.stringify(options.state) : undefined),
224
+ [isExternalStateManagement(options) ? JSON.stringify(options.state) : undefined],
225
+ );
298
226
 
299
227
  // Sync internal state with external state if state management is external
228
+ useEffect(() => {
229
+ if (
230
+ agent?.state &&
231
+ isExternalStateManagement(options) &&
232
+ JSON.stringify(options.state) !== JSON.stringify(agent.state)
233
+ ) {
234
+ handleStateUpdate(options.state);
235
+ }
236
+ }, [agent, externalStateStr, handleStateUpdate]);
237
+
238
+ const hasStateValues = useCallback((value?: Record<string, any>) => {
239
+ return Boolean(value && Object.keys(value).length);
240
+ }, []);
241
+
242
+ const initialStateRef = useRef<any>(
243
+ isExternalStateManagement(options)
244
+ ? options.state
245
+ : "initialState" in options
246
+ ? options.initialState
247
+ : undefined,
248
+ );
249
+
300
250
  useEffect(() => {
301
251
  if (isExternalStateManagement(options)) {
302
- setState(options.state);
303
- } else if (coagentStates[name] === undefined) {
304
- setState(options.initialState === undefined ? {} : options.initialState);
252
+ initialStateRef.current = options.state;
253
+ } else if ("initialState" in options) {
254
+ initialStateRef.current = options.initialState;
305
255
  }
306
256
  }, [
307
- isExternalStateManagement(options) ? JSON.stringify(options.state) : undefined,
308
- // reset initialstate on reset
309
- coagentStates[name] === undefined,
257
+ isExternalStateManagement(options)
258
+ ? JSON.stringify(options.state)
259
+ : "initialState" in options
260
+ ? JSON.stringify(options.initialState)
261
+ : undefined,
310
262
  ]);
311
263
 
312
- // Sync config when runtime configuration changes
313
264
  useEffect(() => {
314
- const newConfig = options.config
315
- ? options.config
316
- : options.configurable
317
- ? { configurable: options.configurable }
318
- : undefined;
319
-
320
- if (newConfig === undefined) return;
321
-
322
- setCoagentStatesWithRef((prev) => {
323
- const existing = prev[name] ?? {
324
- name,
325
- state: isInternalStateManagementWithInitial(options) ? options.initialState : {},
326
- config: {},
327
- running: false,
328
- active: false,
329
- threadId: undefined,
330
- nodeName: undefined,
331
- runId: undefined,
332
- };
333
-
334
- if (JSON.stringify(existing.config) === JSON.stringify(newConfig)) {
335
- return prev;
336
- }
337
-
338
- return {
339
- ...prev,
340
- [name]: {
341
- ...existing,
342
- config: newConfig,
343
- },
344
- };
345
- });
346
- }, [JSON.stringify(options.config), JSON.stringify(options.configurable)]);
347
-
348
- const runAgentCallback = useAsyncCallback(
349
- async (hint?: HintFunction) => {
350
- await runAgent(name, context, getMessagesFromTap(), sendMessage, runChatCompletion, hint);
351
- },
352
- [name, context, sendMessage, runChatCompletion],
353
- );
354
-
355
- // Return the state and setState function
356
- return useMemo(() => {
357
- const coagentState = getCoagentState({ coagentStates, name, options });
358
- return {
359
- name,
360
- nodeName: coagentState.nodeName,
361
- threadId: coagentState.threadId,
362
- running: coagentState.running,
363
- state: coagentState.state,
364
- setState: isExternalStateManagement(options) ? options.setState : setState,
365
- start: () => startAgent(name, context),
366
- stop: () => stopAgent(name, context),
367
- run: runAgentCallback,
265
+ if (!agent) return;
266
+ const subscriber: AgentSubscriber = {
267
+ onStateChanged: (args: any) => {
268
+ if (isExternalStateManagement(options)) {
269
+ options.setState(args.state);
270
+ }
271
+ },
272
+ onRunInitialized: (args: any) => {
273
+ const runHasState = hasStateValues(args.state);
274
+ if (runHasState) {
275
+ handleStateUpdate(args.state);
276
+ return;
277
+ }
278
+
279
+ if (hasStateValues(agent.state)) {
280
+ return;
281
+ }
282
+
283
+ if (initialStateRef.current !== undefined) {
284
+ handleStateUpdate(initialStateRef.current);
285
+ }
286
+ },
287
+ onStepStartedEvent: ({ event }) => {
288
+ nodeNameRef.current = event.stepName;
289
+ },
290
+ onRunStartedEvent: () => {
291
+ nodeNameRef.current = "start";
292
+ },
293
+ onRunFinishedEvent: () => {
294
+ nodeNameRef.current = "end";
295
+ },
368
296
  };
369
- }, [name, coagentStates, options, setState, runAgentCallback]);
370
- }
371
297
 
372
- export function startAgent(name: string, context: CopilotContextParams) {
373
- const { setAgentSession } = context;
374
- setAgentSession({
375
- agentName: name,
376
- });
377
- }
378
-
379
- export function stopAgent(name: string, context: CopilotContextParams) {
380
- const { agentSession, setAgentSession } = context;
381
- if (agentSession && agentSession.agentName === name) {
382
- setAgentSession(null);
383
- context.setCoagentStates((prevAgentStates) => {
298
+ const subscription = agent.subscribe(subscriber);
299
+ return () => {
300
+ subscription.unsubscribe();
301
+ };
302
+ }, [agent, handleStateUpdate, hasStateValues]);
303
+
304
+ // Return a consistent shape whether or not the agent is available
305
+ return useMemo<UseCoagentReturnType<T>>(() => {
306
+ if (!agent) {
307
+ const noop = () => {};
308
+ const noopAsync = async () => {};
309
+ const initialState =
310
+ // prefer externally provided state if available
311
+ ("state" in options && (options as any).state) ??
312
+ // then initialState if provided
313
+ ("initialState" in options && (options as any).initialState) ??
314
+ ({} as T);
384
315
  return {
385
- ...prevAgentStates,
386
- [name]: {
387
- ...prevAgentStates[name],
388
- running: false,
389
- active: false,
390
- threadId: undefined,
391
- nodeName: undefined,
392
- runId: undefined,
393
- },
316
+ name: options.name,
317
+ nodeName: nodeNameRef.current,
318
+ threadId: undefined,
319
+ running: false,
320
+ state: initialState as T,
321
+ setState: noop,
322
+ start: noop,
323
+ stop: noop,
324
+ run: noopAsync,
394
325
  };
395
- });
396
- } else {
397
- console.warn(`No agent session found for ${name}`);
398
- }
399
- }
400
-
401
- export async function runAgent(
402
- name: string,
403
- context: CopilotContextParams,
404
- messages: GqlMessage[],
405
- sendMessage: (message: Message) => Promise<void>,
406
- runChatCompletion: () => Promise<Message[]>,
407
- hint?: HintFunction,
408
- ) {
409
- const { agentSession, setAgentSession } = context;
410
- if (!agentSession || agentSession.agentName !== name) {
411
- setAgentSession({
412
- agentName: name,
413
- });
414
- }
415
-
416
- let previousState: any = null;
417
- for (let i = messages.length - 1; i >= 0; i--) {
418
- const message = messages[i];
419
- if (message.isAgentStateMessage() && message.agentName === name) {
420
- previousState = message.state;
421
326
  }
422
- }
423
-
424
- let state = context.coagentStatesRef.current?.[name]?.state || {};
425
327
 
426
- if (hint) {
427
- const hintMessage = hint({ previousState, currentState: state });
428
- if (hintMessage) {
429
- await sendMessage(hintMessage);
430
- } else {
431
- await runChatCompletion();
432
- }
433
- } else {
434
- await runChatCompletion();
435
- }
328
+ return {
329
+ name: agent?.agentId ?? options.name,
330
+ nodeName: nodeNameRef.current,
331
+ threadId: agent.threadId,
332
+ running: agent.isRunning,
333
+ state: agent.state,
334
+ setState: handleStateUpdate,
335
+ // TODO: start and run both have same thing. need to figure out
336
+ start: agent.runAgent,
337
+ stop: agent.abortRun,
338
+ run: agent.runAgent,
339
+ };
340
+ }, [
341
+ agent?.state,
342
+ agent?.runAgent,
343
+ agent?.abortRun,
344
+ agent?.runAgent,
345
+ agent?.threadId,
346
+ agent?.isRunning,
347
+ agent?.agentId,
348
+ handleStateUpdate,
349
+ options.name,
350
+ ]);
436
351
  }
437
352
 
438
353
  const isExternalStateManagement = <T>(
@@ -440,38 +355,3 @@ const isExternalStateManagement = <T>(
440
355
  ): options is WithExternalStateManagement<T> => {
441
356
  return "state" in options && "setState" in options;
442
357
  };
443
-
444
- const isInternalStateManagementWithInitial = <T>(
445
- options: UseCoagentOptions<T>,
446
- ): options is WithInternalStateManagementAndInitial<T> => {
447
- return "initialState" in options;
448
- };
449
-
450
- const getCoagentState = <T>({
451
- coagentStates,
452
- name,
453
- options,
454
- }: {
455
- coagentStates: Record<string, CoagentState>;
456
- name: string;
457
- options: UseCoagentOptions<T>;
458
- }) => {
459
- if (coagentStates[name]) {
460
- return coagentStates[name];
461
- } else {
462
- return {
463
- name,
464
- state: isInternalStateManagementWithInitial<T>(options) ? options.initialState : {},
465
- config: options.config
466
- ? options.config
467
- : options.configurable
468
- ? { configurable: options.configurable }
469
- : {},
470
- running: false,
471
- active: false,
472
- threadId: undefined,
473
- nodeName: undefined,
474
- runId: undefined,
475
- };
476
- }
477
- };
@@ -0,0 +1,85 @@
1
+ import {
2
+ useConfigureSuggestions,
3
+ useCopilotChatConfiguration,
4
+ useCopilotKit,
5
+ useSuggestions,
6
+ } from "@copilotkitnext/react";
7
+ import { StaticSuggestionsConfig, Suggestion } from "@copilotkitnext/core";
8
+ import { useCopilotContext } from "../context";
9
+ import { useEffect, useMemo } from "react";
10
+
11
+ type StaticSuggestionInput = Omit<Suggestion, "isLoading"> & Partial<Pick<Suggestion, "isLoading">>;
12
+
13
+ type StaticSuggestionsConfigInput = Omit<StaticSuggestionsConfig, "suggestions"> & {
14
+ suggestions: StaticSuggestionInput[];
15
+ };
16
+
17
+ type DynamicSuggestionsConfigInput = {
18
+ /**
19
+ * A prompt or instructions for the GPT to generate suggestions.
20
+ */
21
+ instructions: string;
22
+ /**
23
+ * The minimum number of suggestions to generate. Defaults to `1`.
24
+ * @default 1
25
+ */
26
+ minSuggestions?: number;
27
+ /**
28
+ * The maximum number of suggestions to generate. Defaults to `3`.
29
+ * @default 1
30
+ */
31
+ maxSuggestions?: number;
32
+
33
+ /**
34
+ * Whether the suggestions are available. Defaults to `enabled`.
35
+ * @default enabled
36
+ */
37
+ available?: "enabled" | "disabled" | "always" | "before-first-message" | "after-first-message";
38
+
39
+ /**
40
+ * An optional class name to apply to the suggestions.
41
+ */
42
+ className?: string;
43
+ };
44
+
45
+ export type UseCopilotChatSuggestionsConfiguration =
46
+ | DynamicSuggestionsConfigInput
47
+ | StaticSuggestionsConfigInput;
48
+
49
+ export function useConfigureChatSuggestions(
50
+ config: UseCopilotChatSuggestionsConfiguration,
51
+ dependencies: any[] = [],
52
+ ): ReturnType<typeof useSuggestions> {
53
+ const { agentSession } = useCopilotContext();
54
+ const { copilotkit } = useCopilotKit();
55
+
56
+ const available = config.available === "enabled" ? "always" : config.available;
57
+
58
+ const finalSuggestionConfig = {
59
+ ...config,
60
+ available,
61
+ consumerAgentId: agentSession?.agentName, // Use chatConfig.agentId here
62
+ };
63
+ useConfigureSuggestions(finalSuggestionConfig, { deps: dependencies });
64
+
65
+ const result = useSuggestions({ agentId: agentSession?.agentName });
66
+
67
+ useEffect(() => {
68
+ if (finalSuggestionConfig.available === "disabled") return;
69
+ const subscription = copilotkit.subscribe({
70
+ onAgentsChanged: () => {
71
+ // When agents change, check if our target agent now exists and reload
72
+ const agent = copilotkit.getAgent(agentSession?.agentName!);
73
+ if (agent && !agent.isRunning && !result.suggestions.length) {
74
+ copilotkit.reloadSuggestions(agentSession?.agentName!);
75
+ }
76
+ },
77
+ });
78
+
79
+ return () => {
80
+ subscription.unsubscribe();
81
+ };
82
+ }, []);
83
+
84
+ return result;
85
+ }