@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.
- package/LICENSE +21 -0
- package/dist/{copilotkit-CtXcs1ea.cjs → copilotkit-B4ouY7qC.cjs} +14 -3
- package/dist/copilotkit-B4ouY7qC.cjs.map +1 -0
- package/dist/copilotkit-BK9CVq9A.d.cts.map +1 -1
- package/dist/{copilotkit-CC8DjOiC.mjs → copilotkit-L4mM_JqG.mjs} +14 -3
- package/dist/copilotkit-L4mM_JqG.mjs.map +1 -0
- package/dist/copilotkit-WlmeVijs.d.mts.map +1 -1
- package/dist/index.cjs +3 -77
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +3 -77
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +15 -78
- package/dist/index.umd.js.map +1 -1
- package/dist/v2/headless.cjs +11 -0
- package/dist/v2/headless.cjs.map +1 -1
- package/dist/v2/headless.d.cts.map +1 -1
- package/dist/v2/headless.d.mts.map +1 -1
- package/dist/v2/headless.mjs +11 -0
- package/dist/v2/headless.mjs.map +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.mjs +1 -1
- package/dist/v2/index.umd.js +13 -2
- package/dist/v2/index.umd.js.map +1 -1
- package/package.json +12 -13
- package/skills/react-core/SKILL.md +108 -0
- package/skills/react-core/references/agent-access.md +288 -0
- package/skills/react-core/references/attachments.md +291 -0
- package/skills/react-core/references/capabilities.md +138 -0
- package/skills/react-core/references/chat-components.md +221 -0
- package/skills/react-core/references/client-side-tools.md +358 -0
- package/skills/react-core/references/custom-message-renderers.md +226 -0
- package/skills/react-core/references/debug-mode.md +153 -0
- package/skills/react-core/references/human-in-the-loop.md +312 -0
- package/skills/react-core/references/provider-setup.md +326 -0
- package/skills/react-core/references/rendering-activity-messages.md +207 -0
- package/skills/react-core/references/rendering-tool-calls.md +319 -0
- package/skills/react-core/references/suggestions.md +211 -0
- package/skills/react-core/references/switching-agents-recipes.md +160 -0
- package/skills/react-core/references/switching-agents.md +231 -0
- package/skills/react-core/references/threads.md +226 -0
- package/.attw.json +0 -3
- package/CHANGELOG.md +0 -5043
- package/dist/copilotkit-CC8DjOiC.mjs.map +0 -1
- package/dist/copilotkit-CtXcs1ea.cjs.map +0 -1
- package/scripts/scope-preflight.mjs +0 -100
- package/src/components/CopilotListeners.tsx +0 -137
- package/src/components/__tests__/CopilotListeners.test.tsx +0 -38
- package/src/components/copilot-provider/__tests__/copilot-messages-key.test.tsx +0 -92
- package/src/components/copilot-provider/__tests__/copilotkit-error.test.tsx +0 -77
- package/src/components/copilot-provider/__tests__/error-visibility-prod.test.tsx +0 -70
- package/src/components/copilot-provider/__tests__/v1-explicit-threadid-bridge.test.tsx +0 -107
- package/src/components/copilot-provider/copilot-messages.tsx +0 -314
- package/src/components/copilot-provider/copilotkit-props.tsx +0 -214
- package/src/components/copilot-provider/copilotkit.tsx +0 -853
- package/src/components/copilot-provider/index.ts +0 -3
- package/src/components/dev-console/console-trigger.tsx +0 -283
- package/src/components/dev-console/developer-console-modal.tsx +0 -1016
- package/src/components/dev-console/icons.tsx +0 -106
- package/src/components/error-boundary/error-boundary.tsx +0 -99
- package/src/components/error-boundary/error-utils.tsx +0 -105
- package/src/components/index.ts +0 -1
- package/src/components/toast/exclamation-mark-icon.tsx +0 -27
- package/src/components/toast/toast-provider.tsx +0 -448
- package/src/components/usage-banner.tsx +0 -266
- package/src/context/__tests__/threads-context.test.tsx +0 -141
- package/src/context/coagent-state-renders-context.tsx +0 -89
- package/src/context/copilot-context.tsx +0 -365
- package/src/context/copilot-messages-context.tsx +0 -35
- package/src/context/index.ts +0 -22
- package/src/context/threads-context.tsx +0 -69
- package/src/hooks/__tests__/use-coagent-config.test.ts +0 -352
- package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +0 -107
- package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +0 -1209
- package/src/hooks/__tests__/use-coagent-state-render.test.tsx +0 -356
- package/src/hooks/__tests__/use-copilot-chat-internal-connect.test.tsx +0 -241
- package/src/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -72
- package/src/hooks/__tests__/use-frontend-tool-remount.e2e.test.tsx +0 -102
- package/src/hooks/index.ts +0 -33
- package/src/hooks/use-agent-nodename.ts +0 -33
- package/src/hooks/use-coagent-state-render-bridge.helpers.ts +0 -345
- package/src/hooks/use-coagent-state-render-bridge.tsx +0 -222
- package/src/hooks/use-coagent-state-render-registry.ts +0 -230
- package/src/hooks/use-coagent-state-render.ts +0 -163
- package/src/hooks/use-coagent.ts +0 -377
- package/src/hooks/use-configure-chat-suggestions.tsx +0 -96
- package/src/hooks/use-copilot-action.ts +0 -245
- package/src/hooks/use-copilot-additional-instructions.ts +0 -98
- package/src/hooks/use-copilot-authenticated-action.ts +0 -73
- package/src/hooks/use-copilot-chat-headless_c.ts +0 -264
- package/src/hooks/use-copilot-chat-suggestions.tsx +0 -134
- package/src/hooks/use-copilot-chat.ts +0 -132
- package/src/hooks/use-copilot-chat_internal.ts +0 -875
- package/src/hooks/use-copilot-readable.ts +0 -135
- package/src/hooks/use-copilot-runtime-client.ts +0 -178
- package/src/hooks/use-default-tool.ts +0 -13
- package/src/hooks/use-flat-category-store.ts +0 -109
- package/src/hooks/use-frontend-tool.ts +0 -113
- package/src/hooks/use-human-in-the-loop.ts +0 -138
- package/src/hooks/use-langgraph-interrupt.ts +0 -103
- package/src/hooks/use-lazy-tool-renderer.tsx +0 -30
- package/src/hooks/use-make-copilot-document-readable.ts +0 -30
- package/src/hooks/use-render-tool-call.ts +0 -89
- package/src/hooks/use-tree.ts +0 -222
- package/src/index.tsx +0 -7
- package/src/lib/copilot-task.ts +0 -215
- package/src/lib/index.ts +0 -1
- package/src/lib/status-checker.ts +0 -67
- package/src/setupTests.ts +0 -37
- package/src/test-helpers/copilot-context.ts +0 -91
- package/src/types/chat-suggestion-configuration.ts +0 -23
- package/src/types/coagent-action.ts +0 -35
- package/src/types/coagent-state.ts +0 -13
- package/src/types/crew.ts +0 -89
- package/src/types/document-pointer.ts +0 -7
- package/src/types/frontend-action.ts +0 -213
- package/src/types/index.ts +0 -17
- package/src/types/interrupt-action.ts +0 -58
- package/src/types/system-message.ts +0 -4
- package/src/utils/dev-console.ts +0 -19
- package/src/utils/index.ts +0 -2
- package/src/utils/suggestions-constants.ts +0 -8
- package/src/utils/utils.test.ts +0 -7
- package/src/utils/utils.ts +0 -6
- package/src/v2/__tests__/A2UIMessageRenderer.test.tsx +0 -240
- package/src/v2/__tests__/globalSetup.ts +0 -14
- package/src/v2/__tests__/setup.ts +0 -93
- package/src/v2/__tests__/utils/test-helpers.tsx +0 -570
- package/src/v2/a2ui/A2UICatalogContext.tsx +0 -79
- package/src/v2/a2ui/A2UIMessageRenderer.tsx +0 -294
- package/src/v2/a2ui/A2UIToolCallRenderer.tsx +0 -290
- package/src/v2/components/CopilotKitInspector.tsx +0 -52
- package/src/v2/components/MCPAppsActivityRenderer.tsx +0 -815
- package/src/v2/components/OpenGenerativeUIRenderer.tsx +0 -598
- package/src/v2/components/WildcardToolCallRender.tsx +0 -86
- package/src/v2/components/__tests__/OpenGenerativeUIRenderer.test.tsx +0 -665
- package/src/v2/components/chat/CopilotChat.tsx +0 -664
- package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +0 -393
- package/src/v2/components/chat/CopilotChatAttachmentQueue.tsx +0 -374
- package/src/v2/components/chat/CopilotChatAttachmentRenderer.tsx +0 -159
- package/src/v2/components/chat/CopilotChatAudioRecorder.tsx +0 -350
- package/src/v2/components/chat/CopilotChatInput.tsx +0 -1412
- package/src/v2/components/chat/CopilotChatMessageView.tsx +0 -716
- package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +0 -265
- package/src/v2/components/chat/CopilotChatSuggestionPill.tsx +0 -59
- package/src/v2/components/chat/CopilotChatSuggestionView.tsx +0 -134
- package/src/v2/components/chat/CopilotChatToggleButton.tsx +0 -171
- package/src/v2/components/chat/CopilotChatToolCallsView.tsx +0 -40
- package/src/v2/components/chat/CopilotChatUserMessage.tsx +0 -445
- package/src/v2/components/chat/CopilotChatView.tsx +0 -890
- package/src/v2/components/chat/CopilotModalHeader.tsx +0 -129
- package/src/v2/components/chat/CopilotPopup.tsx +0 -81
- package/src/v2/components/chat/CopilotPopupView.tsx +0 -317
- package/src/v2/components/chat/CopilotSidebar.tsx +0 -80
- package/src/v2/components/chat/CopilotSidebarView.tsx +0 -269
- package/src/v2/components/chat/Lightbox.tsx +0 -103
- package/src/v2/components/chat/__tests__/CopilotChat.absentThreadConnect.test.tsx +0 -66
- package/src/v2/components/chat/__tests__/CopilotChat.attachments.test.tsx +0 -168
- package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +0 -1239
- package/src/v2/components/chat/__tests__/CopilotChat.onError.test.tsx +0 -73
- package/src/v2/components/chat/__tests__/CopilotChat.slots.e2e.test.tsx +0 -432
- package/src/v2/components/chat/__tests__/CopilotChat.suggestionsAlways.test.tsx +0 -183
- package/src/v2/components/chat/__tests__/CopilotChat.welcomeGate.test.tsx +0 -184
- package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.tsx +0 -649
- package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.slots.e2e.test.tsx +0 -624
- package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +0 -702
- package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.thumbs.test.tsx +0 -72
- package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.tsx +0 -241
- package/src/v2/components/chat/__tests__/CopilotChatCssClasses.test.tsx +0 -107
- package/src/v2/components/chat/__tests__/CopilotChatInput.slots.e2e.test.tsx +0 -929
- package/src/v2/components/chat/__tests__/CopilotChatInput.test.tsx +0 -1567
- package/src/v2/components/chat/__tests__/CopilotChatMessageView.slots.e2e.test.tsx +0 -1004
- package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.tsx +0 -279
- package/src/v2/components/chat/__tests__/CopilotChatPerf.e2e.test.tsx +0 -336
- package/src/v2/components/chat/__tests__/CopilotChatPropsRerender.e2e.test.tsx +0 -249
- package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.slots.e2e.test.tsx +0 -530
- package/src/v2/components/chat/__tests__/CopilotChatToolRendering.e2e.test.tsx +0 -785
- package/src/v2/components/chat/__tests__/CopilotChatToolRerenders.e2e.test.tsx +0 -2416
- package/src/v2/components/chat/__tests__/CopilotChatUserMessage.slots.e2e.test.tsx +0 -621
- package/src/v2/components/chat/__tests__/CopilotChatView.connectingGate.test.tsx +0 -56
- package/src/v2/components/chat/__tests__/CopilotChatView.inputOverlay.test.tsx +0 -264
- package/src/v2/components/chat/__tests__/CopilotChatView.onClick.e2e.test.tsx +0 -853
- package/src/v2/components/chat/__tests__/CopilotChatView.pinToSend.test.tsx +0 -94
- package/src/v2/components/chat/__tests__/CopilotChatView.slots.e2e.test.tsx +0 -1050
- package/src/v2/components/chat/__tests__/CopilotModalHeader.slots.e2e.test.tsx +0 -484
- package/src/v2/components/chat/__tests__/CopilotPopupView.slots.e2e.test.tsx +0 -612
- package/src/v2/components/chat/__tests__/CopilotSidebarView.position.test.tsx +0 -159
- package/src/v2/components/chat/__tests__/CopilotSidebarView.slots.e2e.test.tsx +0 -502
- package/src/v2/components/chat/__tests__/MCPAppsActivityRenderer.e2e.test.tsx +0 -1068
- package/src/v2/components/chat/__tests__/MCPAppsProxy.e2e.test.tsx +0 -589
- package/src/v2/components/chat/__tests__/MCPAppsUiMessage.e2e.test.tsx +0 -403
- package/src/v2/components/chat/__tests__/copilot-chat-throttle.test.tsx +0 -137
- package/src/v2/components/chat/__tests__/normalize-auto-scroll.test.ts +0 -37
- package/src/v2/components/chat/__tests__/setup.ts +0 -1
- package/src/v2/components/chat/index.ts +0 -90
- package/src/v2/components/chat/last-user-message-context.ts +0 -21
- package/src/v2/components/chat/normalize-auto-scroll.ts +0 -17
- package/src/v2/components/chat/scroll-element-context.ts +0 -13
- package/src/v2/components/index.ts +0 -8
- package/src/v2/components/intelligence-indicator/IntelligenceIndicator.tsx +0 -286
- package/src/v2/components/intelligence-indicator/__tests__/IntelligenceIndicator.e2e.test.tsx +0 -464
- package/src/v2/components/intelligence-indicator/index.ts +0 -2
- package/src/v2/components/license-warning-banner.tsx +0 -217
- package/src/v2/components/ui/button.tsx +0 -124
- package/src/v2/components/ui/dropdown-menu.tsx +0 -258
- package/src/v2/components/ui/tooltip.tsx +0 -60
- package/src/v2/context.ts +0 -62
- package/src/v2/headless.ts +0 -64
- package/src/v2/hooks/__tests__/standard-schema-types.test.tsx +0 -152
- package/src/v2/hooks/__tests__/standard-schema.test.tsx +0 -282
- package/src/v2/hooks/__tests__/use-agent-context-timing.e2e.test.tsx +0 -140
- package/src/v2/hooks/__tests__/use-agent-context.test.tsx +0 -401
- package/src/v2/hooks/__tests__/use-agent-error-state.test.tsx +0 -44
- package/src/v2/hooks/__tests__/use-agent-stability.test.tsx +0 -211
- package/src/v2/hooks/__tests__/use-agent-throttle.test.tsx +0 -1029
- package/src/v2/hooks/__tests__/use-agent.e2e.test.tsx +0 -159
- package/src/v2/hooks/__tests__/use-attachments.test.tsx +0 -169
- package/src/v2/hooks/__tests__/use-capabilities.test.tsx +0 -76
- package/src/v2/hooks/__tests__/use-component.test.tsx +0 -126
- package/src/v2/hooks/__tests__/use-configure-suggestions.e2e.test.tsx +0 -696
- package/src/v2/hooks/__tests__/use-default-render-tool.test.tsx +0 -153
- package/src/v2/hooks/__tests__/use-frontend-tool-available.test.tsx +0 -167
- package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.tsx +0 -2148
- package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.tsx +0 -1261
- package/src/v2/hooks/__tests__/use-interrupt.test.tsx +0 -397
- package/src/v2/hooks/__tests__/use-katex-styles.test.tsx +0 -56
- package/src/v2/hooks/__tests__/use-keyboard-height.test.tsx +0 -192
- package/src/v2/hooks/__tests__/use-pin-to-send.test.tsx +0 -219
- package/src/v2/hooks/__tests__/use-render-custom-messages.test.tsx +0 -55
- package/src/v2/hooks/__tests__/use-render-tool.test.tsx +0 -259
- package/src/v2/hooks/__tests__/use-suggestions.e2e.test.tsx +0 -524
- package/src/v2/hooks/__tests__/use-threads.test.tsx +0 -757
- package/src/v2/hooks/__tests__/zod-regression.test.tsx +0 -311
- package/src/v2/hooks/index.ts +0 -24
- package/src/v2/hooks/use-agent-context.tsx +0 -45
- package/src/v2/hooks/use-agent.tsx +0 -227
- package/src/v2/hooks/use-attachments.tsx +0 -269
- package/src/v2/hooks/use-capabilities.tsx +0 -25
- package/src/v2/hooks/use-component.tsx +0 -91
- package/src/v2/hooks/use-configure-suggestions.tsx +0 -236
- package/src/v2/hooks/use-default-render-tool.tsx +0 -271
- package/src/v2/hooks/use-frontend-tool.tsx +0 -46
- package/src/v2/hooks/use-human-in-the-loop.tsx +0 -81
- package/src/v2/hooks/use-interrupt.tsx +0 -305
- package/src/v2/hooks/use-keyboard-height.tsx +0 -67
- package/src/v2/hooks/use-pin-to-send.ts +0 -94
- package/src/v2/hooks/use-render-activity-message.tsx +0 -72
- package/src/v2/hooks/use-render-custom-messages.tsx +0 -93
- package/src/v2/hooks/use-render-tool-call.tsx +0 -208
- package/src/v2/hooks/use-render-tool.tsx +0 -184
- package/src/v2/hooks/use-suggestions.tsx +0 -91
- package/src/v2/hooks/use-threads.tsx +0 -325
- package/src/v2/hooks/useKatexStyles.ts +0 -27
- package/src/v2/index.css +0 -1
- package/src/v2/index.ts +0 -27
- package/src/v2/lib/__tests__/completePartialMarkdown.test.ts +0 -495
- package/src/v2/lib/__tests__/processPartialHtml.test.ts +0 -112
- package/src/v2/lib/__tests__/renderSlot.test.tsx +0 -588
- package/src/v2/lib/__tests__/slots.test.ts +0 -56
- package/src/v2/lib/processPartialHtml.ts +0 -45
- package/src/v2/lib/react-core.ts +0 -156
- package/src/v2/lib/slots.tsx +0 -184
- package/src/v2/lib/transcription-client.ts +0 -184
- package/src/v2/lib/utils.ts +0 -8
- package/src/v2/providers/CopilotChatConfigurationProvider.tsx +0 -196
- package/src/v2/providers/CopilotKitProvider.tsx +0 -800
- package/src/v2/providers/SandboxFunctionsContext.ts +0 -10
- package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.tsx +0 -652
- package/src/v2/providers/__tests__/CopilotKitProvider.license.test.tsx +0 -101
- package/src/v2/providers/__tests__/CopilotKitProvider.onError.test.tsx +0 -69
- package/src/v2/providers/__tests__/CopilotKitProvider.renderCustomMessages.e2e.test.tsx +0 -881
- package/src/v2/providers/__tests__/CopilotKitProvider.sandboxFunctions.test.tsx +0 -198
- package/src/v2/providers/__tests__/CopilotKitProvider.stability.test.tsx +0 -740
- package/src/v2/providers/__tests__/CopilotKitProvider.test.tsx +0 -713
- package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.tsx +0 -294
- package/src/v2/providers/index.ts +0 -21
- package/src/v2/styles/globals.css +0 -349
- package/src/v2/types/__tests__/defineToolCallRenderer.test.tsx +0 -525
- package/src/v2/types/defineToolCallRenderer.ts +0 -68
- package/src/v2/types/frontend-tool.ts +0 -8
- package/src/v2/types/human-in-the-loop.ts +0 -33
- package/src/v2/types/index.ts +0 -8
- package/src/v2/types/interrupt.ts +0 -15
- package/src/v2/types/react-activity-message-renderer.ts +0 -27
- package/src/v2/types/react-custom-message-renderer.ts +0 -17
- package/src/v2/types/react-tool-call-renderer.ts +0 -35
- package/src/v2/types/sandbox-function.ts +0 -11
- package/tsconfig.json +0 -8
- package/tsdown.config.ts +0 -193
- package/typedoc.json +0 -4
- package/vitest.config.mjs +0 -31
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An internal context to separate the messages state (which is constantly changing) from the rest of CopilotKit context
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
ReactNode,
|
|
7
|
-
useEffect,
|
|
8
|
-
useState,
|
|
9
|
-
useRef,
|
|
10
|
-
useCallback,
|
|
11
|
-
useMemo,
|
|
12
|
-
createContext,
|
|
13
|
-
useContext,
|
|
14
|
-
} from "react";
|
|
15
|
-
import { CopilotMessagesContext } from "../../context/copilot-messages-context";
|
|
16
|
-
import {
|
|
17
|
-
loadMessagesFromJsonRepresentation,
|
|
18
|
-
Message,
|
|
19
|
-
GraphQLError,
|
|
20
|
-
} from "@copilotkit/runtime-client-gql";
|
|
21
|
-
import { useCopilotContext } from "../../context/copilot-context";
|
|
22
|
-
import { useToast } from "../toast/toast-provider";
|
|
23
|
-
import { shouldShowDevConsole } from "../../utils/dev-console";
|
|
24
|
-
import {
|
|
25
|
-
ErrorVisibility,
|
|
26
|
-
CopilotKitApiDiscoveryError,
|
|
27
|
-
CopilotKitRemoteEndpointDiscoveryError,
|
|
28
|
-
CopilotKitAgentDiscoveryError,
|
|
29
|
-
CopilotKitError,
|
|
30
|
-
CopilotKitErrorCode,
|
|
31
|
-
} from "@copilotkit/shared";
|
|
32
|
-
import { Suggestion } from "@copilotkit/core";
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Determine whether a GraphQL error should be suppressed based on its visibility
|
|
36
|
-
* and whether the dev console is active.
|
|
37
|
-
*
|
|
38
|
-
* Returns `null` when the error should be surfaced to the UI, or a log prefix
|
|
39
|
-
* string when the error should be suppressed (logged to console only).
|
|
40
|
-
*
|
|
41
|
-
* Exported for unit testing.
|
|
42
|
-
*/
|
|
43
|
-
export function getErrorSuppression(
|
|
44
|
-
visibility: ErrorVisibility | undefined,
|
|
45
|
-
isDev: boolean,
|
|
46
|
-
): string | null {
|
|
47
|
-
// Silent errors are always suppressed
|
|
48
|
-
if (visibility === ErrorVisibility.SILENT) {
|
|
49
|
-
return "CopilotKit Silent Error:";
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// DEV_ONLY errors are suppressed in production
|
|
53
|
-
if (!isDev && visibility === ErrorVisibility.DEV_ONLY) {
|
|
54
|
-
return "CopilotKit Error (hidden in production):";
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// All other visibilities (TOAST, BANNER, undefined) are always surfaced
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Helper to determine if error should show as banner based on visibility and legacy patterns
|
|
62
|
-
function shouldShowAsBanner(gqlError: GraphQLError): boolean {
|
|
63
|
-
const extensions = gqlError.extensions;
|
|
64
|
-
if (!extensions) return false;
|
|
65
|
-
|
|
66
|
-
// Priority 1: Check error code for discovery errors (these should always be banners)
|
|
67
|
-
const code = extensions.code as CopilotKitErrorCode;
|
|
68
|
-
if (
|
|
69
|
-
code === CopilotKitErrorCode.AGENT_NOT_FOUND ||
|
|
70
|
-
code === CopilotKitErrorCode.API_NOT_FOUND ||
|
|
71
|
-
code === CopilotKitErrorCode.REMOTE_ENDPOINT_NOT_FOUND ||
|
|
72
|
-
code === CopilotKitErrorCode.CONFIGURATION_ERROR ||
|
|
73
|
-
code === CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR ||
|
|
74
|
-
code === CopilotKitErrorCode.UPGRADE_REQUIRED_ERROR
|
|
75
|
-
) {
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Priority 2: Check banner visibility
|
|
80
|
-
if (extensions.visibility === ErrorVisibility.BANNER) {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Priority 3: Check for critical errors that should be banners regardless of formal classification
|
|
85
|
-
const errorMessage = gqlError.message.toLowerCase();
|
|
86
|
-
if (
|
|
87
|
-
errorMessage.includes("api key") ||
|
|
88
|
-
errorMessage.includes("401") ||
|
|
89
|
-
errorMessage.includes("unauthorized") ||
|
|
90
|
-
errorMessage.includes("authentication") ||
|
|
91
|
-
errorMessage.includes("incorrect api key")
|
|
92
|
-
) {
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Priority 4: Legacy stack trace detection for discovery errors
|
|
97
|
-
const originalError = extensions.originalError as any;
|
|
98
|
-
if (originalError?.stack) {
|
|
99
|
-
return (
|
|
100
|
-
originalError.stack.includes("CopilotApiDiscoveryError") ||
|
|
101
|
-
originalError.stack.includes("CopilotKitRemoteEndpointDiscoveryError") ||
|
|
102
|
-
originalError.stack.includes("CopilotKitAgentDiscoveryError")
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* MessagesTap is used to mitigate performance issues when we only need
|
|
111
|
-
* a snapshot of the messages, not a continuously updating stream of messages.
|
|
112
|
-
*/
|
|
113
|
-
|
|
114
|
-
export type MessagesTap = {
|
|
115
|
-
getMessagesFromTap: () => Message[];
|
|
116
|
-
updateTapMessages: (messages: Message[]) => void;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const MessagesTapContext = createContext<MessagesTap | null>(null);
|
|
120
|
-
|
|
121
|
-
export function useMessagesTap() {
|
|
122
|
-
const tap = useContext(MessagesTapContext);
|
|
123
|
-
if (!tap)
|
|
124
|
-
throw new Error("useMessagesTap must be used inside <MessagesTapProvider>");
|
|
125
|
-
return tap;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export function MessagesTapProvider({
|
|
129
|
-
children,
|
|
130
|
-
}: {
|
|
131
|
-
children: React.ReactNode;
|
|
132
|
-
}) {
|
|
133
|
-
const messagesRef = useRef<Message[]>([]);
|
|
134
|
-
|
|
135
|
-
const tapRef = useRef<MessagesTap>({
|
|
136
|
-
getMessagesFromTap: () => messagesRef.current,
|
|
137
|
-
updateTapMessages: (messages: Message[]) => {
|
|
138
|
-
messagesRef.current = messages;
|
|
139
|
-
},
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
return (
|
|
143
|
-
<MessagesTapContext.Provider value={tapRef.current}>
|
|
144
|
-
{children}
|
|
145
|
-
</MessagesTapContext.Provider>
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* CopilotKit messages context.
|
|
151
|
-
*/
|
|
152
|
-
|
|
153
|
-
export function CopilotMessages({ children }: { children: ReactNode }) {
|
|
154
|
-
const [messages, setMessages] = useState<Message[]>([]);
|
|
155
|
-
const lastLoadedThreadId = useRef<string>(undefined!);
|
|
156
|
-
const lastLoadedAgentName = useRef<string>(undefined!);
|
|
157
|
-
const lastLoadedMessages = useRef<string>(undefined!);
|
|
158
|
-
|
|
159
|
-
const { updateTapMessages } = useMessagesTap();
|
|
160
|
-
|
|
161
|
-
const { threadId, agentSession, showDevConsole, onError, copilotApiConfig } =
|
|
162
|
-
useCopilotContext();
|
|
163
|
-
const { setBannerError } = useToast();
|
|
164
|
-
|
|
165
|
-
// Helper function to trace UI errors (similar to useCopilotRuntimeClient)
|
|
166
|
-
const traceUIError = useCallback(
|
|
167
|
-
async (error: CopilotKitError, originalError?: any) => {
|
|
168
|
-
// Just check if onError and publicApiKey are defined
|
|
169
|
-
if (!onError || !copilotApiConfig.publicApiKey) return;
|
|
170
|
-
|
|
171
|
-
try {
|
|
172
|
-
const traceEvent = {
|
|
173
|
-
type: "error" as const,
|
|
174
|
-
timestamp: Date.now(),
|
|
175
|
-
context: {
|
|
176
|
-
source: "ui" as const,
|
|
177
|
-
request: {
|
|
178
|
-
operation: "loadAgentState",
|
|
179
|
-
url: copilotApiConfig.chatApiEndpoint,
|
|
180
|
-
startTime: Date.now(),
|
|
181
|
-
},
|
|
182
|
-
technical: {
|
|
183
|
-
environment: "browser",
|
|
184
|
-
userAgent:
|
|
185
|
-
typeof navigator !== "undefined"
|
|
186
|
-
? navigator.userAgent
|
|
187
|
-
: undefined,
|
|
188
|
-
stackTrace:
|
|
189
|
-
originalError instanceof Error
|
|
190
|
-
? originalError.stack
|
|
191
|
-
: undefined,
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
error,
|
|
195
|
-
};
|
|
196
|
-
await onError(traceEvent);
|
|
197
|
-
} catch (traceError) {
|
|
198
|
-
console.error("Error in CopilotMessages onError handler:", traceError);
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
[onError, copilotApiConfig.publicApiKey, copilotApiConfig.chatApiEndpoint],
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
const createStructuredError = (
|
|
205
|
-
gqlError: GraphQLError,
|
|
206
|
-
): CopilotKitError | null => {
|
|
207
|
-
const extensions = gqlError.extensions;
|
|
208
|
-
const originalError = extensions?.originalError as any;
|
|
209
|
-
|
|
210
|
-
// Priority: Check stack trace for discovery errors first
|
|
211
|
-
if (originalError?.stack) {
|
|
212
|
-
if (originalError.stack.includes("CopilotApiDiscoveryError")) {
|
|
213
|
-
return new CopilotKitApiDiscoveryError({
|
|
214
|
-
message: originalError.message,
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
if (
|
|
218
|
-
originalError.stack.includes("CopilotKitRemoteEndpointDiscoveryError")
|
|
219
|
-
) {
|
|
220
|
-
return new CopilotKitRemoteEndpointDiscoveryError({
|
|
221
|
-
message: originalError.message,
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
if (originalError.stack.includes("CopilotKitAgentDiscoveryError")) {
|
|
225
|
-
return new CopilotKitAgentDiscoveryError({
|
|
226
|
-
agentName: "",
|
|
227
|
-
availableAgents: [],
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// Fallback: Use the formal error code if available
|
|
233
|
-
const message = originalError?.message || gqlError.message;
|
|
234
|
-
const code = extensions?.code as CopilotKitErrorCode;
|
|
235
|
-
|
|
236
|
-
if (code) {
|
|
237
|
-
return new CopilotKitError({ message, code });
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
return null;
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
const handleGraphQLErrors = useCallback(
|
|
244
|
-
(error: any) => {
|
|
245
|
-
if (error.graphQLErrors?.length) {
|
|
246
|
-
const graphQLErrors = error.graphQLErrors as GraphQLError[];
|
|
247
|
-
|
|
248
|
-
// Route all errors to banners for consistent UI
|
|
249
|
-
const routeError = (gqlError: GraphQLError) => {
|
|
250
|
-
const extensions = gqlError.extensions;
|
|
251
|
-
const visibility = extensions?.visibility as ErrorVisibility;
|
|
252
|
-
const isDev = shouldShowDevConsole(showDevConsole);
|
|
253
|
-
|
|
254
|
-
const suppression = getErrorSuppression(visibility, isDev);
|
|
255
|
-
if (suppression) {
|
|
256
|
-
console.error(suppression, gqlError.message);
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// TOAST and BANNER errors are always surfaced, even in production
|
|
261
|
-
// All other errors (including DEV_ONLY) show as banners for consistency
|
|
262
|
-
const ckError = createStructuredError(gqlError);
|
|
263
|
-
if (ckError) {
|
|
264
|
-
setBannerError(ckError);
|
|
265
|
-
// Trace the structured error
|
|
266
|
-
traceUIError(ckError, gqlError);
|
|
267
|
-
} else {
|
|
268
|
-
// Fallback: create a generic error for unstructured GraphQL errors
|
|
269
|
-
const fallbackError = new CopilotKitError({
|
|
270
|
-
message: gqlError.message,
|
|
271
|
-
code: CopilotKitErrorCode.UNKNOWN,
|
|
272
|
-
});
|
|
273
|
-
setBannerError(fallbackError);
|
|
274
|
-
// Trace the fallback error
|
|
275
|
-
traceUIError(fallbackError, gqlError);
|
|
276
|
-
}
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
// Process all errors as banners
|
|
280
|
-
graphQLErrors.forEach(routeError);
|
|
281
|
-
} else {
|
|
282
|
-
// Non-GraphQL errors are always surfaced to the user
|
|
283
|
-
const fallbackError = new CopilotKitError({
|
|
284
|
-
message: error?.message || String(error),
|
|
285
|
-
code: CopilotKitErrorCode.UNKNOWN,
|
|
286
|
-
});
|
|
287
|
-
setBannerError(fallbackError);
|
|
288
|
-
// Trace the non-GraphQL error
|
|
289
|
-
traceUIError(fallbackError, error);
|
|
290
|
-
}
|
|
291
|
-
},
|
|
292
|
-
[setBannerError, showDevConsole, traceUIError],
|
|
293
|
-
);
|
|
294
|
-
|
|
295
|
-
useEffect(() => {
|
|
296
|
-
updateTapMessages(messages);
|
|
297
|
-
}, [messages, updateTapMessages]);
|
|
298
|
-
|
|
299
|
-
const memoizedChildren = useMemo(() => children, [children]);
|
|
300
|
-
const [suggestions, setSuggestions] = useState<Suggestion[]>([]);
|
|
301
|
-
|
|
302
|
-
return (
|
|
303
|
-
<CopilotMessagesContext.Provider
|
|
304
|
-
value={{
|
|
305
|
-
messages,
|
|
306
|
-
setMessages,
|
|
307
|
-
suggestions,
|
|
308
|
-
setSuggestions,
|
|
309
|
-
}}
|
|
310
|
-
>
|
|
311
|
-
{memoizedChildren}
|
|
312
|
-
</CopilotMessagesContext.Provider>
|
|
313
|
-
);
|
|
314
|
-
}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { ForwardedParametersInput } from "@copilotkit/runtime-client-gql";
|
|
2
|
-
import { ReactNode } from "react";
|
|
3
|
-
import { AuthState } from "../../context/copilot-context";
|
|
4
|
-
import { CopilotErrorHandler, DebugConfig } from "@copilotkit/shared";
|
|
5
|
-
import { CopilotKitProviderProps } from "../../v2";
|
|
6
|
-
/**
|
|
7
|
-
* Props for CopilotKit.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* We shouldn't need this `Omit` here, but using it because `CopilotKitProps`
|
|
12
|
-
* and `CopilotKitProviderProps` have non-identical `children` types
|
|
13
|
-
*
|
|
14
|
-
* TODO: Remove this `Omit` once this is resolved.
|
|
15
|
-
*/
|
|
16
|
-
export interface CopilotKitProps extends Omit<
|
|
17
|
-
CopilotKitProviderProps,
|
|
18
|
-
"children"
|
|
19
|
-
> {
|
|
20
|
-
/**
|
|
21
|
-
* Your Copilot Cloud API key.
|
|
22
|
-
*
|
|
23
|
-
* Don't have it yet? Go to https://cloud.copilotkit.ai and get one for free.
|
|
24
|
-
*/
|
|
25
|
-
publicApiKey?: string;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Your public license key for accessing premium CopilotKit features.
|
|
29
|
-
*
|
|
30
|
-
* Don't have it yet? Go to https://cloud.copilotkit.ai and get one for free.
|
|
31
|
-
*/
|
|
32
|
-
publicLicenseKey?: string;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Restrict input to a specific topic.
|
|
36
|
-
* @deprecated Use `guardrails_c` instead to control input restrictions
|
|
37
|
-
*/
|
|
38
|
-
cloudRestrictToTopic?: {
|
|
39
|
-
validTopics?: string[];
|
|
40
|
-
invalidTopics?: string[];
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Restrict input to specific topics using guardrails.
|
|
45
|
-
* @remarks
|
|
46
|
-
*
|
|
47
|
-
* This feature is only available when using CopilotKit's hosted cloud service. To use this feature, sign up at https://cloud.copilotkit.ai to get your publicApiKey. The feature allows restricting chat conversations to specific topics.
|
|
48
|
-
*/
|
|
49
|
-
guardrails_c?: {
|
|
50
|
-
validTopics?: string[];
|
|
51
|
-
invalidTopics?: string[];
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* The endpoint for the Copilot Runtime instance. [Click here for more information](/concepts/copilot-runtime).
|
|
56
|
-
*/
|
|
57
|
-
runtimeUrl?: string;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* The endpoint for the Copilot transcribe audio service.
|
|
61
|
-
*/
|
|
62
|
-
transcribeAudioUrl?: string;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* The endpoint for the Copilot text to speech service.
|
|
66
|
-
*/
|
|
67
|
-
textToSpeechUrl?: string;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Additional headers to be sent with the request.
|
|
71
|
-
* Can be a static object or a function that returns headers dynamically
|
|
72
|
-
* (useful for refreshing auth tokens).
|
|
73
|
-
*
|
|
74
|
-
* For example:
|
|
75
|
-
* ```tsx
|
|
76
|
-
* // Static headers
|
|
77
|
-
* headers={{ "Authorization": "Bearer X" }}
|
|
78
|
-
*
|
|
79
|
-
* // Dynamic headers (re-evaluated on each render)
|
|
80
|
-
* headers={() => ({ "Authorization": `Bearer ${getToken()}` })}
|
|
81
|
-
* ```
|
|
82
|
-
*/
|
|
83
|
-
headers?: Record<string, string> | (() => Record<string, string>);
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* The children to be rendered within the CopilotKit.
|
|
87
|
-
*/
|
|
88
|
-
children: ReactNode;
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Custom properties to be sent with the request.
|
|
92
|
-
* Can include threadMetadata for thread creation and authorization for LangGraph Platform authentication.
|
|
93
|
-
* For example:
|
|
94
|
-
* ```js
|
|
95
|
-
* {
|
|
96
|
-
* 'user_id': 'users_id',
|
|
97
|
-
* 'authorization': 'your-auth-token', // For LangGraph Platform authentication
|
|
98
|
-
* threadMetadata: {
|
|
99
|
-
* 'account_id': '123',
|
|
100
|
-
* 'user_type': 'premium'
|
|
101
|
-
* }
|
|
102
|
-
* }
|
|
103
|
-
* ```
|
|
104
|
-
*
|
|
105
|
-
* **Note**: The `authorization` property is automatically forwarded to LangGraph agents. See the [LangGraph Agent Authentication Guide](/coagents/shared/guides/langgraph-platform-authentication) for details.
|
|
106
|
-
*/
|
|
107
|
-
properties?: Record<string, any>;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Indicates whether the user agent should send or receive cookies from the other domain
|
|
111
|
-
* in the case of cross-origin requests.
|
|
112
|
-
*
|
|
113
|
-
* To enable HTTP-only cookie authentication, set `credentials="include"` and configure
|
|
114
|
-
* CORS on your runtime endpoint:
|
|
115
|
-
*
|
|
116
|
-
* ```tsx
|
|
117
|
-
* // Frontend (https://myapp.com)
|
|
118
|
-
* <CopilotKit runtimeUrl="https://api.myapp.com/copilotkit" credentials="include">
|
|
119
|
-
* {children}
|
|
120
|
-
* </CopilotKit>
|
|
121
|
-
*
|
|
122
|
-
* // Backend (https://api.myapp.com)
|
|
123
|
-
* copilotRuntimeNextJSAppRouterEndpoint({
|
|
124
|
-
* runtime,
|
|
125
|
-
* endpoint: "/copilotkit",
|
|
126
|
-
* cors: {
|
|
127
|
-
* origin: "https://myapp.com",
|
|
128
|
-
* credentials: true,
|
|
129
|
-
* },
|
|
130
|
-
* });
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
|
-
credentials?: RequestCredentials;
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Whether to show the dev console (error banners and toasts).
|
|
137
|
-
*
|
|
138
|
-
* @deprecated Use `enableInspector` to control the AG-UI inspector,
|
|
139
|
-
* which is what most users want. `showDevConsole` only controls
|
|
140
|
-
* error toasts/banners, not the inspector button.
|
|
141
|
-
* Defaults to `false` for production safety.
|
|
142
|
-
*/
|
|
143
|
-
showDevConsole?: boolean;
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* The name of the agent to use.
|
|
147
|
-
*/
|
|
148
|
-
agent?: string;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* The forwarded parameters to use for the task.
|
|
152
|
-
*/
|
|
153
|
-
forwardedParameters?: Pick<ForwardedParametersInput, "temperature">;
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* The auth config to use for the CopilotKit.
|
|
157
|
-
* @remarks
|
|
158
|
-
*
|
|
159
|
-
* This feature is only available when using CopilotKit's hosted cloud service. To use this feature, sign up at https://cloud.copilotkit.ai to get your publicApiKey. The feature allows restricting chat conversations to specific topics.
|
|
160
|
-
*/
|
|
161
|
-
authConfig_c?: {
|
|
162
|
-
SignInComponent: React.ComponentType<{
|
|
163
|
-
onSignInComplete: (authState: AuthState) => void;
|
|
164
|
-
}>;
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* The thread id to use for the CopilotKit.
|
|
169
|
-
*/
|
|
170
|
-
threadId?: string;
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Optional error handler for comprehensive debugging and observability.
|
|
174
|
-
*
|
|
175
|
-
* **Requires publicApiKey**: Error handling only works when publicApiKey is provided.
|
|
176
|
-
* This is a premium Copilot Cloud feature.
|
|
177
|
-
*
|
|
178
|
-
* @param errorEvent - Structured error event with rich debugging context
|
|
179
|
-
*
|
|
180
|
-
* @example
|
|
181
|
-
* ```typescript
|
|
182
|
-
* <CopilotKit
|
|
183
|
-
* publicApiKey="ck_pub_your_key"
|
|
184
|
-
* onError={(errorEvent) => {
|
|
185
|
-
* debugDashboard.capture(errorEvent);
|
|
186
|
-
* }}
|
|
187
|
-
* >
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
|
-
onError?: CopilotErrorHandler;
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Enable or disable the CopilotKit Inspector, letting you inspect AG-UI events,
|
|
194
|
-
* view agent messages, check agent state, and visualize agent context. Defaults
|
|
195
|
-
* to enabled.
|
|
196
|
-
*/
|
|
197
|
-
enableInspector?: boolean;
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Enable debug logging. On the server (`CopilotRuntime`), this enables
|
|
201
|
-
* structured Pino logging of the AG-UI event pipeline. On the client,
|
|
202
|
-
* this configuration is forwarded to the AG-UI transport layer
|
|
203
|
-
* (`transformChunks`) for transport-level debug output.
|
|
204
|
-
*
|
|
205
|
-
* Pass `true` for full output, or an object for granular control:
|
|
206
|
-
*
|
|
207
|
-
* ```tsx
|
|
208
|
-
* <CopilotKit debug={true} runtimeUrl="...">
|
|
209
|
-
* {children}
|
|
210
|
-
* </CopilotKit>
|
|
211
|
-
* ```
|
|
212
|
-
*/
|
|
213
|
-
debug?: DebugConfig;
|
|
214
|
-
}
|