@copilotkit/react-core 1.10.7-next.0 → 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 (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 +34 -23
  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
@@ -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
+ }