@copilotkit/react-core 0.0.0-fix-debug-infosys-20251107162427 → 0.0.0-fix-restore-handle-method-node-http-20260105204107

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 (355) hide show
  1. package/CHANGELOG.md +309 -4
  2. package/dist/chunk-36KQV2NA.mjs +1 -0
  3. package/dist/{chunk-OKCYPO4I.mjs → chunk-3MHWEKFN.mjs} +5 -5
  4. package/dist/chunk-4RRMC7L2.mjs +32 -0
  5. package/dist/chunk-4RRMC7L2.mjs.map +1 -0
  6. package/dist/{chunk-E3624YDU.mjs → chunk-53K6WNJG.mjs} +8 -6
  7. package/dist/{chunk-E3624YDU.mjs.map → chunk-53K6WNJG.mjs.map} +1 -1
  8. package/dist/{chunk-N4WEHORG.mjs → chunk-6PUNP7CD.mjs} +4 -4
  9. package/dist/chunk-6PUNP7CD.mjs.map +1 -0
  10. package/dist/chunk-7DTB7S5V.mjs +83 -0
  11. package/dist/chunk-7DTB7S5V.mjs.map +1 -0
  12. package/dist/{chunk-BBUQMG45.mjs → chunk-7IBF6RBW.mjs} +3 -3
  13. package/dist/{chunk-BBUQMG45.mjs.map → chunk-7IBF6RBW.mjs.map} +1 -1
  14. package/dist/chunk-A6NKSGH3.mjs +1 -0
  15. package/dist/{chunk-MGWRDFBE.mjs → chunk-ABWT4DRT.mjs} +2 -2
  16. package/dist/{chunk-EUX2P2E7.mjs → chunk-AFNWX62Q.mjs} +11 -9
  17. package/dist/chunk-AFNWX62Q.mjs.map +1 -0
  18. package/dist/{chunk-MQYWH4E6.mjs → chunk-BUSWSDYO.mjs} +2 -2
  19. package/dist/chunk-CDUIA2WM.mjs +60 -0
  20. package/dist/chunk-CDUIA2WM.mjs.map +1 -0
  21. package/dist/chunk-CYDWEPFL.mjs +1 -0
  22. package/dist/{chunk-ZLQVRPDS.mjs → chunk-DMLQZG75.mjs} +1 -1
  23. package/dist/chunk-DMLQZG75.mjs.map +1 -0
  24. package/dist/{chunk-U7QULEVO.mjs → chunk-E7SE25ZU.mjs} +3 -3
  25. package/dist/chunk-F555TVE4.mjs +33 -0
  26. package/dist/chunk-F555TVE4.mjs.map +1 -0
  27. package/dist/chunk-FD6FGKYY.mjs +1 -0
  28. package/dist/chunk-FDOMAPJY.mjs +59 -0
  29. package/dist/chunk-FDOMAPJY.mjs.map +1 -0
  30. package/dist/{chunk-OAGAFMUM.mjs → chunk-FQFXYAV7.mjs} +6 -5
  31. package/dist/{chunk-OAGAFMUM.mjs.map → chunk-FQFXYAV7.mjs.map} +1 -1
  32. package/dist/chunk-GPEJNVE5.mjs +80 -0
  33. package/dist/chunk-GPEJNVE5.mjs.map +1 -0
  34. package/dist/chunk-I76HKHPJ.mjs +32 -0
  35. package/dist/chunk-I76HKHPJ.mjs.map +1 -0
  36. package/dist/{chunk-C6IANC2R.mjs → chunk-INPM7YKW.mjs} +9 -45
  37. package/dist/chunk-INPM7YKW.mjs.map +1 -0
  38. package/dist/chunk-JD7BAH7U.mjs +1 -0
  39. package/dist/chunk-LSHFN2Y5.mjs +349 -0
  40. package/dist/chunk-LSHFN2Y5.mjs.map +1 -0
  41. package/dist/chunk-NB2FKV2V.mjs +1 -0
  42. package/dist/chunk-NBK4KBLX.mjs +54 -0
  43. package/dist/chunk-NBK4KBLX.mjs.map +1 -0
  44. package/dist/chunk-QNUAXSDP.mjs +166 -0
  45. package/dist/chunk-QNUAXSDP.mjs.map +1 -0
  46. package/dist/chunk-RB2TXKFP.mjs +551 -0
  47. package/dist/chunk-RB2TXKFP.mjs.map +1 -0
  48. package/dist/{chunk-EDBI5PCJ.mjs → chunk-RW2Y52HO.mjs} +2 -2
  49. package/dist/chunk-RW2Y52HO.mjs.map +1 -0
  50. package/dist/{chunk-N4VN2B5S.mjs → chunk-SNON4QA6.mjs} +4 -4
  51. package/dist/chunk-SPCZTZCY.mjs +1 -0
  52. package/dist/chunk-SPCZTZCY.mjs.map +1 -0
  53. package/dist/chunk-VV56AVPB.mjs +125 -0
  54. package/dist/chunk-VV56AVPB.mjs.map +1 -0
  55. package/dist/chunk-WF65O6HX.mjs +66 -0
  56. package/dist/chunk-WF65O6HX.mjs.map +1 -0
  57. package/dist/chunk-XDFVCQD3.mjs +27 -0
  58. package/dist/chunk-XDFVCQD3.mjs.map +1 -0
  59. package/dist/{chunk-GT5WI3AF.mjs → chunk-YTQHRJUA.mjs} +7 -9
  60. package/dist/chunk-YTQHRJUA.mjs.map +1 -0
  61. package/dist/{chunk-5FHSUKQL.mjs → chunk-YYN33GSG.mjs} +5 -2
  62. package/dist/chunk-YYN33GSG.mjs.map +1 -0
  63. package/dist/chunk-Z6JV2LRY.mjs +37 -0
  64. package/dist/chunk-Z6JV2LRY.mjs.map +1 -0
  65. package/dist/chunk-ZVF5Q6IH.mjs +29 -0
  66. package/dist/chunk-ZVF5Q6IH.mjs.map +1 -0
  67. package/dist/chunk-ZYTXB6HH.mjs +151 -0
  68. package/dist/chunk-ZYTXB6HH.mjs.map +1 -0
  69. package/dist/components/CopilotListeners.d.ts +3 -0
  70. package/dist/components/CopilotListeners.js +101 -0
  71. package/dist/components/CopilotListeners.js.map +1 -0
  72. package/dist/components/CopilotListeners.mjs +9 -0
  73. package/dist/components/CopilotListeners.mjs.map +1 -0
  74. package/dist/components/copilot-provider/copilot-messages.js +14 -48
  75. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  76. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  77. package/dist/components/copilot-provider/copilotkit-props.d.ts +15 -2
  78. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  79. package/dist/components/copilot-provider/copilotkit.d.ts +2 -1
  80. package/dist/components/copilot-provider/copilotkit.js +491 -1361
  81. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  82. package/dist/components/copilot-provider/copilotkit.mjs +15 -13
  83. package/dist/components/copilot-provider/index.d.ts +2 -1
  84. package/dist/components/copilot-provider/index.js +491 -1361
  85. package/dist/components/copilot-provider/index.js.map +1 -1
  86. package/dist/components/copilot-provider/index.mjs +16 -13
  87. package/dist/components/dev-console/console-trigger.js +10 -8
  88. package/dist/components/dev-console/console-trigger.js.map +1 -1
  89. package/dist/components/dev-console/console-trigger.mjs +226 -6
  90. package/dist/components/dev-console/console-trigger.mjs.map +1 -1
  91. package/dist/components/dev-console/developer-console-modal.js +10 -8
  92. package/dist/components/dev-console/developer-console-modal.js.map +1 -1
  93. package/dist/components/dev-console/developer-console-modal.mjs +3 -3
  94. package/dist/components/error-boundary/error-boundary.d.ts +7 -7
  95. package/dist/components/error-boundary/error-boundary.js +3 -3
  96. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  97. package/dist/components/error-boundary/error-boundary.mjs +3 -3
  98. package/dist/components/error-boundary/error-utils.d.ts +1 -1
  99. package/dist/components/error-boundary/error-utils.js +3 -3
  100. package/dist/components/error-boundary/error-utils.js.map +1 -1
  101. package/dist/components/error-boundary/error-utils.mjs +1 -1
  102. package/dist/components/index.d.ts +2 -1
  103. package/dist/components/index.js +491 -1361
  104. package/dist/components/index.js.map +1 -1
  105. package/dist/components/index.mjs +17 -13
  106. package/dist/components/toast/exclamation-mark-icon.d.ts +2 -2
  107. package/dist/components/toast/toast-provider.d.ts +3 -3
  108. package/dist/components/usage-banner.d.ts +2 -2
  109. package/dist/context/coagent-state-renders-context.d.ts +24 -0
  110. package/dist/context/coagent-state-renders-context.js +91 -0
  111. package/dist/context/coagent-state-renders-context.js.map +1 -0
  112. package/dist/context/coagent-state-renders-context.mjs +12 -0
  113. package/dist/context/coagent-state-renders-context.mjs.map +1 -0
  114. package/dist/context/copilot-context.d.ts +1 -1
  115. package/dist/context/copilot-context.js +10 -8
  116. package/dist/context/copilot-context.js.map +1 -1
  117. package/dist/context/copilot-context.mjs +1 -1
  118. package/dist/context/copilot-messages-context.d.ts +18 -11
  119. package/dist/context/copilot-messages-context.js.map +1 -1
  120. package/dist/context/copilot-messages-context.mjs +1 -1
  121. package/dist/context/index.d.ts +6 -2
  122. package/dist/context/index.js +110 -10
  123. package/dist/context/index.js.map +1 -1
  124. package/dist/context/index.mjs +23 -7
  125. package/dist/context/threads-context.d.ts +16 -0
  126. package/dist/context/threads-context.js +59 -0
  127. package/dist/context/threads-context.js.map +1 -0
  128. package/dist/context/threads-context.mjs +12 -0
  129. package/dist/context/threads-context.mjs.map +1 -0
  130. package/dist/{copilot-context-cf9de848.d.ts → copilot-context-ec77e921.d.ts} +36 -32
  131. package/dist/hooks/index.d.ts +9 -6
  132. package/dist/hooks/index.js +1109 -1841
  133. package/dist/hooks/index.js.map +1 -1
  134. package/dist/hooks/index.mjs +45 -53
  135. package/dist/hooks/use-agent-nodename.d.ts +3 -0
  136. package/dist/hooks/use-agent-nodename.js +56 -0
  137. package/dist/hooks/use-agent-nodename.js.map +1 -0
  138. package/dist/hooks/use-agent-nodename.mjs +8 -0
  139. package/dist/hooks/use-agent-nodename.mjs.map +1 -0
  140. package/dist/hooks/use-coagent-state-render-bridge.d.ts +100 -0
  141. package/dist/hooks/use-coagent-state-render-bridge.js +214 -0
  142. package/dist/hooks/use-coagent-state-render-bridge.js.map +1 -0
  143. package/dist/hooks/use-coagent-state-render-bridge.mjs +15 -0
  144. package/dist/hooks/use-coagent-state-render-bridge.mjs.map +1 -0
  145. package/dist/hooks/use-coagent-state-render.js +31 -20
  146. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  147. package/dist/hooks/use-coagent-state-render.mjs +3 -2
  148. package/dist/hooks/use-coagent.d.ts +2 -14
  149. package/dist/hooks/use-coagent.js +138 -1898
  150. package/dist/hooks/use-coagent.js.map +1 -1
  151. package/dist/hooks/use-coagent.mjs +2 -30
  152. package/dist/hooks/use-configure-chat-suggestions.d.ts +36 -0
  153. package/dist/hooks/use-configure-chat-suggestions.js +79 -0
  154. package/dist/hooks/use-configure-chat-suggestions.js.map +1 -0
  155. package/dist/hooks/use-configure-chat-suggestions.mjs +47 -0
  156. package/dist/hooks/use-configure-chat-suggestions.mjs.map +1 -0
  157. package/dist/hooks/use-copilot-action.d.ts +8 -45
  158. package/dist/hooks/use-copilot-action.js +219 -349
  159. package/dist/hooks/use-copilot-action.js.map +1 -1
  160. package/dist/hooks/use-copilot-action.mjs +4 -5
  161. package/dist/hooks/use-copilot-additional-instructions.js +10 -8
  162. package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
  163. package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
  164. package/dist/hooks/use-copilot-authenticated-action.js +236 -248
  165. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  166. package/dist/hooks/use-copilot-authenticated-action.mjs +6 -6
  167. package/dist/hooks/use-copilot-chat-headless_c.d.ts +2 -10
  168. package/dist/hooks/use-copilot-chat-headless_c.js +585 -1374
  169. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  170. package/dist/hooks/use-copilot-chat-headless_c.mjs +12 -22
  171. package/dist/hooks/use-copilot-chat-suggestions.d.ts +35 -0
  172. package/dist/hooks/use-copilot-chat-suggestions.js +60 -0
  173. package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -0
  174. package/dist/hooks/use-copilot-chat-suggestions.mjs +8 -0
  175. package/dist/hooks/use-copilot-chat-suggestions.mjs.map +1 -0
  176. package/dist/hooks/use-copilot-chat.d.ts +2 -10
  177. package/dist/hooks/use-copilot-chat.js +579 -1393
  178. package/dist/hooks/use-copilot-chat.js.map +1 -1
  179. package/dist/hooks/use-copilot-chat.mjs +12 -22
  180. package/dist/hooks/use-copilot-chat_internal.d.ts +77 -14
  181. package/dist/hooks/use-copilot-chat_internal.js +577 -1367
  182. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  183. package/dist/hooks/use-copilot-chat_internal.mjs +13 -23
  184. package/dist/hooks/use-copilot-readable.d.ts +1 -1
  185. package/dist/hooks/use-copilot-readable.js +25 -152
  186. package/dist/hooks/use-copilot-readable.js.map +1 -1
  187. package/dist/hooks/use-copilot-readable.mjs +1 -2
  188. package/dist/hooks/use-default-tool.js +216 -349
  189. package/dist/hooks/use-default-tool.js.map +1 -1
  190. package/dist/hooks/use-default-tool.mjs +5 -6
  191. package/dist/hooks/use-flat-category-store.js +4 -1
  192. package/dist/hooks/use-flat-category-store.js.map +1 -1
  193. package/dist/hooks/use-flat-category-store.mjs +1 -1
  194. package/dist/hooks/use-frontend-tool.d.ts +3 -3
  195. package/dist/hooks/use-frontend-tool.js +42 -370
  196. package/dist/hooks/use-frontend-tool.js.map +1 -1
  197. package/dist/hooks/use-frontend-tool.mjs +1 -6
  198. package/dist/hooks/use-human-in-the-loop.d.ts +4 -3
  199. package/dist/hooks/use-human-in-the-loop.js +61 -393
  200. package/dist/hooks/use-human-in-the-loop.js.map +1 -1
  201. package/dist/hooks/use-human-in-the-loop.mjs +1 -6
  202. package/dist/hooks/use-langgraph-interrupt-render.d.ts +3 -2
  203. package/dist/hooks/use-langgraph-interrupt-render.js +157 -37
  204. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
  205. package/dist/hooks/use-langgraph-interrupt-render.mjs +7 -4
  206. package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
  207. package/dist/hooks/use-langgraph-interrupt.js +24 -1642
  208. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  209. package/dist/hooks/use-langgraph-interrupt.mjs +2 -23
  210. package/dist/hooks/use-lazy-tool-renderer.d.ts +6 -0
  211. package/dist/hooks/use-lazy-tool-renderer.js +53 -0
  212. package/dist/hooks/use-lazy-tool-renderer.js.map +1 -0
  213. package/dist/hooks/use-lazy-tool-renderer.mjs +8 -0
  214. package/dist/hooks/use-lazy-tool-renderer.mjs.map +1 -0
  215. package/dist/hooks/use-make-copilot-document-readable.js +11 -9
  216. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  217. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  218. package/dist/hooks/use-render-tool-call.d.ts +7 -6
  219. package/dist/hooks/use-render-tool-call.js +36 -386
  220. package/dist/hooks/use-render-tool-call.js.map +1 -1
  221. package/dist/hooks/use-render-tool-call.mjs +1 -6
  222. package/dist/index.d.ts +11 -6
  223. package/dist/index.js +1456 -3033
  224. package/dist/index.js.map +1 -1
  225. package/dist/index.mjs +85 -68
  226. package/dist/lib/copilot-task.d.ts +2 -2
  227. package/dist/lib/copilot-task.js +1 -0
  228. package/dist/lib/copilot-task.js.map +1 -1
  229. package/dist/lib/copilot-task.mjs +18 -14
  230. package/dist/lib/index.d.ts +1 -1
  231. package/dist/lib/index.js +1 -0
  232. package/dist/lib/index.js.map +1 -1
  233. package/dist/lib/index.mjs +18 -14
  234. package/dist/setupTests.d.ts +2 -2
  235. package/dist/types/frontend-action.d.ts +5 -5
  236. package/dist/types/index.d.ts +4 -0
  237. package/dist/types/index.js.map +1 -1
  238. package/dist/types/index.mjs +2 -1
  239. package/dist/types/interrupt-action.d.ts +1 -1
  240. package/dist/types/interrupt-action.js.map +1 -1
  241. package/dist/types/interrupt-action.mjs +1 -0
  242. package/dist/utils/index.d.ts +0 -12
  243. package/dist/utils/index.js +6 -325
  244. package/dist/utils/index.js.map +1 -1
  245. package/dist/utils/index.mjs +1 -21
  246. package/dist/utils/utils.js.map +1 -1
  247. package/dist/v2/index.css +4 -0
  248. package/dist/v2/index.css.map +1 -0
  249. package/dist/v2/index.d.ts +2 -0
  250. package/dist/v2/index.js +27 -0
  251. package/dist/v2/index.js.map +1 -0
  252. package/dist/v2/index.mjs +6 -0
  253. package/dist/v2/index.mjs.map +1 -0
  254. package/jest.config.js +12 -0
  255. package/package.json +24 -10
  256. package/src/components/CopilotListeners.tsx +81 -0
  257. package/src/components/copilot-provider/copilot-messages.tsx +6 -48
  258. package/src/components/copilot-provider/copilotkit-props.tsx +15 -1
  259. package/src/components/copilot-provider/copilotkit.tsx +189 -148
  260. package/src/components/error-boundary/error-utils.tsx +3 -3
  261. package/src/context/coagent-state-renders-context.tsx +76 -0
  262. package/src/context/copilot-context.tsx +21 -21
  263. package/src/context/copilot-messages-context.tsx +3 -3
  264. package/src/context/index.ts +8 -0
  265. package/src/context/threads-context.tsx +41 -0
  266. package/src/hooks/__tests__/use-coagent-config.test.ts +189 -129
  267. package/src/hooks/index.ts +12 -3
  268. package/src/hooks/use-agent-nodename.ts +30 -0
  269. package/src/hooks/use-coagent-state-render-bridge.tsx +293 -0
  270. package/src/hooks/use-coagent-state-render.ts +4 -7
  271. package/src/hooks/use-coagent.ts +136 -247
  272. package/src/hooks/use-configure-chat-suggestions.tsx +86 -0
  273. package/src/hooks/use-copilot-action.ts +88 -199
  274. package/src/hooks/use-copilot-chat-headless_c.ts +2 -1
  275. package/src/hooks/use-copilot-chat-suggestions.tsx +124 -0
  276. package/src/hooks/use-copilot-chat.ts +4 -1
  277. package/src/hooks/use-copilot-chat_internal.ts +410 -263
  278. package/src/hooks/use-copilot-readable.ts +23 -25
  279. package/src/hooks/use-flat-category-store.ts +4 -3
  280. package/src/hooks/use-frontend-tool.ts +86 -8
  281. package/src/hooks/use-human-in-the-loop.ts +111 -13
  282. package/src/hooks/use-langgraph-interrupt-render.ts +108 -40
  283. package/src/hooks/use-langgraph-interrupt.ts +18 -48
  284. package/src/hooks/use-lazy-tool-renderer.tsx +30 -0
  285. package/src/hooks/use-make-copilot-document-readable.ts +1 -1
  286. package/src/hooks/use-render-tool-call.ts +73 -13
  287. package/src/lib/copilot-task.ts +1 -1
  288. package/src/types/index.ts +1 -0
  289. package/src/types/interrupt-action.ts +8 -7
  290. package/src/utils/index.ts +0 -3
  291. package/src/utils/utils.ts +7 -0
  292. package/src/v2/index.css +1 -0
  293. package/src/v2/index.ts +4 -0
  294. package/tsup.config.ts +1 -1
  295. package/dist/chunk-5FHSUKQL.mjs.map +0 -1
  296. package/dist/chunk-6GPVUMBU.mjs +0 -13
  297. package/dist/chunk-6GPVUMBU.mjs.map +0 -1
  298. package/dist/chunk-AKR2SSUJ.mjs +0 -22
  299. package/dist/chunk-AKR2SSUJ.mjs.map +0 -1
  300. package/dist/chunk-BXXJQ2BL.mjs +0 -239
  301. package/dist/chunk-BXXJQ2BL.mjs.map +0 -1
  302. package/dist/chunk-C6IANC2R.mjs.map +0 -1
  303. package/dist/chunk-DXEQPN43.mjs +0 -231
  304. package/dist/chunk-DXEQPN43.mjs.map +0 -1
  305. package/dist/chunk-DZTU6PGS.mjs +0 -1
  306. package/dist/chunk-EDBI5PCJ.mjs.map +0 -1
  307. package/dist/chunk-EUX2P2E7.mjs.map +0 -1
  308. package/dist/chunk-EVVO67QO.mjs +0 -25
  309. package/dist/chunk-EVVO67QO.mjs.map +0 -1
  310. package/dist/chunk-GGLAHG3I.mjs +0 -804
  311. package/dist/chunk-GGLAHG3I.mjs.map +0 -1
  312. package/dist/chunk-GT5WI3AF.mjs.map +0 -1
  313. package/dist/chunk-HDOG2RTM.mjs +0 -37
  314. package/dist/chunk-HDOG2RTM.mjs.map +0 -1
  315. package/dist/chunk-MIXSWZSB.mjs +0 -71
  316. package/dist/chunk-MIXSWZSB.mjs.map +0 -1
  317. package/dist/chunk-N4WEHORG.mjs.map +0 -1
  318. package/dist/chunk-NSBAWITG.mjs +0 -332
  319. package/dist/chunk-NSBAWITG.mjs.map +0 -1
  320. package/dist/chunk-OT5NHMEC.mjs +0 -723
  321. package/dist/chunk-OT5NHMEC.mjs.map +0 -1
  322. package/dist/chunk-T3376SZS.mjs +0 -142
  323. package/dist/chunk-T3376SZS.mjs.map +0 -1
  324. package/dist/chunk-YPBKY4KY.mjs +0 -1
  325. package/dist/chunk-YPSGKPDA.mjs +0 -1
  326. package/dist/chunk-ZLQVRPDS.mjs.map +0 -1
  327. package/dist/chunk-ZVOLWJCY.mjs +0 -47
  328. package/dist/chunk-ZVOLWJCY.mjs.map +0 -1
  329. package/dist/hooks/use-chat.d.ts +0 -145
  330. package/dist/hooks/use-chat.js +0 -1129
  331. package/dist/hooks/use-chat.js.map +0 -1
  332. package/dist/hooks/use-chat.mjs +0 -14
  333. package/dist/index-1f5b66ac.d.ts +0 -36
  334. package/dist/utils/extract.d.ts +0 -43
  335. package/dist/utils/extract.js +0 -208
  336. package/dist/utils/extract.js.map +0 -1
  337. package/dist/utils/extract.mjs +0 -25
  338. package/dist/utils/suggestions.d.ts +0 -11
  339. package/dist/utils/suggestions.js +0 -343
  340. package/dist/utils/suggestions.js.map +0 -1
  341. package/dist/utils/suggestions.mjs +0 -25
  342. package/src/hooks/use-chat.ts +0 -1142
  343. package/src/utils/extract.ts +0 -215
  344. package/src/utils/suggestions.ts +0 -208
  345. /package/dist/{chunk-DZTU6PGS.mjs.map → chunk-36KQV2NA.mjs.map} +0 -0
  346. /package/dist/{chunk-OKCYPO4I.mjs.map → chunk-3MHWEKFN.mjs.map} +0 -0
  347. /package/dist/{chunk-YPBKY4KY.mjs.map → chunk-A6NKSGH3.mjs.map} +0 -0
  348. /package/dist/{chunk-MGWRDFBE.mjs.map → chunk-ABWT4DRT.mjs.map} +0 -0
  349. /package/dist/{chunk-MQYWH4E6.mjs.map → chunk-BUSWSDYO.mjs.map} +0 -0
  350. /package/dist/{chunk-YPSGKPDA.mjs.map → chunk-CYDWEPFL.mjs.map} +0 -0
  351. /package/dist/{chunk-U7QULEVO.mjs.map → chunk-E7SE25ZU.mjs.map} +0 -0
  352. /package/dist/{hooks/use-chat.mjs.map → chunk-FD6FGKYY.mjs.map} +0 -0
  353. /package/dist/{utils/extract.mjs.map → chunk-JD7BAH7U.mjs.map} +0 -0
  354. /package/dist/{utils/suggestions.mjs.map → chunk-NB2FKV2V.mjs.map} +0 -0
  355. /package/dist/{chunk-N4VN2B5S.mjs.map → chunk-SNON4QA6.mjs.map} +0 -0
