@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
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
4
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
7
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
8
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
9
  var __getProtoOf = Object.getPrototypeOf;
@@ -19,6 +21,19 @@ var __spreadValues = (a, b) => {
19
21
  }
20
22
  return a;
21
23
  };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
22
37
  var __export = (target, all) => {
23
38
  for (var name in all)
24
39
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -40,26 +55,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
40
55
  mod
41
56
  ));
42
57
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
- var __async = (__this, __arguments, generator) => {
44
- return new Promise((resolve, reject) => {
45
- var fulfilled = (value) => {
46
- try {
47
- step(generator.next(value));
48
- } catch (e) {
49
- reject(e);
50
- }
51
- };
52
- var rejected = (value) => {
53
- try {
54
- step(generator.throw(value));
55
- } catch (e) {
56
- reject(e);
57
- }
58
- };
59
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
60
- step((generator = generator.apply(__this, __arguments)).next());
61
- });
62
- };
63
58
 
64
59
  // src/hooks/use-copilot-action.ts
65
60
  var use_copilot_action_exports = {};
@@ -67,356 +62,231 @@ __export(use_copilot_action_exports, {
67
62
  useCopilotAction: () => useCopilotAction
68
63
  });
69
64
  module.exports = __toCommonJS(use_copilot_action_exports);
70
- var import_shared2 = require("@copilotkit/shared");
71
- var import_react4 = require("react");
65
+ var import_react7 = require("react");
72
66
 
73
- // src/context/copilot-context.tsx
67
+ // src/hooks/use-frontend-tool.ts
74
68
  var import_react = __toESM(require("react"));
