@copilotkit/react-core 1.57.3 → 1.58.0-canary.thread-id-propagation

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 (292) hide show
  1. package/LICENSE +21 -0
  2. package/dist/{copilotkit-CtXcs1ea.cjs → copilotkit-B4ouY7qC.cjs} +14 -3
  3. package/dist/copilotkit-B4ouY7qC.cjs.map +1 -0
  4. package/dist/copilotkit-BK9CVq9A.d.cts.map +1 -1
  5. package/dist/{copilotkit-CC8DjOiC.mjs → copilotkit-L4mM_JqG.mjs} +14 -3
  6. package/dist/copilotkit-L4mM_JqG.mjs.map +1 -0
  7. package/dist/copilotkit-WlmeVijs.d.mts.map +1 -1
  8. package/dist/index.cjs +3 -77
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +2 -2
  11. package/dist/index.d.mts +2 -2
  12. package/dist/index.mjs +3 -77
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/index.umd.js +15 -78
  15. package/dist/index.umd.js.map +1 -1
  16. package/dist/v2/headless.cjs +11 -0
  17. package/dist/v2/headless.cjs.map +1 -1
  18. package/dist/v2/headless.d.cts.map +1 -1
  19. package/dist/v2/headless.d.mts.map +1 -1
  20. package/dist/v2/headless.mjs +11 -0
  21. package/dist/v2/headless.mjs.map +1 -1
  22. package/dist/v2/index.cjs +1 -1
  23. package/dist/v2/index.mjs +1 -1
  24. package/dist/v2/index.umd.js +13 -2
  25. package/dist/v2/index.umd.js.map +1 -1
  26. package/package.json +12 -13
  27. package/skills/react-core/SKILL.md +108 -0
  28. package/skills/react-core/references/agent-access.md +288 -0
  29. package/skills/react-core/references/attachments.md +291 -0
  30. package/skills/react-core/references/capabilities.md +138 -0
  31. package/skills/react-core/references/chat-components.md +221 -0
  32. package/skills/react-core/references/client-side-tools.md +358 -0
  33. package/skills/react-core/references/custom-message-renderers.md +226 -0
  34. package/skills/react-core/references/debug-mode.md +153 -0
  35. package/skills/react-core/references/human-in-the-loop.md +312 -0
  36. package/skills/react-core/references/provider-setup.md +326 -0
  37. package/skills/react-core/references/rendering-activity-messages.md +207 -0
  38. package/skills/react-core/references/rendering-tool-calls.md +319 -0
  39. package/skills/react-core/references/suggestions.md +211 -0
  40. package/skills/react-core/references/switching-agents-recipes.md +160 -0
  41. package/skills/react-core/references/switching-agents.md +231 -0
  42. package/skills/react-core/references/threads.md +226 -0
  43. package/.attw.json +0 -3
  44. package/CHANGELOG.md +0 -5043
  45. package/dist/copilotkit-CC8DjOiC.mjs.map +0 -1
  46. package/dist/copilotkit-CtXcs1ea.cjs.map +0 -1
  47. package/scripts/scope-preflight.mjs +0 -100
  48. package/src/components/CopilotListeners.tsx +0 -137
  49. package/src/components/__tests__/CopilotListeners.test.tsx +0 -38
  50. package/src/components/copilot-provider/__tests__/copilot-messages-key.test.tsx +0 -92
  51. package/src/components/copilot-provider/__tests__/copilotkit-error.test.tsx +0 -77
  52. package/src/components/copilot-provider/__tests__/error-visibility-prod.test.tsx +0 -70
  53. package/src/components/copilot-provider/__tests__/v1-explicit-threadid-bridge.test.tsx +0 -107
  54. package/src/components/copilot-provider/copilot-messages.tsx +0 -314
  55. package/src/components/copilot-provider/copilotkit-props.tsx +0 -214
  56. package/src/components/copilot-provider/copilotkit.tsx +0 -853
  57. package/src/components/copilot-provider/index.ts +0 -3
  58. package/src/components/dev-console/console-trigger.tsx +0 -283
  59. package/src/components/dev-console/developer-console-modal.tsx +0 -1016
  60. package/src/components/dev-console/icons.tsx +0 -106
  61. package/src/components/error-boundary/error-boundary.tsx +0 -99
  62. package/src/components/error-boundary/error-utils.tsx +0 -105
  63. package/src/components/index.ts +0 -1
  64. package/src/components/toast/exclamation-mark-icon.tsx +0 -27
  65. package/src/components/toast/toast-provider.tsx +0 -448
  66. package/src/components/usage-banner.tsx +0 -266
  67. package/src/context/__tests__/threads-context.test.tsx +0 -141
  68. package/src/context/coagent-state-renders-context.tsx +0 -89
  69. package/src/context/copilot-context.tsx +0 -365
  70. package/src/context/copilot-messages-context.tsx +0 -35
  71. package/src/context/index.ts +0 -22
  72. package/src/context/threads-context.tsx +0 -69
  73. package/src/hooks/__tests__/use-coagent-config.test.ts +0 -352
  74. package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +0 -107
  75. package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +0 -1209
  76. package/src/hooks/__tests__/use-coagent-state-render.test.tsx +0 -356
  77. package/src/hooks/__tests__/use-copilot-chat-internal-connect.test.tsx +0 -241
  78. package/src/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -72
  79. package/src/hooks/__tests__/use-frontend-tool-remount.e2e.test.tsx +0 -102
  80. package/src/hooks/index.ts +0 -33
  81. package/src/hooks/use-agent-nodename.ts +0 -33
  82. package/src/hooks/use-coagent-state-render-bridge.helpers.ts +0 -345
  83. package/src/hooks/use-coagent-state-render-bridge.tsx +0 -222
  84. package/src/hooks/use-coagent-state-render-registry.ts +0 -230
  85. package/src/hooks/use-coagent-state-render.ts +0 -163
  86. package/src/hooks/use-coagent.ts +0 -377
  87. package/src/hooks/use-configure-chat-suggestions.tsx +0 -96
  88. package/src/hooks/use-copilot-action.ts +0 -245
  89. package/src/hooks/use-copilot-additional-instructions.ts +0 -98
  90. package/src/hooks/use-copilot-authenticated-action.ts +0 -73
  91. package/src/hooks/use-copilot-chat-headless_c.ts +0 -264
  92. package/src/hooks/use-copilot-chat-suggestions.tsx +0 -134
  93. package/src/hooks/use-copilot-chat.ts +0 -132
  94. package/src/hooks/use-copilot-chat_internal.ts +0 -875
  95. package/src/hooks/use-copilot-readable.ts +0 -135
  96. package/src/hooks/use-copilot-runtime-client.ts +0 -178
  97. package/src/hooks/use-default-tool.ts +0 -13
  98. package/src/hooks/use-flat-category-store.ts +0 -109
  99. package/src/hooks/use-frontend-tool.ts +0 -113
  100. package/src/hooks/use-human-in-the-loop.ts +0 -138
  101. package/src/hooks/use-langgraph-interrupt.ts +0 -103
  102. package/src/hooks/use-lazy-tool-renderer.tsx +0 -30
  103. package/src/hooks/use-make-copilot-document-readable.ts +0 -30
  104. package/src/hooks/use-render-tool-call.ts +0 -89
  105. package/src/hooks/use-tree.ts +0 -222
  106. package/src/index.tsx +0 -7
  107. package/src/lib/copilot-task.ts +0 -215
  108. package/src/lib/index.ts +0 -1
  109. package/src/lib/status-checker.ts +0 -67
  110. package/src/setupTests.ts +0 -37
  111. package/src/test-helpers/copilot-context.ts +0 -91
  112. package/src/types/chat-suggestion-configuration.ts +0 -23
  113. package/src/types/coagent-action.ts +0 -35
  114. package/src/types/coagent-state.ts +0 -13
  115. package/src/types/crew.ts +0 -89
  116. package/src/types/document-pointer.ts +0 -7
  117. package/src/types/frontend-action.ts +0 -213
  118. package/src/types/index.ts +0 -17
  119. package/src/types/interrupt-action.ts +0 -58
  120. package/src/types/system-message.ts +0 -4
  121. package/src/utils/dev-console.ts +0 -19
  122. package/src/utils/index.ts +0 -2
  123. package/src/utils/suggestions-constants.ts +0 -8
  124. package/src/utils/utils.test.ts +0 -7
  125. package/src/utils/utils.ts +0 -6
  126. package/src/v2/__tests__/A2UIMessageRenderer.test.tsx +0 -240
  127. package/src/v2/__tests__/globalSetup.ts +0 -14
  128. package/src/v2/__tests__/setup.ts +0 -93
  129. package/src/v2/__tests__/utils/test-helpers.tsx +0 -570
  130. package/src/v2/a2ui/A2UICatalogContext.tsx +0 -79
  131. package/src/v2/a2ui/A2UIMessageRenderer.tsx +0 -294
  132. package/src/v2/a2ui/A2UIToolCallRenderer.tsx +0 -290
  133. package/src/v2/components/CopilotKitInspector.tsx +0 -52
  134. package/src/v2/components/MCPAppsActivityRenderer.tsx +0 -815
  135. package/src/v2/components/OpenGenerativeUIRenderer.tsx +0 -598
  136. package/src/v2/components/WildcardToolCallRender.tsx +0 -86
  137. package/src/v2/components/__tests__/OpenGenerativeUIRenderer.test.tsx +0 -665
  138. package/src/v2/components/chat/CopilotChat.tsx +0 -664
  139. package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +0 -393
  140. package/src/v2/components/chat/CopilotChatAttachmentQueue.tsx +0 -374
  141. package/src/v2/components/chat/CopilotChatAttachmentRenderer.tsx +0 -159
  142. package/src/v2/components/chat/CopilotChatAudioRecorder.tsx +0 -350
  143. package/src/v2/components/chat/CopilotChatInput.tsx +0 -1412
  144. package/src/v2/components/chat/CopilotChatMessageView.tsx +0 -716
  145. package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +0 -265
  146. package/src/v2/components/chat/CopilotChatSuggestionPill.tsx +0 -59
  147. package/src/v2/components/chat/CopilotChatSuggestionView.tsx +0 -134
  148. package/src/v2/components/chat/CopilotChatToggleButton.tsx +0 -171
  149. package/src/v2/components/chat/CopilotChatToolCallsView.tsx +0 -40
  150. package/src/v2/components/chat/CopilotChatUserMessage.tsx +0 -445
  151. package/src/v2/components/chat/CopilotChatView.tsx +0 -890
  152. package/src/v2/components/chat/CopilotModalHeader.tsx +0 -129
  153. package/src/v2/components/chat/CopilotPopup.tsx +0 -81
  154. package/src/v2/components/chat/CopilotPopupView.tsx +0 -317
  155. package/src/v2/components/chat/CopilotSidebar.tsx +0 -80
  156. package/src/v2/components/chat/CopilotSidebarView.tsx +0 -269
  157. package/src/v2/components/chat/Lightbox.tsx +0 -103
  158. package/src/v2/components/chat/__tests__/CopilotChat.absentThreadConnect.test.tsx +0 -66
  159. package/src/v2/components/chat/__tests__/CopilotChat.attachments.test.tsx +0 -168
  160. package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +0 -1239
  161. package/src/v2/components/chat/__tests__/CopilotChat.onError.test.tsx +0 -73
  162. package/src/v2/components/chat/__tests__/CopilotChat.slots.e2e.test.tsx +0 -432
  163. package/src/v2/components/chat/__tests__/CopilotChat.suggestionsAlways.test.tsx +0 -183
  164. package/src/v2/components/chat/__tests__/CopilotChat.welcomeGate.test.tsx +0 -184
  165. package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.tsx +0 -649
  166. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.slots.e2e.test.tsx +0 -624
  167. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +0 -702
  168. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.thumbs.test.tsx +0 -72
  169. package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.tsx +0 -241
  170. package/src/v2/components/chat/__tests__/CopilotChatCssClasses.test.tsx +0 -107
  171. package/src/v2/components/chat/__tests__/CopilotChatInput.slots.e2e.test.tsx +0 -929
  172. package/src/v2/components/chat/__tests__/CopilotChatInput.test.tsx +0 -1567
  173. package/src/v2/components/chat/__tests__/CopilotChatMessageView.slots.e2e.test.tsx +0 -1004
  174. package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.tsx +0 -279
  175. package/src/v2/components/chat/__tests__/CopilotChatPerf.e2e.test.tsx +0 -336
  176. package/src/v2/components/chat/__tests__/CopilotChatPropsRerender.e2e.test.tsx +0 -249
  177. package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.slots.e2e.test.tsx +0 -530
  178. package/src/v2/components/chat/__tests__/CopilotChatToolRendering.e2e.test.tsx +0 -785
  179. package/src/v2/components/chat/__tests__/CopilotChatToolRerenders.e2e.test.tsx +0 -2416
  180. package/src/v2/components/chat/__tests__/CopilotChatUserMessage.slots.e2e.test.tsx +0 -621
  181. package/src/v2/components/chat/__tests__/CopilotChatView.connectingGate.test.tsx +0 -56
  182. package/src/v2/components/chat/__tests__/CopilotChatView.inputOverlay.test.tsx +0 -264
  183. package/src/v2/components/chat/__tests__/CopilotChatView.onClick.e2e.test.tsx +0 -853
  184. package/src/v2/components/chat/__tests__/CopilotChatView.pinToSend.test.tsx +0 -94
  185. package/src/v2/components/chat/__tests__/CopilotChatView.slots.e2e.test.tsx +0 -1050
  186. package/src/v2/components/chat/__tests__/CopilotModalHeader.slots.e2e.test.tsx +0 -484
  187. package/src/v2/components/chat/__tests__/CopilotPopupView.slots.e2e.test.tsx +0 -612
  188. package/src/v2/components/chat/__tests__/CopilotSidebarView.position.test.tsx +0 -159
  189. package/src/v2/components/chat/__tests__/CopilotSidebarView.slots.e2e.test.tsx +0 -502
  190. package/src/v2/components/chat/__tests__/MCPAppsActivityRenderer.e2e.test.tsx +0 -1068
  191. package/src/v2/components/chat/__tests__/MCPAppsProxy.e2e.test.tsx +0 -589
  192. package/src/v2/components/chat/__tests__/MCPAppsUiMessage.e2e.test.tsx +0 -403
  193. package/src/v2/components/chat/__tests__/copilot-chat-throttle.test.tsx +0 -137
  194. package/src/v2/components/chat/__tests__/normalize-auto-scroll.test.ts +0 -37
  195. package/src/v2/components/chat/__tests__/setup.ts +0 -1
  196. package/src/v2/components/chat/index.ts +0 -90
  197. package/src/v2/components/chat/last-user-message-context.ts +0 -21
  198. package/src/v2/components/chat/normalize-auto-scroll.ts +0 -17
  199. package/src/v2/components/chat/scroll-element-context.ts +0 -13
  200. package/src/v2/components/index.ts +0 -8
  201. package/src/v2/components/intelligence-indicator/IntelligenceIndicator.tsx +0 -286
  202. package/src/v2/components/intelligence-indicator/__tests__/IntelligenceIndicator.e2e.test.tsx +0 -464
  203. package/src/v2/components/intelligence-indicator/index.ts +0 -2
  204. package/src/v2/components/license-warning-banner.tsx +0 -217
  205. package/src/v2/components/ui/button.tsx +0 -124
  206. package/src/v2/components/ui/dropdown-menu.tsx +0 -258
  207. package/src/v2/components/ui/tooltip.tsx +0 -60
  208. package/src/v2/context.ts +0 -62
  209. package/src/v2/headless.ts +0 -64
  210. package/src/v2/hooks/__tests__/standard-schema-types.test.tsx +0 -152
  211. package/src/v2/hooks/__tests__/standard-schema.test.tsx +0 -282
  212. package/src/v2/hooks/__tests__/use-agent-context-timing.e2e.test.tsx +0 -140
  213. package/src/v2/hooks/__tests__/use-agent-context.test.tsx +0 -401
  214. package/src/v2/hooks/__tests__/use-agent-error-state.test.tsx +0 -44
  215. package/src/v2/hooks/__tests__/use-agent-stability.test.tsx +0 -211
  216. package/src/v2/hooks/__tests__/use-agent-throttle.test.tsx +0 -1029
  217. package/src/v2/hooks/__tests__/use-agent.e2e.test.tsx +0 -159
  218. package/src/v2/hooks/__tests__/use-attachments.test.tsx +0 -169
  219. package/src/v2/hooks/__tests__/use-capabilities.test.tsx +0 -76
  220. package/src/v2/hooks/__tests__/use-component.test.tsx +0 -126
  221. package/src/v2/hooks/__tests__/use-configure-suggestions.e2e.test.tsx +0 -696
  222. package/src/v2/hooks/__tests__/use-default-render-tool.test.tsx +0 -153
  223. package/src/v2/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -167
  224. package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.tsx +0 -2148
  225. package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.tsx +0 -1261
  226. package/src/v2/hooks/__tests__/use-interrupt.test.tsx +0 -397
  227. package/src/v2/hooks/__tests__/use-katex-styles.test.tsx +0 -56
  228. package/src/v2/hooks/__tests__/use-keyboard-height.test.tsx +0 -192
  229. package/src/v2/hooks/__tests__/use-pin-to-send.test.tsx +0 -219
  230. package/src/v2/hooks/__tests__/use-render-custom-messages.test.tsx +0 -55
  231. package/src/v2/hooks/__tests__/use-render-tool.test.tsx +0 -259
  232. package/src/v2/hooks/__tests__/use-suggestions.e2e.test.tsx +0 -524
  233. package/src/v2/hooks/__tests__/use-threads.test.tsx +0 -757
  234. package/src/v2/hooks/__tests__/zod-regression.test.tsx +0 -311
  235. package/src/v2/hooks/index.ts +0 -24
  236. package/src/v2/hooks/use-agent-context.tsx +0 -45
  237. package/src/v2/hooks/use-agent.tsx +0 -227
  238. package/src/v2/hooks/use-attachments.tsx +0 -269
  239. package/src/v2/hooks/use-capabilities.tsx +0 -25
  240. package/src/v2/hooks/use-component.tsx +0 -91
  241. package/src/v2/hooks/use-configure-suggestions.tsx +0 -236
  242. package/src/v2/hooks/use-default-render-tool.tsx +0 -271
  243. package/src/v2/hooks/use-frontend-tool.tsx +0 -46
  244. package/src/v2/hooks/use-human-in-the-loop.tsx +0 -81
  245. package/src/v2/hooks/use-interrupt.tsx +0 -305
  246. package/src/v2/hooks/use-keyboard-height.tsx +0 -67
  247. package/src/v2/hooks/use-pin-to-send.ts +0 -94
  248. package/src/v2/hooks/use-render-activity-message.tsx +0 -72
  249. package/src/v2/hooks/use-render-custom-messages.tsx +0 -93
  250. package/src/v2/hooks/use-render-tool-call.tsx +0 -208
  251. package/src/v2/hooks/use-render-tool.tsx +0 -184
  252. package/src/v2/hooks/use-suggestions.tsx +0 -91
  253. package/src/v2/hooks/use-threads.tsx +0 -325
  254. package/src/v2/hooks/useKatexStyles.ts +0 -27
  255. package/src/v2/index.css +0 -1
  256. package/src/v2/index.ts +0 -27
  257. package/src/v2/lib/__tests__/completePartialMarkdown.test.ts +0 -495
  258. package/src/v2/lib/__tests__/processPartialHtml.test.ts +0 -112
  259. package/src/v2/lib/__tests__/renderSlot.test.tsx +0 -588
  260. package/src/v2/lib/__tests__/slots.test.ts +0 -56
  261. package/src/v2/lib/processPartialHtml.ts +0 -45
  262. package/src/v2/lib/react-core.ts +0 -156
  263. package/src/v2/lib/slots.tsx +0 -184
  264. package/src/v2/lib/transcription-client.ts +0 -184
  265. package/src/v2/lib/utils.ts +0 -8
  266. package/src/v2/providers/CopilotChatConfigurationProvider.tsx +0 -196
  267. package/src/v2/providers/CopilotKitProvider.tsx +0 -800
  268. package/src/v2/providers/SandboxFunctionsContext.ts +0 -10
  269. package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.tsx +0 -652
  270. package/src/v2/providers/__tests__/CopilotKitProvider.license.test.tsx +0 -101
  271. package/src/v2/providers/__tests__/CopilotKitProvider.onError.test.tsx +0 -69
  272. package/src/v2/providers/__tests__/CopilotKitProvider.renderCustomMessages.e2e.test.tsx +0 -881
  273. package/src/v2/providers/__tests__/CopilotKitProvider.sandboxFunctions.test.tsx +0 -198
  274. package/src/v2/providers/__tests__/CopilotKitProvider.stability.test.tsx +0 -740
  275. package/src/v2/providers/__tests__/CopilotKitProvider.test.tsx +0 -713
  276. package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.tsx +0 -294
  277. package/src/v2/providers/index.ts +0 -21
  278. package/src/v2/styles/globals.css +0 -349
  279. package/src/v2/types/__tests__/defineToolCallRenderer.test.tsx +0 -525
  280. package/src/v2/types/defineToolCallRenderer.ts +0 -68
  281. package/src/v2/types/frontend-tool.ts +0 -8
  282. package/src/v2/types/human-in-the-loop.ts +0 -33
  283. package/src/v2/types/index.ts +0 -8
  284. package/src/v2/types/interrupt.ts +0 -15
  285. package/src/v2/types/react-activity-message-renderer.ts +0 -27
  286. package/src/v2/types/react-custom-message-renderer.ts +0 -17
  287. package/src/v2/types/react-tool-call-renderer.ts +0 -35
  288. package/src/v2/types/sandbox-function.ts +0 -11
  289. package/tsconfig.json +0 -8
  290. package/tsdown.config.ts +0 -193
  291. package/typedoc.json +0 -4
  292. 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
- }