@copilotkit/react-core 1.55.3 → 1.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/{copilotkit-Cd-NrDyp.mjs → copilotkit-BebqQrYT.mjs} +94 -44
  2. package/dist/copilotkit-BebqQrYT.mjs.map +1 -0
  3. package/dist/{copilotkit-Dgdpbqjt.cjs → copilotkit-Cvb6WpAX.cjs} +98 -42
  4. package/dist/copilotkit-Cvb6WpAX.cjs.map +1 -0
  5. package/dist/{copilotkit-dwDWYpya.d.cts → copilotkit-Dv8zU8_U.d.cts} +47 -10
  6. package/dist/copilotkit-Dv8zU8_U.d.cts.map +1 -0
  7. package/dist/{copilotkit-BuhSUZHb.d.mts → copilotkit-f2Uq0RwG.d.mts} +47 -10
  8. package/dist/copilotkit-f2Uq0RwG.d.mts.map +1 -0
  9. package/dist/index.cjs +1 -1
  10. package/dist/index.d.cts +1 -1
  11. package/dist/index.d.mts +1 -1
  12. package/dist/index.mjs +1 -1
  13. package/dist/index.umd.js +41 -17
  14. package/dist/index.umd.js.map +1 -1
  15. package/dist/v2/index.cjs +2 -1
  16. package/dist/v2/index.d.cts +2 -2
  17. package/dist/v2/index.d.mts +2 -2
  18. package/dist/v2/index.mjs +2 -2
  19. package/dist/v2/index.umd.js +92 -42
  20. package/dist/v2/index.umd.js.map +1 -1
  21. package/package.json +6 -6
  22. package/src/components/copilot-provider/__tests__/error-visibility-prod.test.tsx +70 -0
  23. package/src/components/copilot-provider/copilot-messages.tsx +39 -24
  24. package/src/components/copilot-provider/copilotkit-props.tsx +26 -6
  25. package/src/components/copilot-provider/copilotkit.tsx +4 -1
  26. package/src/v2/components/chat/CopilotChatAssistantMessage.tsx +18 -15
  27. package/src/v2/components/chat/CopilotChatReasoningMessage.tsx +17 -4
  28. package/src/v2/components/chat/CopilotChatUserMessage.tsx +13 -10
  29. package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.tsx +131 -5
  30. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.tsx +1 -1
  31. package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.tsx +241 -0
  32. package/src/v2/hooks/__tests__/use-agent-throttle.test.tsx +10 -10
  33. package/src/v2/hooks/__tests__/use-capabilities.test.tsx +76 -0
  34. package/src/v2/hooks/index.ts +1 -0
  35. package/src/v2/hooks/use-agent.tsx +23 -4
  36. package/src/v2/hooks/use-capabilities.tsx +25 -0
  37. package/src/v2/providers/CopilotKitProvider.tsx +15 -2
  38. package/dist/copilotkit-BuhSUZHb.d.mts.map +0 -1
  39. package/dist/copilotkit-Cd-NrDyp.mjs.map +0 -1
  40. package/dist/copilotkit-Dgdpbqjt.cjs.map +0 -1
  41. 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, debug }) => {
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;
@@ -3198,7 +3199,8 @@ const CopilotKitProvider = ({ children, runtimeUrl, headers = {}, credentials, p
3198
3199
  tools: allTools,
3199
3200
  renderToolCalls: allRenderToolCalls,
3200
3201
  renderActivityMessages: allActivityRenderers,
3201
- renderCustomMessages: renderCustomMessagesList
3202
+ renderCustomMessages: renderCustomMessagesList,
3203
+ debug
3202
3204
  });
3203
3205
  if (defaultThrottleMs !== void 0) copilotkitRef.current.setDefaultThrottleMs(defaultThrottleMs);
3204
3206
  }
