@copilotkit/react-core 1.57.2 → 1.57.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- 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/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 -296
- 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,141 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { render, screen, act } from "@testing-library/react";
|
|
3
|
-
import { describe, it, expect } from "vitest";
|
|
4
|
-
import { ThreadsProvider, useThreads } from "../threads-context";
|
|
5
|
-
|
|
6
|
-
function ThreadIdViewer() {
|
|
7
|
-
const { threadId, isThreadIdExplicit } = useThreads();
|
|
8
|
-
return (
|
|
9
|
-
<>
|
|
10
|
-
<div data-testid="threadId">{threadId}</div>
|
|
11
|
-
<div data-testid="isExplicit">{String(isThreadIdExplicit)}</div>
|
|
12
|
-
</>
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Exposes setThreadId to the test so it can trigger the auto→explicit flip.
|
|
17
|
-
function ThreadIdController({ nextId }: { nextId: string }) {
|
|
18
|
-
const { setThreadId } = useThreads();
|
|
19
|
-
return (
|
|
20
|
-
<button data-testid="setThread" onClick={() => setThreadId(nextId)}>
|
|
21
|
-
set
|
|
22
|
-
</button>
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
describe("ThreadsProvider", () => {
|
|
27
|
-
it("updates threadId when explicit prop becomes available", () => {
|
|
28
|
-
const { rerender } = render(
|
|
29
|
-
<ThreadsProvider>
|
|
30
|
-
<ThreadIdViewer />
|
|
31
|
-
</ThreadsProvider>,
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
expect(screen.getByTestId("threadId").textContent).toBe("mock-thread-id");
|
|
35
|
-
|
|
36
|
-
rerender(
|
|
37
|
-
<ThreadsProvider threadId="customer-thread">
|
|
38
|
-
<ThreadIdViewer />
|
|
39
|
-
</ThreadsProvider>,
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
expect(screen.getByTestId("threadId").textContent).toBe("customer-thread");
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
describe("isThreadIdExplicit", () => {
|
|
46
|
-
it("is false on first mount when no threadId prop is supplied", () => {
|
|
47
|
-
// Auto-minted UUID — the backend has never seen it, so downstream
|
|
48
|
-
// consumers (e.g. /connect) must NOT treat this as a real thread.
|
|
49
|
-
render(
|
|
50
|
-
<ThreadsProvider>
|
|
51
|
-
<ThreadIdViewer />
|
|
52
|
-
</ThreadsProvider>,
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
expect(screen.getByTestId("threadId").textContent).toBe("mock-thread-id");
|
|
56
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("false");
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("is true when threadId prop is supplied on mount", () => {
|
|
60
|
-
render(
|
|
61
|
-
<ThreadsProvider threadId="customer-thread">
|
|
62
|
-
<ThreadIdViewer />
|
|
63
|
-
</ThreadsProvider>,
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
expect(screen.getByTestId("threadId").textContent).toBe(
|
|
67
|
-
"customer-thread",
|
|
68
|
-
);
|
|
69
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("true");
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it("flips from false to true after setThreadId() is called", () => {
|
|
73
|
-
render(
|
|
74
|
-
<ThreadsProvider>
|
|
75
|
-
<ThreadIdViewer />
|
|
76
|
-
<ThreadIdController nextId="user-picked-thread" />
|
|
77
|
-
</ThreadsProvider>,
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("false");
|
|
81
|
-
|
|
82
|
-
act(() => {
|
|
83
|
-
screen.getByTestId("setThread").click();
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
expect(screen.getByTestId("threadId").textContent).toBe(
|
|
87
|
-
"user-picked-thread",
|
|
88
|
-
);
|
|
89
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("true");
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it("reverts to false when an explicit prop is removed and setThreadId was never called", () => {
|
|
93
|
-
// Current contract: explicitness via the `threadId` prop is prop-derived,
|
|
94
|
-
// so removing the prop returns the provider to its auto-minted state.
|
|
95
|
-
// Pinning this guards against an accidental "sticky explicit" regression.
|
|
96
|
-
const { rerender } = render(
|
|
97
|
-
<ThreadsProvider threadId="customer-thread">
|
|
98
|
-
<ThreadIdViewer />
|
|
99
|
-
</ThreadsProvider>,
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("true");
|
|
103
|
-
|
|
104
|
-
rerender(
|
|
105
|
-
<ThreadsProvider>
|
|
106
|
-
<ThreadIdViewer />
|
|
107
|
-
</ThreadsProvider>,
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
expect(screen.getByTestId("threadId").textContent).toBe("mock-thread-id");
|
|
111
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("false");
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it("stays true after prop is removed if setThreadId was called while prop was present", () => {
|
|
115
|
-
// Once the caller has touched setThreadId, explicitness is sticky —
|
|
116
|
-
// the internal "user picked a thread" flag outlives any prop churn.
|
|
117
|
-
const { rerender } = render(
|
|
118
|
-
<ThreadsProvider threadId="customer-thread">
|
|
119
|
-
<ThreadIdViewer />
|
|
120
|
-
<ThreadIdController nextId="user-picked-thread" />
|
|
121
|
-
</ThreadsProvider>,
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
act(() => {
|
|
125
|
-
screen.getByTestId("setThread").click();
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
rerender(
|
|
129
|
-
<ThreadsProvider>
|
|
130
|
-
<ThreadIdViewer />
|
|
131
|
-
<ThreadIdController nextId="user-picked-thread" />
|
|
132
|
-
</ThreadsProvider>,
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
expect(screen.getByTestId("threadId").textContent).toBe(
|
|
136
|
-
"user-picked-thread",
|
|
137
|
-
);
|
|
138
|
-
expect(screen.getByTestId("isExplicit").textContent).toBe("true");
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
});
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
createContext,
|
|
3
|
-
useContext,
|
|
4
|
-
useCallback,
|
|
5
|
-
useState,
|
|
6
|
-
useRef,
|
|
7
|
-
ReactNode,
|
|
8
|
-
RefObject,
|
|
9
|
-
} from "react";
|
|
10
|
-
import { CoAgentStateRender } from "../types/coagent-action";
|
|
11
|
-
|
|
12
|
-
interface StateRenderClaim {
|
|
13
|
-
stateRenderId: string;
|
|
14
|
-
stateSnapshot?: any;
|
|
15
|
-
runId?: string;
|
|
16
|
-
messageIndex?: number;
|
|
17
|
-
locked?: boolean;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
type ClaimsRef = Record<string, StateRenderClaim>;
|
|
21
|
-
|
|
22
|
-
export interface CoAgentStateRendersContextValue {
|
|
23
|
-
coAgentStateRenders: Record<string, CoAgentStateRender<any>>;
|
|
24
|
-
setCoAgentStateRender: (
|
|
25
|
-
id: string,
|
|
26
|
-
stateRender: CoAgentStateRender<any>,
|
|
27
|
-
) => void;
|
|
28
|
-
removeCoAgentStateRender: (id: string) => void;
|
|
29
|
-
claimsRef: RefObject<ClaimsRef>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const CoAgentStateRendersContext = createContext<
|
|
33
|
-
CoAgentStateRendersContextValue | undefined
|
|
34
|
-
>(undefined);
|
|
35
|
-
|
|
36
|
-
export function CoAgentStateRendersProvider({
|
|
37
|
-
children,
|
|
38
|
-
}: {
|
|
39
|
-
children: ReactNode;
|
|
40
|
-
}) {
|
|
41
|
-
const [coAgentStateRenders, setCoAgentStateRenders] = useState<
|
|
42
|
-
Record<string, CoAgentStateRender<any>>
|
|
43
|
-
>({});
|
|
44
|
-
|
|
45
|
-
const setCoAgentStateRender = useCallback(
|
|
46
|
-
(id: string, stateRender: CoAgentStateRender<any>) => {
|
|
47
|
-
setCoAgentStateRenders((prevPoints) => ({
|
|
48
|
-
...prevPoints,
|
|
49
|
-
[id]: stateRender,
|
|
50
|
-
}));
|
|
51
|
-
},
|
|
52
|
-
[],
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
const removeCoAgentStateRender = useCallback((id: string) => {
|
|
56
|
-
setCoAgentStateRenders((prevPoints) => {
|
|
57
|
-
const newPoints = { ...prevPoints };
|
|
58
|
-
delete newPoints[id];
|
|
59
|
-
return newPoints;
|
|
60
|
-
});
|
|
61
|
-
}, []);
|
|
62
|
-
|
|
63
|
-
const claimsRef = useRef<ClaimsRef>({});
|
|
64
|
-
|
|
65
|
-
return (
|
|
66
|
-
<CoAgentStateRendersContext.Provider
|
|
67
|
-
value={{
|
|
68
|
-
coAgentStateRenders,
|
|
69
|
-
setCoAgentStateRender,
|
|
70
|
-
removeCoAgentStateRender,
|
|
71
|
-
claimsRef,
|
|
72
|
-
}}
|
|
73
|
-
>
|
|
74
|
-
{children}
|
|
75
|
-
</CoAgentStateRendersContext.Provider>
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function useCoAgentStateRenders() {
|
|
80
|
-
const context = useContext(CoAgentStateRendersContext);
|
|
81
|
-
if (!context) {
|
|
82
|
-
throw new Error(
|
|
83
|
-
"useCoAgentStateRenders must be used within CoAgentStateRendersProvider",
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
return context;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export { CoAgentStateRendersContext };
|
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CopilotCloudConfig,
|
|
3
|
-
FunctionCallHandler,
|
|
4
|
-
CopilotErrorHandler,
|
|
5
|
-
CopilotKitError,
|
|
6
|
-
} from "@copilotkit/shared";
|
|
7
|
-
import {
|
|
8
|
-
ActionRenderProps,
|
|
9
|
-
CatchAllActionRenderProps,
|
|
10
|
-
FrontendAction,
|
|
11
|
-
} from "../types/frontend-action";
|
|
12
|
-
import React from "react";
|
|
13
|
-
import { TreeNodeId, Tree } from "../hooks/use-tree";
|
|
14
|
-
import { DocumentPointer } from "../types";
|
|
15
|
-
import { CopilotChatSuggestionConfiguration } from "../types/chat-suggestion-configuration";
|
|
16
|
-
import {
|
|
17
|
-
CoAgentStateRender,
|
|
18
|
-
CoAgentStateRenderProps,
|
|
19
|
-
} from "../types/coagent-action";
|
|
20
|
-
import { CoagentState } from "../types/coagent-state";
|
|
21
|
-
import {
|
|
22
|
-
CopilotRuntimeClient,
|
|
23
|
-
ExtensionsInput,
|
|
24
|
-
ForwardedParametersInput,
|
|
25
|
-
} from "@copilotkit/runtime-client-gql";
|
|
26
|
-
import { Agent } from "@copilotkit/runtime-client-gql";
|
|
27
|
-
import {
|
|
28
|
-
LangGraphInterruptRender,
|
|
29
|
-
LangGraphInterruptActionSetter,
|
|
30
|
-
QueuedInterruptEvent,
|
|
31
|
-
} from "../types/interrupt-action";
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Interface for the configuration of the Copilot API.
|
|
35
|
-
*/
|
|
36
|
-
export interface CopilotApiConfig {
|
|
37
|
-
/**
|
|
38
|
-
* The public API key for Copilot Cloud.
|
|
39
|
-
*/
|
|
40
|
-
publicApiKey?: string;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* The configuration for Copilot Cloud.
|
|
44
|
-
*/
|
|
45
|
-
cloud?: CopilotCloudConfig;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The endpoint for the chat API.
|
|
49
|
-
*/
|
|
50
|
-
chatApiEndpoint: string;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* The endpoint for the Copilot transcribe audio service.
|
|
54
|
-
*/
|
|
55
|
-
transcribeAudioUrl?: string;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* The endpoint for the Copilot text to speech service.
|
|
59
|
-
*/
|
|
60
|
-
textToSpeechUrl?: string;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* additional headers to be sent with the request
|
|
64
|
-
* @default {}
|
|
65
|
-
* @example
|
|
66
|
-
* ```
|
|
67
|
-
* {
|
|
68
|
-
* 'Authorization': 'Bearer your_token_here'
|
|
69
|
-
* }
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
headers: Record<string, string>;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Custom properties to be sent with the request
|
|
76
|
-
* @default {}
|
|
77
|
-
* @example
|
|
78
|
-
* ```
|
|
79
|
-
* {
|
|
80
|
-
* 'user_id': 'user_id'
|
|
81
|
-
* }
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
properties?: Record<string, any>;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Indicates whether the user agent should send or receive cookies from the other domain
|
|
88
|
-
* in the case of cross-origin requests.
|
|
89
|
-
*/
|
|
90
|
-
credentials?: RequestCredentials;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Optional configuration for connecting to Model Context Protocol (MCP) servers.
|
|
94
|
-
* This is typically derived from the CopilotKitProps and used internally.
|
|
95
|
-
* @experimental
|
|
96
|
-
*/
|
|
97
|
-
mcpServers?: Array<{ endpoint: string; apiKey?: string }>;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export type InChatRenderFunction<
|
|
101
|
-
TProps = ActionRenderProps<any> | CatchAllActionRenderProps<any>,
|
|
102
|
-
> = (props: TProps) => string | React.JSX.Element;
|
|
103
|
-
export type CoagentInChatRenderFunction = (
|
|
104
|
-
props: CoAgentStateRenderProps<any>,
|
|
105
|
-
) => string | React.JSX.Element | undefined | null;
|
|
106
|
-
|
|
107
|
-
export interface ChatComponentsCache {
|
|
108
|
-
actions: Record<string, InChatRenderFunction | string>;
|
|
109
|
-
coAgentStateRenders: Record<string, CoagentInChatRenderFunction | string>;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export interface AgentSession {
|
|
113
|
-
agentName: string;
|
|
114
|
-
threadId?: string;
|
|
115
|
-
nodeName?: string;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export interface AuthState {
|
|
119
|
-
status: "authenticated" | "unauthenticated";
|
|
120
|
-
authHeaders: Record<string, string>;
|
|
121
|
-
userId?: string;
|
|
122
|
-
metadata?: Record<string, any>;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export type ActionName = string;
|
|
126
|
-
export type ContextTree = Tree;
|
|
127
|
-
|
|
128
|
-
export interface CopilotContextParams {
|
|
129
|
-
// function-calling
|
|
130
|
-
actions: Record<string, FrontendAction<any>>;
|
|
131
|
-
setAction: (id: string, action: FrontendAction<any>) => void;
|
|
132
|
-
removeAction: (id: string) => void;
|
|
133
|
-
|
|
134
|
-
// registered actions for component-based rendering
|
|
135
|
-
setRegisteredActions: (actionConfig: any) => string;
|
|
136
|
-
removeRegisteredAction: (actionKey: string) => void;
|
|
137
|
-
|
|
138
|
-
chatComponentsCache: React.RefObject<ChatComponentsCache>;
|
|
139
|
-
|
|
140
|
-
getFunctionCallHandler: (
|
|
141
|
-
customEntryPoints?: Record<string, FrontendAction<any>>,
|
|
142
|
-
) => FunctionCallHandler;
|
|
143
|
-
|
|
144
|
-
// text context
|
|
145
|
-
addContext: (
|
|
146
|
-
context: string,
|
|
147
|
-
parentId?: string,
|
|
148
|
-
categories?: string[],
|
|
149
|
-
) => TreeNodeId;
|
|
150
|
-
removeContext: (id: TreeNodeId) => void;
|
|
151
|
-
getAllContext: () => Tree;
|
|
152
|
-
getContextString: (
|
|
153
|
-
documents: DocumentPointer[],
|
|
154
|
-
categories: string[],
|
|
155
|
-
) => string;
|
|
156
|
-
|
|
157
|
-
// document context
|
|
158
|
-
addDocumentContext: (
|
|
159
|
-
documentPointer: DocumentPointer,
|
|
160
|
-
categories?: string[],
|
|
161
|
-
) => TreeNodeId;
|
|
162
|
-
removeDocumentContext: (documentId: string) => void;
|
|
163
|
-
getDocumentsContext: (categories: string[]) => DocumentPointer[];
|
|
164
|
-
|
|
165
|
-
isLoading: boolean;
|
|
166
|
-
setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
|
167
|
-
|
|
168
|
-
chatSuggestionConfiguration: {
|
|
169
|
-
[key: string]: CopilotChatSuggestionConfiguration;
|
|
170
|
-
};
|
|
171
|
-
addChatSuggestionConfiguration: (
|
|
172
|
-
id: string,
|
|
173
|
-
suggestion: CopilotChatSuggestionConfiguration,
|
|
174
|
-
) => void;
|
|
175
|
-
removeChatSuggestionConfiguration: (id: string) => void;
|
|
176
|
-
|
|
177
|
-
chatInstructions: string;
|
|
178
|
-
setChatInstructions: React.Dispatch<React.SetStateAction<string>>;
|
|
179
|
-
|
|
180
|
-
additionalInstructions?: string[];
|
|
181
|
-
setAdditionalInstructions: React.Dispatch<React.SetStateAction<string[]>>;
|
|
182
|
-
|
|
183
|
-
// api endpoints
|
|
184
|
-
copilotApiConfig: CopilotApiConfig;
|
|
185
|
-
|
|
186
|
-
showDevConsole: boolean;
|
|
187
|
-
|
|
188
|
-
// agents
|
|
189
|
-
coagentStates: Record<string, CoagentState>;
|
|
190
|
-
setCoagentStates: React.Dispatch<
|
|
191
|
-
React.SetStateAction<Record<string, CoagentState>>
|
|
192
|
-
>;
|
|
193
|
-
coagentStatesRef: React.RefObject<Record<string, CoagentState>>;
|
|
194
|
-
setCoagentStatesWithRef: (
|
|
195
|
-
value:
|
|
196
|
-
| Record<string, CoagentState>
|
|
197
|
-
| ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),
|
|
198
|
-
) => void;
|
|
199
|
-
|
|
200
|
-
agentSession: AgentSession | null;
|
|
201
|
-
setAgentSession: React.Dispatch<React.SetStateAction<AgentSession | null>>;
|
|
202
|
-
|
|
203
|
-
agentLock: string | null;
|
|
204
|
-
|
|
205
|
-
threadId: string;
|
|
206
|
-
setThreadId: React.Dispatch<React.SetStateAction<string>>;
|
|
207
|
-
|
|
208
|
-
runId: string | null;
|
|
209
|
-
setRunId: React.Dispatch<React.SetStateAction<string | null>>;
|
|
210
|
-
|
|
211
|
-
// The chat abort controller can be used to stop generation globally,
|
|
212
|
-
// i.e. when using `stop()` from `useChat`
|
|
213
|
-
chatAbortControllerRef: React.MutableRefObject<AbortController | null>;
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* The forwarded parameters to use for the task.
|
|
217
|
-
*/
|
|
218
|
-
forwardedParameters?: Partial<Pick<ForwardedParametersInput, "temperature">>;
|
|
219
|
-
availableAgents: Agent[];
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* The auth states for the CopilotKit.
|
|
223
|
-
*/
|
|
224
|
-
authStates_c?: Record<ActionName, AuthState>;
|
|
225
|
-
setAuthStates_c?: React.Dispatch<
|
|
226
|
-
React.SetStateAction<Record<ActionName, AuthState>>
|
|
227
|
-
>;
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* The auth config for the CopilotKit.
|
|
231
|
-
*/
|
|
232
|
-
authConfig_c?: {
|
|
233
|
-
SignInComponent: React.ComponentType<{
|
|
234
|
-
onSignInComplete: (authState: AuthState) => void;
|
|
235
|
-
}>;
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
extensions: ExtensionsInput;
|
|
239
|
-
setExtensions: React.Dispatch<React.SetStateAction<ExtensionsInput>>;
|
|
240
|
-
interruptActions: Record<string, LangGraphInterruptRender>;
|
|
241
|
-
setInterruptAction: LangGraphInterruptActionSetter;
|
|
242
|
-
removeInterruptAction: (actionId: string) => void;
|
|
243
|
-
interruptEventQueue: Record<string, QueuedInterruptEvent[]>;
|
|
244
|
-
addInterruptEvent: (queuedEvent: QueuedInterruptEvent) => void;
|
|
245
|
-
resolveInterruptEvent: (
|
|
246
|
-
threadId: string,
|
|
247
|
-
eventId: string,
|
|
248
|
-
response: string,
|
|
249
|
-
) => void;
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Optional trace handler for comprehensive debugging and observability.
|
|
253
|
-
*/
|
|
254
|
-
onError: CopilotErrorHandler;
|
|
255
|
-
|
|
256
|
-
// banner error state
|
|
257
|
-
bannerError: CopilotKitError | null;
|
|
258
|
-
setBannerError: React.Dispatch<React.SetStateAction<CopilotKitError | null>>;
|
|
259
|
-
// Internal error handlers
|
|
260
|
-
// These are used to handle errors that occur during the execution of the chat.
|
|
261
|
-
// They are not intended for use by the developer. A component can register itself an error listener to be activated somewhere else as needed
|
|
262
|
-
internalErrorHandlers: Record<string, CopilotErrorHandler>;
|
|
263
|
-
setInternalErrorHandler: (
|
|
264
|
-
handler: Record<string, CopilotErrorHandler>,
|
|
265
|
-
) => void;
|
|
266
|
-
removeInternalErrorHandler: (id: string) => void;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
const emptyCopilotContext: CopilotContextParams = {
|
|
270
|
-
actions: {},
|
|
271
|
-
setAction: () => {},
|
|
272
|
-
removeAction: () => {},
|
|
273
|
-
|
|
274
|
-
setRegisteredActions: () => "",
|
|
275
|
-
removeRegisteredAction: () => {},
|
|
276
|
-
|
|
277
|
-
chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },
|
|
278
|
-
getContextString: (documents: DocumentPointer[], categories: string[]) =>
|
|
279
|
-
returnAndThrowInDebug(""),
|
|
280
|
-
addContext: () => "",
|
|
281
|
-
removeContext: () => {},
|
|
282
|
-
getAllContext: () => [],
|
|
283
|
-
|
|
284
|
-
getFunctionCallHandler: () => returnAndThrowInDebug(async () => {}),
|
|
285
|
-
|
|
286
|
-
isLoading: false,
|
|
287
|
-
setIsLoading: () => returnAndThrowInDebug(false),
|
|
288
|
-
|
|
289
|
-
chatInstructions: "",
|
|
290
|
-
setChatInstructions: () => returnAndThrowInDebug(""),
|
|
291
|
-
|
|
292
|
-
additionalInstructions: [],
|
|
293
|
-
setAdditionalInstructions: () => returnAndThrowInDebug([]),
|
|
294
|
-
|
|
295
|
-
getDocumentsContext: (categories: string[]) => returnAndThrowInDebug([]),
|
|
296
|
-
addDocumentContext: () => returnAndThrowInDebug(""),
|
|
297
|
-
removeDocumentContext: () => {},
|
|
298
|
-
|
|
299
|
-
copilotApiConfig: new (class implements CopilotApiConfig {
|
|
300
|
-
get chatApiEndpoint(): string {
|
|
301
|
-
throw new Error(
|
|
302
|
-
"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!",
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
get headers(): Record<string, string> {
|
|
307
|
-
return {};
|
|
308
|
-
}
|
|
309
|
-
get body(): Record<string, any> {
|
|
310
|
-
return {};
|
|
311
|
-
}
|
|
312
|
-
})(),
|
|
313
|
-
|
|
314
|
-
chatSuggestionConfiguration: {},
|
|
315
|
-
addChatSuggestionConfiguration: () => {},
|
|
316
|
-
removeChatSuggestionConfiguration: () => {},
|
|
317
|
-
showDevConsole: false,
|
|
318
|
-
coagentStates: {},
|
|
319
|
-
setCoagentStates: () => {},
|
|
320
|
-
coagentStatesRef: { current: {} },
|
|
321
|
-
setCoagentStatesWithRef: () => {},
|
|
322
|
-
agentSession: null,
|
|
323
|
-
setAgentSession: () => {},
|
|
324
|
-
forwardedParameters: {},
|
|
325
|
-
agentLock: null,
|
|
326
|
-
threadId: "",
|
|
327
|
-
setThreadId: () => {},
|
|
328
|
-
runId: null,
|
|
329
|
-
setRunId: () => {},
|
|
330
|
-
chatAbortControllerRef: { current: null },
|
|
331
|
-
availableAgents: [],
|
|
332
|
-
extensions: {},
|
|
333
|
-
setExtensions: () => {},
|
|
334
|
-
interruptActions: {},
|
|
335
|
-
setInterruptAction: () => {},
|
|
336
|
-
removeInterruptAction: () => {},
|
|
337
|
-
interruptEventQueue: {},
|
|
338
|
-
addInterruptEvent: () => {},
|
|
339
|
-
resolveInterruptEvent: () => {},
|
|
340
|
-
onError: () => {},
|
|
341
|
-
bannerError: null,
|
|
342
|
-
setBannerError: () => {},
|
|
343
|
-
internalErrorHandlers: {},
|
|
344
|
-
setInternalErrorHandler: () => {},
|
|
345
|
-
removeInternalErrorHandler: () => {},
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
export const CopilotContext =
|
|
349
|
-
React.createContext<CopilotContextParams>(emptyCopilotContext);
|
|
350
|
-
|
|
351
|
-
export function useCopilotContext(): CopilotContextParams {
|
|
352
|
-
const context = React.useContext(CopilotContext);
|
|
353
|
-
if (context === emptyCopilotContext) {
|
|
354
|
-
throw new Error(
|
|
355
|
-
"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!",
|
|
356
|
-
);
|
|
357
|
-
}
|
|
358
|
-
return context;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
function returnAndThrowInDebug<T>(_value: T): T {
|
|
362
|
-
throw new Error(
|
|
363
|
-
"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!",
|
|
364
|
-
);
|
|
365
|
-
}
|
|
@@ -1,35 +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 { Message } from "@copilotkit/runtime-client-gql";
|
|
6
|
-
import React from "react";
|
|
7
|
-
import { Suggestion } from "@copilotkit/core";
|
|
8
|
-
|
|
9
|
-
export interface CopilotMessagesContextParams {
|
|
10
|
-
messages: Message[];
|
|
11
|
-
setMessages: React.Dispatch<React.SetStateAction<Message[]>>; // suggestions state
|
|
12
|
-
suggestions: Suggestion[];
|
|
13
|
-
setSuggestions: React.Dispatch<React.SetStateAction<Suggestion[]>>;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const emptyCopilotContext: CopilotMessagesContextParams = {
|
|
17
|
-
messages: [],
|
|
18
|
-
setMessages: () => [],
|
|
19
|
-
// suggestions state
|
|
20
|
-
suggestions: [],
|
|
21
|
-
setSuggestions: () => [],
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const CopilotMessagesContext =
|
|
25
|
-
React.createContext<CopilotMessagesContextParams>(emptyCopilotContext);
|
|
26
|
-
|
|
27
|
-
export function useCopilotMessagesContext(): CopilotMessagesContextParams {
|
|
28
|
-
const context = React.useContext(CopilotMessagesContext);
|
|
29
|
-
if (context === emptyCopilotContext) {
|
|
30
|
-
throw new Error(
|
|
31
|
-
"A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`",
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
return context;
|
|
35
|
-
}
|
package/src/context/index.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export { CopilotContext, useCopilotContext } from "./copilot-context";
|
|
2
|
-
export {
|
|
3
|
-
CopilotMessagesContext,
|
|
4
|
-
useCopilotMessagesContext,
|
|
5
|
-
} from "./copilot-messages-context";
|
|
6
|
-
export {
|
|
7
|
-
CoAgentStateRendersContext,
|
|
8
|
-
CoAgentStateRendersProvider,
|
|
9
|
-
useCoAgentStateRenders,
|
|
10
|
-
} from "./coagent-state-renders-context";
|
|
11
|
-
export { ThreadsContext, ThreadsProvider, useThreads } from "./threads-context";
|
|
12
|
-
export type {
|
|
13
|
-
CopilotContextParams,
|
|
14
|
-
CoagentInChatRenderFunction,
|
|
15
|
-
CopilotApiConfig,
|
|
16
|
-
} from "./copilot-context";
|
|
17
|
-
export type { CopilotMessagesContextParams } from "./copilot-messages-context";
|
|
18
|
-
export type { CoAgentStateRendersContextValue } from "./coagent-state-renders-context";
|
|
19
|
-
export type {
|
|
20
|
-
ThreadsContextValue,
|
|
21
|
-
ThreadsProviderProps,
|
|
22
|
-
} from "./threads-context";
|