@@ -6,13 +6,17 @@ export {
6
6
  type UseCopilotChatOptions_c,
7
7
  useCopilotChatHeadless_c,
8
8
  } from "./use-copilot-chat-headless_c";
9
- export { useCopilotChat as useCopilotChatInternal } from "./use-copilot-chat_internal";
9
+ export {
10
+ useCopilotChatInternal,
11
+ type ChatSuggestions,
12
+ type OnReloadMessages,
13
+ type OnStopGeneration,
14
+ } from "./use-copilot-chat_internal";
10
15
  export { useCopilotAction } from "./use-copilot-action";
11
16
  export { useCoAgentStateRender } from "./use-coagent-state-render";
12
17
  export { useMakeCopilotDocumentReadable } from "./use-make-copilot-document-readable";
13
- export { type UseChatHelpers } from "./use-chat";
14
18
  export { useCopilotReadable } from "./use-copilot-readable";
15
- export { useCoAgent, type HintFunction, runAgent, startAgent, stopAgent } from "./use-coagent";
19
+ export { useCoAgent, type HintFunction } from "./use-coagent";
16
20
  export { useCopilotRuntimeClient } from "./use-copilot-runtime-client";
17
21
  export { useCopilotAuthenticatedAction_c } from "./use-copilot-authenticated-action";
