@copilotkit/react-core 1.57.3 → 1.58.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 (282) hide show
  1. package/LICENSE +21 -0
  2. package/dist/{copilotkit-CC8DjOiC.mjs → copilotkit-BIn7HE8f.mjs} +2 -2
  3. package/dist/{copilotkit-CC8DjOiC.mjs.map → copilotkit-BIn7HE8f.mjs.map} +1 -1
  4. package/dist/{copilotkit-CtXcs1ea.cjs → copilotkit-Drw-g6zA.cjs} +2 -2
  5. package/dist/{copilotkit-CtXcs1ea.cjs.map → copilotkit-Drw-g6zA.cjs.map} +1 -1
  6. package/dist/index.cjs +3 -77
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.cts +2 -2
  9. package/dist/index.d.mts +2 -2
  10. package/dist/index.mjs +3 -77
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/index.umd.js +3 -77
  13. package/dist/index.umd.js.map +1 -1
  14. package/dist/v2/index.cjs +1 -1
  15. package/dist/v2/index.mjs +1 -1
  16. package/dist/v2/index.umd.js +1 -1
  17. package/dist/v2/index.umd.js.map +1 -1
  18. package/package.json +12 -13
  19. package/skills/react-core/SKILL.md +108 -0
  20. package/skills/react-core/references/agent-access.md +288 -0
  21. package/skills/react-core/references/attachments.md +291 -0
  22. package/skills/react-core/references/capabilities.md +138 -0
  23. package/skills/react-core/references/chat-components.md +221 -0
  24. package/skills/react-core/references/client-side-tools.md +358 -0
  25. package/skills/react-core/references/custom-message-renderers.md +226 -0
  26. package/skills/react-core/references/debug-mode.md +153 -0
  27. package/skills/react-core/references/human-in-the-loop.md +312 -0
  28. package/skills/react-core/references/provider-setup.md +326 -0
  29. package/skills/react-core/references/rendering-activity-messages.md +207 -0
  30. package/skills/react-core/references/rendering-tool-calls.md +319 -0
  31. package/skills/react-core/references/suggestions.md +211 -0
  32. package/skills/react-core/references/switching-agents-recipes.md +160 -0
  33. package/skills/react-core/references/switching-agents.md +231 -0
  34. package/skills/react-core/references/threads.md +226 -0
  35. package/.attw.json +0 -3
  36. package/CHANGELOG.md +0 -5043
  37. package/scripts/scope-preflight.mjs +0 -100
  38. package/src/components/CopilotListeners.tsx +0 -137
  39. package/src/components/__tests__/CopilotListeners.test.tsx +0 -38
  40. package/src/components/copilot-provider/__tests__/copilot-messages-key.test.tsx +0 -92
  41. package/src/components/copilot-provider/__tests__/copilotkit-error.test.tsx +0 -77
  42. package/src/components/copilot-provider/__tests__/error-visibility-prod.test.tsx +0 -70
  43. package/src/components/copilot-provider/__tests__/v1-explicit-threadid-bridge.test.tsx +0 -107
  44. package/src/components/copilot-provider/copilot-messages.tsx +0 -314
  45. package/src/components/copilot-provider/copilotkit-props.tsx +0 -214
  46. package/src/components/copilot-provider/copilotkit.tsx +0 -853
  47. package/src/components/copilot-provider/index.ts +0 -3
  48. package/src/components/dev-console/console-trigger.tsx +0 -283
  49. package/src/components/dev-console/developer-console-modal.tsx +0 -1016
  50. package/src/components/dev-console/icons.tsx +0 -106
  51. package/src/components/error-boundary/error-boundary.tsx +0 -99
  52. package/src/components/error-boundary/error-utils.tsx +0 -105
  53. package/src/components/index.ts +0 -1
  54. package/src/components/toast/exclamation-mark-icon.tsx +0 -27
  55. package/src/components/toast/toast-provider.tsx +0 -448
  56. package/src/components/usage-banner.tsx +0 -266
  57. package/src/context/__tests__/threads-context.test.tsx +0 -141
  58. package/src/context/coagent-state-renders-context.tsx +0 -89
  59. package/src/context/copilot-context.tsx +0 -365
  60. package/src/context/copilot-messages-context.tsx +0 -35
  61. package/src/context/index.ts +0 -22
  62. package/src/context/threads-context.tsx +0 -69
  63. package/src/hooks/__tests__/use-coagent-config.test.ts +0 -352
  64. package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +0 -107
  65. package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +0 -1209
  66. package/src/hooks/__tests__/use-coagent-state-render.test.tsx +0 -356
  67. package/src/hooks/__tests__/use-copilot-chat-internal-connect.test.tsx +0 -241
  68. package/src/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -72
  69. package/src/hooks/__tests__/use-frontend-tool-remount.e2e.test.tsx +0 -102
  70. package/src/hooks/index.ts +0 -33
  71. package/src/hooks/use-agent-nodename.ts +0 -33
  72. package/src/hooks/use-coagent-state-render-bridge.helpers.ts +0 -345
  73. package/src/hooks/use-coagent-state-render-bridge.tsx +0 -222
  74. package/src/hooks/use-coagent-state-render-registry.ts +0 -230
  75. package/src/hooks/use-coagent-state-render.ts +0 -163
  76. package/src/hooks/use-coagent.ts +0 -377
  77. package/src/hooks/use-configure-chat-suggestions.tsx +0 -96
  78. package/src/hooks/use-copilot-action.ts +0 -245
  79. package/src/hooks/use-copilot-additional-instructions.ts +0 -98
  80. package/src/hooks/use-copilot-authenticated-action.ts +0 -73
  81. package/src/hooks/use-copilot-chat-headless_c.ts +0 -264
  82. package/src/hooks/use-copilot-chat-suggestions.tsx +0 -134
  83. package/src/hooks/use-copilot-chat.ts +0 -132
  84. package/src/hooks/use-copilot-chat_internal.ts +0 -875
  85. package/src/hooks/use-copilot-readable.ts +0 -135
  86. package/src/hooks/use-copilot-runtime-client.ts +0 -178
  87. package/src/hooks/use-default-tool.ts +0 -13
  88. package/src/hooks/use-flat-category-store.ts +0 -109
  89. package/src/hooks/use-frontend-tool.ts +0 -113
  90. package/src/hooks/use-human-in-the-loop.ts +0 -138
  91. package/src/hooks/use-langgraph-interrupt.ts +0 -103
  92. package/src/hooks/use-lazy-tool-renderer.tsx +0 -30
  93. package/src/hooks/use-make-copilot-document-readable.ts +0 -30
  94. package/src/hooks/use-render-tool-call.ts +0 -89
  95. package/src/hooks/use-tree.ts +0 -222
  96. package/src/index.tsx +0 -7
  97. package/src/lib/copilot-task.ts +0 -215
  98. package/src/lib/index.ts +0 -1
  99. package/src/lib/status-checker.ts +0 -67
  100. package/src/setupTests.ts +0 -37
  101. package/src/test-helpers/copilot-context.ts +0 -91
  102. package/src/types/chat-suggestion-configuration.ts +0 -23
  103. package/src/types/coagent-action.ts +0 -35
  104. package/src/types/coagent-state.ts +0 -13
  105. package/src/types/crew.ts +0 -89
  106. package/src/types/document-pointer.ts +0 -7
  107. package/src/types/frontend-action.ts +0 -213
  108. package/src/types/index.ts +0 -17
  109. package/src/types/interrupt-action.ts +0 -58
  110. package/src/types/system-message.ts +0 -4
  111. package/src/utils/dev-console.ts +0 -19
  112. package/src/utils/index.ts +0 -2
  113. package/src/utils/suggestions-constants.ts +0 -8
  114. package/src/utils/utils.test.ts +0 -7
  115. package/src/utils/utils.ts +0 -6
  116. package/src/v2/__tests__/A2UIMessageRenderer.test.tsx +0 -240
  117. package/src/v2/__tests__/globalSetup.ts +0 -14
  118. package/src/v2/__tests__/setup.ts +0 -93
  119. package/src/v2/__tests__/utils/test-helpers.tsx +0 -570
  120. package/src/v2/a2ui/A2UICatalogContext.tsx +0 -79
  121. package/src/v2/a2ui/A2UIMessageRenderer.tsx +0 -294
  122. package/src/v2/a2ui/A2UIToolCallRenderer.tsx +0 -290
  123. package/src/v2/components/CopilotKitInspector.tsx +0 -52
  124. package/src/v2/components/MCPAppsActivityRenderer.tsx +0 -815
  125. package/src/v2/components/OpenGenerativeUIRenderer.tsx +0 -598
  126. package/src/v2/components/WildcardToolCallRender.tsx +0 -86
  127. package/src/v2/components/__tests__/OpenGenerativeUIRenderer.test.tsx +0 -665
  128. package/src/v2/components/chat/CopilotChat.tsx +0 -664
  129. package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +0 -393
  130. package/src/v2/components/chat/CopilotChatAttachmentQueue.tsx +0 -374
  131. package/src/v2/components/chat/CopilotChatAttachmentRenderer.tsx +0 -159
  132. package/src/v2/components/chat/CopilotChatAudioRecorder.tsx +0 -350
  133. package/src/v2/components/chat/CopilotChatInput.tsx +0 -1412
  134. package/src/v2/components/chat/CopilotChatMessageView.tsx +0 -716
  135. package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +0 -265
  136. package/src/v2/components/chat/CopilotChatSuggestionPill.tsx +0 -59
  137. package/src/v2/components/chat/CopilotChatSuggestionView.tsx +0 -134
  138. package/src/v2/components/chat/CopilotChatToggleButton.tsx +0 -171
  139. package/src/v2/components/chat/CopilotChatToolCallsView.tsx +0 -40
  140. package/src/v2/components/chat/CopilotChatUserMessage.tsx +0 -445
  141. package/src/v2/components/chat/CopilotChatView.tsx +0 -890
  142. package/src/v2/components/chat/CopilotModalHeader.tsx +0 -129
  143. package/src/v2/components/chat/CopilotPopup.tsx +0 -81
  144. package/src/v2/components/chat/CopilotPopupView.tsx +0 -317
  145. package/src/v2/components/chat/CopilotSidebar.tsx +0 -80
  146. package/src/v2/components/chat/CopilotSidebarView.tsx +0 -269
  147. package/src/v2/components/chat/Lightbox.tsx +0 -103
  148. package/src/v2/components/chat/__tests__/CopilotChat.absentThreadConnect.test.tsx +0 -66
  149. package/src/v2/components/chat/__tests__/CopilotChat.attachments.test.tsx +0 -168
  150. package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +0 -1239
  151. package/src/v2/components/chat/__tests__/CopilotChat.onError.test.tsx +0 -73
  152. package/src/v2/components/chat/__tests__/CopilotChat.slots.e2e.test.tsx +0 -432
  153. package/src/v2/components/chat/__tests__/CopilotChat.suggestionsAlways.test.tsx +0 -183
  154. package/src/v2/components/chat/__tests__/CopilotChat.welcomeGate.test.tsx +0 -184
  155. package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.tsx +0 -649
  156. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.slots.e2e.test.tsx +0 -624
  157. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +0 -702
  158. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.thumbs.test.tsx +0 -72
  159. package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.tsx +0 -241
  160. package/src/v2/components/chat/__tests__/CopilotChatCssClasses.test.tsx +0 -107
  161. package/src/v2/components/chat/__tests__/CopilotChatInput.slots.e2e.test.tsx +0 -929
  162. package/src/v2/components/chat/__tests__/CopilotChatInput.test.tsx +0 -1567
  163. package/src/v2/components/chat/__tests__/CopilotChatMessageView.slots.e2e.test.tsx +0 -1004
  164. package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.tsx +0 -279
  165. package/src/v2/components/chat/__tests__/CopilotChatPerf.e2e.test.tsx +0 -336
  166. package/src/v2/components/chat/__tests__/CopilotChatPropsRerender.e2e.test.tsx +0 -249
  167. package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.slots.e2e.test.tsx +0 -530
  168. package/src/v2/components/chat/__tests__/CopilotChatToolRendering.e2e.test.tsx +0 -785
  169. package/src/v2/components/chat/__tests__/CopilotChatToolRerenders.e2e.test.tsx +0 -2416
  170. package/src/v2/components/chat/__tests__/CopilotChatUserMessage.slots.e2e.test.tsx +0 -621
  171. package/src/v2/components/chat/__tests__/CopilotChatView.connectingGate.test.tsx +0 -56
  172. package/src/v2/components/chat/__tests__/CopilotChatView.inputOverlay.test.tsx +0 -264
  173. package/src/v2/components/chat/__tests__/CopilotChatView.onClick.e2e.test.tsx +0 -853
  174. package/src/v2/components/chat/__tests__/CopilotChatView.pinToSend.test.tsx +0 -94
  175. package/src/v2/components/chat/__tests__/CopilotChatView.slots.e2e.test.tsx +0 -1050
  176. package/src/v2/components/chat/__tests__/CopilotModalHeader.slots.e2e.test.tsx +0 -484
  177. package/src/v2/components/chat/__tests__/CopilotPopupView.slots.e2e.test.tsx +0 -612
  178. package/src/v2/components/chat/__tests__/CopilotSidebarView.position.test.tsx +0 -159
  179. package/src/v2/components/chat/__tests__/CopilotSidebarView.slots.e2e.test.tsx +0 -502
  180. package/src/v2/components/chat/__tests__/MCPAppsActivityRenderer.e2e.test.tsx +0 -1068
  181. package/src/v2/components/chat/__tests__/MCPAppsProxy.e2e.test.tsx +0 -589
  182. package/src/v2/components/chat/__tests__/MCPAppsUiMessage.e2e.test.tsx +0 -403
  183. package/src/v2/components/chat/__tests__/copilot-chat-throttle.test.tsx +0 -137
  184. package/src/v2/components/chat/__tests__/normalize-auto-scroll.test.ts +0 -37
  185. package/src/v2/components/chat/__tests__/setup.ts +0 -1
  186. package/src/v2/components/chat/index.ts +0 -90
  187. package/src/v2/components/chat/last-user-message-context.ts +0 -21
  188. package/src/v2/components/chat/normalize-auto-scroll.ts +0 -17
  189. package/src/v2/components/chat/scroll-element-context.ts +0 -13
  190. package/src/v2/components/index.ts +0 -8
  191. package/src/v2/components/intelligence-indicator/IntelligenceIndicator.tsx +0 -286
  192. package/src/v2/components/intelligence-indicator/__tests__/IntelligenceIndicator.e2e.test.tsx +0 -464
  193. package/src/v2/components/intelligence-indicator/index.ts +0 -2
  194. package/src/v2/components/license-warning-banner.tsx +0 -217
  195. package/src/v2/components/ui/button.tsx +0 -124
  196. package/src/v2/components/ui/dropdown-menu.tsx +0 -258
  197. package/src/v2/components/ui/tooltip.tsx +0 -60
  198. package/src/v2/context.ts +0 -62
  199. package/src/v2/headless.ts +0 -64
  200. package/src/v2/hooks/__tests__/standard-schema-types.test.tsx +0 -152
  201. package/src/v2/hooks/__tests__/standard-schema.test.tsx +0 -282
  202. package/src/v2/hooks/__tests__/use-agent-context-timing.e2e.test.tsx +0 -140
  203. package/src/v2/hooks/__tests__/use-agent-context.test.tsx +0 -401
  204. package/src/v2/hooks/__tests__/use-agent-error-state.test.tsx +0 -44
  205. package/src/v2/hooks/__tests__/use-agent-stability.test.tsx +0 -211
  206. package/src/v2/hooks/__tests__/use-agent-throttle.test.tsx +0 -1029
  207. package/src/v2/hooks/__tests__/use-agent.e2e.test.tsx +0 -159
  208. package/src/v2/hooks/__tests__/use-attachments.test.tsx +0 -169
  209. package/src/v2/hooks/__tests__/use-capabilities.test.tsx +0 -76
  210. package/src/v2/hooks/__tests__/use-component.test.tsx +0 -126
  211. package/src/v2/hooks/__tests__/use-configure-suggestions.e2e.test.tsx +0 -696
  212. package/src/v2/hooks/__tests__/use-default-render-tool.test.tsx +0 -153
  213. package/src/v2/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -167
  214. package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.tsx +0 -2148
  215. package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.tsx +0 -1261
  216. package/src/v2/hooks/__tests__/use-interrupt.test.tsx +0 -397
  217. package/src/v2/hooks/__tests__/use-katex-styles.test.tsx +0 -56
  218. package/src/v2/hooks/__tests__/use-keyboard-height.test.tsx +0 -192
  219. package/src/v2/hooks/__tests__/use-pin-to-send.test.tsx +0 -219
  220. package/src/v2/hooks/__tests__/use-render-custom-messages.test.tsx +0 -55
  221. package/src/v2/hooks/__tests__/use-render-tool.test.tsx +0 -259
  222. package/src/v2/hooks/__tests__/use-suggestions.e2e.test.tsx +0 -524
  223. package/src/v2/hooks/__tests__/use-threads.test.tsx +0 -757
  224. package/src/v2/hooks/__tests__/zod-regression.test.tsx +0 -311
  225. package/src/v2/hooks/index.ts +0 -24
  226. package/src/v2/hooks/use-agent-context.tsx +0 -45
  227. package/src/v2/hooks/use-agent.tsx +0 -227
  228. package/src/v2/hooks/use-attachments.tsx +0 -269
  229. package/src/v2/hooks/use-capabilities.tsx +0 -25
  230. package/src/v2/hooks/use-component.tsx +0 -91
  231. package/src/v2/hooks/use-configure-suggestions.tsx +0 -236
  232. package/src/v2/hooks/use-default-render-tool.tsx +0 -271
  233. package/src/v2/hooks/use-frontend-tool.tsx +0 -46
  234. package/src/v2/hooks/use-human-in-the-loop.tsx +0 -81
  235. package/src/v2/hooks/use-interrupt.tsx +0 -305
  236. package/src/v2/hooks/use-keyboard-height.tsx +0 -67
  237. package/src/v2/hooks/use-pin-to-send.ts +0 -94
  238. package/src/v2/hooks/use-render-activity-message.tsx +0 -72
  239. package/src/v2/hooks/use-render-custom-messages.tsx +0 -93
  240. package/src/v2/hooks/use-render-tool-call.tsx +0 -208
  241. package/src/v2/hooks/use-render-tool.tsx +0 -184
  242. package/src/v2/hooks/use-suggestions.tsx +0 -91
  243. package/src/v2/hooks/use-threads.tsx +0 -325
  244. package/src/v2/hooks/useKatexStyles.ts +0 -27
  245. package/src/v2/index.css +0 -1
  246. package/src/v2/index.ts +0 -27
  247. package/src/v2/lib/__tests__/completePartialMarkdown.test.ts +0 -495
  248. package/src/v2/lib/__tests__/processPartialHtml.test.ts +0 -112
  249. package/src/v2/lib/__tests__/renderSlot.test.tsx +0 -588
  250. package/src/v2/lib/__tests__/slots.test.ts +0 -56
  251. package/src/v2/lib/processPartialHtml.ts +0 -45
  252. package/src/v2/lib/react-core.ts +0 -156
  253. package/src/v2/lib/slots.tsx +0 -184
  254. package/src/v2/lib/transcription-client.ts +0 -184
  255. package/src/v2/lib/utils.ts +0 -8
  256. package/src/v2/providers/CopilotChatConfigurationProvider.tsx +0 -196
  257. package/src/v2/providers/CopilotKitProvider.tsx +0 -800
  258. package/src/v2/providers/SandboxFunctionsContext.ts +0 -10
  259. package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.tsx +0 -652
  260. package/src/v2/providers/__tests__/CopilotKitProvider.license.test.tsx +0 -101
  261. package/src/v2/providers/__tests__/CopilotKitProvider.onError.test.tsx +0 -69
  262. package/src/v2/providers/__tests__/CopilotKitProvider.renderCustomMessages.e2e.test.tsx +0 -881
  263. package/src/v2/providers/__tests__/CopilotKitProvider.sandboxFunctions.test.tsx +0 -198
  264. package/src/v2/providers/__tests__/CopilotKitProvider.stability.test.tsx +0 -740
  265. package/src/v2/providers/__tests__/CopilotKitProvider.test.tsx +0 -713
  266. package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.tsx +0 -294
  267. package/src/v2/providers/index.ts +0 -21
  268. package/src/v2/styles/globals.css +0 -349
  269. package/src/v2/types/__tests__/defineToolCallRenderer.test.tsx +0 -525
  270. package/src/v2/types/defineToolCallRenderer.ts +0 -68
  271. package/src/v2/types/frontend-tool.ts +0 -8
  272. package/src/v2/types/human-in-the-loop.ts +0 -33
  273. package/src/v2/types/index.ts +0 -8
  274. package/src/v2/types/interrupt.ts +0 -15
  275. package/src/v2/types/react-activity-message-renderer.ts +0 -27
  276. package/src/v2/types/react-custom-message-renderer.ts +0 -17
  277. package/src/v2/types/react-tool-call-renderer.ts +0 -35
  278. package/src/v2/types/sandbox-function.ts +0 -11
  279. package/tsconfig.json +0 -8
  280. package/tsdown.config.ts +0 -193
  281. package/typedoc.json +0 -4
  282. package/vitest.config.mjs +0 -31
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@copilotkit/react-core",
3
- "version": "1.57.3",
3
+ "version": "1.58.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "ai",
@@ -12,6 +12,7 @@
12
12
  "nextjs",
