@copilotkit/react-core 1.55.2 → 1.55.3-canary.1776243725
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/dist/{copilotkit-Cd-NrDyp.mjs → copilotkit-Bm4ox8G0.mjs} +89 -42
- package/dist/copilotkit-Bm4ox8G0.mjs.map +1 -0
- package/dist/{copilotkit-Dgdpbqjt.cjs → copilotkit-BoOnQHlE.cjs} +93 -40
- package/dist/copilotkit-BoOnQHlE.cjs.map +1 -0
- package/dist/{copilotkit-dwDWYpya.d.cts → copilotkit-EfopO2gn.d.cts} +27 -9
- package/dist/copilotkit-EfopO2gn.d.cts.map +1 -0
- package/dist/{copilotkit-BuhSUZHb.d.mts → copilotkit-opur-20s.d.mts} +27 -9
- package/dist/copilotkit-opur-20s.d.mts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.umd.js +36 -15
- package/dist/index.umd.js.map +1 -1
- package/dist/v2/index.cjs +2 -1
- package/dist/v2/index.d.cts +2 -2
- package/dist/v2/index.d.mts +2 -2
- package/dist/v2/index.mjs +2 -2
- package/dist/v2/index.umd.js +87 -40
- package/dist/v2/index.umd.js.map +1 -1
- package/package.json +6 -6
- package/src/components/copilot-provider/__tests__/error-visibility-prod.test.tsx +70 -0
- package/src/components/copilot-provider/copilot-messages.tsx +39 -24
- package/src/components/copilot-provider/copilotkit-props.tsx +9 -5
- package/src/components/copilot-provider/copilotkit.tsx +4 -1
- package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +18 -15
- package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +17 -4
- package/src/v2/components/chat/CopilotChatUserMessage.tsx +13 -10
- package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +131 -5
- package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +1 -1
- package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.tsx +241 -0
- package/src/v2/hooks/__tests__/use-agent-throttle.test.tsx +10 -10
- package/src/v2/hooks/__tests__/use-capabilities.test.tsx +76 -0
- package/src/v2/hooks/index.ts +1 -0
- package/src/v2/hooks/use-agent.tsx +23 -4
- package/src/v2/hooks/use-capabilities.tsx +25 -0
- package/src/v2/providers/CopilotKitProvider.tsx +6 -2
- package/dist/copilotkit-BuhSUZHb.d.mts.map +0 -1
- package/dist/copilotkit-Cd-NrDyp.mjs.map +0 -1
- package/dist/copilotkit-Dgdpbqjt.cjs.map +0 -1
- package/dist/copilotkit-dwDWYpya.d.cts.map +0 -1
|
@@ -4,7 +4,7 @@ import { CopilotKitCore, CopilotKitCoreRuntimeConnectionStatus, ProxiedCopilotRu
|
|
|
4
4
|
import { HttpAgent } from "@ag-ui/client";
|
|
5
5
|
import { extendTailwindMerge, twMerge } from "tailwind-merge";
|
|
6
6
|
import { ArrowUp, Check, ChevronDown, ChevronLeft, ChevronRight, ChevronRightIcon, Copy, Edit, Loader2, MessageCircle, Mic, Play, Plus, RefreshCw, Square, ThumbsDown, ThumbsUp, Upload, Volume2, X } from "lucide-react";
|
|
7
|
-
import { A2UI_DEFAULT_DESIGN_GUIDELINES, A2UI_DEFAULT_GENERATION_GUIDELINES, COPILOT_CLOUD_API_URL, COPILOT_CLOUD_CHAT_URL, COPILOT_CLOUD_PUBLIC_API_KEY_HEADER, ConfigurationError, CopilotKitAgentDiscoveryError, CopilotKitApiDiscoveryError, CopilotKitError, CopilotKitErrorCode, CopilotKitLowLevelError, CopilotKitRemoteEndpointDiscoveryError, DEFAULT_AGENT_ID, ErrorVisibility, MissingPublicApiKeyError, Severity, TranscriptionErrorCode, TranscriptionErrorCode as TranscriptionErrorCode$1, createLicenseContextValue, dataToUUID, exceedsMaxSize, formatFileSize, generateVideoThumbnail, getDocumentIcon, getModalityFromMimeType, getSourceUrl, matchesAcceptFilter, parseJson, partialJSONParse, randomId, randomUUID, readFileAsBase64, schemaToJsonSchema } from "@copilotkit/shared";
|
|
7
|
+
import { A2UI_DEFAULT_DESIGN_GUIDELINES, A2UI_DEFAULT_GENERATION_GUIDELINES, COPILOT_CLOUD_API_URL, COPILOT_CLOUD_CHAT_URL, COPILOT_CLOUD_PUBLIC_API_KEY_HEADER, ConfigurationError, CopilotKitAgentDiscoveryError, CopilotKitApiDiscoveryError, CopilotKitError, CopilotKitErrorCode, CopilotKitLowLevelError, CopilotKitRemoteEndpointDiscoveryError, DEFAULT_AGENT_ID, ErrorVisibility, MissingPublicApiKeyError, Severity, TranscriptionErrorCode, TranscriptionErrorCode as TranscriptionErrorCode$1, copyToClipboard, createLicenseContextValue, dataToUUID, exceedsMaxSize, formatFileSize, generateVideoThumbnail, getDocumentIcon, getModalityFromMimeType, getSourceUrl, matchesAcceptFilter, parseJson, partialJSONParse, randomId, randomUUID, readFileAsBase64, schemaToJsonSchema } from "@copilotkit/shared";
|
|
8
8
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import { Slot } from "@radix-ui/react-slot";
|
|
10
10
|
import { cva } from "class-variance-authority";
|
|
@@ -3042,7 +3042,7 @@ function useStableArrayProp(prop, warningMessage, isMeaningfulChange) {
|
|
|
3042
3042
|
}, [value, warningMessage]);
|
|
3043
3043
|
return value;
|
|
3044
3044
|
}
|
|
3045
|
-
const CopilotKitProvider = ({ children, runtimeUrl, headers = {}, credentials, publicApiKey, publicLicenseKey, licenseToken, properties = {}, agents__unsafe_dev_only: agents = {}, selfManagedAgents = {}, renderToolCalls, renderActivityMessages, renderCustomMessages, frontendTools, humanInTheLoop, openGenerativeUI, showDevConsole = false, useSingleEndpoint, onError, a2ui, defaultThrottleMs, inspectorDefaultAnchor }) => {
|
|
3045
|
+
const CopilotKitProvider = ({ children, runtimeUrl, headers: headersProp = {}, credentials, publicApiKey, publicLicenseKey, licenseToken, properties = {}, agents__unsafe_dev_only: agents = {}, selfManagedAgents = {}, renderToolCalls, renderActivityMessages, renderCustomMessages, frontendTools, humanInTheLoop, openGenerativeUI, showDevConsole = false, useSingleEndpoint, onError, a2ui, defaultThrottleMs, inspectorDefaultAnchor }) => {
|
|
3046
3046
|
const [shouldRenderInspector, setShouldRenderInspector] = useState(false);
|
|
3047
3047
|
const [runtimeA2UIEnabled, setRuntimeA2UIEnabled] = useState(false);
|
|
3048
3048
|
const [runtimeOpenGenUIEnabled, setRuntimeOpenGenUIEnabled] = useState(false);
|
|
@@ -3097,6 +3097,7 @@ const CopilotKitProvider = ({ children, runtimeUrl, headers = {}, credentials, p
|
|
|
3097
3097
|
...selfManagedAgents
|
|
3098
3098
|
}), [agents, selfManagedAgents]);
|
|
3099
3099
|
const hasLocalAgents = mergedAgents && Object.keys(mergedAgents).length > 0;
|
|
3100
|
+
const headers = typeof headersProp === "function" ? headersProp() : headersProp;
|
|
3100
3101
|
const mergedHeaders = useMemo(() => {
|
|
3101
3102
|
if (!resolvedPublicKey) return headers;
|
|
3102
3103
|
if (headers[HEADER_NAME]) return headers;
|
|
@@ -3589,6 +3590,17 @@ function useAgent({ agentId, threadId, updates, throttleMs } = {}) {
|
|
|
3589
3590
|
const handlers = {};
|
|
3590
3591
|
let timerId = null;
|
|
3591
3592
|
let active = true;
|
|
3593
|
+
let batchScheduled = false;
|
|
3594
|
+
const batchedForceUpdate = () => {
|
|
3595
|
+
if (!active) return;
|
|
3596
|
+
if (!batchScheduled) {
|
|
3597
|
+
batchScheduled = true;
|
|
3598
|
+
queueMicrotask(() => {
|
|
3599
|
+
batchScheduled = false;
|
|
3600
|
+
if (active) forceUpdate();
|
|
3601
|
+
});
|
|
3602
|
+
}
|
|
3603
|
+
};
|
|
3592
3604
|
if (updateFlags.includes(UseAgentUpdate.OnMessagesChanged)) {
|
|
3593
3605
|
const ms = effectiveThrottleMs;
|
|
3594
3606
|
if (ms > 0) {
|
|
@@ -3613,11 +3625,11 @@ function useAgent({ agentId, threadId, updates, throttleMs } = {}) {
|
|
|
3613
3625
|
handlers.onMessagesChanged = throttledNotify;
|
|
3614
3626
|
} else handlers.onMessagesChanged = forceUpdate;
|
|
3615
3627
|
}
|
|
3616
|
-
if (updateFlags.includes(UseAgentUpdate.OnStateChanged)) handlers.onStateChanged =
|
|
3628
|
+
if (updateFlags.includes(UseAgentUpdate.OnStateChanged)) handlers.onStateChanged = batchedForceUpdate;
|
|
3617
3629
|
if (updateFlags.includes(UseAgentUpdate.OnRunStatusChanged)) {
|
|
3618
|
-
handlers.onRunInitialized =
|
|
3619
|
-
handlers.onRunFinalized =
|
|
3620
|
-
handlers.onRunFailed =
|
|
3630
|
+
handlers.onRunInitialized = batchedForceUpdate;
|
|
3631
|
+
handlers.onRunFinalized = batchedForceUpdate;
|
|
3632
|
+
handlers.onRunFailed = batchedForceUpdate;
|
|
3621
3633
|
}
|
|
3622
3634
|
const subscription = agent.subscribe(handlers);
|
|
3623
3635
|
return () => {
|
|
@@ -4154,6 +4166,24 @@ function useHumanInTheLoop(tool, deps) {
|
|
|
4154
4166
|
]);
|
|
4155
4167
|
}
|
|
4156
4168
|
|
|
4169
|
+
//#endregion
|
|
4170
|
+
//#region src/v2/hooks/use-capabilities.tsx
|
|
4171
|
+
/**
|
|
4172
|
+
* Returns the capabilities declared by the given agent (or the default agent).
|
|
4173
|
+
* Capabilities are populated from the runtime `/info` response at connection
|
|
4174
|
+
* time. The hook reads them synchronously from the agent instance — there is
|
|
4175
|
+
* no separate loading state, but the value will be `undefined` until the
|
|
4176
|
+
* runtime handshake completes.
|
|
4177
|
+
*
|
|
4178
|
+
* @param agentId - Optional agent ID. If omitted, uses the default agent.
|
|
4179
|
+
* @returns The agent's capabilities, or `undefined` if the agent doesn't
|
|
4180
|
+
* declare capabilities.
|
|
4181
|
+
*/
|
|
4182
|
+
function useCapabilities(agentId) {
|
|
4183
|
+
const { agent } = useAgent({ agentId });
|
|
4184
|
+
if (agent && "capabilities" in agent) return agent.capabilities;
|
|
4185
|
+
}
|
|
4186
|
+
|
|
4157
4187
|
//#endregion
|
|
4158
4188
|
//#region src/v2/hooks/use-suggestions.tsx
|
|
4159
4189
|
function useSuggestions({ agentId } = {}) {
|
|
@@ -4805,11 +4835,8 @@ function CopilotChatAssistantMessage({ message, messages, isRunning, onThumbsUp,
|
|
|
4805
4835
|
useKatexStyles();
|
|
4806
4836
|
const boundMarkdownRenderer = renderSlot(markdownRenderer, CopilotChatAssistantMessage.MarkdownRenderer, { content: message.content || "" });
|
|
4807
4837
|
const boundCopyButton = renderSlot(copyButton, CopilotChatAssistantMessage.CopyButton, { onClick: async () => {
|
|
4808
|
-
if (message.content)
|
|
4809
|
-
|
|
4810
|
-
} catch (err) {
|
|
4811
|
-
console.error("Failed to copy message:", err);
|
|
4812
|
-
}
|
|
4838
|
+
if (message.content) return await copyToClipboard(message.content);
|
|
4839
|
+
return false;
|
|
4813
4840
|
} });
|
|
4814
4841
|
const boundThumbsUpButton = renderSlot(thumbsUpButton, CopilotChatAssistantMessage.ThumbsUpButton, { onClick: onThumbsUp });
|
|
4815
4842
|
const boundThumbsDownButton = renderSlot(thumbsDownButton, CopilotChatAssistantMessage.ThumbsDownButton, { onClick: onThumbsDown });
|
|
@@ -4907,14 +4934,17 @@ function CopilotChatAssistantMessage({ message, messages, isRunning, onThumbsUp,
|
|
|
4907
4934
|
if (timerRef.current !== null) clearTimeout(timerRef.current);
|
|
4908
4935
|
};
|
|
4909
4936
|
}, []);
|
|
4910
|
-
const handleClick = (event) => {
|
|
4911
|
-
|
|
4912
|
-
if (
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4937
|
+
const handleClick = async (event) => {
|
|
4938
|
+
let success = false;
|
|
4939
|
+
if (onClick) success = await Promise.resolve(onClick(event)) === true;
|
|
4940
|
+
if (success) {
|
|
4941
|
+
setCopied(true);
|
|
4942
|
+
if (timerRef.current !== null) clearTimeout(timerRef.current);
|
|
4943
|
+
timerRef.current = setTimeout(() => {
|
|
4944
|
+
timerRef.current = null;
|
|
4945
|
+
setCopied(false);
|
|
4946
|
+
}, 2e3);
|
|
4947
|
+
}
|
|
4918
4948
|
};
|
|
4919
4949
|
return /* @__PURE__ */ jsx(ToolbarButton, {
|
|
4920
4950
|
"data-testid": "copilot-copy-button",
|
|
@@ -5067,11 +5097,8 @@ function CopilotChatUserMessage({ message, onEditMessage, branchIndex, numberOfB
|
|
|
5067
5097
|
const mediaParts = useMemo(() => getMediaParts(message.content), [message.content]);
|
|
5068
5098
|
const BoundMessageRenderer = renderSlot(messageRenderer, CopilotChatUserMessage.MessageRenderer, { content: flattenedContent });
|
|
5069
5099
|
const BoundCopyButton = renderSlot(copyButton, CopilotChatUserMessage.CopyButton, { onClick: async () => {
|
|
5070
|
-
if (flattenedContent)
|
|
5071
|
-
|
|
5072
|
-
} catch (err) {
|
|
5073
|
-
console.error("Failed to copy message:", err);
|
|
5074
|
-
}
|
|
5100
|
+
if (flattenedContent) return await copyToClipboard(flattenedContent);
|
|
5101
|
+
return false;
|
|
5075
5102
|
} });
|
|
5076
5103
|
const BoundEditButton = renderSlot(editButton, CopilotChatUserMessage.EditButton, { onClick: () => onEditMessage?.({ message }) });
|
|
5077
5104
|
const BoundBranchNavigation = renderSlot(branchNavigation, CopilotChatUserMessage.BranchNavigation, {
|
|
@@ -5159,10 +5186,13 @@ function CopilotChatUserMessage({ message, onEditMessage, branchIndex, numberOfB
|
|
|
5159
5186
|
_CopilotChatUserMessage.CopyButton = ({ className, title, onClick, ...props }) => {
|
|
5160
5187
|
const labels = useCopilotChatConfiguration()?.labels ?? CopilotChatDefaultLabels;
|
|
5161
5188
|
const [copied, setCopied] = useState(false);
|
|
5162
|
-
const handleClick = (event) => {
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
if (
|
|
5189
|
+
const handleClick = async (event) => {
|
|
5190
|
+
let success = false;
|
|
5191
|
+
if (onClick) success = await Promise.resolve(onClick(event)) === true;
|
|
5192
|
+
if (success) {
|
|
5193
|
+
setCopied(true);
|
|
5194
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
5195
|
+
}
|
|
5166
5196
|
};
|
|
5167
5197
|
return /* @__PURE__ */ jsx(ToolbarButton, {
|
|
5168
5198
|
"data-testid": "copilot-user-copy-button",
|
|
@@ -5269,17 +5299,24 @@ function CopilotChatReasoningMessage({ message, messages, isRunning, header, con
|
|
|
5269
5299
|
return () => clearInterval(timer);
|
|
5270
5300
|
}, [isStreaming]);
|
|
5271
5301
|
const [isOpen, setIsOpen] = useState(isStreaming);
|
|
5302
|
+
const userToggledRef = useRef(false);
|
|
5272
5303
|
useEffect(() => {
|
|
5273
|
-
if (isStreaming)
|
|
5274
|
-
|
|
5304
|
+
if (isStreaming) {
|
|
5305
|
+
userToggledRef.current = false;
|
|
5306
|
+
setIsOpen(true);
|
|
5307
|
+
} else if (!userToggledRef.current) setIsOpen(false);
|
|
5275
5308
|
}, [isStreaming]);
|
|
5309
|
+
const handleToggle = hasContent ? () => {
|
|
5310
|
+
userToggledRef.current = true;
|
|
5311
|
+
setIsOpen((prev) => !prev);
|
|
5312
|
+
} : void 0;
|
|
5276
5313
|
const label = isStreaming ? "Thinking…" : `Thought for ${formatDuration(elapsed)}`;
|
|
5277
5314
|
const boundHeader = renderSlot(header, CopilotChatReasoningMessage.Header, {
|
|
5278
5315
|
isOpen,
|
|
5279
5316
|
label,
|
|
5280
5317
|
hasContent,
|
|
5281
5318
|
isStreaming,
|
|
5282
|
-
onClick:
|
|
5319
|
+
onClick: handleToggle
|
|
5283
5320
|
});
|
|
5284
5321
|
const boundContent = renderSlot(contentView, CopilotChatReasoningMessage.Content, {
|
|
5285
5322
|
isStreaming,
|
|
@@ -7983,6 +8020,20 @@ function shouldShowDevConsole(showDevConsole) {
|
|
|
7983
8020
|
/**
|
|
7984
8021
|
* An internal context to separate the messages state (which is constantly changing) from the rest of CopilotKit context
|
|
7985
8022
|
*/
|
|
8023
|
+
/**
|
|
8024
|
+
* Determine whether a GraphQL error should be suppressed based on its visibility
|
|
8025
|
+
* and whether the dev console is active.
|
|
8026
|
+
*
|
|
8027
|
+
* Returns `null` when the error should be surfaced to the UI, or a log prefix
|
|
8028
|
+
* string when the error should be suppressed (logged to console only).
|
|
8029
|
+
*
|
|
8030
|
+
* Exported for unit testing.
|
|
8031
|
+
*/
|
|
8032
|
+
function getErrorSuppression(visibility, isDev) {
|
|
8033
|
+
if (visibility === ErrorVisibility.SILENT) return "CopilotKit Silent Error:";
|
|
8034
|
+
if (!isDev && visibility === ErrorVisibility.DEV_ONLY) return "CopilotKit Error (hidden in production):";
|
|
8035
|
+
return null;
|
|
8036
|
+
}
|
|
7986
8037
|
const MessagesTapContext = createContext(null);
|
|
7987
8038
|
function useMessagesTap() {
|
|
7988
8039
|
const tap = useContext(MessagesTapContext);
|
|
@@ -8066,12 +8117,9 @@ function CopilotMessages({ children }) {
|
|
|
8066
8117
|
const graphQLErrors = error.graphQLErrors;
|
|
8067
8118
|
const routeError = (gqlError) => {
|
|
8068
8119
|
const visibility = gqlError.extensions?.visibility;
|
|
8069
|
-
|
|
8070
|
-
|
|
8071
|
-
|
|
8072
|
-
}
|
|
8073
|
-
if (visibility === ErrorVisibility.SILENT) {
|
|
8074
|
-
console.error("CopilotKit Silent Error:", gqlError.message);
|
|
8120
|
+
const suppression = getErrorSuppression(visibility, shouldShowDevConsole(showDevConsole));
|
|
8121
|
+
if (suppression) {
|
|
8122
|
+
console.error(suppression, gqlError.message);
|
|
8075
8123
|
return;
|
|
8076
8124
|
}
|
|
8077
8125
|
const ckError = createStructuredError(gqlError);
|
|
@@ -8088,8 +8136,7 @@ function CopilotMessages({ children }) {
|
|
|
8088
8136
|
}
|
|
8089
8137
|
};
|
|
8090
8138
|
graphQLErrors.forEach(routeError);
|
|
8091
|
-
} else
|
|
8092
|
-
else {
|
|
8139
|
+
} else {
|
|
8093
8140
|
const fallbackError = new CopilotKitError({
|
|
8094
8141
|
message: error?.message || String(error),
|
|
8095
8142
|
code: CopilotKitErrorCode.UNKNOWN
|
|
@@ -9156,7 +9203,7 @@ function CopilotKitInternal(cpkProps) {
|
|
|
9156
9203
|
publicApiKey,
|
|
9157
9204
|
...cloud ? { cloud } : {},
|
|
9158
9205
|
chatApiEndpoint,
|
|
9159
|
-
headers: props.headers || {},
|
|
9206
|
+
headers: typeof props.headers === "function" ? props.headers() : props.headers || {},
|
|
9160
9207
|
properties: props.properties || {},
|
|
9161
9208
|
transcribeAudioUrl: props.transcribeAudioUrl,
|
|
9162
9209
|
textToSpeechUrl: props.textToSpeechUrl,
|
|
@@ -9502,5 +9549,5 @@ function validateProps(props) {
|
|
|
9502
9549
|
}
|
|
9503
9550
|
|
|
9504
9551
|
//#endregion
|
|
9505
|
-
export {
|
|
9506
|
-
//# sourceMappingURL=copilotkit-
|
|
9552
|
+
export { CopilotKitProvider as $, CopilotChatSuggestionView as A, useConfigureSuggestions as B, CopilotChatToggleButton as C, CopilotChatView_default as D, CopilotChat as E, CopilotChatAssistantMessage_default as F, useRenderTool as G, useCapabilities as H, CopilotChatToolCallsView as I, useRenderActivityMessage as J, useComponent as K, useAttachments as L, CopilotChatReasoningMessage_default as M, CopilotChatUserMessage_default as N, CopilotChatAttachmentQueue as O, CopilotChatAttachmentRenderer as P, useRenderToolCall as Q, useThreads$1 as R, CopilotModalHeader as S, DefaultOpenIcon as T, useHumanInTheLoop as U, useSuggestions as V, useDefaultRenderTool as W, UseAgentUpdate as X, useRenderCustomMessages as Y, useAgent as Z, WildcardToolCallRender as _, ThreadsProvider as a, SandboxFunctionsContext as at, CopilotPopupView as b, CoAgentStateRendersProvider as c, MCPAppsActivityRenderer as ct, shouldShowDevConsole as d, CopilotChatInput_default as dt, useCopilotKit as et, useToast as f, AudioRecorderError as ft, useCopilotContext as g, CopilotContext as h, useCopilotChatConfiguration as ht, ThreadsContext as i, createA2UIMessageRenderer as it, CopilotChatSuggestionPill as j, CopilotChatMessageView as k, useCoAgentStateRenders as l, MCPAppsActivityType as lt, useCopilotMessagesContext as m, CopilotChatConfigurationProvider as mt, defaultCopilotContextCategories as n, useAgentContext as nt, useThreads as o, useSandboxFunctions as ot, CopilotMessagesContext as p, CopilotChatAudioRecorder as pt, useFrontendTool as q, CoAgentStateRenderBridge as r, defineToolCallRenderer as rt, CoAgentStateRendersContext as s, MCPAppsActivityContentSchema as st, CopilotKit as t, CopilotKitCoreReact as tt, useAsyncCallback as u, CopilotKitInspector as ut, CopilotPopup as v, DefaultCloseIcon as w, CopilotSidebarView as x, CopilotSidebar as y, useInterrupt as z };
|
|
9553
|
+
//# sourceMappingURL=copilotkit-Bm4ox8G0.mjs.map
|