18
22
  export { useLangGraphInterrupt } from "./use-langgraph-interrupt";
@@ -23,3 +27,8 @@ export { useFrontendTool } from "./use-frontend-tool";
23
27
  export { useHumanInTheLoop } from "./use-human-in-the-loop";
24
28
  export { useRenderToolCall } from "./use-render-tool-call";
25
29
  export { useDefaultTool } from "./use-default-tool";
30
+ export { useLazyToolRenderer } from "./use-lazy-tool-renderer";
31
+ export {
32
+ useCopilotChatSuggestions,
33
+ type UseCopilotChatSuggestionsConfiguration,
34
+ } from "./use-copilot-chat-suggestions";
@@ -0,0 +1,30 @@
1
+ import { useEffect, useRef } from "react";
2
+ import type { AgentSubscriber } from "@ag-ui/client";
3
+ import { useAgent } from "@copilotkitnext/react";
4
+
5
+ export function useAgentNodeName(agentName?: string) {
6
+ const { agent } = useAgent({ agentId: agentName });
7
+ const nodeNameRef = useRef<string>("start");
8
+
9
+ useEffect(() => {
10
+ if (!agent) return;
11
+ const subscriber: AgentSubscriber = {
12
+ onStepStartedEvent: ({ event }) => {
13
+ nodeNameRef.current = event.stepName;
14
+ },
15
+ onRunStartedEvent: () => {
16
+ nodeNameRef.current = "start";
17
+ },
18
+ onRunFinishedEvent: () => {
19
+ nodeNameRef.current = "end";
20
+ },
21
+ };
22
+
23
+ const subscription = agent.subscribe(subscriber);
24
+ return () => {
25
+ subscription.unsubscribe();
26
+ };
27
+ }, [agent]);
28
+
29
+ return nodeNameRef.current;
30
+ }
@@ -0,0 +1,293 @@
1
+ import { ReactCustomMessageRendererPosition, useAgent } from "@copilotkitnext/react";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ import type { AgentSubscriber } from "@ag-ui/client";
4
+ import { useCoAgentStateRenders } from "../context";
5
+ import { dataToUUID, parseJson } from "@copilotkit/shared";
6
+
7
+ function getStateWithoutConstantKeys(state: any) {
8
+ if (!state) return {};
9
+ const { messages, tools, copilotkit, ...stateWithoutConstantKeys } = state;
10
+ return stateWithoutConstantKeys;
11
+ }
12
+
13
+ // Function that compares states, without the constant keys
14
+ function areStatesEquals(a: any, b: any) {
15
+ if ((a && !b) || (!a && b)) return false;
16
+ const { messages, tools, copilotkit, ...aWithoutConstantKeys } = a;
17
+ const {
18
+ messages: bMessages,
19
+ tools: bTools,
20
+ copilotkit: bCopilotkit,
21
+ ...bWithoutConstantKeys
22
+ } = b;
23
+
24
+ return JSON.stringify(aWithoutConstantKeys) === JSON.stringify(bWithoutConstantKeys);
25
+ }
26
+
27
+ /**
28
+ * Bridge hook that connects agent state renders to chat messages.
29
+ *
30
+ * ## Purpose
31
+ * This hook finds matching state render configurations (registered via useCoAgentStateRender)
32
+ * and returns UI to render in chat.
33
+ * It ensures each state render appears bound to a specific message, preventing duplicates while
34
+ * allowing re-binding when the underlying state changes significantly.
35
+ *
36
+ * ## Message-ID-Based Claiming System
37
+ *
38
+ * ### The Problem
39
+ * Multiple bridge component instances render simultaneously (one per message). Without coordination,
40
+ * they would all try to render the same state render, causing duplicates.
41
+ *
42
+ * ### The Solution: Message-ID Claims with State Comparison
43
+ * Each state render is "claimed" by exactly one **message ID** (not runId):
44
+ *
45
+ * **Claim Structure**: `claimsRef.current[messageId] = { stateRenderId, runId, stateSnapshot, locked }`
46
+ *
47
+ * **Primary binding is by messageId because**:
48
+ * - runId is not always available immediately (starts as "pending")
49
+ * - messageId is the stable identifier throughout the message lifecycle
50
+ * - Claims persist across component remounts via context ref
51
+ *
52
+ * ### Claiming Logic Flow
53
+ *
54
+ * 1. **Message already has a claim**:
55
+ * - Check if the claim matches the current stateRenderId
56
+ * - If yes → render (this message owns this render)
57
+ * - Update runId if it was "pending" and now available
58
+ *
59
+ * 2. **State render claimed by another message**:
60
+ * - Compare state snapshots (ignoring constant keys: messages, tools, copilotkit)
61
+ * - If states are identical → block rendering (duplicate)
62
+ * - **If states are different → allow claiming** (new data, new message)
63
+ * - This handles cases where the same render type shows different states in different messages
64
+ *
65
+ * 3. **Unclaimed state render**:
66
+ * - Only allow claiming if runId is "pending" (initial render)
67
+ * - If runId is real but no claim exists → block (edge case protection)
68
+ * - Create new claim: `claimsRef.current[messageId] = { stateRenderId, runId }`
69
+ *
70
+ * ### State Snapshot Locking
71
+ *
72
+ * Once a state snapshot is captured and locked for a message:
73
+ * - The UI always renders with the locked snapshot (not live agent.state)
74
+ * - Prevents UI from appearing "wiped" during state transitions
75
+ * - Locked when: stateSnapshot prop is available (from message persistence)
76
+ * - Unlocked state: can still update from live agent.state
77
+ *
78
+ * ### Synchronous Claiming (Ref-based)
79
+ *
80
+ * Claims are stored in a context-level ref (not React state):
81
+ * - Multiple bridges render in the same tick
82
+ * - State updates are async - would allow duplicates before update completes
83
+ * - Ref provides immediate, synchronous claim checking
84
+ * - Survives component remounts (stored in context, not component)
85
+ *
86
+ * ## Flow Example
87
+ *
88
+ * ```
89
+ * Time 1: Message A renders, runId=undefined, state={progress: 50%}
90
+ * → effectiveRunId = "pending"
91
+ * → Claims: claimsRef["msgA"] = { stateRenderId: "tasks", runId: "pending", stateSnapshot: {progress: 50%} }
92
+ * → Renders UI with 50% progress
93
+ *
94
+ * Time 2: Message B renders, runId=undefined, same state
95
+ * → Checks: "tasks" already claimed by msgA with same state
96
+ * → Returns null (blocked - duplicate)
97
+ *
98
+ * Time 3: Real runId appears (e.g., "run-123")
99
+ * → Updates claim: claimsRef["msgA"].runId = "run-123"
100
+ * → Message A continues rendering
101
+ *
102
+ * Time 4: Agent processes more, state={progress: 100%}
103
+ * → Message A: locked to 50% (stateSnapshot locked)
104
+ * → Message C renders with state={progress: 100%}
105
+ * → Checks: "tasks" claimed by msgA but state is DIFFERENT (50% vs 100%)
106
+ * → Allows new claim: claimsRef["msgC"] = { stateRenderId: "tasks", runId: "run-123", stateSnapshot: {progress: 100%} }
107
+ * → Both messages render independently with their own snapshots
108
+ * ```
109
+ */
110
+ export interface CoAgentStateRenderBridgeProps {
111
+ message: any;
112
+ position: ReactCustomMessageRendererPosition;
113
+ runId: string;
114
+ messageIndex: number;
115
+ messageIndexInRun: number;
116
+ numberOfMessagesInRun: number;
117
+ agentId: string;
118
+ stateSnapshot: any;
119
+ }
120
+
121
+ export function useCoagentStateRenderBridge(agentId: string, props: CoAgentStateRenderBridgeProps) {
122
+ const { stateSnapshot, messageIndexInRun, message } = props;
123
+ const { coAgentStateRenders, claimsRef } = useCoAgentStateRenders();
124
+ const { agent } = useAgent({ agentId });
125
+ const [nodeName, setNodeName] = useState<string | undefined>(undefined);
126
+
127
+ const runId = props.runId ?? message.runId;
128
+ const effectiveRunId = runId || "pending";
129
+
130
+ useEffect(() => {
131
+ if (!agent) return;
132
+ const subscriber: AgentSubscriber = {
133
+ onStepStartedEvent: ({ event }) => {
134
+ if (event.stepName !== nodeName) {
135
+ setNodeName(event.stepName);
136
+ }
137
+ },
138
+ onStepFinishedEvent: ({ event }) => {
139
+ if (event.stepName === nodeName) {
140
+ setNodeName(undefined);
141
+ }
142
+ },
143
+ };
144
+
145
+ const { unsubscribe } = agent.subscribe(subscriber);
146
+ return () => {
147
+ unsubscribe();
148
+ };
149
+ // eslint-disable-next-line react-hooks/exhaustive-deps
150
+ }, [agentId, nodeName]);
151
+
152
+ const getStateRender = useCallback(
153
+ (messageId: string) => {
154
+ return Object.entries(coAgentStateRenders).find(([stateRenderId, stateRender]) => {
155
+ if (claimsRef.current[messageId]) {
156
+ return stateRenderId === claimsRef.current[messageId].stateRenderId;
157
+ }
158
+ const matchingAgentName = stateRender.name === agentId;
159
+ const matchesNodeContext = stateRender.nodeName ? stateRender.nodeName === nodeName : true;
160
+ return matchingAgentName && matchesNodeContext;
161
+ });
162
+ },
163
+ [coAgentStateRenders, nodeName, agentId],
164
+ );
165
+
166
+ // Message ID-based claim system - A state render can only be claimed by one message ID
167
+ const handleRenderRequest = ({
168
+ stateRenderId,
169
+ messageId,
170
+ runId,
171
+ stateSnapshot: renderSnapshot,
172
+ }: {
173
+ stateRenderId: string;
174
+ messageId: string;
175
+ runId?: string;
176
+ stateSnapshot?: any;
177
+ }): boolean => {
178
+ // Check if this message has already claimed this state render
179
+ if (claimsRef.current[messageId]) {
180
+ const canRender = claimsRef.current[messageId].stateRenderId === stateRenderId;
181
+
182
+ // Update runId if it doesn't exist
183
+ if (
184
+ canRender &&
185
+ runId &&
186
+ (!claimsRef.current[messageId].runId || claimsRef.current[messageId].runId === "pending")
187
+ ) {
188
+ claimsRef.current[messageId].runId = runId;
189
+ }
190
+
191
+ return canRender;
192
+ }
193
+
194
+ // Do not allow render if any other message has claimed this state render
195
+ const renderClaimedByOtherMessage = Object.values(claimsRef.current).find(
196
+ (c) =>
197
+ c.stateRenderId === stateRenderId &&
198
+ dataToUUID(getStateWithoutConstantKeys(c.stateSnapshot)) ===
199
+ dataToUUID(getStateWithoutConstantKeys(renderSnapshot)),
200
+ );
201
+ if (renderClaimedByOtherMessage) {
202
+ // If:
203
+ // - state render already claimed
204
+ // - snapshot exists in the claiming object and is different from current,
205
+ if (
206
+ renderSnapshot &&
207
+ renderClaimedByOtherMessage.stateSnapshot &&
208
+ !areStatesEquals(renderClaimedByOtherMessage.stateSnapshot, renderSnapshot)
209
+ ) {
210
+ claimsRef.current[messageId] = { stateRenderId, runId };
211
+ return true;
212
+ }
213
+ return false;
214
+ }
215
+
216
+ // No existing claim anywhere yet – allow this message to claim even if we already know the runId.
217
+ if (!runId) {
218
+ return false;
219
+ }
220
+
221
+ claimsRef.current[messageId] = { stateRenderId, runId };
222
+ return true;
223
+ };
224
+
225
+ return useMemo(() => {
226
+ if (messageIndexInRun !== 0) {
227
+ return null;
228
+ }
229
+
230
+ const [stateRenderId, stateRender] = getStateRender(message.id) ?? [];
231
+
232
+ if (!stateRender || !stateRenderId) {
233
+ return null;
234
+ }
235
+
236
+ // Is there any state we can use?
237
+ const snapshot = stateSnapshot ? parseJson(stateSnapshot, stateSnapshot) : agent?.state;
238
+
239
+ // Synchronously check/claim - returns true if this message can render
240
+ const canRender = handleRenderRequest({
241
+ stateRenderId,
242
+ messageId: message.id,
243
+ runId: effectiveRunId,
244
+ stateSnapshot: snapshot,
245
+ });
246
+ if (!canRender) {
247
+ return null;
248
+ }
249
+
250
+ // If we found state, and given that now there's a claim for the current message, let's save it in the claim
251
+ if (snapshot && !claimsRef.current[message.id].locked) {
252
+ if (stateSnapshot) {
253
+ claimsRef.current[message.id].stateSnapshot = snapshot;
254
+ claimsRef.current[message.id].locked = true;
255
+ } else {
256
+ claimsRef.current[message.id].stateSnapshot = snapshot;
257
+ }
258
+ }
259
+
260
+ if (stateRender.handler) {
261
+ stateRender.handler({
262
+ state: stateSnapshot ? parseJson(stateSnapshot, stateSnapshot) : (agent?.state ?? {}),
263
+ nodeName: nodeName ?? "",
264
+ });
265
+ }
266
+
267
+ if (stateRender.render) {
268
+ const status = agent?.isRunning ? "inProgress" : "complete";
269
+
270
+ if (typeof stateRender.render === "string") return stateRender.render;
271
+
272
+ return stateRender.render({
273
+ status,
274
+ // Always use state from claim, to make sure the state does not seem "wiped" for a fraction of a second
275
+ state: claimsRef.current[message.id].stateSnapshot ?? {},
276
+ nodeName: nodeName ?? "",
277
+ });
278
+ }
279
+ }, [
280
+ getStateRender,
281
+ stateSnapshot,
282
+ agent?.state,
283
+ agent?.isRunning,
284
+ nodeName,
285
+ effectiveRunId,
286
+ message.id,
287
+ messageIndexInRun,
288
+ ]);
289
+ }
290
+
291
+ export function CoAgentStateRenderBridge(props: CoAgentStateRenderBridgeProps) {
292
+ return useCoagentStateRenderBridge(props.agentId, props);
293
+ }
@@ -46,6 +46,7 @@ import { CopilotContext } from "../context/copilot-context";
46
46
  import { randomId, CopilotKitAgentDiscoveryError } from "@copilotkit/shared";
47
47
  import { CoAgentStateRender } from "../types/coagent-action";
48
48
  import { useToast } from "../components/toast/toast-provider";
49
+ import { useCoAgentStateRenders } from "../context/coagent-state-renders-context";
49
50
 
50
51
  /**
51
52
  * This hook is used to render agent state with custom UI components or text. This is particularly
@@ -62,13 +63,9 @@ export function useCoAgentStateRender<T = any>(
62
63
  action: CoAgentStateRender<T>,
63
64
  dependencies?: any[],
64
65
  ): void {
65
- const {
66
- setCoAgentStateRender,
67
- removeCoAgentStateRender,
68
- coAgentStateRenders,
69
- chatComponentsCache,
70
- availableAgents,
71
- } = useContext(CopilotContext);
66
+ const { chatComponentsCache, availableAgents } = useContext(CopilotContext);
67
+ const { setCoAgentStateRender, removeCoAgentStateRender, coAgentStateRenders } =
68
+ useCoAgentStateRenders();
72
69
  const idRef = useRef<string>(randomId());
73
70
  const { setBannerError, addToast } = useToast();
74
71