@@ -3271,6 +3273,7 @@ const CopilotKitProvider = ({ children, runtimeUrl, headers = {}, credentials, p
3271
3273
  copilotkit.setCredentials(credentials);
3272
3274
  copilotkit.setProperties(properties);
3273
3275
  copilotkit.setAgents__unsafe_dev_only(mergedAgents);
3276
+ copilotkit.setDebug(debug);
3274
3277
  }, [
3275
3278
  copilotkit,
3276
3279
  chatApiEndpoint,
@@ -3278,7 +3281,8 @@ const CopilotKitProvider = ({ children, runtimeUrl, headers = {}, credentials, p
3278
3281
  credentials,
3279
3282
  properties,
3280
3283
  mergedAgents,
3281
- useSingleEndpoint
3284
+ useSingleEndpoint,
3285
+ debug
3282
3286
  ]);
3283
3287
  const didMountRef = useRef(false);
3284
3288
  useEffect(() => {
@@ -3589,6 +3593,17 @@ function useAgent({ agentId, threadId, updates, throttleMs } = {}) {
3589
3593
  const handlers = {};
3590
3594
  let timerId = null;
3591
3595
  let active = true;
3596
+ let batchScheduled = false;
3597
+ const batchedForceUpdate = () => {
3598
+ if (!active) return;
3599
+ if (!batchScheduled) {
3600
+ batchScheduled = true;
3601
+ queueMicrotask(() => {
3602
+ batchScheduled = false;
3603
+ if (active) forceUpdate();
3604
+ });
3605
+ }
3606
+ };
3592
3607
  if (updateFlags.includes(UseAgentUpdate.OnMessagesChanged)) {
3593
3608
  const ms = effectiveThrottleMs;
3594
3609
  if (ms > 0) {
@@ -3613,11 +3628,11 @@ function useAgent({ agentId, threadId, updates, throttleMs } = {}) {
3613
3628
  handlers.onMessagesChanged = throttledNotify;
3614
3629
  } else handlers.onMessagesChanged = forceUpdate;
3615
3630
  }
3616
- if (updateFlags.includes(UseAgentUpdate.OnStateChanged)) handlers.onStateChanged = forceUpdate;
3631
+ if (updateFlags.includes(UseAgentUpdate.OnStateChanged)) handlers.onStateChanged = batchedForceUpdate;
3617
3632
  if (updateFlags.includes(UseAgentUpdate.OnRunStatusChanged)) {
3618
- handlers.onRunInitialized = forceUpdate;
3619
- handlers.onRunFinalized = forceUpdate;
3620
- handlers.onRunFailed = forceUpdate;
3633
+ handlers.onRunInitialized = batchedForceUpdate;
3634
+ handlers.onRunFinalized = batchedForceUpdate;
3635
+ handlers.onRunFailed = batchedForceUpdate;
3621
3636
  }
3622
3637
  const subscription = agent.subscribe(handlers);
3623
3638
  return () => {
@@ -4154,6 +4169,24 @@ function useHumanInTheLoop(tool, deps) {
4154
4169
  ]);
4155
4170
  }
4156
4171
 
4172
+ //#endregion
4173
+ //#region src/v2/hooks/use-capabilities.tsx
4174
+ /**
4175
+ * Returns the capabilities declared by the given agent (or the default agent).
4176
+ * Capabilities are populated from the runtime `/info` response at connection
4177
+ * time. The hook reads them synchronously from the agent instance — there is
4178
+ * no separate loading state, but the value will be `undefined` until the
4179
+ * runtime handshake completes.
4180
+ *
4181
+ * @param agentId - Optional agent ID. If omitted, uses the default agent.
4182
+ * @returns The agent's capabilities, or `undefined` if the agent doesn't
4183
+ * declare capabilities.
4184
+ */
4185
+ function useCapabilities(agentId) {
4186
+ const { agent } = useAgent({ agentId });
4187
+ if (agent && "capabilities" in agent) return agent.capabilities;
4188
+ }
4189
+
4157
4190
  //#endregion
4158
4191
  //#region src/v2/hooks/use-suggestions.tsx
4159
4192
  function useSuggestions({ agentId } = {}) {
@@ -4805,11 +4838,8 @@ function CopilotChatAssistantMessage({ message, messages, isRunning, onThumbsUp,
4805
4838
  useKatexStyles();
4806
4839
  const boundMarkdownRenderer = renderSlot(markdownRenderer, CopilotChatAssistantMessage.MarkdownRenderer, { content: message.content || "" });
4807
4840
  const boundCopyButton = renderSlot(copyButton, CopilotChatAssistantMessage.CopyButton, { onClick: async () => {
4808
- if (message.content) try {
4809
- await navigator.clipboard.writeText(message.content);
4810
- } catch (err) {
4811
- console.error("Failed to copy message:", err);
4812
- }
4841
+ if (message.content) return await copyToClipboard(message.content);
4842
+ return false;
4813
4843
  } });
4814
4844
  const boundThumbsUpButton = renderSlot(thumbsUpButton, CopilotChatAssistantMessage.ThumbsUpButton, { onClick: onThumbsUp });
4815
4845
  const boundThumbsDownButton = renderSlot(thumbsDownButton, CopilotChatAssistantMessage.ThumbsDownButton, { onClick: onThumbsDown });
@@ -4907,14 +4937,17 @@ function CopilotChatAssistantMessage({ message, messages, isRunning, onThumbsUp,
4907
4937
  if (timerRef.current !== null) clearTimeout(timerRef.current);
4908
4938
  };
4909
4939
  }, []);
4910
- const handleClick = (event) => {
4911
- setCopied(true);
4912
- if (timerRef.current !== null) clearTimeout(timerRef.current);
4913
- timerRef.current = setTimeout(() => {
4914
- timerRef.current = null;
4915
- setCopied(false);
4916
- }, 2e3);
4917
- if (onClick) onClick(event);
4940
+ const handleClick = async (event) => {
4941
+ let success = false;
4942
+ if (onClick) success = await Promise.resolve(onClick(event)) === true;
4943
+ if (success) {
4944
+ setCopied(true);
4945
+ if (timerRef.current !== null) clearTimeout(timerRef.current);
4946
+ timerRef.current = setTimeout(() => {
4947
+ timerRef.current = null;
4948
+ setCopied(false);
4949
+ }, 2e3);
4950
+ }
4918
4951
  };
4919
4952
  return /* @__PURE__ */ jsx(ToolbarButton, {
4920
4953
  "data-testid": "copilot-copy-button",
@@ -5067,11 +5100,8 @@ function CopilotChatUserMessage({ message, onEditMessage, branchIndex, numberOfB
5067
5100
  const mediaParts = useMemo(() => getMediaParts(message.content), [message.content]);
5068
5101
  const BoundMessageRenderer = renderSlot(messageRenderer, CopilotChatUserMessage.MessageRenderer, { content: flattenedContent });
5069
5102
  const BoundCopyButton = renderSlot(copyButton, CopilotChatUserMessage.CopyButton, { onClick: async () => {
5070
- if (flattenedContent) try {
5071
- await navigator.clipboard.writeText(flattenedContent);
5072
- } catch (err) {
5073
- console.error("Failed to copy message:", err);
5074
- }
5103
+ if (flattenedContent) return await copyToClipboard(flattenedContent);
5104
+ return false;
5075
5105
  } });
5076
5106
  const BoundEditButton = renderSlot(editButton, CopilotChatUserMessage.EditButton, { onClick: () => onEditMessage?.({ message }) });
5077
5107
  const BoundBranchNavigation = renderSlot(branchNavigation, CopilotChatUserMessage.BranchNavigation, {
@@ -5159,10 +5189,13 @@ function CopilotChatUserMessage({ message, onEditMessage, branchIndex, numberOfB
5159
5189
  _CopilotChatUserMessage.CopyButton = ({ className, title, onClick, ...props }) => {
5160
5190
  const labels = useCopilotChatConfiguration()?.labels ?? CopilotChatDefaultLabels;
5161
5191
  const [copied, setCopied] = useState(false);
5162
- const handleClick = (event) => {
5163
- setCopied(true);
5164
- setTimeout(() => setCopied(false), 2e3);
5165
- if (onClick) onClick(event);
5192
+ const handleClick = async (event) => {
5193
+ let success = false;
5194
+ if (onClick) success = await Promise.resolve(onClick(event)) === true;
5195
+ if (success) {
5196
+ setCopied(true);
5197
+ setTimeout(() => setCopied(false), 2e3);
5198
+ }
5166
5199
  };
5167
5200
  return /* @__PURE__ */ jsx(ToolbarButton, {
5168
5201
  "data-testid": "copilot-user-copy-button",
@@ -5269,17 +5302,24 @@ function CopilotChatReasoningMessage({ message, messages, isRunning, header, con
5269
5302
  return () => clearInterval(timer);
5270
5303
  }, [isStreaming]);
5271
5304
  const [isOpen, setIsOpen] = useState(isStreaming);
5305
+ const userToggledRef = useRef(false);
5272
5306
  useEffect(() => {
5273
- if (isStreaming) setIsOpen(true);
5274
- else setIsOpen(false);
5307
+ if (isStreaming) {
5308
+ userToggledRef.current = false;
5309
+ setIsOpen(true);
5310
+ } else if (!userToggledRef.current) setIsOpen(false);
5275
5311
  }, [isStreaming]);
5312
+ const handleToggle = hasContent ? () => {
5313
+ userToggledRef.current = true;
5314
+ setIsOpen((prev) => !prev);
5315
+ } : void 0;
5276
5316
  const label = isStreaming ? "Thinking…" : `Thought for ${formatDuration(elapsed)}`;
5277
5317
  const boundHeader = renderSlot(header, CopilotChatReasoningMessage.Header, {
5278
5318
  isOpen,
5279
5319
  label,
5280
5320
  hasContent,
5281
5321
  isStreaming,
5282
- onClick: hasContent ? () => setIsOpen((prev) => !prev) : void 0
5322
+ onClick: handleToggle
5283
5323
  });
5284
5324
  const boundContent = renderSlot(contentView, CopilotChatReasoningMessage.Content, {
5285
5325
  isStreaming,
@@ -7983,6 +8023,20 @@ function shouldShowDevConsole(showDevConsole) {
7983
8023
  /**
7984
8024
  * An internal context to separate the messages state (which is constantly changing) from the rest of CopilotKit context
7985
8025
  */
8026
+ /**
8027
+ * Determine whether a GraphQL error should be suppressed based on its visibility
8028
+ * and whether the dev console is active.
8029
+ *
8030
+ * Returns `null` when the error should be surfaced to the UI, or a log prefix
8031
+ * string when the error should be suppressed (logged to console only).
8032
+ *
8033
+ * Exported for unit testing.
8034
+ */
8035
+ function getErrorSuppression(visibility, isDev) {
8036
+ if (visibility === ErrorVisibility.SILENT) return "CopilotKit Silent Error:";
8037
+ if (!isDev && visibility === ErrorVisibility.DEV_ONLY) return "CopilotKit Error (hidden in production):";
8038
+ return null;
8039
+ }
7986
8040
  const MessagesTapContext = createContext(null);
7987
8041
  function useMessagesTap() {
7988
8042
  const tap = useContext(MessagesTapContext);
@@ -8066,12 +8120,9 @@ function CopilotMessages({ children }) {
8066
8120
  const graphQLErrors = error.graphQLErrors;
8067
8121
  const routeError = (gqlError) => {
8068
8122
  const visibility = gqlError.extensions?.visibility;
8069
- if (!shouldShowDevConsole(showDevConsole)) {
8070
- console.error("CopilotKit Error (hidden in production):", gqlError.message);
8071
- return;
8072
- }
8073
- if (visibility === ErrorVisibility.SILENT) {
8074
- console.error("CopilotKit Silent Error:", gqlError.message);
8123
+ const suppression = getErrorSuppression(visibility, shouldShowDevConsole(showDevConsole));
8124
+ if (suppression) {
8125
+ console.error(suppression, gqlError.message);
8075
8126
  return;
8076
8127
  }
8077
8128
  const ckError = createStructuredError(gqlError);
@@ -8088,8 +8139,7 @@ function CopilotMessages({ children }) {
8088
8139
  }
8089
8140
  };
8090
8141
  graphQLErrors.forEach(routeError);
8091
- } else if (!shouldShowDevConsole(showDevConsole)) console.error("CopilotKit Error (hidden in production):", error);
8092
- else {
8142
+ } else {
8093
8143
  const fallbackError = new CopilotKitError({
8094
8144
  message: error?.message || String(error),
8095
8145
  code: CopilotKitErrorCode.UNKNOWN
@@ -9156,7 +9206,7 @@ function CopilotKitInternal(cpkProps) {
9156
9206
  publicApiKey,
9157
9207
  ...cloud ? { cloud } : {},
9158
9208
  chatApiEndpoint,
9159
- headers: props.headers || {},
9209
+ headers: typeof props.headers === "function" ? props.headers() : props.headers || {},
9160
9210
  properties: props.properties || {},
9161
9211
  transcribeAudioUrl: props.transcribeAudioUrl,
9162
9212
  textToSpeechUrl: props.textToSpeechUrl,
@@ -9502,5 +9552,5 @@ function validateProps(props) {
9502
9552
  }
9503
9553
 
9504
9554
  //#endregion
9505
- export { useCopilotKit as $, CopilotChatSuggestionView as A, useConfigureSuggestions as B, CopilotChatToggleButton as C, CopilotChatView_default as D, CopilotChat as E, CopilotChatAssistantMessage_default as F, useComponent as G, useHumanInTheLoop as H, CopilotChatToolCallsView as I, useRenderCustomMessages as J, useFrontendTool as K, useAttachments as L, CopilotChatReasoningMessage_default as M, CopilotChatUserMessage_default as N, CopilotChatAttachmentQueue as O, CopilotChatAttachmentRenderer as P, CopilotKitProvider as Q, useThreads$1 as R, CopilotModalHeader as S, DefaultOpenIcon as T, useDefaultRenderTool as U, useSuggestions as V, useRenderTool as W, useAgent as X, UseAgentUpdate as Y, useRenderToolCall as Z, WildcardToolCallRender as _, ThreadsProvider as a, useSandboxFunctions as at, CopilotPopupView as b, CoAgentStateRendersProvider as c, MCPAppsActivityType as ct, shouldShowDevConsole as d, AudioRecorderError as dt, CopilotKitCoreReact as et, useToast as f, CopilotChatAudioRecorder as ft, useCopilotContext as g, CopilotContext as h, ThreadsContext as i, SandboxFunctionsContext as it, CopilotChatSuggestionPill as j, CopilotChatMessageView as k, useCoAgentStateRenders as l, CopilotKitInspector as lt, useCopilotMessagesContext as m, useCopilotChatConfiguration as mt, defaultCopilotContextCategories as n, defineToolCallRenderer as nt, useThreads as o, MCPAppsActivityContentSchema as ot, CopilotMessagesContext as p, CopilotChatConfigurationProvider as pt, useRenderActivityMessage as q, CoAgentStateRenderBridge as r, createA2UIMessageRenderer as rt, CoAgentStateRendersContext as s, MCPAppsActivityRenderer as st, CopilotKit as t, useAgentContext as tt, useAsyncCallback as u, CopilotChatInput_default as ut, CopilotPopup as v, DefaultCloseIcon as w, CopilotSidebarView as x, CopilotSidebar as y, useInterrupt as z };
9506
- //# sourceMappingURL=copilotkit-Cd-NrDyp.mjs.map
9555
+ 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 };
9556
+ //# sourceMappingURL=copilotkit-BebqQrYT.mjs.map