@copilotkit/react-core 1.57.3 → 1.57.4

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 (266) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +12 -13
  3. package/skills/react-core/SKILL.md +108 -0
  4. package/skills/react-core/references/agent-access.md +288 -0
  5. package/skills/react-core/references/attachments.md +291 -0
  6. package/skills/react-core/references/capabilities.md +138 -0
  7. package/skills/react-core/references/chat-components.md +221 -0
  8. package/skills/react-core/references/client-side-tools.md +358 -0
  9. package/skills/react-core/references/custom-message-renderers.md +226 -0
  10. package/skills/react-core/references/debug-mode.md +153 -0
  11. package/skills/react-core/references/human-in-the-loop.md +312 -0
  12. package/skills/react-core/references/provider-setup.md +326 -0
  13. package/skills/react-core/references/rendering-activity-messages.md +207 -0
  14. package/skills/react-core/references/rendering-tool-calls.md +319 -0
  15. package/skills/react-core/references/suggestions.md +211 -0
  16. package/skills/react-core/references/switching-agents-recipes.md +160 -0
  17. package/skills/react-core/references/switching-agents.md +231 -0
  18. package/skills/react-core/references/threads.md +226 -0
  19. package/.attw.json +0 -3
  20. package/CHANGELOG.md +0 -5043
  21. package/scripts/scope-preflight.mjs +0 -100
  22. package/src/components/CopilotListeners.tsx +0 -137
  23. package/src/components/__tests__/CopilotListeners.test.tsx +0 -38
  24. package/src/components/copilot-provider/__tests__/copilot-messages-key.test.tsx +0 -92
  25. package/src/components/copilot-provider/__tests__/copilotkit-error.test.tsx +0 -77
  26. package/src/components/copilot-provider/__tests__/error-visibility-prod.test.tsx +0 -70
  27. package/src/components/copilot-provider/__tests__/v1-explicit-threadid-bridge.test.tsx +0 -107
  28. package/src/components/copilot-provider/copilot-messages.tsx +0 -314
  29. package/src/components/copilot-provider/copilotkit-props.tsx +0 -214
  30. package/src/components/copilot-provider/copilotkit.tsx +0 -853
  31. package/src/components/copilot-provider/index.ts +0 -3
  32. package/src/components/dev-console/console-trigger.tsx +0 -283
  33. package/src/components/dev-console/developer-console-modal.tsx +0 -1016
  34. package/src/components/dev-console/icons.tsx +0 -106
  35. package/src/components/error-boundary/error-boundary.tsx +0 -99
  36. package/src/components/error-boundary/error-utils.tsx +0 -105
  37. package/src/components/index.ts +0 -1
  38. package/src/components/toast/exclamation-mark-icon.tsx +0 -27
  39. package/src/components/toast/toast-provider.tsx +0 -448
  40. package/src/components/usage-banner.tsx +0 -266
  41. package/src/context/__tests__/threads-context.test.tsx +0 -141
  42. package/src/context/coagent-state-renders-context.tsx +0 -89
  43. package/src/context/copilot-context.tsx +0 -365
  44. package/src/context/copilot-messages-context.tsx +0 -35
  45. package/src/context/index.ts +0 -22
  46. package/src/context/threads-context.tsx +0 -69
  47. package/src/hooks/__tests__/use-coagent-config.test.ts +0 -352
  48. package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +0 -107
  49. package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +0 -1209
  50. package/src/hooks/__tests__/use-coagent-state-render.test.tsx +0 -356
  51. package/src/hooks/__tests__/use-copilot-chat-internal-connect.test.tsx +0 -241
  52. package/src/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -72
  53. package/src/hooks/__tests__/use-frontend-tool-remount.e2e.test.tsx +0 -102
  54. package/src/hooks/index.ts +0 -33
  55. package/src/hooks/use-agent-nodename.ts +0 -33
  56. package/src/hooks/use-coagent-state-render-bridge.helpers.ts +0 -345
  57. package/src/hooks/use-coagent-state-render-bridge.tsx +0 -222
  58. package/src/hooks/use-coagent-state-render-registry.ts +0 -230
  59. package/src/hooks/use-coagent-state-render.ts +0 -163
  60. package/src/hooks/use-coagent.ts +0 -377
  61. package/src/hooks/use-configure-chat-suggestions.tsx +0 -96
  62. package/src/hooks/use-copilot-action.ts +0 -245
  63. package/src/hooks/use-copilot-additional-instructions.ts +0 -98
  64. package/src/hooks/use-copilot-authenticated-action.ts +0 -73
  65. package/src/hooks/use-copilot-chat-headless_c.ts +0 -264
  66. package/src/hooks/use-copilot-chat-suggestions.tsx +0 -134
  67. package/src/hooks/use-copilot-chat.ts +0 -132
  68. package/src/hooks/use-copilot-chat_internal.ts +0 -875
  69. package/src/hooks/use-copilot-readable.ts +0 -135
  70. package/src/hooks/use-copilot-runtime-client.ts +0 -178
  71. package/src/hooks/use-default-tool.ts +0 -13
  72. package/src/hooks/use-flat-category-store.ts +0 -109
  73. package/src/hooks/use-frontend-tool.ts +0 -113
  74. package/src/hooks/use-human-in-the-loop.ts +0 -138
  75. package/src/hooks/use-langgraph-interrupt.ts +0 -103
  76. package/src/hooks/use-lazy-tool-renderer.tsx +0 -30
  77. package/src/hooks/use-make-copilot-document-readable.ts +0 -30
  78. package/src/hooks/use-render-tool-call.ts +0 -89
  79. package/src/hooks/use-tree.ts +0 -222
  80. package/src/index.tsx +0 -7
  81. package/src/lib/copilot-task.ts +0 -215
  82. package/src/lib/index.ts +0 -1
  83. package/src/lib/status-checker.ts +0 -67
  84. package/src/setupTests.ts +0 -37
  85. package/src/test-helpers/copilot-context.ts +0 -91
  86. package/src/types/chat-suggestion-configuration.ts +0 -23
  87. package/src/types/coagent-action.ts +0 -35
  88. package/src/types/coagent-state.ts +0 -13
  89. package/src/types/crew.ts +0 -89
  90. package/src/types/document-pointer.ts +0 -7
  91. package/src/types/frontend-action.ts +0 -213
  92. package/src/types/index.ts +0 -17
  93. package/src/types/interrupt-action.ts +0 -58
  94. package/src/types/system-message.ts +0 -4
  95. package/src/utils/dev-console.ts +0 -19
  96. package/src/utils/index.ts +0 -2
  97. package/src/utils/suggestions-constants.ts +0 -8
  98. package/src/utils/utils.test.ts +0 -7
  99. package/src/utils/utils.ts +0 -6
  100. package/src/v2/__tests__/A2UIMessageRenderer.test.tsx +0 -240
  101. package/src/v2/__tests__/globalSetup.ts +0 -14
  102. package/src/v2/__tests__/setup.ts +0 -93
  103. package/src/v2/__tests__/utils/test-helpers.tsx +0 -570
  104. package/src/v2/a2ui/A2UICatalogContext.tsx +0 -79
  105. package/src/v2/a2ui/A2UIMessageRenderer.tsx +0 -294
  106. package/src/v2/a2ui/A2UIToolCallRenderer.tsx +0 -290
  107. package/src/v2/components/CopilotKitInspector.tsx +0 -52
  108. package/src/v2/components/MCPAppsActivityRenderer.tsx +0 -815
  109. package/src/v2/components/OpenGenerativeUIRenderer.tsx +0 -598
  110. package/src/v2/components/WildcardToolCallRender.tsx +0 -86
  111. package/src/v2/components/__tests__/OpenGenerativeUIRenderer.test.tsx +0 -665
  112. package/src/v2/components/chat/CopilotChat.tsx +0 -664
  113. package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +0 -393
  114. package/src/v2/components/chat/CopilotChatAttachmentQueue.tsx +0 -374
  115. package/src/v2/components/chat/CopilotChatAttachmentRenderer.tsx +0 -159
  116. package/src/v2/components/chat/CopilotChatAudioRecorder.tsx +0 -350
  117. package/src/v2/components/chat/CopilotChatInput.tsx +0 -1412
  118. package/src/v2/components/chat/CopilotChatMessageView.tsx +0 -716
  119. package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +0 -265
  120. package/src/v2/components/chat/CopilotChatSuggestionPill.tsx +0 -59
  121. package/src/v2/components/chat/CopilotChatSuggestionView.tsx +0 -134
  122. package/src/v2/components/chat/CopilotChatToggleButton.tsx +0 -171
  123. package/src/v2/components/chat/CopilotChatToolCallsView.tsx +0 -40
  124. package/src/v2/components/chat/CopilotChatUserMessage.tsx +0 -445
  125. package/src/v2/components/chat/CopilotChatView.tsx +0 -890
  126. package/src/v2/components/chat/CopilotModalHeader.tsx +0 -129
  127. package/src/v2/components/chat/CopilotPopup.tsx +0 -81
  128. package/src/v2/components/chat/CopilotPopupView.tsx +0 -317
  129. package/src/v2/components/chat/CopilotSidebar.tsx +0 -80
  130. package/src/v2/components/chat/CopilotSidebarView.tsx +0 -269
  131. package/src/v2/components/chat/Lightbox.tsx +0 -103
  132. package/src/v2/components/chat/__tests__/CopilotChat.absentThreadConnect.test.tsx +0 -66
  133. package/src/v2/components/chat/__tests__/CopilotChat.attachments.test.tsx +0 -168
  134. package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +0 -1239
  135. package/src/v2/components/chat/__tests__/CopilotChat.onError.test.tsx +0 -73
  136. package/src/v2/components/chat/__tests__/CopilotChat.slots.e2e.test.tsx +0 -432
  137. package/src/v2/components/chat/__tests__/CopilotChat.suggestionsAlways.test.tsx +0 -183
  138. package/src/v2/components/chat/__tests__/CopilotChat.welcomeGate.test.tsx +0 -184
  139. package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.tsx +0 -649
  140. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.slots.e2e.test.tsx +0 -624
  141. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +0 -702
  142. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.thumbs.test.tsx +0 -72
  143. package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.tsx +0 -241
  144. package/src/v2/components/chat/__tests__/CopilotChatCssClasses.test.tsx +0 -107
  145. package/src/v2/components/chat/__tests__/CopilotChatInput.slots.e2e.test.tsx +0 -929
  146. package/src/v2/components/chat/__tests__/CopilotChatInput.test.tsx +0 -1567
  147. package/src/v2/components/chat/__tests__/CopilotChatMessageView.slots.e2e.test.tsx +0 -1004
  148. package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.tsx +0 -279
  149. package/src/v2/components/chat/__tests__/CopilotChatPerf.e2e.test.tsx +0 -336
  150. package/src/v2/components/chat/__tests__/CopilotChatPropsRerender.e2e.test.tsx +0 -249
  151. package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.slots.e2e.test.tsx +0 -530
  152. package/src/v2/components/chat/__tests__/CopilotChatToolRendering.e2e.test.tsx +0 -785
  153. package/src/v2/components/chat/__tests__/CopilotChatToolRerenders.e2e.test.tsx +0 -2416
  154. package/src/v2/components/chat/__tests__/CopilotChatUserMessage.slots.e2e.test.tsx +0 -621
  155. package/src/v2/components/chat/__tests__/CopilotChatView.connectingGate.test.tsx +0 -56
  156. package/src/v2/components/chat/__tests__/CopilotChatView.inputOverlay.test.tsx +0 -264
  157. package/src/v2/components/chat/__tests__/CopilotChatView.onClick.e2e.test.tsx +0 -853
  158. package/src/v2/components/chat/__tests__/CopilotChatView.pinToSend.test.tsx +0 -94
  159. package/src/v2/components/chat/__tests__/CopilotChatView.slots.e2e.test.tsx +0 -1050
  160. package/src/v2/components/chat/__tests__/CopilotModalHeader.slots.e2e.test.tsx +0 -484
  161. package/src/v2/components/chat/__tests__/CopilotPopupView.slots.e2e.test.tsx +0 -612
  162. package/src/v2/components/chat/__tests__/CopilotSidebarView.position.test.tsx +0 -159
  163. package/src/v2/components/chat/__tests__/CopilotSidebarView.slots.e2e.test.tsx +0 -502
  164. package/src/v2/components/chat/__tests__/MCPAppsActivityRenderer.e2e.test.tsx +0 -1068
  165. package/src/v2/components/chat/__tests__/MCPAppsProxy.e2e.test.tsx +0 -589
  166. package/src/v2/components/chat/__tests__/MCPAppsUiMessage.e2e.test.tsx +0 -403
  167. package/src/v2/components/chat/__tests__/copilot-chat-throttle.test.tsx +0 -137
  168. package/src/v2/components/chat/__tests__/normalize-auto-scroll.test.ts +0 -37
  169. package/src/v2/components/chat/__tests__/setup.ts +0 -1
  170. package/src/v2/components/chat/index.ts +0 -90
  171. package/src/v2/components/chat/last-user-message-context.ts +0 -21
  172. package/src/v2/components/chat/normalize-auto-scroll.ts +0 -17
  173. package/src/v2/components/chat/scroll-element-context.ts +0 -13
  174. package/src/v2/components/index.ts +0 -8
  175. package/src/v2/components/intelligence-indicator/IntelligenceIndicator.tsx +0 -286
  176. package/src/v2/components/intelligence-indicator/__tests__/IntelligenceIndicator.e2e.test.tsx +0 -464
  177. package/src/v2/components/intelligence-indicator/index.ts +0 -2
  178. package/src/v2/components/license-warning-banner.tsx +0 -217
  179. package/src/v2/components/ui/button.tsx +0 -124
  180. package/src/v2/components/ui/dropdown-menu.tsx +0 -258
  181. package/src/v2/components/ui/tooltip.tsx +0 -60
  182. package/src/v2/context.ts +0 -62
  183. package/src/v2/headless.ts +0 -64
  184. package/src/v2/hooks/__tests__/standard-schema-types.test.tsx +0 -152
  185. package/src/v2/hooks/__tests__/standard-schema.test.tsx +0 -282
  186. package/src/v2/hooks/__tests__/use-agent-context-timing.e2e.test.tsx +0 -140
  187. package/src/v2/hooks/__tests__/use-agent-context.test.tsx +0 -401
  188. package/src/v2/hooks/__tests__/use-agent-error-state.test.tsx +0 -44
  189. package/src/v2/hooks/__tests__/use-agent-stability.test.tsx +0 -211
  190. package/src/v2/hooks/__tests__/use-agent-throttle.test.tsx +0 -1029
  191. package/src/v2/hooks/__tests__/use-agent.e2e.test.tsx +0 -159
  192. package/src/v2/hooks/__tests__/use-attachments.test.tsx +0 -169
  193. package/src/v2/hooks/__tests__/use-capabilities.test.tsx +0 -76
  194. package/src/v2/hooks/__tests__/use-component.test.tsx +0 -126
  195. package/src/v2/hooks/__tests__/use-configure-suggestions.e2e.test.tsx +0 -696
  196. package/src/v2/hooks/__tests__/use-default-render-tool.test.tsx +0 -153
  197. package/src/v2/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -167
  198. package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.tsx +0 -2148
  199. package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.tsx +0 -1261
  200. package/src/v2/hooks/__tests__/use-interrupt.test.tsx +0 -397
  201. package/src/v2/hooks/__tests__/use-katex-styles.test.tsx +0 -56
  202. package/src/v2/hooks/__tests__/use-keyboard-height.test.tsx +0 -192
  203. package/src/v2/hooks/__tests__/use-pin-to-send.test.tsx +0 -219
  204. package/src/v2/hooks/__tests__/use-render-custom-messages.test.tsx +0 -55
  205. package/src/v2/hooks/__tests__/use-render-tool.test.tsx +0 -259
  206. package/src/v2/hooks/__tests__/use-suggestions.e2e.test.tsx +0 -524
  207. package/src/v2/hooks/__tests__/use-threads.test.tsx +0 -757
  208. package/src/v2/hooks/__tests__/zod-regression.test.tsx +0 -311
  209. package/src/v2/hooks/index.ts +0 -24
  210. package/src/v2/hooks/use-agent-context.tsx +0 -45
  211. package/src/v2/hooks/use-agent.tsx +0 -227
  212. package/src/v2/hooks/use-attachments.tsx +0 -269
  213. package/src/v2/hooks/use-capabilities.tsx +0 -25
  214. package/src/v2/hooks/use-component.tsx +0 -91
  215. package/src/v2/hooks/use-configure-suggestions.tsx +0 -236
  216. package/src/v2/hooks/use-default-render-tool.tsx +0 -271
  217. package/src/v2/hooks/use-frontend-tool.tsx +0 -46
  218. package/src/v2/hooks/use-human-in-the-loop.tsx +0 -81
  219. package/src/v2/hooks/use-interrupt.tsx +0 -305
  220. package/src/v2/hooks/use-keyboard-height.tsx +0 -67
  221. package/src/v2/hooks/use-pin-to-send.ts +0 -94
  222. package/src/v2/hooks/use-render-activity-message.tsx +0 -72
  223. package/src/v2/hooks/use-render-custom-messages.tsx +0 -93
  224. package/src/v2/hooks/use-render-tool-call.tsx +0 -208
  225. package/src/v2/hooks/use-render-tool.tsx +0 -184
  226. package/src/v2/hooks/use-suggestions.tsx +0 -91
  227. package/src/v2/hooks/use-threads.tsx +0 -325
  228. package/src/v2/hooks/useKatexStyles.ts +0 -27
  229. package/src/v2/index.css +0 -1
  230. package/src/v2/index.ts +0 -27
  231. package/src/v2/lib/__tests__/completePartialMarkdown.test.ts +0 -495
  232. package/src/v2/lib/__tests__/processPartialHtml.test.ts +0 -112
  233. package/src/v2/lib/__tests__/renderSlot.test.tsx +0 -588
  234. package/src/v2/lib/__tests__/slots.test.ts +0 -56
  235. package/src/v2/lib/processPartialHtml.ts +0 -45
  236. package/src/v2/lib/react-core.ts +0 -156
  237. package/src/v2/lib/slots.tsx +0 -184
  238. package/src/v2/lib/transcription-client.ts +0 -184
  239. package/src/v2/lib/utils.ts +0 -8
  240. package/src/v2/providers/CopilotChatConfigurationProvider.tsx +0 -196
  241. package/src/v2/providers/CopilotKitProvider.tsx +0 -800
  242. package/src/v2/providers/SandboxFunctionsContext.ts +0 -10
  243. package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.tsx +0 -652
  244. package/src/v2/providers/__tests__/CopilotKitProvider.license.test.tsx +0 -101
  245. package/src/v2/providers/__tests__/CopilotKitProvider.onError.test.tsx +0 -69
  246. package/src/v2/providers/__tests__/CopilotKitProvider.renderCustomMessages.e2e.test.tsx +0 -881
  247. package/src/v2/providers/__tests__/CopilotKitProvider.sandboxFunctions.test.tsx +0 -198
  248. package/src/v2/providers/__tests__/CopilotKitProvider.stability.test.tsx +0 -740
  249. package/src/v2/providers/__tests__/CopilotKitProvider.test.tsx +0 -713
  250. package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.tsx +0 -294
  251. package/src/v2/providers/index.ts +0 -21
  252. package/src/v2/styles/globals.css +0 -349
  253. package/src/v2/types/__tests__/defineToolCallRenderer.test.tsx +0 -525
  254. package/src/v2/types/defineToolCallRenderer.ts +0 -68
  255. package/src/v2/types/frontend-tool.ts +0 -8
  256. package/src/v2/types/human-in-the-loop.ts +0 -33
  257. package/src/v2/types/index.ts +0 -8
  258. package/src/v2/types/interrupt.ts +0 -15
  259. package/src/v2/types/react-activity-message-renderer.ts +0 -27
  260. package/src/v2/types/react-custom-message-renderer.ts +0 -17
  261. package/src/v2/types/react-tool-call-renderer.ts +0 -35
  262. package/src/v2/types/sandbox-function.ts +0 -11
  263. package/tsconfig.json +0 -8
  264. package/tsdown.config.ts +0 -193
  265. package/typedoc.json +0 -4
  266. package/vitest.config.mjs +0 -31
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) Atai Barkai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@copilotkit/react-core",
3
- "version": "1.57.3",
3
+ "version": "1.57.4",
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.57.4",
83
+ "@copilotkit/core": "1.57.4",
84
+ "@copilotkit/runtime-client-gql": "1.57.4",
85
+ "@copilotkit/shared": "1.57.4",
86
+ "@copilotkit/web-inspector": "1.57.4"
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`