@copilotkit/react-core 1.57.2 → 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 -296
  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
@@ -1,98 +0,0 @@
1
- /**
2
- * `useCopilotAdditionalInstructions` is a React hook that provides additional instructions
3
- * to the Copilot.
4
- *
5
- * ## Usage
6
- *
7
- * ### Simple Usage
8
- *
9
- * In its most basic usage, useCopilotAdditionalInstructions accepts a single string argument
10
- * representing the instructions to be added to the Copilot.
11
- *
12
- * ```tsx
13
- * import { useCopilotAdditionalInstructions } from "@copilotkit/react-core";
14
- *
15
- * export function MyComponent() {
16
- * useCopilotAdditionalInstructions({
17
- * instructions: "Do not answer questions about the weather.",
18
- * });
19
- * }
20
- * ```
21
- *
22
- * ### Conditional Usage
23
- *
24
- * You can also conditionally add instructions based on the state of your app.
25
- *
26
- * ```tsx
27
- * import { useCopilotAdditionalInstructions } from "@copilotkit/react-core";
28
- *
29
- * export function MyComponent() {
30
- * const [showInstructions, setShowInstructions] = useState(false);
31
- *
32
- * useCopilotAdditionalInstructions({
33
- * available: showInstructions ? "enabled" : "disabled",
34
- * instructions: "Do not answer questions about the weather.",
35
- * });
36
- * }
37
- * ```
38
- */
39
- import { useEffect } from "react";
40
- import { useCopilotContext } from "../context/copilot-context";
41
-
42
- /**
43
- * Options for the useCopilotAdditionalInstructions hook.
44
- */
45
- export interface UseCopilotAdditionalInstructionsOptions {
46
- /**
47
- * The instructions to be added to the Copilot. Will be added to the instructions like so:
48
- *
49
- * ```txt
50
- * You are a helpful assistant.
51
- * Additionally, follow these instructions:
52
- * - Do not answer questions about the weather.
53
- * - Do not answer questions about the stock market.
54
- * ```
55
- */
56
- instructions: string;
57
-
58
- /**
59
- * Whether the instructions are available to the Copilot.
60
- */
61
- available?: "enabled" | "disabled";
62
- }
63
-
64
- /**
65
- * Adds the given instructions to the Copilot context.
66
- */
67
- export function useCopilotAdditionalInstructions(
68
- {
69
- instructions,
70
- available = "enabled",
71
- }: UseCopilotAdditionalInstructionsOptions,
72
- dependencies?: any[],
73
- ) {
74
- const { setAdditionalInstructions } = useCopilotContext();
75
-
76
- useEffect(() => {
77
- if (available === "disabled") return;
78
-
79
- setAdditionalInstructions((prevInstructions) => [
80
- ...(prevInstructions || []),
81
- instructions,
82
- ]);
83
-
84
- return () => {
85
- setAdditionalInstructions(
86
- (prevInstructions) =>
87
- prevInstructions?.filter(
88
- (instruction) => instruction !== instructions,
89
- ) || [],
90
- );
91
- };
92
- }, [
93
- available,
94
- instructions,
95
- setAdditionalInstructions,
96
- ...(dependencies || []),
97
- ]);
98
- }
@@ -1,73 +0,0 @@
1
- import { Parameter } from "@copilotkit/shared";
2
- import { Fragment, useCallback, useRef } from "react";
3
- import { useCopilotContext } from "../context/copilot-context";
4
- import { FrontendAction, ActionRenderProps } from "../types/frontend-action";
5
- import { useCopilotAction } from "./use-copilot-action";
6
- import React from "react";
7
-
8
- /**
9
- * Hook to create an authenticated action that requires user sign-in before execution.
10
- *
11
- * @remarks
12
- * This feature is only available when using CopilotKit's hosted cloud service.
13
- * To use this feature, sign up at https://cloud.copilotkit.ai to get your publicApiKey.
14
- *
15
- * @param action - The frontend action to be wrapped with authentication
16
- * @param dependencies - Optional array of dependencies that will trigger recreation of the action when changed
17
- */
18
- export function useCopilotAuthenticatedAction_c<T extends Parameter[]>(
19
- action: FrontendAction<T>,
20
- dependencies?: any[],
21
- ): void {
22
- const { authConfig_c, authStates_c, setAuthStates_c } = useCopilotContext();
23
- const pendingActionRef = useRef<ActionRenderProps<Parameter[]> | null>(null);
24
-
25
- const executeAction = useCallback(
26
- (props: ActionRenderProps<Parameter[]>) => {
27
- if (typeof action.render === "function") {
28
- return action.render(props);
29
- }
30
- return action.render || React.createElement(Fragment);
31
- },
32
- [action],
33
- );
34
-
35
- const wrappedRender = useCallback(
36
- (props: ActionRenderProps<Parameter[]>): string | React.ReactElement => {
37
- const isAuthenticated = Object.values(authStates_c || {}).some(
38
- (state) => state.status === "authenticated",
39
- );
40
-
41
- if (!isAuthenticated) {
42
- // Store action details for later execution
43
- pendingActionRef.current = props;
44
-
45
- return authConfig_c?.SignInComponent
46
- ? React.createElement(authConfig_c.SignInComponent, {
47
- onSignInComplete: (authState) => {
48
- setAuthStates_c?.((prev) => ({
49
- ...prev,
50
- [action.name]: authState,
51
- }));
52
- if (pendingActionRef.current) {
53
- executeAction(pendingActionRef.current);
54
- pendingActionRef.current = null;
55
- }
56
- },
57
- })
58
- : React.createElement(Fragment);
59
- }
60
-
61
- return executeAction(props);
62
- },
63
- [action, authStates_c, setAuthStates_c],
64
- );
65
-
66
- useCopilotAction(
67
- {
68
- ...action,
69
- render: wrappedRender,
70
- } as FrontendAction<T>,
71
- dependencies,
72
- );
73
- }
@@ -1,264 +0,0 @@
1
- /**
2
- * `useCopilotChatHeadless_c` is for building fully custom UI (headless UI) implementations.
3
- *
4
- * <Callout title="This is a premium-only feature">
5
- * Sign up for free on [Copilot Cloud](https://cloud.copilotkit.ai) to get your public license key or read more about <a href="/premium/overview">premium features</a>.
6
- *
7
- * Usage is generous, **free** to get started, and works with **either self-hosted or Copilot Cloud** environments.
8
- * </Callout>
9
- *
10
- * ## Key Features
11
- *
12
- * - **Fully headless**: Build your own fully custom UI's for your agentic applications.
13
- * - **Advanced Suggestions**: Direct access to suggestions array with full control
14
- * - **Interrupt Handling**: Support for advanced interrupt functionality
15
- * - **MCP Server Support**: Model Context Protocol server configurations
16
- * - **Chat Controls**: Complete set of chat management functions
17
- * - **Loading States**: Comprehensive loading state management
18
- *
19
- *
20
- * ## Usage
21
- *
22
- * ### Basic Setup
23
- *
24
- * ```tsx
25
- * import { CopilotKit } from "@copilotkit/react-core";
26
- * import { useCopilotChatHeadless_c } from "@copilotkit/react-core";
27
- *
28
- * export function App() {
29
- * return (
30
- * <CopilotKit publicApiKey="your-free-public-license-key">
31
- * <YourComponent />
32
- * </CopilotKit>
33
- * );
34
- * }
35
- *
36
- * export function YourComponent() {
37
- * const { messages, sendMessage, isLoading } = useCopilotChatHeadless_c();
38
- *
39
- * const handleSendMessage = async () => {
40
- * await sendMessage({
41
- * id: "123",
42
- * role: "user",
43
- * content: "Hello World",
44
- * });
45
- * };
46
- *
47
- * return (
48
- * <div>
49
- * {messages.map(msg => <div key={msg.id}>{msg.content}</div>)}
50
- * <button onClick={handleSendMessage} disabled={isLoading}>
51
- * Send Message
52
- * </button>
53
- * </div>
54
- * );
55
- * }
56
- * ```
57
- *
58
- * ### Working with Suggestions
59
- *
60
- * ```tsx
61
- * import { useCopilotChatHeadless_c, useCopilotChatSuggestions } from "@copilotkit/react-core";
62
- *
63
- * export function SuggestionExample() {
64
- * const {
65
- * suggestions,
66
- * setSuggestions,
67
- * generateSuggestions,
68
- * isLoadingSuggestions
69
- * } = useCopilotChatHeadless_c();
70
- *
71
- * // Configure AI suggestion generation
72
- * useCopilotChatSuggestions({
73
- * instructions: "Suggest helpful actions based on the current context",
74
- * maxSuggestions: 3
75
- * });
76
- *
77
- * return (
78
- * <div>
79
- * {suggestions.map(suggestion => (
80
- * <button key={suggestion.title}>{suggestion.title}</button>
81
- * ))}
82
- * <button onClick={generateSuggestions} disabled={isLoadingSuggestions}>
83
- * Generate Suggestions
84
- * </button>
85
- * </div>
86
- * );
87
- * }
88
- * ```
89
- *
90
- * ## Return Values
91
- * The following properties are returned from the hook:
92
- *
93
- * <PropertyReference name="messages" type="Message[]">
94
- * The messages currently in the chat in AG-UI format
95
- * </PropertyReference>
96
- *
97
- * <PropertyReference name="sendMessage" type="(message: Message, options?) => Promise<void>">
98
- * Send a new message to the chat and trigger AI response
99
- * </PropertyReference>
100
- *
101
- * <PropertyReference name="setMessages" type="(messages: Message[] | DeprecatedGqlMessage[]) => void">
102
- * Replace all messages in the chat with new array
103
- * </PropertyReference>
104
- *
105
- * <PropertyReference name="deleteMessage" type="(messageId: string) => void">
106
- * Remove a specific message by ID from the chat
107
- * </PropertyReference>
108
- *
109
- * <PropertyReference name="reloadMessages" type="(messageId: string) => Promise<void>">
110
- * Regenerate the response for a specific message by ID
111
- * </PropertyReference>
112
- *
113
- * <PropertyReference name="stopGeneration" type="() => void">
114
- * Stop the current message generation process
115
- * </PropertyReference>
116
- *
117
- * <PropertyReference name="reset" type="() => void">
118
- * Clear all messages and reset chat state completely
119
- * </PropertyReference>
120
- *
121
- * <PropertyReference name="isLoading" type="boolean">
122
- * Whether the chat is currently generating a response
123
- * </PropertyReference>
124
- *
125
- * <PropertyReference name="runChatCompletion" type="() => Promise<Message[]>">
126
- * Manually trigger chat completion for advanced usage
127
- * </PropertyReference>
128
- *
129
- * <PropertyReference name="mcpServers" type="MCPServerConfig[]">
130
- * Array of Model Context Protocol server configurations
131
- * </PropertyReference>
132
- *
133
- * <PropertyReference name="setMcpServers" type="(servers: MCPServerConfig[]) => void">
134
- * Update MCP server configurations for enhanced context
135
- * </PropertyReference>
136
- *
137
- * <PropertyReference name="suggestions" type="SuggestionItem[]">
138
- * Current suggestions array for reading or manual control
139
- * </PropertyReference>
140
- *
141
- * <PropertyReference name="setSuggestions" type="(suggestions: SuggestionItem[]) => void">
142
- * Manually set suggestions for custom workflows
143
- * </PropertyReference>
144
- *
145
- * <PropertyReference name="generateSuggestions" type="() => Promise<void>">
146
- * Trigger AI-powered suggestion generation using configured settings
147
- * </PropertyReference>
148
- *
149
- * <PropertyReference name="resetSuggestions" type="() => void">
150
- * Clear all current suggestions and reset generation state
151
- * </PropertyReference>
152
- *
153
- * <PropertyReference name="isLoadingSuggestions" type="boolean">
154
- * Whether suggestions are currently being generated
155
- * </PropertyReference>
156
- *
157
- * <PropertyReference name="interrupt" type="string | React.ReactElement | null">
158
- * Interrupt content for human-in-the-loop workflows
159
- * </PropertyReference>
160
- */
161
- import { useEffect } from "react";
162
- import { useCopilotContext } from "../context/copilot-context";
163
- import {
164
- useCopilotChatInternal,
165
- defaultSystemMessage,
166
- UseCopilotChatOptions as UseCopilotChatOptions_c,
167
- UseCopilotChatReturn as UseCopilotChatReturn_c,
168
- MCPServerConfig,
169
- } from "./use-copilot-chat_internal";
170
-
171
- import {
172
- ErrorVisibility,
173
- Severity,
174
- CopilotKitError,
175
- CopilotKitErrorCode,
176
- styledConsole,
177
- } from "@copilotkit/shared";
178
-
179
- // Non-functional fallback implementation
180
- const createNonFunctionalReturn = (): UseCopilotChatReturn_c => ({
181
- visibleMessages: [],
182
- messages: [],
183
- sendMessage: async () => {},
184
- appendMessage: async () => {},
185
- setMessages: () => {},
186
- deleteMessage: () => {},
187
- reloadMessages: async () => {},
188
- stopGeneration: () => {},
189
- reset: () => {},
190
- isLoading: false,
191
- isAvailable: false,
192
- runChatCompletion: async () => [],
193
- mcpServers: [],
194
- setMcpServers: () => {},
195
- suggestions: [],
196
- setSuggestions: () => {},
197
- generateSuggestions: async () => {},
198
- resetSuggestions: () => {},
199
- isLoadingSuggestions: false,
200
- interrupt: null,
201
- });
202
- /**
203
- * Enterprise React hook that provides complete chat functionality for fully custom UI implementations.
204
- * Includes all advanced features like direct message access, suggestions array, interrupt handling, and MCP support.
205
- *
206
- * **Requires a publicApiKey** - Sign up for free at https://cloud.copilotkit.ai/
207
- *
208
- * @param options - Configuration options for the chat
209
- * @returns Complete chat interface with all enterprise features
210
- *
211
- * @example
212
- * ```tsx
213
- * const { messages, sendMessage, suggestions, interrupt } = useCopilotChatHeadless_c();
214
- * ```
215
- */
216
- function useCopilotChatHeadless_c(
217
- options: UseCopilotChatOptions_c = {},
218
- ): UseCopilotChatReturn_c {
219
- const { copilotApiConfig, setBannerError } = useCopilotContext();
220
-
221
- // Check if publicApiKey is available
222
- const hasPublicApiKey = Boolean(copilotApiConfig.publicApiKey);
223
-
224
- // Always call the internal hook (follows rules of hooks)
225
- const internalResult = useCopilotChatInternal(options);
226
-
227
- // Set banner error when no public API key is provided
228
- useEffect(() => {
229
- if (!hasPublicApiKey) {
230
- setBannerError(
231
- new CopilotKitError({
232
- message:
233
- // add link to documentation here
234
- "You're using useCopilotChatHeadless_c, a premium-only feature, which offers extensive headless chat capabilities. To continue, you'll need to provide a free public license key.",
235
- code: CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
236
- severity: Severity.WARNING,
237
- visibility: ErrorVisibility.BANNER,
238
- }),
239
- );
240
- styledConsole.logCopilotKitPlatformMessage();
241
- } else {
242
- setBannerError(null); // Clear banner when API key is provided
243
- }
244
- }, [hasPublicApiKey]); // Removed setBannerError dependency
245
-
246
- // Return internal result if publicApiKey is available, otherwise return fallback
247
- if (hasPublicApiKey) {
248
- return internalResult;
249
- }
250
-
251
- // Return non-functional fallback when no publicApiKey
252
- return createNonFunctionalReturn();
253
- }
254
-
255
- export { defaultSystemMessage, useCopilotChatHeadless_c };
256
- export type {
257
- UseCopilotChatOptions_c,
258
- UseCopilotChatReturn_c,
259
- MCPServerConfig,
260
- };
261
-
262
- const noKeyWarning = () => {
263
- styledConsole.logCopilotKitPlatformMessage();
264
- };
@@ -1,134 +0,0 @@
1
- /**
2
- * <Callout type="warning">
3
- * useCopilotChatSuggestions is experimental. The interface is not final and
4
- * can change without notice.
5
- * </Callout>
6
- *
7
- * `useCopilotReadable` is a React hook that provides app-state and other information
8
- * to the Copilot. Optionally, the hook can also handle hierarchical state within your
9
- * application, passing these parent-child relationships to the Copilot.
10
- *
11
- * <br/>
12
- * <img src="https://cdn.copilotkit.ai/docs/copilotkit/images/use-copilot-chat-suggestions/use-copilot-chat-suggestions.gif" width="500" />
13
- *
14
- * ## Usage
15
- *
16
- * ### Install Dependencies
17
- *
18
- * This component is part of the [@copilotkit/react-ui](https://npmjs.com/package/@copilotkit/react-ui) package.
19
- *
20
- * ```shell npm2yarn \"@copilotkit/react-ui"\
21
- * npm install @copilotkit/react-core @copilotkit/react-ui
22
- * ```
23
- *
24
- * ### Simple Usage
25
- *
26
- * ```tsx
27
- * import { useCopilotChatSuggestions } from "@copilotkit/react-ui";
28
- *
29
- * export function MyComponent() {
30
- * const [employees, setEmployees] = useState([]);
31
- *
32
- * useCopilotChatSuggestions({
33
- * instructions: `The following employees are on duty: ${JSON.stringify(employees)}`,
34
- * });
35
- * }
36
- * ```
37
- *
38
- * ### Dependency Management
39
- *
40
- * ```tsx
41
- * import { useCopilotChatSuggestions } from "@copilotkit/react-ui";
42
- *
43
- * export function MyComponent() {
44
- * useCopilotChatSuggestions(
45
- * {
46
- * instructions: "Suggest the most relevant next actions.",
47
- * },
48
- * [appState],
49
- * );
50
- * }
51
- * ```
52
- *
53
- * In the example above, the suggestions are generated based on the given instructions.
54
- * The hook monitors `appState`, and updates suggestions accordingly whenever it changes.
55
- *
56
- * ### Behavior and Lifecycle
57
- *
58
- * The hook registers the configuration with the chat context upon component mount and
59
- * removes it on unmount, ensuring a clean and efficient lifecycle management.
60
- */
61
- import {
62
- useConfigureSuggestions,
63
- useCopilotChatConfiguration,
64
- useCopilotKit,
65
- useSuggestions,
66
- } from "../v2";
67
- import { useEffect } from "react";
68
- import { StaticSuggestionsConfig, Suggestion } from "@copilotkit/core";
69
-
70
- type StaticSuggestionInput = Omit<Suggestion, "isLoading"> &
71
- Partial<Pick<Suggestion, "isLoading">>;
72
-
73
- type StaticSuggestionsConfigInput = Omit<
74
- StaticSuggestionsConfig,
75
- "suggestions"
76
- > & {
77
- suggestions: StaticSuggestionInput[];
78
- };
79
-
80
- type DynamicSuggestionsConfigInput = {
81
- /**
82
- * A prompt or instructions for the GPT to generate suggestions.
83
- */
84
- instructions: string;
85
- /**
86
- * The minimum number of suggestions to generate. Defaults to `1`.
87
- * @default 1
88
- */
89
- minSuggestions?: number;
90
- /**
91
- * The maximum number of suggestions to generate. Defaults to `3`.
92
- * @default 1
93
- */
94
- maxSuggestions?: number;
95
-
96
- /**
97
- * Whether the suggestions are available. Defaults to `enabled`.
98
- * @default enabled
99
- */
100
- available?:
101
- | "enabled"
102
- | "disabled"
103
- | "always"
104
- | "before-first-message"
105
- | "after-first-message";
106
-
107
- /**
108
- * An optional class name to apply to the suggestions.
109
- */
110
- className?: string;
111
- };
112
-
113
- export type UseCopilotChatSuggestionsConfiguration =
114
- | DynamicSuggestionsConfigInput
115
- | StaticSuggestionsConfigInput;
116
-
117
- export function useCopilotChatSuggestions(
118
- config: UseCopilotChatSuggestionsConfiguration,
119
- dependencies: any[] = [],
120
- ) {
121
- const existingConfig = useCopilotChatConfiguration();
122
- const resolvedAgentId = existingConfig?.agentId ?? "default";
123
-
124
- const available =
125
- (config.available === "enabled" ? "always" : config.available) ??
126
- "before-first-message";
127
-
128
- const finalSuggestionConfig = {
129
- ...config,
130
- available,
131
- consumerAgentId: resolvedAgentId, // Use chatConfig.agentId here
132
- };
133
- useConfigureSuggestions(finalSuggestionConfig, dependencies);
134
- }
@@ -1,132 +0,0 @@
1
- /**
2
- * `useCopilotChat` is a lightweight React hook for headless chat interactions.
3
- * Perfect for controlling the prebuilt chat components programmatically.
4
- *
5
- * **Open Source Friendly** - Works without requiring a free public license key.
6
- *
7
- * <Callout title="Looking for fully headless UI?">
8
- * Get started with [useCopilotChatHeadless_c](https://docs.copilotkit.ai/reference/v1/hooks/useCopilotChatHeadless_c).
9
- * </Callout>
10
- *
11
- * ## Use Cases
12
- *
13
- * - **Programmatic Messaging**: Send messages without displaying chat UI
14
- * - **Programmatic control**: Control prebuilt component programmatically
15
- * - **Background Operations**: Trigger AI interactions in the background
16
- * - **Fire-and-Forget**: Send messages without needing to read responses
17
- *
18
- * ## Usage
19
- *
20
- * ```tsx
21
- * import { TextMessage, MessageRole } from "@copilotkit/runtime-client-gql";
22
- *
23
- * const { appendMessage } = useCopilotChat();
24
- *
25
- * // Example usage without naming conflicts
26
- * const handleSendMessage = async (content: string) => {
27
- * await appendMessage(
28
- * new TextMessage({
29
- * role: MessageRole.User,
30
- * content,
31
- * })
32
- * );
33
- * };
34
- * ```
35
- *
36
- * ## Return Values
37
- * The following properties are returned from the hook:
38
- *
39
- * <PropertyReference name="visibleMessages" type="DeprecatedGqlMessage[]" deprecated>
40
- * Array of messages in old non-AG-UI format, use for compatibility only
41
- * </PropertyReference>
42
- *
43
- * <PropertyReference name="appendMessage" type="(message: DeprecatedGqlMessage, options?) => Promise<void>" deprecated>
44
- * Append message using old format, use `sendMessage` instead
45
- * </PropertyReference>
46
- *
47
- * <PropertyReference name="reloadMessages" type="(messageId: string) => Promise<void>">
48
- * Regenerate the response for a specific message by ID
49
- * </PropertyReference>
50
- *
51
- * <PropertyReference name="stopGeneration" type="() => void">
52
- * Stop the current message generation process
53
- * </PropertyReference>
54
- *
55
- * <PropertyReference name="reset" type="() => void">
56
- * Clear all messages and reset chat state completely
57
- * </PropertyReference>
58
- *
59
- * <PropertyReference name="isLoading" type="boolean">
60
- * Whether the chat is currently generating a response
61
- * </PropertyReference>
62
- *
63
- * <PropertyReference name="runChatCompletion" type="() => Promise<Message[]>">
64
- * Manually trigger chat completion for advanced usage
65
- * </PropertyReference>
66
- *
67
- * <PropertyReference name="mcpServers" type="MCPServerConfig[]">
68
- * Array of Model Context Protocol server configurations
69
- * </PropertyReference>
70
- *
71
- * <PropertyReference name="setMcpServers" type="(servers: MCPServerConfig[]) => void">
72
- * Update MCP server configurations for enhanced context
73
- * </PropertyReference>
74
- */
75
-
76
- import {
77
- UseCopilotChatOptions,
78
- useCopilotChatInternal,
79
- UseCopilotChatReturn as UseCopilotChatReturnInternal,
80
- } from "./use-copilot-chat_internal";
81
-
82
- // Create a type that excludes message-related properties from the internal type
83
- export type UseCopilotChatReturn = Omit<
84
- UseCopilotChatReturnInternal,
85
- | "messages"
86
- | "sendMessage"
87
- | "suggestions"
88
- | "setSuggestions"
89
- | "generateSuggestions"
90
- | "isLoadingSuggestions"
91
- | "resetSuggestions"
92
- | "interrupt"
93
- | "setMessages"
94
- | "deleteMessage"
95
- >;
96
-
97
- /**
98
- * A lightweight React hook for headless chat interactions.
99
- * Perfect for programmatic messaging, background operations, and custom UI implementations.
100
- *
101
- * **Open Source Friendly** - Works without requiring a `publicApiKey`.
102
- */
103
- // TODO: Do we need this? If so, does it work properly? test.
104
- export function useCopilotChat(
105
- options: UseCopilotChatOptions = {},
106
- ): UseCopilotChatReturn {
107
- const {
108
- visibleMessages,
109
- appendMessage,
110
- reloadMessages,
111
- stopGeneration,
112
- reset,
113
- isLoading,
114
- isAvailable,
115
- runChatCompletion,
116
- mcpServers,
117
- setMcpServers,
118
- } = useCopilotChatInternal(options);
119
-
120
- return {
121
- visibleMessages,
122
- appendMessage,
123
- reloadMessages,
124
- stopGeneration,
125
- reset,
126
- isLoading,
127
- isAvailable,
128
- runChatCompletion,
129
- mcpServers,
130
- setMcpServers,
131
- };
132
- }