@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
@@ -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
- }