@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,196 +0,0 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
createContext,
|
|
3
|
-
useCallback,
|
|
4
|
-
useContext,
|
|
5
|
-
ReactNode,
|
|
6
|
-
useEffect,
|
|
7
|
-
useMemo,
|
|
8
|
-
useRef,
|
|
9
|
-
useState,
|
|
10
|
-
} from "react";
|
|
11
|
-
import { DEFAULT_AGENT_ID, randomUUID } from "@copilotkit/shared";
|
|
12
|
-
import { useShallowStableRef } from "../lib/slots";
|
|
13
|
-
|
|
14
|
-
// Default labels
|
|
15
|
-
export const CopilotChatDefaultLabels = {
|
|
16
|
-
chatInputPlaceholder: "Type a message...",
|
|
17
|
-
chatInputToolbarStartTranscribeButtonLabel: "Transcribe",
|
|
18
|
-
chatInputToolbarCancelTranscribeButtonLabel: "Cancel",
|
|
19
|
-
chatInputToolbarFinishTranscribeButtonLabel: "Finish",
|
|
20
|
-
chatInputToolbarAddButtonLabel: "Add attachments",
|
|
21
|
-
chatInputToolbarToolsButtonLabel: "Tools",
|
|
22
|
-
assistantMessageToolbarCopyCodeLabel: "Copy",
|
|
23
|
-
assistantMessageToolbarCopyCodeCopiedLabel: "Copied",
|
|
24
|
-
assistantMessageToolbarCopyMessageLabel: "Copy",
|
|
25
|
-
assistantMessageToolbarThumbsUpLabel: "Good response",
|
|
26
|
-
assistantMessageToolbarThumbsDownLabel: "Bad response",
|
|
27
|
-
assistantMessageToolbarReadAloudLabel: "Read aloud",
|
|
28
|
-
assistantMessageToolbarRegenerateLabel: "Regenerate",
|
|
29
|
-
userMessageToolbarCopyMessageLabel: "Copy",
|
|
30
|
-
userMessageToolbarEditMessageLabel: "Edit",
|
|
31
|
-
chatDisclaimerText:
|
|
32
|
-
"AI can make mistakes. Please verify important information.",
|
|
33
|
-
chatToggleOpenLabel: "Open chat",
|
|
34
|
-
chatToggleCloseLabel: "Close chat",
|
|
35
|
-
modalHeaderTitle: "CopilotKit Chat",
|
|
36
|
-
welcomeMessageText: "How can I help you today?",
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export type CopilotChatLabels = typeof CopilotChatDefaultLabels;
|
|
40
|
-
|
|
41
|
-
// Define the full configuration interface
|
|
42
|
-
export interface CopilotChatConfigurationValue {
|
|
43
|
-
labels: CopilotChatLabels;
|
|
44
|
-
agentId: string;
|
|
45
|
-
threadId: string;
|
|
46
|
-
isModalOpen: boolean;
|
|
47
|
-
setModalOpen: (open: boolean) => void;
|
|
48
|
-
// True when the current threadId was chosen by the caller rather than
|
|
49
|
-
// silently minted inside the provider chain. Consumers that only make
|
|
50
|
-
// sense against a real backend thread (e.g. /connect, suppressing the
|
|
51
|
-
// welcome screen on switch) gate on this instead of `!!threadId`.
|
|
52
|
-
hasExplicitThreadId: boolean;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Create the configuration context
|
|
56
|
-
const CopilotChatConfiguration =
|
|
57
|
-
createContext<CopilotChatConfigurationValue | null>(null);
|
|
58
|
-
|
|
59
|
-
// Provider props interface
|
|
60
|
-
export interface CopilotChatConfigurationProviderProps {
|
|
61
|
-
children: ReactNode;
|
|
62
|
-
labels?: Partial<CopilotChatLabels>;
|
|
63
|
-
agentId?: string;
|
|
64
|
-
threadId?: string;
|
|
65
|
-
// Lets internal wrappers (e.g. the v1 CopilotKit bridge, which pipes a
|
|
66
|
-
// ThreadsProvider-minted UUID through as `threadId`) declare that the
|
|
67
|
-
// threadId they are supplying is NOT a caller choice. When omitted, the
|
|
68
|
-
// provider infers explicitness from whether the `threadId` prop itself
|
|
69
|
-
// was supplied.
|
|
70
|
-
hasExplicitThreadId?: boolean;
|
|
71
|
-
isModalDefaultOpen?: boolean;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Provider component
|
|
75
|
-
export const CopilotChatConfigurationProvider: React.FC<
|
|
76
|
-
CopilotChatConfigurationProviderProps
|
|
77
|
-
> = ({
|
|
78
|
-
children,
|
|
79
|
-
labels,
|
|
80
|
-
agentId,
|
|
81
|
-
threadId,
|
|
82
|
-
hasExplicitThreadId,
|
|
83
|
-
isModalDefaultOpen,
|
|
84
|
-
}) => {
|
|
85
|
-
const parentConfig = useContext(CopilotChatConfiguration);
|
|
86
|
-
|
|
87
|
-
// Stabilize labels references so that inline objects (new reference on every
|
|
88
|
-
// parent render) don't invalidate mergedLabels and churn the context value.
|
|
89
|
-
// parentConfig?.labels is already stabilized by the parent provider's own
|
|
90
|
-
// useShallowStableRef, so we only need to stabilize the local labels prop.
|
|
91
|
-
const stableLabels = useShallowStableRef(labels);
|
|
92
|
-
const mergedLabels: CopilotChatLabels = useMemo(
|
|
93
|
-
() => ({
|
|
94
|
-
...CopilotChatDefaultLabels,
|
|
95
|
-
...parentConfig?.labels,
|
|
96
|
-
...stableLabels,
|
|
97
|
-
}),
|
|
98
|
-
[stableLabels, parentConfig?.labels],
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
const resolvedAgentId = agentId ?? parentConfig?.agentId ?? DEFAULT_AGENT_ID;
|
|
102
|
-
|
|
103
|
-
const resolvedThreadId = useMemo(() => {
|
|
104
|
-
if (threadId) {
|
|
105
|
-
return threadId;
|
|
106
|
-
}
|
|
107
|
-
if (parentConfig?.threadId) {
|
|
108
|
-
return parentConfig.threadId;
|
|
109
|
-
}
|
|
110
|
-
return randomUUID();
|
|
111
|
-
}, [threadId, parentConfig?.threadId]);
|
|
112
|
-
|
|
113
|
-
// If a caller passed `hasExplicitThreadId`, trust it verbatim (lets the v1
|
|
114
|
-
// bridge mark an auto-minted UUID as non-explicit). Otherwise infer: a
|
|
115
|
-
// threadId supplied as a prop here is by definition a caller choice.
|
|
116
|
-
const ownHasExplicitThreadId =
|
|
117
|
-
hasExplicitThreadId !== undefined ? hasExplicitThreadId : !!threadId;
|
|
118
|
-
const resolvedHasExplicitThreadId =
|
|
119
|
-
ownHasExplicitThreadId || !!parentConfig?.hasExplicitThreadId;
|
|
120
|
-
|
|
121
|
-
const resolvedDefaultOpen = isModalDefaultOpen ?? true;
|
|
122
|
-
|
|
123
|
-
const [internalModalOpen, setInternalModalOpen] =
|
|
124
|
-
useState<boolean>(resolvedDefaultOpen);
|
|
125
|
-
|
|
126
|
-
const hasExplicitDefault = isModalDefaultOpen !== undefined;
|
|
127
|
-
|
|
128
|
-
// When this provider owns its modal state, wrap the setter so that changes
|
|
129
|
-
// propagate upward to any ancestor provider. This allows an outer
|
|
130
|
-
// CopilotChatConfigurationProvider (e.g. a user's layout-level provider) to
|
|
131
|
-
// observe open/close events that originate deep in the tree — fixing the
|
|
132
|
-
// "outer hook always returns true" regression (CPK-7152 Behavior B).
|
|
133
|
-
const setAndSync = useCallback(
|
|
134
|
-
(open: boolean) => {
|
|
135
|
-
setInternalModalOpen(open);
|
|
136
|
-
parentConfig?.setModalOpen(open);
|
|
137
|
-
},
|
|
138
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
139
|
-
[parentConfig?.setModalOpen],
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
// Sync parent → child: when an ancestor's modal state is changed externally
|
|
143
|
-
// (e.g. the user calls setModalOpen from an outer hook), reflect that change
|
|
144
|
-
// in our own state so the sidebar/popup responds accordingly.
|
|
145
|
-
// Skip the initial mount so that our own isModalDefaultOpen is respected and
|
|
146
|
-
// not immediately overwritten by the parent's current value.
|
|
147
|
-
const isMounted = useRef(false);
|
|
148
|
-
useEffect(() => {
|
|
149
|
-
if (!hasExplicitDefault) return;
|
|
150
|
-
if (!isMounted.current) {
|
|
151
|
-
isMounted.current = true;
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
if (parentConfig?.isModalOpen === undefined) return;
|
|
155
|
-
setInternalModalOpen(parentConfig.isModalOpen);
|
|
156
|
-
}, [parentConfig?.isModalOpen, hasExplicitDefault]);
|
|
157
|
-
|
|
158
|
-
const resolvedIsModalOpen = hasExplicitDefault
|
|
159
|
-
? internalModalOpen
|
|
160
|
-
: (parentConfig?.isModalOpen ?? internalModalOpen);
|
|
161
|
-
const resolvedSetModalOpen = hasExplicitDefault
|
|
162
|
-
? setAndSync
|
|
163
|
-
: (parentConfig?.setModalOpen ?? setInternalModalOpen);
|
|
164
|
-
|
|
165
|
-
const configurationValue: CopilotChatConfigurationValue = useMemo(
|
|
166
|
-
() => ({
|
|
167
|
-
labels: mergedLabels,
|
|
168
|
-
agentId: resolvedAgentId,
|
|
169
|
-
threadId: resolvedThreadId,
|
|
170
|
-
hasExplicitThreadId: resolvedHasExplicitThreadId,
|
|
171
|
-
isModalOpen: resolvedIsModalOpen,
|
|
172
|
-
setModalOpen: resolvedSetModalOpen,
|
|
173
|
-
}),
|
|
174
|
-
[
|
|
175
|
-
mergedLabels,
|
|
176
|
-
resolvedAgentId,
|
|
177
|
-
resolvedThreadId,
|
|
178
|
-
resolvedHasExplicitThreadId,
|
|
179
|
-
resolvedIsModalOpen,
|
|
180
|
-
resolvedSetModalOpen,
|
|
181
|
-
],
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
return (
|
|
185
|
-
<CopilotChatConfiguration.Provider value={configurationValue}>
|
|
186
|
-
{children}
|
|
187
|
-
</CopilotChatConfiguration.Provider>
|
|
188
|
-
);
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
// Hook to use the full configuration
|
|
192
|
-
export const useCopilotChatConfiguration =
|
|
193
|
-
(): CopilotChatConfigurationValue | null => {
|
|
194
|
-
const configuration = useContext(CopilotChatConfiguration);
|
|
195
|
-
return configuration;
|
|
196
|
-
};
|