75
- var emptyCopilotContext = {
76
- actions: {},
77
- setAction: () => {
78
- },
79
- removeAction: () => {
80
- },
81
- coAgentStateRenders: {},
82
- setCoAgentStateRender: () => {
83
- },
84
- removeCoAgentStateRender: () => {
85
- },
86
- chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },
87
- getContextString: (documents, categories) => returnAndThrowInDebug(""),
88
- addContext: () => "",
89
- removeContext: () => {
90
- },
91
- getAllContext: () => [],
92
- getFunctionCallHandler: () => returnAndThrowInDebug(() => __async(void 0, null, function* () {
93
- })),
94
- isLoading: false,
95
- setIsLoading: () => returnAndThrowInDebug(false),
96
- chatInstructions: "",
97
- setChatInstructions: () => returnAndThrowInDebug(""),
98
- additionalInstructions: [],
99
- setAdditionalInstructions: () => returnAndThrowInDebug([]),
100
- getDocumentsContext: (categories) => returnAndThrowInDebug([]),
101
- addDocumentContext: () => returnAndThrowInDebug(""),
102
- removeDocumentContext: () => {
103
- },
104
- runtimeClient: {},
105
- copilotApiConfig: new class {
106
- get chatApiEndpoint() {
107
- throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
108
- }
109
- get headers() {
110
- return {};
69
+ var import_shared = require("@copilotkit/shared");
70
+ var import_shared2 = require("@copilotkit/shared");
71
+ var import_react2 = require("@copilotkitnext/react");
72
+ function useFrontendTool(tool, dependencies) {
73
+ const { name, description, parameters, render, followUp } = tool;
74
+ const zodParameters = (0, import_shared.getZodParameters)(parameters);
75
+ const normalizedRender = (() => {
76
+ if (typeof render === "undefined") {
77
+ return void 0;
111
78
  }
112
- get body() {
113
- return {};
79
+ if (typeof render === "string") {
80
+ const staticRender = render;
81
+ return () => import_react.default.createElement(
82
+ import_react.default.Fragment,
83
+ null,
84
+ staticRender
85
+ );
114
86
  }
115
- }(),
116
- chatSuggestionConfiguration: {},
117
- addChatSuggestionConfiguration: () => {
118
- },
119
- removeChatSuggestionConfiguration: () => {
120
- },
121
- showDevConsole: false,
122
- coagentStates: {},
123
- setCoagentStates: () => {
124
- },
125
- coagentStatesRef: { current: {} },
126
- setCoagentStatesWithRef: () => {
127
- },
128
- agentSession: null,
129
- setAgentSession: () => {
130
- },
131
- forwardedParameters: {},
132
- agentLock: null,
133
- threadId: "",
134
- setThreadId: () => {
135
- },
136
- runId: null,
137
- setRunId: () => {
138
- },
139
- chatAbortControllerRef: { current: null },
140
- availableAgents: [],
141
- extensions: {},
142
- setExtensions: () => {
143
- },
144
- langGraphInterruptAction: null,
145
- setLangGraphInterruptAction: () => {
146
- },
147
- removeLangGraphInterruptAction: () => {
148
- },
149
- onError: () => {
150
- },
151
- bannerError: null,
152
- setBannerError: () => {
153
- },
154
- internalErrorHandlers: {},
155
- setInternalErrorHandler: () => {
156
- },
157
- removeInternalErrorHandler: () => {
158
- }
159
- };
160
- var CopilotContext = import_react.default.createContext(emptyCopilotContext);
161
- function useCopilotContext() {
162
- const context = import_react.default.useContext(CopilotContext);
163
- if (context === emptyCopilotContext) {
164
- throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
165
- }
166
- return context;
167
- }
168
- function returnAndThrowInDebug(_value) {
169
- throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
87
+ return (args) => {
88
+ const renderArgs = __spreadProps(__spreadValues({}, args), {
89
+ result: typeof args.result === "string" ? (0, import_shared2.parseJson)(args.result, args.result) : args.result
90
+ });
91
+ const rendered = render(renderArgs);
92
+ if (typeof rendered === "string") {
93
+ return import_react.default.createElement(import_react.default.Fragment, null, rendered);
94
+ }
95
+ return rendered != null ? rendered : null;
96
+ };
97
+ })();
98
+ const handlerRef = (0, import_react.useRef)(tool.handler);
99
+ (0, import_react.useEffect)(() => {
100
+ handlerRef.current = tool.handler;
101
+ }, [tool.handler, ...dependencies != null ? dependencies : []]);
102
+ const normalizedHandler = tool.handler ? (args) => {
103
+ var _a;
104
+ return (_a = handlerRef.current) == null ? void 0 : _a.call(handlerRef, args);
105
+ } : void 0;
106
+ (0, import_react2.useFrontendTool)({
107
+ name,
108
+ description,
109
+ parameters: zodParameters,
110
+ handler: normalizedHandler,
111
+ followUp,
112
+ render: normalizedRender
113
+ });
170
114
  }
171
115
 
172
- // src/components/error-boundary/error-utils.tsx
116
+ // src/hooks/use-render-tool-call.ts
117
+ var import_shared3 = require("@copilotkit/shared");
173
118
  var import_react3 = require("react");
174
-
175
- // src/components/toast/toast-provider.tsx
176
- var import_react2 = require("react");
177
- var import_shared = require("@copilotkit/shared");
178
- var import_jsx_runtime = require("react/jsx-runtime");
179
- var ToastContext = (0, import_react2.createContext)(void 0);
180
- function useToast() {
181
- const context = (0, import_react2.useContext)(ToastContext);
182
- if (!context) {
183
- throw new Error("useToast must be used within a ToastProvider");
184
- }
185
- return context;
186
- }
187
-
188
- // src/components/toast/exclamation-mark-icon.tsx
189
- var import_jsx_runtime2 = require("react/jsx-runtime");
190
- var ExclamationMarkIcon = ({
191
- className,
192
- style
193
- }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
194
- "svg",
195
- {
196
- xmlns: "http://www.w3.org/2000/svg",
197
- width: "24",
198
- height: "24",
199
- viewBox: "0 0 24 24",
200
- fill: "none",
201
- stroke: "currentColor",
202
- strokeWidth: "2",
203
- strokeLinecap: "round",
204
- strokeLinejoin: "round",
205
- className: `lucide lucide-circle-alert ${className ? className : ""}`,
206
- style,
207
- children: [
208
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
209
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
210
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
211
- ]
212
- }
213
- );
214
-
215
- // src/components/error-boundary/error-utils.tsx
216
- var import_react_markdown = __toESM(require("react-markdown"));
217
- var import_jsx_runtime3 = require("react/jsx-runtime");
218
- function ErrorToast({ errors }) {
219
- const errorsToRender = errors.map((error, idx) => {
220
- var _a, _b, _c;
221
- const originalError = "extensions" in error ? (_a = error.extensions) == null ? void 0 : _a.originalError : {};
222
- const message = (_b = originalError == null ? void 0 : originalError.message) != null ? _b : error.message;
223
- const code = "extensions" in error ? (_c = error.extensions) == null ? void 0 : _c.code : null;
224
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
225
- "div",
226
- {
227
- style: {
228
- marginTop: idx === 0 ? 0 : 10,
229
- marginBottom: 14
230
- },
231
- children: [
232
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ExclamationMarkIcon, { style: { marginBottom: 4 } }),
233
- code && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
234
- "div",
235
- {
236
- style: {
237
- fontWeight: "600",
238
- marginBottom: 4
239
- },
240
- children: [
241
- "Copilot Runtime Error:",
242
- " ",
243
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontFamily: "monospace", fontWeight: "normal" }, children: code })
244
- ]
245
- }
246
- ),
247
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_markdown.default, { children: message })
248
- ]
249
- },
250
- idx
251
- );
252
- });
253
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
254
- "div",
255
- {
256
- style: {
257
- fontSize: "13px",
258
- maxWidth: "600px"
259
- },
260
- children: [
261
- errorsToRender,
262
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { style: { fontSize: "11px", opacity: 0.75 }, children: "NOTE: This error only displays during local development." })
263
- ]
264
- }
265
- );
266
- }
267
- function useErrorToast() {
268
- const { addToast } = useToast();
269
- return (0, import_react3.useCallback)(
270
- (error) => {
271
- const errorId = error.map((err) => {
272
- var _a, _b;
273
- const message = "extensions" in err ? ((_b = (_a = err.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message) || err.message : err.message;
274
- const stack = err.stack || "";
275
- return btoa(message + stack).slice(0, 32);
276
- }).join("|");
277
- addToast({
278
- type: "error",
279
- id: errorId,
280
- // Toast libraries typically dedupe by id
281
- message: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ErrorToast, { errors: error })
282
- });
283
- },
284
- [addToast]
285
- );
286
- }
287
- function useAsyncCallback(callback, deps) {
288
- const addErrorToast = useErrorToast();
289
- return (0, import_react3.useCallback)((...args) => __async(this, null, function* () {
290
- try {
291
- return yield callback(...args);
292
- } catch (error) {
293
- console.error("Error in async callback:", error);
294
- addErrorToast([error]);
295
- throw error;
119
+ var import_react4 = require("@copilotkitnext/react");
120
+ var import_shared4 = require("@copilotkit/shared");
121
+ function useRenderToolCall(tool, dependencies) {
122
+ const { copilotkit } = (0, import_react4.useCopilotKit)();
123
+ const hasAddedRef = (0, import_react3.useRef)(false);
124
+ (0, import_react3.useEffect)(() => {
125
+ const { name, parameters, render } = tool;
126
+ const zodParameters = (0, import_shared3.getZodParameters)(parameters);
127
+ const renderToolCall = name === "*" ? (0, import_react4.defineToolCallRenderer)({
128
+ name: "*",
129
+ render: (args) => {
130
+ return render(__spreadProps(__spreadValues({}, args), {
131
+ result: args.result ? (0, import_shared4.parseJson)(args.result, args.result) : args.result
132
+ }));
133
+ }
134
+ }) : (0, import_react4.defineToolCallRenderer)({
135
+ name,
136
+ args: zodParameters,
137
+ render: (args) => {
138
+ return render(__spreadProps(__spreadValues({}, args), {
139
+ result: args.result ? (0, import_shared4.parseJson)(args.result, args.result) : args.result
140
+ }));
141
+ }
142
+ });
143
+ const existingIndex = copilotkit.renderToolCalls.findIndex((r) => r.name === name);
144
+ if (existingIndex !== -1) {
145
+ copilotkit.renderToolCalls.splice(existingIndex, 1);
296
146
  }
297
- }), deps);
147
+ copilotkit.renderToolCalls.push(renderToolCall);
148
+ hasAddedRef.current = true;
149
+ return () => {
150
+ if (hasAddedRef.current) {
151
+ const index = copilotkit.renderToolCalls.findIndex((r) => r.name === name);
152
+ if (index !== -1) {
153
+ copilotkit.renderToolCalls.splice(index, 1);
154
+ }
155
+ hasAddedRef.current = false;
156
+ }
157
+ };
158
+ }, [tool, ...dependencies != null ? dependencies : []]);
298
159
  }
299
160
 
300
- // src/hooks/use-copilot-action.ts
301
- function useCopilotAction(action, dependencies) {
302
- const { setAction, removeAction, actions, chatComponentsCache } = useCopilotContext();
303
- const idRef = (0, import_react4.useRef)((0, import_shared2.randomId)());
304
- const renderAndWaitRef = (0, import_react4.useRef)(null);
305
- const activatingMessageIdRef = (0, import_react4.useRef)(null);
306
- const { addToast } = useToast();
307
- action = __spreadValues({}, action);
308
- if (
309
- // renderAndWaitForResponse is not available for catch all actions
310
- isFrontendAction(action) && // check if renderAndWaitForResponse is set
311
- (action.renderAndWait || action.renderAndWaitForResponse)
312
- ) {
313
- action._isRenderAndWait = true;
314
- const renderAndWait = action.renderAndWait || action.renderAndWaitForResponse;
315
- action.renderAndWait = void 0;
316
- action.renderAndWaitForResponse = void 0;
317
- action._setActivatingMessageId = (id) => {
318
- activatingMessageIdRef.current = id;
319
- };
320
- action.handler = useAsyncCallback(() => __async(this, null, function* () {
321
- const currentActivatingId = activatingMessageIdRef.current;
322
- let resolve;
323
- let reject;
324
- const promise = new Promise((resolvePromise, rejectPromise) => {
325
- resolve = resolvePromise;
326
- reject = rejectPromise;
327
- });
328
- renderAndWaitRef.current = {
329
- promise,
330
- resolve,
331
- reject,
332
- messageId: currentActivatingId
333
- };
334
- const result = yield promise;
335
- return result;
336
- }), []);
337
- action.render = (props) => {
338
- const currentRenderMessageId = props.messageId;
339
- let status = props.status;
340
- if (props.status === "executing") {
341
- if (!renderAndWaitRef.current || !renderAndWaitRef.current.promise) {
342
- status = "inProgress";
343
- } else if (renderAndWaitRef.current.messageId !== currentRenderMessageId && activatingMessageIdRef.current !== currentRenderMessageId) {
344
- status = "inProgress";
345
- }
161
+ // src/hooks/use-human-in-the-loop.ts
162
+ var import_shared5 = require("@copilotkit/shared");
163
+ var import_react5 = require("@copilotkitnext/react");
164
+ var import_core = require("@copilotkitnext/core");
165
+ var import_react6 = __toESM(require("react"));
166
+ function useHumanInTheLoop(tool, dependencies) {
167
+ const _a = tool, { render } = _a, toolRest = __objRest(_a, ["render"]);
168
+ const { name, description, parameters, followUp } = toolRest;
169
+ const zodParameters = (0, import_shared5.getZodParameters)(parameters);
170
+ const renderRef = (0, import_react6.useRef)(null);
171
+ (0, import_react6.useEffect)(() => {
172
+ renderRef.current = (args) => {
173
+ if (typeof render === "string") {
174
+ return import_react6.default.createElement(import_react6.default.Fragment, null, render);
346
175
  }
347
- const waitProps = {
348
- status,
349
- args: props.args,
350
- result: props.result,
351
- // handler and respond should only be provided if this is the truly active instance
352
- // and its promise infrastructure is ready.
353
- handler: status === "executing" && renderAndWaitRef.current && renderAndWaitRef.current.messageId === currentRenderMessageId ? renderAndWaitRef.current.resolve : void 0,
354
- respond: status === "executing" && renderAndWaitRef.current && renderAndWaitRef.current.messageId === currentRenderMessageId ? renderAndWaitRef.current.resolve : void 0
355
- };
356
- const isNoArgsRenderWait = (_fn) => {
357
- var _a;
358
- return ((_a = action.parameters) == null ? void 0 : _a.length) === 0;
359
- };
360
- if (renderAndWait) {
361
- if (isNoArgsRenderWait(renderAndWait)) {
362
- return renderAndWait(waitProps);
363
- } else {
364
- return renderAndWait(waitProps);
176
+ if (!render) {
177
+ return null;
178
+ }
179
+ const renderProps = (() => {
180
+ const mappedArgs = args.args;
181
+ switch (args.status) {
182
+ case import_core.ToolCallStatus.InProgress:
183
+ return {
184
+ args: mappedArgs,
185
+ respond: args.respond,
186
+ status: args.status,
187
+ handler: void 0
188
+ };
189
+ case import_core.ToolCallStatus.Executing:
190
+ return {
191
+ args: mappedArgs,
192
+ respond: args.respond,
193
+ status: args.status,
194
+ handler: () => {
195
+ }
196
+ };
197
+ case import_core.ToolCallStatus.Complete:
198
+ return {
199
+ args: mappedArgs,
200
+ respond: args.respond,
201
+ status: args.status,
202
+ result: args.result ? (0, import_shared5.parseJson)(args.result, args.result) : args.result,
203
+ handler: void 0
204
+ };
205
+ default:
206
+ throw new import_shared5.CopilotKitError({
207
+ code: import_shared5.CopilotKitErrorCode.UNKNOWN,
208
+ message: `Invalid tool call status: ${args.status}`
209
+ });
365
210
  }
211
+ })();
212
+ const rendered = render(renderProps);
213
+ if (typeof rendered === "string") {
214
+ return import_react6.default.createElement(import_react6.default.Fragment, null, rendered);
366
215
  }
367
- return (0, import_react4.createElement)(import_react4.Fragment);
216
+ return rendered != null ? rendered : null;
217
+ };
218
+ }, [render, ...dependencies != null ? dependencies : []]);
219
+ (0, import_react5.useHumanInTheLoop)({
220
+ name,
221
+ description,
222
+ followUp,
223
+ parameters: zodParameters,
224
+ render: (args) => {
225
+ var _a2, _b;
226
+ return (_b = (_a2 = renderRef.current) == null ? void 0 : _a2.call(renderRef, args)) != null ? _b : null;
227
+ }
228
+ });
229
+ }
230
+
231
+ // src/hooks/use-copilot-action.ts
232
+ function getActionConfig(action) {
233
+ if (action.name === "*") {
234
+ return {
235
+ type: "render",
236
+ action
368
237
  };
369
238
  }
370
- if (dependencies === void 0) {
371
- if (actions[idRef.current]) {
372
- if (isFrontendAction(action)) {
373
- actions[idRef.current].handler = action.handler;
374
- }
375
- if (typeof action.render === "function") {
376
- if (chatComponentsCache.current !== null) {
377
- chatComponentsCache.current.actions[action.name] = action.render;
378
- }
379
- }
239
+ if ("renderAndWaitForResponse" in action || "renderAndWait" in action) {
240
+ let render = action.render;
241
+ if (!render && "renderAndWaitForResponse" in action) {
242
+ render = action.renderAndWaitForResponse;
243
+ }
244
+ if (!render && "renderAndWait" in action) {
245
+ render = action.renderAndWait;
380
246
  }
247
+ return {
248
+ type: "hitl",
249
+ action: __spreadProps(__spreadValues({}, action), { render })
250
+ };
381
251
  }
382
- (0, import_react4.useEffect)(() => {
383
- const hasDuplicate = Object.values(actions).some(
384
- (otherAction) => otherAction.name === action.name && otherAction !== actions[idRef.current]
385
- );
386
- if (hasDuplicate) {
387
- addToast({
388
- type: "warning",
389
- message: `Found an already registered action with name ${action.name}.`,
390
- id: `dup-action-${action.name}`
391
- });
252
+ if ("available" in action) {
253
+ if (action.available === "enabled" || action.available === "remote") {
254
+ return {
255
+ type: "frontend",
256
+ action
257
+ };
392
258
  }
393
- }, [actions]);
394
- (0, import_react4.useEffect)(() => {
395
- setAction(idRef.current, action);
396
- if (chatComponentsCache.current !== null && action.render !== void 0) {
397
- chatComponentsCache.current.actions[action.name] = action.render;
259
+ if (action.available === "frontend" || action.available === "disabled") {
260
+ return {
261
+ type: "render",
262
+ action
263
+ };
398
264
  }
399
- return () => {
400
- removeAction(idRef.current);
265
+ }
266
+ if ("handler" in action) {
267
+ return {
268
+ type: "frontend",
269
+ action
401
270
  };
402
- }, [
403
- setAction,
404
- removeAction,
405
- isFrontendAction(action) ? action.description : void 0,
406
- action.name,
407
- isFrontendAction(action) ? action.disabled : void 0,
408
- isFrontendAction(action) ? action.available : void 0,
409
- // This should be faster than deep equality checking
410
- // In addition, all major JS engines guarantee the order of object keys
411
- JSON.stringify(isFrontendAction(action) ? action.parameters : []),
412
- // include render only if it's a string
413
- typeof action.render === "string" ? action.render : void 0,
414
- // dependencies set by the developer
415
- ...dependencies || []
416
- ]);
271
+ }
272
+ throw new Error("Invalid action configuration");
417
273
  }
418
- function isFrontendAction(action) {
419
- return action.name !== "*";
274
+ function useCopilotAction(action, dependencies) {
275
+ const [initialActionConfig] = (0, import_react7.useState)(getActionConfig(action));
276
+ const currentActionConfig = getActionConfig(action);
277
+ if (initialActionConfig.type !== currentActionConfig.type) {
278
+ throw new Error("Action configuration changed between renders");
279
+ }
280
+ switch (currentActionConfig.type) {
281
+ case "render":
282
+ return useRenderToolCall(currentActionConfig.action, dependencies);
283
+ case "hitl":
284
+ return useHumanInTheLoop(currentActionConfig.action, dependencies);
285
+ case "frontend":
286
+ return useFrontendTool(currentActionConfig.action, dependencies);
287
+ default:
288
+ throw new Error("Invalid action configuration");
289
+ }
420
290
  }
421
291
  // Annotate the CommonJS export names for ESM import in node:
422
292
  0 && (module.exports = {