13
13
  "nodejs",
14
14
  "react",
15
+ "tanstack-intent",
15
16
  "textarea"
16
17
  ],
17
18
  "homepage": "https://github.com/CopilotKit/CopilotKit",
@@ -20,6 +21,10 @@
20
21
  "type": "git",
21
22
  "url": "https://github.com/CopilotKit/CopilotKit.git"
22
23
  },
24
+ "files": [
25
+ "dist",
26
+ "skills"
27
+ ],
23
28
  "type": "module",
24
29
  "sideEffects": [
25
30
  "**/*.css"
@@ -27,13 +32,6 @@
27
32
  "main": "./dist/index.cjs",
28
33
  "module": "./dist/index.mjs",
29
34
  "types": "./dist/index.d.cts",
30
- "typesVersions": {
31
- "*": {
32
- "v2": [
33
- "./dist/v2/index.d.cts"
34
- ]
35
- }
36
- },
37
35
  "unpkg": "./dist/index.umd.js",
38
36
  "jsdelivr": "./dist/index.umd.js",
39
37
  "exports": {
@@ -81,16 +79,17 @@
81
79
  "untruncate-json": "^0.0.1",
82
80
  "use-stick-to-bottom": "^1.1.1",
83
81
  "zod-to-json-schema": "^3.24.5",
84
- "@copilotkit/a2ui-renderer": "1.57.3",
85
- "@copilotkit/core": "1.57.3",
86
- "@copilotkit/runtime-client-gql": "1.57.3",
87
- "@copilotkit/shared": "1.57.3",
88
- "@copilotkit/web-inspector": "1.57.3"
82
+ "@copilotkit/a2ui-renderer": "1.58.0",
83
+ "@copilotkit/runtime-client-gql": "1.58.0",
84
+ "@copilotkit/shared": "1.58.0",
85
+ "@copilotkit/core": "1.58.0",
86
+ "@copilotkit/web-inspector": "1.58.0"
89
87
  },
90
88
  "devDependencies": {
91
89
  "@tailwindcss/cli": "^4.1.11",
92
90
  "@tailwindcss/postcss": "^4.1.11",
93
91
  "@tailwindcss/typography": "^0.5.16",
92
+ "@tanstack/intent": "^0.0.29",
94
93
  "@testing-library/jest-dom": "^6.0.0",
95
94
  "@testing-library/react": "^16.3.0",
96
95
  "@testing-library/react-hooks": "^8.0.1",
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: react-core
3
+ description: >
4
+ @copilotkit/react-core — mount CopilotKitProvider in a Next.js App Router / React Router
5
+ v7 / TanStack Start / SPA app, drop in CopilotChat/CopilotPopup/CopilotSidebar (v2 chat
6
+ components ship from react-core/v2 — NOT react-ui, which is CSS-only in v2), access and
7
+ subscribe to agents with useAgent / useAgentContext / useCapabilities, switch between
8
+ multiple agents, manage durable Intelligence threads with useThreads, register
9
+ browser-side tools via useFrontendTool, render tool calls with useRenderTool /
10
+ useComponent / useDefaultRenderTool, gate execution with useHumanInTheLoop, wire file
11
+ attachments with useAttachments, configure suggestion pills, and register activity- and
12
+ custom-message renderers. publicLicenseKey is canonical (publicApiKey is deprecated
13
+ alias). Load the reference under references/ that matches your task.
14
+ type: framework
15
+ library: copilotkit
16
+ library_version: "1.56.2"
17
+ requires:
18
+ - copilotkit/runtime
19
+ sources:
20
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/providers/CopilotKitProvider.tsx"
21
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/index.ts"
22
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/components/chat/index.ts"
23
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/components/chat/CopilotChat.tsx"
24
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/components/chat/CopilotChatView.tsx"
25
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/components/CopilotKitInspector.tsx"
26
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-agent.tsx"
27
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-agent-context.tsx"
28
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-capabilities.tsx"
29
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-threads.tsx"
30
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-frontend-tool.tsx"
31
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-render-tool.tsx"
32
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-render-tool-call.tsx"
33
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-default-render-tool.tsx"
34
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-component.tsx"
35
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-human-in-the-loop.tsx"
36
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-attachments.tsx"
37
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-configure-suggestions.tsx"
38
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-suggestions.tsx"
39
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-render-activity-message.tsx"
40
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/hooks/use-render-custom-messages.tsx"
41
+ - "CopilotKit/CopilotKit:packages/react-core/src/v2/lib/slots.tsx"
42
+ - "CopilotKit/CopilotKit:packages/core/src/core/core.ts"
43
+ - "CopilotKit/CopilotKit:packages/core/src/core/agent-registry.ts"
44
+ - "CopilotKit/CopilotKit:packages/core/src/core/run-handler.ts"
45
+ - "CopilotKit/CopilotKit:packages/core/src/types.ts"
46
+ ---
47
+
48
+ # CopilotKit React Core
49
+
50
+ `@copilotkit/react-core` is the React frontend half of CopilotKit: it mounts a provider,
51
+ speaks AG-UI over SSE to a runtime (or directly to CopilotKit Cloud in SPA mode), and
52
+ exposes hooks for every interaction surface.
53
+
54
+ This SKILL.md is the **index**. Read the reference under `references/` that matches
55
+ your task — do not try to absorb the whole package from this file.
56
+
57
+ ## Mental model — three shells you compose
58
+
59
+ 1. **Provider shell** — `CopilotKitProvider` at or near the root (inside `"use client"` for
60
+ Next.js App Router). Carries `runtimeUrl` (or `publicLicenseKey` for SPA), `headers`,
61
+ `credentials`, `properties`, `onError`, `debug`, `showDevConsole`.
62
+ 2. **Chat shell** — `CopilotChat` / `CopilotPopup` / `CopilotSidebar` or a composed
63
+ `CopilotChatView` + slot primitives (`CopilotChatInput`, `CopilotChatMessageView`, etc.).
64
+ All chat components ship from `@copilotkit/react-core/v2`. **`CopilotPanel` does not
65
+ exist** — it's a common hallucination.
66
+ 3. **Hook shell** — inside any component under the provider, call `useAgent`,
67
+ `useFrontendTool`, `useRenderTool`, etc. Every hook takes optional `{ agentId }` for
68
+ agent-scoped registration.
69
+
70
+ ## When to load which reference
71
+
72
+ | Task | Reference |
73
+ | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
74
+ | Mount `CopilotKitProvider`, pick `runtimeUrl` vs `publicLicenseKey`, RSC boundary rules | `references/provider-setup.md` |
75
+ | Drop in `CopilotChat` / `CopilotPopup` / `CopilotSidebar`, compose `CopilotChatView` with slot primitives | `references/chat-components.md` |
76
+ | File / image attachments via `useAttachments` — drag-drop, click, paste, custom upload | `references/attachments.md` |
77
+ | Client-side debug tooling — `showDevConsole`, `debug` prop, lazy-loaded web inspector | `references/debug-mode.md` |
78
+ | Read / subscribe to an agent (`useAgent`) and push global context (`useAgentContext`) | `references/agent-access.md` |
79
+ | Feature-gate UI on declared agent capabilities (`useCapabilities`) | `references/capabilities.md` |
80
+ | Build a multi-agent UI (per-panel `useAgent`, agent-scoped tools, key-remount pattern) | `references/switching-agents.md` (+ `switching-agents-recipes.md` for concrete layouts) |
81
+ | List / rename / archive / delete durable Intelligence threads (`useThreads`) | `references/threads.md` (**requires runtime Intelligence mode**) |
82
+ | Register browser-side tools (`useFrontendTool`) | `references/client-side-tools.md` |
83
+ | Render per-tool UI (`useRenderTool`, `useComponent`, `useDefaultRenderTool`, `useRenderToolCall`) | `references/rendering-tool-calls.md` |
84
+ | Gate tool execution behind user approval (`useHumanInTheLoop`) | `references/human-in-the-loop.md` |
85
+ | Configure dynamic or static suggestion pills (`useConfigureSuggestions`, `useSuggestions`) | `references/suggestions.md` |
86
+ | Render non-chat activity messages (`useRenderActivityMessage`) | `references/rendering-activity-messages.md` |
87
+ | Inject custom UI before/after specific messages (`useRenderCustomMessages`) | `references/custom-message-renderers.md` |
88
+
89
+ ## Invariants and gotchas (load-once, before any reference)
90
+
91
+ - `publicLicenseKey` is canonical. `publicApiKey` is a **deprecated alias** — expect it in legacy code.
92
+ - `agents__unsafe_dev_only` and `selfManagedAgents` are dev-only aliases of each other. **Not production-safe.** See `packages/a2ui-renderer` or the `spa-without-runtime` lifecycle skill for the supported SPA path.
93
+ - `CopilotPanel` does not exist. v2 chat components ship from `react-core/v2` — **not** `react-ui` (v2 `react-ui` is CSS-only).
94
+ - No `useAgents()` hook exists. Discover agents via `copilotkit.subscribe({ onAgentsChanged })`.
95
+ - `useRenderToolCall` is a **resolver** (for custom chat surfaces), **not** a registration hook. Register with `useRenderTool` / `useComponent` / `useDefaultRenderTool`.
96
+ - UI-kit detection rule — any `render` or tool-call UI MUST reuse the consumer's shadcn / MUI / Chakra / Ant / Mantine primitives before writing raw JSX. This applies across `client-side-tools`, `rendering-tool-calls`, and `human-in-the-loop`.
97
+ - Tool-call `status` values are camelCase: `'inProgress' | 'executing' | 'complete'`. In-progress args are `Partial<T>`.
98
+ - `useHumanInTheLoop` synthesized handler **MUST** call `respond(result)` (including reject paths), otherwise the agent run hangs. `respond` is `undefined` outside `Executing` status. Unmounting mid-Executing abandons the run.
99
+ - `useThreads` errors with `'Runtime URL is not configured'` outside Intelligence mode.
100
+ - `v1 → v2` migration renames: `useCopilotAction` → `useFrontendTool` + `useHumanInTheLoop`; `imageUploadsEnabled` → `attachments`. See the `v1-to-v2-migration` lifecycle skill.
101
+
102
+ ## Reading order for a first-time reader
103
+
104
+ 1. `provider-setup` — mount the provider.
105
+ 2. `chat-components` — wire a chat surface.
106
+ 3. `agent-access` — talk to agents.
107
+ 4. `client-side-tools` + `rendering-tool-calls` — add tool-call UI.
108
+ 5. Anything else as your feature requires.
@@ -0,0 +1,288 @@
1
+ # CopilotKit Agent Access (React)
2
+
3
+ This skill builds on `copilotkit/provider-setup`. `useAgent` reads from the
4
+ same registry the provider populates from `/info`.
5
+
6
+ Two complementary surfaces:
7
+
8
+ - `useAgent` — imperative access to an agent instance, subscribe to
9
+ messages/state/run-status changes.
10
+ - `useAgentContext` — declarative push of app state to every agent run.
11
+
12
+ ## Setup
13
+
14
+ ```tsx
15
+ "use client";
16
+ import {
17
+ useAgent,
18
+ useAgentContext,
19
+ UseAgentUpdate,
20
+ } from "@copilotkit/react-core/v2";
21
+ import { useMemo } from "react";
22
+
23
+ export function ChatDriver({
24
+ route,
25
+ userId,
26
+ }: {
27
+ route: string;
28
+ userId: string;
29
+ }) {
30
+ const { agent } = useAgent({
31
+ agentId: "default",
32
+ threadId: "main",
33
+ updates: [
34
+ UseAgentUpdate.OnMessagesChanged,
35
+ UseAgentUpdate.OnRunStatusChanged,
36
+ ],
37
+ throttleMs: 100,
38
+ });
39
+
40
+ const context = useMemo(() => ({ route, userId }), [route, userId]);
41
+ useAgentContext({ description: "app context", value: context });
42
+
43
+ return (
44
+ <div>
45
+ {agent.isRunning ? "…thinking" : "idle"} — {agent.messages.length}{" "}
46
+ messages
47
+ </div>
48
+ );
49
+ }
50
+ ```
51
+
52
+ ## Core Patterns
53
+
54
+ ### Send a message and stream the response
55
+
56
+ ```tsx
57
+ const { agent } = useAgent({ agentId: "default" });
58
+ const { copilotkit } = useCopilotKit();
59
+
60
+ async function ask(text: string) {
61
+ agent.addMessage({ id: crypto.randomUUID(), role: "user", content: text });
62
+ await copilotkit.runAgent({ agent });
63
+ }
64
+ ```
65
+
66
+ ### Subscribe only to run-status to reduce re-renders
67
+
68
+ ```tsx
69
+ const { agent } = useAgent({
70
+ agentId: "default",
71
+ updates: [UseAgentUpdate.OnRunStatusChanged],
72
+ });
73
+ const isRunning = agent.isRunning;
74
+ ```
75
+
76
+ `useAgent` returns `{ agent }` only; `isRunning` lives on the agent
77
+ itself. Subscribing to `OnRunStatusChanged` forces a re-render when the
78
+ value flips, so reading `agent.isRunning` stays live.
79
+
80
+ ### Share app state with every agent run (global)
81
+
82
+ ```tsx
83
+ const value = useMemo(
84
+ () => ({ cartItems: cart.items, currentRoute: router.pathname }),
85
+ [cart.items, router.pathname],
86
+ );
87
+ useAgentContext({ description: "user cart + route", value });
88
+ ```
89
+
90
+ ### Abort the run
91
+
92
+ ```tsx
93
+ const { agent } = useAgent({ agentId: "default" });
94
+ <button onClick={() => agent.abortRun()}>Stop</button>;
95
+ ```
96
+
97
+ ## Common Mistakes
98
+
99
+ ### CRITICAL — Custom `AbstractAgent.clone()` that returns `this`
100
+
101
+ Wrong:
102
+
103
+ ```tsx
104
+ class MyAgent extends AbstractAgent {
105
+ clone() {
106
+ return this; // wrong — same instance is reused across threads
107
+ }
108
+ }
109
+ ```
110
+
111
+ Correct:
112
+
113
+ ```tsx
114
+ class MyAgent extends AbstractAgent {
115
+ clone() {
116
+ const next = new MyAgent(this.config);
117
+ next.state = { ...this.state };
118
+ return next;
119
+ }
120
+ }
121
+ ```
122
+
123
+ `useAgent` calls `source.clone()` to build a per-thread clone and throws
124
+ `clone() must return a new, independent object` if the clone is the same
125
+ instance. This guards per-thread isolation.
126
+
127
+ Source: `packages/react-core/src/v2/hooks/use-agent.tsx:58-69`
128
+
129
+ ### HIGH — Mutating `agent.messages` directly
130
+
131
+ Wrong:
132
+
133
+ ```tsx
134
+ agent.messages.push({ id, role: "user", content: "hi" });
135
+ ```
136
+
137
+ Correct:
138
+
139
+ ```tsx
140
+ agent.addMessage({ id: crypto.randomUUID(), role: "user", content: "hi" });
141
+ // or:
142
+ agent.setMessages([...agent.messages, newMessage]);
143
+ ```
144
+
145
+ AG-UI fires `onMessagesChanged` subscribers via `addMessage` /
146
+ `setMessages`. Direct array mutation bypasses subscribers and the UI never
147
+ re-renders.
148
+
149
+ Source: `packages/react-core/src/v2/hooks/use-agent.tsx` (throughout)
150
+
151
+ ### HIGH — Registering non-serializable values via `useAgentContext`
152
+
153
+ Wrong:
154
+
155
+ ```tsx
156
+ useAgentContext({
157
+ description: "user",
158
+ value: {
159
+ name: "Alice",
160
+ lastLogin: new Date(),
161
+ onLogout: () => logout(), // dropped silently
162
+ },
163
+ });
164
+ ```
165
+
166
+ Correct:
167
+
168
+ ```tsx
169
+ useAgentContext({
170
+ description: "user",
171
+ value: { name: "Alice", lastLogin: new Date().toISOString() },
172
+ });
173
+ ```
174
+
175
+ `useAgentContext` runs the value through `JSON.stringify`. Functions are
176
+ dropped, `Date` coerces to an ISO string (which the agent has to parse), and
177
+ circular references throw.
178
+
179
+ Source: `packages/react-core/src/v2/hooks/use-agent-context.tsx:30-35`
180
+
181
+ ### MEDIUM — Expecting lifecycle callbacks to be throttled
182
+
183
+ Wrong:
184
+
185
+ ```tsx
186
+ useAgent({
187
+ agentId: "default",
188
+ throttleMs: 300,
189
+ // expecting onRunInitialized / onRunFinalized / onRunFailed to also be throttled
190
+ });
191
+ ```
192
+
193
+ Correct:
194
+
195
+ ```tsx
196
+ // Only OnMessagesChanged / OnStateChanged / OnRunStatusChanged are throttled.
197
+ // Lifecycle callbacks always fire immediately — handle them synchronously.
198
+ useAgent({ agentId: "default", throttleMs: 300 });
199
+ ```
200
+
201
+ `throttleMs` only applies to the three subscribed updates enumerated in
202
+ `UseAgentUpdate`. Lifecycle callbacks bypass the throttler.
203
+
204
+ Source: `packages/react-core/src/v2/hooks/use-agent.tsx:36-48`
205
+
206
+ ### MEDIUM — Unstable context value identity
207
+
208
+ Wrong:
209
+
210
+ ```tsx
211
+ useAgentContext({ description: "cart", value: { items: cart.items } });
212
+ ```
213
+
214
+ Correct:
215
+
216
+ ```tsx
217
+ const value = useMemo(() => ({ items: cart.items }), [cart.items]);
218
+ useAgentContext({ description: "cart", value });
219
+ ```
220
+
221
+ A fresh object literal on every render invalidates the `useMemo` inside
222
+ `useAgentContext` that serializes the value, causing constant
223
+ remove/re-add churn in the core context store.
224
+
225
+ Source: `packages/react-core/src/v2/hooks/use-agent-context.tsx:30-35`
226
+
227
+ ### MEDIUM — Expecting `useAgentContext` or `copilotkit.addContext` to scope context per agent
228
+
229
+ Wrong:
230
+
231
+ ```tsx
232
+ useAgentContext({ agentId: "research", description: "paper list", value });
233
+ // or the imperative form:
234
+ copilotkit.addContext({
235
+ description: "paper list",
236
+ value: JSON.stringify(value),
237
+ agentId: "research",
238
+ });
239
+ ```
240
+
241
+ Correct:
242
+
243
+ ```tsx
244
+ // Context is global — every agent run sees every registered entry.
245
+ useAgentContext({ description: "paper list", value });
246
+
247
+ // When only one agent should key off a value, branch inside its prompt
248
+ // or tool logic instead of trying to scope the context entry.
249
+ ```
250
+
251
+ Context is intentionally global and there is no per-agent scoping hook.
252
+ `useAgentContext` has no `agentId` parameter, and `copilotkit.addContext`
253
+ destructures only `{ description, value }` — any `agentId` passed is
254
+ silently dropped. Treat context as "state of the world" that every agent
255
+ sees.
256
+
257
+ Source: `packages/react-core/src/v2/hooks/use-agent-context.tsx` (no `agentId` parameter); `packages/core/src/core/context-store.ts:26-31`
258
+
259
+ ### MEDIUM — Two components using the same `(agentId, threadId)` expecting isolation
260
+
261
+ Wrong:
262
+
263
+ ```tsx
264
+ function A() {
265
+ const { agent } = useAgent({ agentId: "default", threadId: "t1" });
266
+ }
267
+ function B() {
268
+ const { agent } = useAgent({ agentId: "default", threadId: "t1" });
269
+ }
270
+ ```
271
+
272
+ Correct:
273
+
274
+ ```tsx
275
+ function A() {
276
+ useAgent({ agentId: "default", threadId: "a" });
277
+ }
278
+ function B() {
279
+ useAgent({ agentId: "default", threadId: "b" });
280
+ }
281
+ ```
282
+
283
+ Per-thread clones are cached in a module-level WeakMap keyed by
284
+ `(registryAgent, threadId)`. Two consumers of the same `(agentId,
285
+ threadId)` observe the same state. Give each surface a distinct `threadId`
286
+ when isolation is intentional.
287
+
288
+ Source: `packages/react-core/src/v2/hooks/use-agent.tsx:78-119`