@copilotkit/react-core 1.10.4-next.0 → 1.10.4-next.2

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 (160) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{chunk-BKODPOZI.mjs → chunk-2MGJO3FY.mjs} +7 -7
  3. package/dist/{chunk-DLEXVOQE.mjs → chunk-2QZSAQTX.mjs} +4 -4
  4. package/dist/{chunk-6EKLRL7B.mjs → chunk-36FJAVOF.mjs} +2 -2
  5. package/dist/{chunk-TQGWN4FE.mjs → chunk-5KVEE73R.mjs} +4 -4
  6. package/dist/{chunk-SAWWZBE3.mjs → chunk-6WTWBXEJ.mjs} +56 -15
  7. package/dist/chunk-6WTWBXEJ.mjs.map +1 -0
  8. package/dist/{chunk-KOGKA4V5.mjs → chunk-AALETENN.mjs} +3 -3
  9. package/dist/{chunk-B6ZYKFIA.mjs → chunk-CLAHAV6J.mjs} +10 -10
  10. package/dist/{chunk-CLMDRYEN.mjs → chunk-CXDK6XA5.mjs} +2 -2
  11. package/dist/{chunk-QXSEHCPY.mjs → chunk-DSDAZA3B.mjs} +4 -4
  12. package/dist/{chunk-PI7BDJ6G.mjs → chunk-EBSAU46C.mjs} +5 -5
  13. package/dist/{chunk-W7W43PPC.mjs → chunk-HWM2Z3J3.mjs} +2 -2
  14. package/dist/{chunk-FG3FWUVW.mjs → chunk-ID5JRMGN.mjs} +3 -3
  15. package/dist/{chunk-X2DNXTME.mjs → chunk-JEMBA7PE.mjs} +4 -4
  16. package/dist/{chunk-JJDXTTEN.mjs → chunk-KWS75AOU.mjs} +3 -3
  17. package/dist/{chunk-V5PU37CB.mjs → chunk-LLLCUHOO.mjs} +9 -10
  18. package/dist/chunk-LLLCUHOO.mjs.map +1 -0
  19. package/dist/{chunk-3RHHNUVV.mjs → chunk-MZ37BAAE.mjs} +2 -2
  20. package/dist/{chunk-L3I57GMV.mjs → chunk-N4VN2B5S.mjs} +4 -4
  21. package/dist/{chunk-FAUNHSQU.mjs → chunk-Q3MCVRO3.mjs} +1 -3
  22. package/dist/chunk-Q3MCVRO3.mjs.map +1 -0
  23. package/dist/{chunk-IN7GE4NO.mjs → chunk-QF3Q5LUN.mjs} +2 -2
  24. package/dist/{chunk-2DXYQG42.mjs → chunk-QNJNOZH3.mjs} +12 -11
  25. package/dist/chunk-QNJNOZH3.mjs.map +1 -0
  26. package/dist/{chunk-TEMLWRRT.mjs → chunk-YHT6CWIY.mjs} +8 -2
  27. package/dist/{chunk-TEMLWRRT.mjs.map → chunk-YHT6CWIY.mjs.map} +1 -1
  28. package/dist/components/copilot-provider/copilot-messages.js +7 -1
  29. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  30. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  31. package/dist/components/copilot-provider/copilotkit-props.d.ts +1 -1
  32. package/dist/components/copilot-provider/copilotkit.d.ts +1 -1
  33. package/dist/components/copilot-provider/copilotkit.js +51 -6
  34. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  35. package/dist/components/copilot-provider/copilotkit.mjs +10 -10
  36. package/dist/components/copilot-provider/index.d.ts +1 -1
  37. package/dist/components/copilot-provider/index.js +51 -6
  38. package/dist/components/copilot-provider/index.js.map +1 -1
  39. package/dist/components/copilot-provider/index.mjs +10 -10
  40. package/dist/components/dev-console/console-trigger.js +7 -1
  41. package/dist/components/dev-console/console-trigger.js.map +1 -1
  42. package/dist/components/dev-console/console-trigger.mjs +3 -3
  43. package/dist/components/dev-console/developer-console-modal.js +7 -1
  44. package/dist/components/dev-console/developer-console-modal.js.map +1 -1
  45. package/dist/components/dev-console/developer-console-modal.mjs +2 -2
  46. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  47. package/dist/components/index.d.ts +1 -1
  48. package/dist/components/index.js +51 -6
  49. package/dist/components/index.js.map +1 -1
  50. package/dist/components/index.mjs +10 -10
  51. package/dist/context/copilot-context.d.ts +1 -1
  52. package/dist/context/copilot-context.js +7 -1
  53. package/dist/context/copilot-context.js.map +1 -1
  54. package/dist/context/copilot-context.mjs +1 -1
  55. package/dist/context/copilot-messages-context.d.ts +2 -2
  56. package/dist/context/index.d.ts +2 -2
  57. package/dist/context/index.js +7 -1
  58. package/dist/context/index.js.map +1 -1
  59. package/dist/context/index.mjs +4 -4
  60. package/dist/{copilot-context-256f9020.d.ts → copilot-context-59740e82.d.ts} +4 -1
  61. package/dist/hooks/index.d.ts +2 -2
  62. package/dist/hooks/index.js +12 -8
  63. package/dist/hooks/index.js.map +1 -1
  64. package/dist/hooks/index.mjs +35 -35
  65. package/dist/hooks/use-chat.d.ts +1 -1
  66. package/dist/hooks/use-chat.js +9 -6
  67. package/dist/hooks/use-chat.js.map +1 -1
  68. package/dist/hooks/use-chat.mjs +4 -4
  69. package/dist/hooks/use-coagent-state-render.js +7 -1
  70. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  71. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  72. package/dist/hooks/use-coagent.d.ts +1 -1
  73. package/dist/hooks/use-coagent.js +12 -8
  74. package/dist/hooks/use-coagent.js.map +1 -1
  75. package/dist/hooks/use-coagent.mjs +16 -16
  76. package/dist/hooks/use-copilot-action.js +7 -1
  77. package/dist/hooks/use-copilot-action.js.map +1 -1
  78. package/dist/hooks/use-copilot-action.mjs +2 -2
  79. package/dist/hooks/use-copilot-additional-instructions.js +7 -1
  80. package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
  81. package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
  82. package/dist/hooks/use-copilot-authenticated-action.js +7 -1
  83. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  84. package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
  85. package/dist/hooks/use-copilot-chat-headless_c.d.ts +2 -2
  86. package/dist/hooks/use-copilot-chat-headless_c.js +9 -6
  87. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  88. package/dist/hooks/use-copilot-chat-headless_c.mjs +16 -16
  89. package/dist/hooks/use-copilot-chat.d.ts +2 -2
  90. package/dist/hooks/use-copilot-chat.js +9 -6
  91. package/dist/hooks/use-copilot-chat.js.map +1 -1
  92. package/dist/hooks/use-copilot-chat.mjs +16 -16
  93. package/dist/hooks/use-copilot-chat_internal.d.ts +2 -2
  94. package/dist/hooks/use-copilot-chat_internal.js +9 -6
  95. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  96. package/dist/hooks/use-copilot-chat_internal.mjs +15 -15
  97. package/dist/hooks/use-copilot-readable.js +7 -1
  98. package/dist/hooks/use-copilot-readable.js.map +1 -1
  99. package/dist/hooks/use-copilot-readable.mjs +2 -2
  100. package/dist/hooks/use-copilot-runtime-client.d.ts +1 -1
  101. package/dist/hooks/use-copilot-runtime-client.js +0 -2
  102. package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
  103. package/dist/hooks/use-copilot-runtime-client.mjs +1 -1
  104. package/dist/hooks/use-langgraph-interrupt-render.js +7 -1
  105. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
  106. package/dist/hooks/use-langgraph-interrupt-render.mjs +2 -2
  107. package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
  108. package/dist/hooks/use-langgraph-interrupt.js +9 -6
  109. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  110. package/dist/hooks/use-langgraph-interrupt.mjs +16 -16
  111. package/dist/hooks/use-make-copilot-document-readable.js +7 -1
  112. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  113. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  114. package/dist/{index-08c43df1.d.ts → index-d1743abe.d.ts} +1 -1
  115. package/dist/index.d.ts +2 -2
  116. package/dist/index.js +56 -11
  117. package/dist/index.js.map +1 -1
  118. package/dist/index.mjs +40 -40
  119. package/dist/lib/copilot-task.d.ts +1 -1
  120. package/dist/lib/copilot-task.js.map +1 -1
  121. package/dist/lib/copilot-task.mjs +12 -12
  122. package/dist/lib/index.d.ts +1 -1
  123. package/dist/lib/index.js.map +1 -1
  124. package/dist/lib/index.mjs +12 -12
  125. package/dist/types/interrupt-action.d.ts +1 -1
  126. package/dist/utils/extract.d.ts +2 -2
  127. package/dist/utils/extract.js.map +1 -1
  128. package/dist/utils/extract.mjs +10 -10
  129. package/dist/utils/index.d.ts +2 -2
  130. package/dist/utils/index.js.map +1 -1
  131. package/dist/utils/index.mjs +11 -11
  132. package/dist/utils/suggestions.d.ts +2 -2
  133. package/dist/utils/suggestions.js.map +1 -1
  134. package/dist/utils/suggestions.mjs +10 -10
  135. package/package.json +3 -3
  136. package/src/components/copilot-provider/copilotkit.tsx +55 -2
  137. package/src/context/copilot-context.tsx +11 -2
  138. package/src/hooks/use-chat.ts +3 -3
  139. package/src/hooks/use-coagent.ts +2 -1
  140. package/src/hooks/use-copilot-runtime-client.ts +4 -4
  141. package/dist/chunk-2DXYQG42.mjs.map +0 -1
  142. package/dist/chunk-FAUNHSQU.mjs.map +0 -1
  143. package/dist/chunk-SAWWZBE3.mjs.map +0 -1
  144. package/dist/chunk-V5PU37CB.mjs.map +0 -1
  145. /package/dist/{chunk-BKODPOZI.mjs.map → chunk-2MGJO3FY.mjs.map} +0 -0
  146. /package/dist/{chunk-DLEXVOQE.mjs.map → chunk-2QZSAQTX.mjs.map} +0 -0
  147. /package/dist/{chunk-6EKLRL7B.mjs.map → chunk-36FJAVOF.mjs.map} +0 -0
  148. /package/dist/{chunk-TQGWN4FE.mjs.map → chunk-5KVEE73R.mjs.map} +0 -0
  149. /package/dist/{chunk-KOGKA4V5.mjs.map → chunk-AALETENN.mjs.map} +0 -0
  150. /package/dist/{chunk-B6ZYKFIA.mjs.map → chunk-CLAHAV6J.mjs.map} +0 -0
  151. /package/dist/{chunk-CLMDRYEN.mjs.map → chunk-CXDK6XA5.mjs.map} +0 -0
  152. /package/dist/{chunk-QXSEHCPY.mjs.map → chunk-DSDAZA3B.mjs.map} +0 -0
  153. /package/dist/{chunk-PI7BDJ6G.mjs.map → chunk-EBSAU46C.mjs.map} +0 -0
  154. /package/dist/{chunk-W7W43PPC.mjs.map → chunk-HWM2Z3J3.mjs.map} +0 -0
  155. /package/dist/{chunk-FG3FWUVW.mjs.map → chunk-ID5JRMGN.mjs.map} +0 -0
  156. /package/dist/{chunk-X2DNXTME.mjs.map → chunk-JEMBA7PE.mjs.map} +0 -0
  157. /package/dist/{chunk-JJDXTTEN.mjs.map → chunk-KWS75AOU.mjs.map} +0 -0
  158. /package/dist/{chunk-3RHHNUVV.mjs.map → chunk-MZ37BAAE.mjs.map} +0 -0
  159. /package/dist/{chunk-L3I57GMV.mjs.map → chunk-N4VN2B5S.mjs.map} +0 -0
  160. /package/dist/{chunk-IN7GE4NO.mjs.map → chunk-QF3Q5LUN.mjs.map} +0 -0
@@ -1,29 +1,29 @@
1
1
  import {
2
2
  useLangGraphInterrupt
3
- } from "../chunk-PI7BDJ6G.mjs";
4
- import "../chunk-B6ZYKFIA.mjs";
5
- import "../chunk-IN7GE4NO.mjs";
6
- import "../chunk-YPSGKPDA.mjs";
7
- import "../chunk-SAWWZBE3.mjs";
8
- import "../chunk-L3I57GMV.mjs";
9
- import "../chunk-BKODPOZI.mjs";
10
- import "../chunk-KOGKA4V5.mjs";
11
- import "../chunk-QXSEHCPY.mjs";
3
+ } from "../chunk-EBSAU46C.mjs";
4
+ import "../chunk-CLAHAV6J.mjs";
5
+ import "../chunk-QF3Q5LUN.mjs";
6
+ import "../chunk-LLLCUHOO.mjs";
7
+ import "../chunk-4CEQJ2X6.mjs";
8
+ import "../chunk-6WTWBXEJ.mjs";
9
+ import "../chunk-N4VN2B5S.mjs";
10
+ import "../chunk-2MGJO3FY.mjs";
11
+ import "../chunk-AALETENN.mjs";
12
+ import "../chunk-DSDAZA3B.mjs";
12
13
  import "../chunk-PIF5KJYI.mjs";
13
14
  import "../chunk-2IDV5OHF.mjs";
14
15
  import "../chunk-PMAFHQ7P.mjs";
15
16
  import "../chunk-5FHSUKQL.mjs";
16
17
  import "../chunk-RKTVJRK7.mjs";
17
- import "../chunk-ZLQVRPDS.mjs";
18
- import "../chunk-6ZLPNY7X.mjs";
19
- import "../chunk-V5PU37CB.mjs";
20
- import "../chunk-4CEQJ2X6.mjs";
18
+ import "../chunk-Q3MCVRO3.mjs";
19
+ import "../chunk-ICIK2BSB.mjs";
21
20
  import "../chunk-N4WEHORG.mjs";
22
21
  import "../chunk-O7ARI5CV.mjs";
23
- import "../chunk-FAUNHSQU.mjs";
24
- import "../chunk-ICIK2BSB.mjs";
25
- import "../chunk-TEMLWRRT.mjs";
26
22
  import "../chunk-EFL5OBKN.mjs";
23
+ import "../chunk-6ZLPNY7X.mjs";
24
+ import "../chunk-YPSGKPDA.mjs";
25
+ import "../chunk-YHT6CWIY.mjs";
26
+ import "../chunk-ZLQVRPDS.mjs";
27
27
  import "../chunk-SKC7AJIV.mjs";
28
28
  export {
29
29
  useLangGraphInterrupt
@@ -129,9 +129,15 @@ var emptyCopilotContext = {
129
129
  langGraphInterruptAction: null,
130
130
  setLangGraphInterruptAction: () => null,
131
131
  removeLangGraphInterruptAction: () => null,
132
- onError: void 0,
132
+ onError: () => {
133
+ },
133
134
  bannerError: null,
134
135
  setBannerError: () => {
136
+ },
137
+ internalErrorHandlers: {},
138
+ setInternalErrorHandler: () => {
139
+ },
140
+ removeInternalErrorHandler: () => {
135
141
  }
136
142
  };
137
143
  var CopilotContext = import_react.default.createContext(emptyCopilotContext);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/use-make-copilot-document-readable.ts","../../src/context/copilot-context.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useCopilotContext } from \"../context/copilot-context\";\nimport { DocumentPointer } from \"../types\";\n\n/**\n * Makes a document readable by Copilot.\n * @param document The document to make readable.\n * @param categories The categories to associate with the document.\n * @param dependencies The dependencies to use for the effect.\n * @returns The id of the document.\n */\nexport function useMakeCopilotDocumentReadable(\n document: DocumentPointer,\n categories?: string[],\n dependencies: any[] = [],\n): string | undefined {\n const { addDocumentContext, removeDocumentContext } = useCopilotContext();\n const idRef = useRef<string>();\n\n useEffect(() => {\n const id = addDocumentContext(document, categories);\n idRef.current = id;\n\n return () => {\n removeDocumentContext(id);\n };\n }, [addDocumentContext, removeDocumentContext, ...dependencies]);\n\n return idRef.current;\n}\n","import {\n CopilotCloudConfig,\n FunctionCallHandler,\n CopilotErrorHandler,\n CopilotKitError,\n} from \"@copilotkit/shared\";\nimport {\n ActionRenderProps,\n CatchAllActionRenderProps,\n FrontendAction,\n} from \"../types/frontend-action\";\nimport React from \"react\";\nimport { TreeNodeId, Tree } from \"../hooks/use-tree\";\nimport { DocumentPointer } from \"../types\";\nimport { CopilotChatSuggestionConfiguration } from \"../types/chat-suggestion-configuration\";\nimport { CoAgentStateRender, CoAgentStateRenderProps } from \"../types/coagent-action\";\nimport { CoagentState } from \"../types/coagent-state\";\nimport {\n CopilotRuntimeClient,\n ExtensionsInput,\n ForwardedParametersInput,\n} from \"@copilotkit/runtime-client-gql\";\nimport { Agent } from \"@copilotkit/runtime-client-gql\";\nimport {\n LangGraphInterruptAction,\n LangGraphInterruptActionSetter,\n} from \"../types/interrupt-action\";\nimport { SuggestionItem } from \"../utils/suggestions\";\n\n/**\n * Interface for the configuration of the Copilot API.\n */\nexport interface CopilotApiConfig {\n /**\n * The public API key for Copilot Cloud.\n */\n publicApiKey?: string;\n\n /**\n * The configuration for Copilot Cloud.\n */\n cloud?: CopilotCloudConfig;\n\n /**\n * The endpoint for the chat API.\n */\n chatApiEndpoint: string;\n\n /**\n * The endpoint for the Copilot transcribe audio service.\n */\n transcribeAudioUrl?: string;\n\n /**\n * The endpoint for the Copilot text to speech service.\n */\n textToSpeechUrl?: string;\n\n /**\n * additional headers to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'Authorization': 'Bearer your_token_here'\n * }\n * ```\n */\n headers: Record<string, string>;\n\n /**\n * Custom properties to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'user_id': 'user_id'\n * }\n * ```\n */\n properties?: Record<string, any>;\n\n /**\n * Indicates whether the user agent should send or receive cookies from the other domain\n * in the case of cross-origin requests.\n */\n credentials?: RequestCredentials;\n\n /**\n * Optional configuration for connecting to Model Context Protocol (MCP) servers.\n * This is typically derived from the CopilotKitProps and used internally.\n * @experimental\n */\n mcpServers?: Array<{ endpoint: string; apiKey?: string }>;\n}\n\nexport type InChatRenderFunction<TProps = ActionRenderProps<any> | CatchAllActionRenderProps<any>> =\n (props: TProps) => string | JSX.Element;\nexport type CoagentInChatRenderFunction = (\n props: CoAgentStateRenderProps<any>,\n) => string | JSX.Element | undefined | null;\n\nexport interface ChatComponentsCache {\n actions: Record<string, InChatRenderFunction | string>;\n coAgentStateRenders: Record<string, CoagentInChatRenderFunction | string>;\n}\n\nexport interface AgentSession {\n agentName: string;\n threadId?: string;\n nodeName?: string;\n}\n\nexport interface AuthState {\n status: \"authenticated\" | \"unauthenticated\";\n authHeaders: Record<string, string>;\n userId?: string;\n metadata?: Record<string, any>;\n}\n\nexport type ActionName = string;\nexport type ContextTree = Tree;\n\nexport interface CopilotContextParams {\n // function-calling\n actions: Record<string, FrontendAction<any>>;\n setAction: (id: string, action: FrontendAction<any>) => void;\n removeAction: (id: string) => void;\n\n // coagent actions\n coAgentStateRenders: Record<string, CoAgentStateRender<any>>;\n setCoAgentStateRender: (id: string, stateRender: CoAgentStateRender<any>) => void;\n removeCoAgentStateRender: (id: string) => void;\n\n chatComponentsCache: React.RefObject<ChatComponentsCache>;\n\n getFunctionCallHandler: (\n customEntryPoints?: Record<string, FrontendAction<any>>,\n ) => FunctionCallHandler;\n\n // text context\n addContext: (context: string, parentId?: string, categories?: string[]) => TreeNodeId;\n removeContext: (id: TreeNodeId) => void;\n getAllContext: () => Tree;\n getContextString: (documents: DocumentPointer[], categories: string[]) => string;\n\n // document context\n addDocumentContext: (documentPointer: DocumentPointer, categories?: string[]) => TreeNodeId;\n removeDocumentContext: (documentId: string) => void;\n getDocumentsContext: (categories: string[]) => DocumentPointer[];\n\n isLoading: boolean;\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration };\n addChatSuggestionConfiguration: (\n id: string,\n suggestion: CopilotChatSuggestionConfiguration,\n ) => void;\n removeChatSuggestionConfiguration: (id: string) => void;\n\n chatInstructions: string;\n setChatInstructions: React.Dispatch<React.SetStateAction<string>>;\n\n additionalInstructions?: string[];\n setAdditionalInstructions: React.Dispatch<React.SetStateAction<string[]>>;\n\n // api endpoints\n copilotApiConfig: CopilotApiConfig;\n\n showDevConsole: boolean;\n\n // agents\n coagentStates: Record<string, CoagentState>;\n setCoagentStates: React.Dispatch<React.SetStateAction<Record<string, CoagentState>>>;\n coagentStatesRef: React.RefObject<Record<string, CoagentState>>;\n setCoagentStatesWithRef: (\n value:\n | Record<string, CoagentState>\n | ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),\n ) => void;\n\n agentSession: AgentSession | null;\n setAgentSession: React.Dispatch<React.SetStateAction<AgentSession | null>>;\n\n agentLock: string | null;\n\n threadId: string;\n setThreadId: React.Dispatch<React.SetStateAction<string>>;\n\n runId: string | null;\n setRunId: React.Dispatch<React.SetStateAction<string | null>>;\n\n // The chat abort controller can be used to stop generation globally,\n // i.e. when using `stop()` from `useChat`\n chatAbortControllerRef: React.MutableRefObject<AbortController | null>;\n\n // runtime\n runtimeClient: CopilotRuntimeClient;\n\n /**\n * The forwarded parameters to use for the task.\n */\n forwardedParameters?: Partial<Pick<ForwardedParametersInput, \"temperature\">>;\n availableAgents: Agent[];\n\n /**\n * The auth states for the CopilotKit.\n */\n authStates_c?: Record<ActionName, AuthState>;\n setAuthStates_c?: React.Dispatch<React.SetStateAction<Record<ActionName, AuthState>>>;\n\n /**\n * The auth config for the CopilotKit.\n */\n authConfig_c?: {\n SignInComponent: React.ComponentType<{\n onSignInComplete: (authState: AuthState) => void;\n }>;\n };\n\n extensions: ExtensionsInput;\n setExtensions: React.Dispatch<React.SetStateAction<ExtensionsInput>>;\n langGraphInterruptAction: LangGraphInterruptAction | null;\n setLangGraphInterruptAction: LangGraphInterruptActionSetter;\n removeLangGraphInterruptAction: () => void;\n\n /**\n * Optional trace handler for comprehensive debugging and observability.\n */\n onError?: CopilotErrorHandler;\n\n // banner error state\n bannerError: CopilotKitError | null;\n setBannerError: React.Dispatch<React.SetStateAction<CopilotKitError | null>>;\n}\n\nconst emptyCopilotContext: CopilotContextParams = {\n actions: {},\n setAction: () => {},\n removeAction: () => {},\n\n coAgentStateRenders: {},\n setCoAgentStateRender: () => {},\n removeCoAgentStateRender: () => {},\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getContextString: (documents: DocumentPointer[], categories: string[]) =>\n returnAndThrowInDebug(\"\"),\n addContext: () => \"\",\n removeContext: () => {},\n getAllContext: () => [],\n\n getFunctionCallHandler: () => returnAndThrowInDebug(async () => {}),\n\n isLoading: false,\n setIsLoading: () => returnAndThrowInDebug(false),\n\n chatInstructions: \"\",\n setChatInstructions: () => returnAndThrowInDebug(\"\"),\n\n additionalInstructions: [],\n setAdditionalInstructions: () => returnAndThrowInDebug([]),\n\n getDocumentsContext: (categories: string[]) => returnAndThrowInDebug([]),\n addDocumentContext: () => returnAndThrowInDebug(\"\"),\n removeDocumentContext: () => {},\n runtimeClient: {} as any,\n\n copilotApiConfig: new (class implements CopilotApiConfig {\n get chatApiEndpoint(): string {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n\n get headers(): Record<string, string> {\n return {};\n }\n get body(): Record<string, any> {\n return {};\n }\n })(),\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: () => {},\n removeChatSuggestionConfiguration: () => {},\n showDevConsole: false,\n coagentStates: {},\n setCoagentStates: () => {},\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: () => {},\n agentSession: null,\n setAgentSession: () => {},\n forwardedParameters: {},\n agentLock: null,\n threadId: \"\",\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n availableAgents: [],\n extensions: {},\n setExtensions: () => {},\n langGraphInterruptAction: null,\n setLangGraphInterruptAction: () => null,\n removeLangGraphInterruptAction: () => null,\n onError: undefined,\n bannerError: null,\n setBannerError: () => {},\n};\n\nexport const CopilotContext = React.createContext<CopilotContextParams>(emptyCopilotContext);\n\nexport function useCopilotContext(): CopilotContextParams {\n const context = React.useContext(CopilotContext);\n if (context === emptyCopilotContext) {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n return context;\n}\n\nfunction returnAndThrowInDebug<T>(_value: T): T {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n}\n"],"mappings":"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","names":["import_react","React"]}
1
+ {"version":3,"sources":["../../src/hooks/use-make-copilot-document-readable.ts","../../src/context/copilot-context.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useCopilotContext } from \"../context/copilot-context\";\nimport { DocumentPointer } from \"../types\";\n\n/**\n * Makes a document readable by Copilot.\n * @param document The document to make readable.\n * @param categories The categories to associate with the document.\n * @param dependencies The dependencies to use for the effect.\n * @returns The id of the document.\n */\nexport function useMakeCopilotDocumentReadable(\n document: DocumentPointer,\n categories?: string[],\n dependencies: any[] = [],\n): string | undefined {\n const { addDocumentContext, removeDocumentContext } = useCopilotContext();\n const idRef = useRef<string>();\n\n useEffect(() => {\n const id = addDocumentContext(document, categories);\n idRef.current = id;\n\n return () => {\n removeDocumentContext(id);\n };\n }, [addDocumentContext, removeDocumentContext, ...dependencies]);\n\n return idRef.current;\n}\n","import {\n CopilotCloudConfig,\n FunctionCallHandler,\n CopilotErrorHandler,\n CopilotKitError,\n} from \"@copilotkit/shared\";\nimport {\n ActionRenderProps,\n CatchAllActionRenderProps,\n FrontendAction,\n} from \"../types/frontend-action\";\nimport React from \"react\";\nimport { TreeNodeId, Tree } from \"../hooks/use-tree\";\nimport { DocumentPointer } from \"../types\";\nimport { CopilotChatSuggestionConfiguration } from \"../types/chat-suggestion-configuration\";\nimport { CoAgentStateRender, CoAgentStateRenderProps } from \"../types/coagent-action\";\nimport { CoagentState } from \"../types/coagent-state\";\nimport {\n CopilotRuntimeClient,\n ExtensionsInput,\n ForwardedParametersInput,\n} from \"@copilotkit/runtime-client-gql\";\nimport { Agent } from \"@copilotkit/runtime-client-gql\";\nimport {\n LangGraphInterruptAction,\n LangGraphInterruptActionSetter,\n} from \"../types/interrupt-action\";\nimport { SuggestionItem } from \"../utils/suggestions\";\n\n/**\n * Interface for the configuration of the Copilot API.\n */\nexport interface CopilotApiConfig {\n /**\n * The public API key for Copilot Cloud.\n */\n publicApiKey?: string;\n\n /**\n * The configuration for Copilot Cloud.\n */\n cloud?: CopilotCloudConfig;\n\n /**\n * The endpoint for the chat API.\n */\n chatApiEndpoint: string;\n\n /**\n * The endpoint for the Copilot transcribe audio service.\n */\n transcribeAudioUrl?: string;\n\n /**\n * The endpoint for the Copilot text to speech service.\n */\n textToSpeechUrl?: string;\n\n /**\n * additional headers to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'Authorization': 'Bearer your_token_here'\n * }\n * ```\n */\n headers: Record<string, string>;\n\n /**\n * Custom properties to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'user_id': 'user_id'\n * }\n * ```\n */\n properties?: Record<string, any>;\n\n /**\n * Indicates whether the user agent should send or receive cookies from the other domain\n * in the case of cross-origin requests.\n */\n credentials?: RequestCredentials;\n\n /**\n * Optional configuration for connecting to Model Context Protocol (MCP) servers.\n * This is typically derived from the CopilotKitProps and used internally.\n * @experimental\n */\n mcpServers?: Array<{ endpoint: string; apiKey?: string }>;\n}\n\nexport type InChatRenderFunction<TProps = ActionRenderProps<any> | CatchAllActionRenderProps<any>> =\n (props: TProps) => string | JSX.Element;\nexport type CoagentInChatRenderFunction = (\n props: CoAgentStateRenderProps<any>,\n) => string | JSX.Element | undefined | null;\n\nexport interface ChatComponentsCache {\n actions: Record<string, InChatRenderFunction | string>;\n coAgentStateRenders: Record<string, CoagentInChatRenderFunction | string>;\n}\n\nexport interface AgentSession {\n agentName: string;\n threadId?: string;\n nodeName?: string;\n}\n\nexport interface AuthState {\n status: \"authenticated\" | \"unauthenticated\";\n authHeaders: Record<string, string>;\n userId?: string;\n metadata?: Record<string, any>;\n}\n\nexport type ActionName = string;\nexport type ContextTree = Tree;\n\nexport interface CopilotContextParams {\n // function-calling\n actions: Record<string, FrontendAction<any>>;\n setAction: (id: string, action: FrontendAction<any>) => void;\n removeAction: (id: string) => void;\n\n // coagent actions\n coAgentStateRenders: Record<string, CoAgentStateRender<any>>;\n setCoAgentStateRender: (id: string, stateRender: CoAgentStateRender<any>) => void;\n removeCoAgentStateRender: (id: string) => void;\n\n chatComponentsCache: React.RefObject<ChatComponentsCache>;\n\n getFunctionCallHandler: (\n customEntryPoints?: Record<string, FrontendAction<any>>,\n ) => FunctionCallHandler;\n\n // text context\n addContext: (context: string, parentId?: string, categories?: string[]) => TreeNodeId;\n removeContext: (id: TreeNodeId) => void;\n getAllContext: () => Tree;\n getContextString: (documents: DocumentPointer[], categories: string[]) => string;\n\n // document context\n addDocumentContext: (documentPointer: DocumentPointer, categories?: string[]) => TreeNodeId;\n removeDocumentContext: (documentId: string) => void;\n getDocumentsContext: (categories: string[]) => DocumentPointer[];\n\n isLoading: boolean;\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration };\n addChatSuggestionConfiguration: (\n id: string,\n suggestion: CopilotChatSuggestionConfiguration,\n ) => void;\n removeChatSuggestionConfiguration: (id: string) => void;\n\n chatInstructions: string;\n setChatInstructions: React.Dispatch<React.SetStateAction<string>>;\n\n additionalInstructions?: string[];\n setAdditionalInstructions: React.Dispatch<React.SetStateAction<string[]>>;\n\n // api endpoints\n copilotApiConfig: CopilotApiConfig;\n\n showDevConsole: boolean;\n\n // agents\n coagentStates: Record<string, CoagentState>;\n setCoagentStates: React.Dispatch<React.SetStateAction<Record<string, CoagentState>>>;\n coagentStatesRef: React.RefObject<Record<string, CoagentState>>;\n setCoagentStatesWithRef: (\n value:\n | Record<string, CoagentState>\n | ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),\n ) => void;\n\n agentSession: AgentSession | null;\n setAgentSession: React.Dispatch<React.SetStateAction<AgentSession | null>>;\n\n agentLock: string | null;\n\n threadId: string;\n setThreadId: React.Dispatch<React.SetStateAction<string>>;\n\n runId: string | null;\n setRunId: React.Dispatch<React.SetStateAction<string | null>>;\n\n // The chat abort controller can be used to stop generation globally,\n // i.e. when using `stop()` from `useChat`\n chatAbortControllerRef: React.MutableRefObject<AbortController | null>;\n\n // runtime\n runtimeClient: CopilotRuntimeClient;\n\n /**\n * The forwarded parameters to use for the task.\n */\n forwardedParameters?: Partial<Pick<ForwardedParametersInput, \"temperature\">>;\n availableAgents: Agent[];\n\n /**\n * The auth states for the CopilotKit.\n */\n authStates_c?: Record<ActionName, AuthState>;\n setAuthStates_c?: React.Dispatch<React.SetStateAction<Record<ActionName, AuthState>>>;\n\n /**\n * The auth config for the CopilotKit.\n */\n authConfig_c?: {\n SignInComponent: React.ComponentType<{\n onSignInComplete: (authState: AuthState) => void;\n }>;\n };\n\n extensions: ExtensionsInput;\n setExtensions: React.Dispatch<React.SetStateAction<ExtensionsInput>>;\n langGraphInterruptAction: LangGraphInterruptAction | null;\n setLangGraphInterruptAction: LangGraphInterruptActionSetter;\n removeLangGraphInterruptAction: () => void;\n\n /**\n * Optional trace handler for comprehensive debugging and observability.\n */\n onError: CopilotErrorHandler;\n\n // banner error state\n bannerError: CopilotKitError | null;\n setBannerError: React.Dispatch<React.SetStateAction<CopilotKitError | null>>;\n // Internal error handlers\n // These are used to handle errors that occur during the execution of the chat.\n // They are not intended for use by the developer. A component can register itself an error listener to be activated somewhere else as needed\n internalErrorHandlers: Record<string, CopilotErrorHandler>;\n setInternalErrorHandler: (handler: Record<string, CopilotErrorHandler>) => void;\n removeInternalErrorHandler: (id: string) => void;\n}\n\nconst emptyCopilotContext: CopilotContextParams = {\n actions: {},\n setAction: () => {},\n removeAction: () => {},\n\n coAgentStateRenders: {},\n setCoAgentStateRender: () => {},\n removeCoAgentStateRender: () => {},\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getContextString: (documents: DocumentPointer[], categories: string[]) =>\n returnAndThrowInDebug(\"\"),\n addContext: () => \"\",\n removeContext: () => {},\n getAllContext: () => [],\n\n getFunctionCallHandler: () => returnAndThrowInDebug(async () => {}),\n\n isLoading: false,\n setIsLoading: () => returnAndThrowInDebug(false),\n\n chatInstructions: \"\",\n setChatInstructions: () => returnAndThrowInDebug(\"\"),\n\n additionalInstructions: [],\n setAdditionalInstructions: () => returnAndThrowInDebug([]),\n\n getDocumentsContext: (categories: string[]) => returnAndThrowInDebug([]),\n addDocumentContext: () => returnAndThrowInDebug(\"\"),\n removeDocumentContext: () => {},\n runtimeClient: {} as any,\n\n copilotApiConfig: new (class implements CopilotApiConfig {\n get chatApiEndpoint(): string {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n\n get headers(): Record<string, string> {\n return {};\n }\n get body(): Record<string, any> {\n return {};\n }\n })(),\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: () => {},\n removeChatSuggestionConfiguration: () => {},\n showDevConsole: false,\n coagentStates: {},\n setCoagentStates: () => {},\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: () => {},\n agentSession: null,\n setAgentSession: () => {},\n forwardedParameters: {},\n agentLock: null,\n threadId: \"\",\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n availableAgents: [],\n extensions: {},\n setExtensions: () => {},\n langGraphInterruptAction: null,\n setLangGraphInterruptAction: () => null,\n removeLangGraphInterruptAction: () => null,\n onError: () => {},\n bannerError: null,\n setBannerError: () => {},\n internalErrorHandlers: {},\n setInternalErrorHandler: () => {},\n removeInternalErrorHandler: () => {},\n};\n\nexport const CopilotContext = React.createContext<CopilotContextParams>(emptyCopilotContext);\n\nexport function useCopilotContext(): CopilotContextParams {\n const context = React.useContext(CopilotContext);\n if (context === emptyCopilotContext) {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n return context;\n}\n\nfunction returnAndThrowInDebug<T>(_value: T): T {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n}\n"],"mappings":"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","names":["import_react","React"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useMakeCopilotDocumentReadable
3
- } from "../chunk-CLMDRYEN.mjs";
4
- import "../chunk-TEMLWRRT.mjs";
3
+ } from "../chunk-CXDK6XA5.mjs";
4
+ import "../chunk-YHT6CWIY.mjs";
5
5
  import "../chunk-SKC7AJIV.mjs";
6
6
  export {
7
7
  useMakeCopilotDocumentReadable
@@ -1,4 +1,4 @@
1
- import { a as CopilotContextParams } from './copilot-context-256f9020.js';
1
+ import { a as CopilotContextParams } from './copilot-context-59740e82.js';
2
2
  import { Message } from '@copilotkit/runtime-client-gql';
3
3
  import React$1 from 'react';
4
4
  import { CopilotChatSuggestionConfiguration } from './types/chat-suggestion-configuration.js';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { CopilotKit, defaultCopilotContextCategories } from './components/copilot-provider/copilotkit.js';
2
2
  export { CopilotKitProps } from './components/copilot-provider/copilotkit-props.js';
3
- export { b as CoagentInChatRenderFunction, c as CopilotApiConfig, C as CopilotContext, a as CopilotContextParams, u as useCopilotContext } from './copilot-context-256f9020.js';
4
- export { C as CopilotMessagesContext, a as CopilotMessagesContextParams, S as SuggestionItem, r as reloadSuggestions, u as useCopilotMessagesContext } from './index-08c43df1.js';
3
+ export { b as CoagentInChatRenderFunction, c as CopilotApiConfig, C as CopilotContext, a as CopilotContextParams, u as useCopilotContext } from './copilot-context-59740e82.js';
4
+ export { C as CopilotMessagesContext, a as CopilotMessagesContextParams, S as SuggestionItem, r as reloadSuggestions, u as useCopilotMessagesContext } from './index-d1743abe.js';
5
5
  export { UseCopilotChatReturn, useCopilotChat } from './hooks/use-copilot-chat.js';
6
6
  export { UseCopilotChatOptions, UseCopilotChatOptions as UseCopilotChatOptions_c, UseCopilotChatReturn as UseCopilotChatReturn_c, useCopilotChat as useCopilotChatInternal } from './hooks/use-copilot-chat_internal.js';
7
7
  export { useCopilotChatHeadless_c } from './hooks/use-copilot-chat-headless_c.js';
package/dist/index.js CHANGED
@@ -188,9 +188,15 @@ var emptyCopilotContext = {
188
188
  langGraphInterruptAction: null,
189
189
  setLangGraphInterruptAction: () => null,
190
190
  removeLangGraphInterruptAction: () => null,
191
- onError: void 0,
191
+ onError: () => {
192
+ },
192
193
  bannerError: null,
193
194
  setBannerError: () => {
195
+ },
196
+ internalErrorHandlers: {},
197
+ setInternalErrorHandler: () => {
198
+ },
199
+ removeInternalErrorHandler: () => {
194
200
  }
195
201
  };
196
202
  var CopilotContext = import_react.default.createContext(emptyCopilotContext);
@@ -1139,8 +1145,6 @@ var useCopilotRuntimeClient = (options) => {
1139
1145
  const _a = options, { showDevConsole, onError } = _a, runtimeOptions = __objRest(_a, ["showDevConsole", "onError"]);
1140
1146
  const lastStructuredErrorRef = (0, import_react7.useRef)(null);
1141
1147
  const traceUIError = (error, originalError) => __async(void 0, null, function* () {
1142
- if (!onError || !runtimeOptions.publicApiKey)
1143
- return;
1144
1148
  try {
1145
1149
  const errorEvent = {
1146
1150
  type: "error",
@@ -2875,13 +2879,51 @@ ${nonDocumentStrings}`;
2875
2879
  }, {});
2876
2880
  return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared12.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
2877
2881
  }, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);
2882
+ const [internalErrorHandlers, _setInternalErrorHandler] = (0, import_react12.useState)({});
2883
+ const setInternalErrorHandler = (0, import_react12.useCallback)((handler) => {
2884
+ _setInternalErrorHandler((prev) => __spreadValues(__spreadValues({}, prev), handler));
2885
+ }, []);
2886
+ const removeInternalErrorHandler = (0, import_react12.useCallback)((key) => {
2887
+ _setInternalErrorHandler((prev) => {
2888
+ const _a2 = prev, { [key]: _removed } = _a2, rest = __objRest(_a2, [__restKey(key)]);
2889
+ return rest;
2890
+ });
2891
+ }, []);
2892
+ const onErrorRef = (0, import_react12.useRef)(props.onError);
2893
+ (0, import_react12.useEffect)(() => {
2894
+ onErrorRef.current = props.onError;
2895
+ }, [props.onError]);
2896
+ const internalHandlersRef = (0, import_react12.useRef)({});
2897
+ (0, import_react12.useEffect)(() => {
2898
+ internalHandlersRef.current = internalErrorHandlers;
2899
+ }, [internalErrorHandlers]);
2900
+ const handleErrors = (0, import_react12.useCallback)(
2901
+ (error) => __async(this, null, function* () {
2902
+ if (copilotApiConfig.publicApiKey && onErrorRef.current) {
2903
+ try {
2904
+ yield onErrorRef.current(error);
2905
+ } catch (e) {
2906
+ console.error("Error in public onError handler:", e);
2907
+ }
2908
+ }
2909
+ const handlers = Object.values(internalHandlersRef.current);
2910
+ yield Promise.all(
2911
+ handlers.map(
2912
+ (h) => Promise.resolve(h(error)).catch(
2913
+ (e) => console.error("Error in internal error handler:", e)
2914
+ )
2915
+ )
2916
+ );
2917
+ }),
2918
+ [copilotApiConfig.publicApiKey]
2919
+ );
2878
2920
  const runtimeClient = useCopilotRuntimeClient({
2879
2921
  url: copilotApiConfig.chatApiEndpoint,
2880
2922
  publicApiKey,
2881
2923
  headers,
2882
2924
  credentials: copilotApiConfig.credentials,
2883
2925
  showDevConsole: shouldShowDevConsole(props.showDevConsole),
2884
- onError: props.onError
2926
+ onError: handleErrors
2885
2927
  });
2886
2928
  const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react12.useState)({});
2887
2929
  const addChatSuggestionConfiguration = (0, import_react12.useCallback)(
@@ -3067,9 +3109,12 @@ ${nonDocumentStrings}`;
3067
3109
  langGraphInterruptAction,
3068
3110
  setLangGraphInterruptAction,
3069
3111
  removeLangGraphInterruptAction,
3070
- onError: props.onError,
3071
3112
  bannerError,
3072
- setBannerError
3113
+ setBannerError,
3114
+ onError: handleErrors,
3115
+ internalErrorHandlers,
3116
+ setInternalErrorHandler,
3117
+ removeInternalErrorHandler
3073
3118
  },
3074
3119
  children: [
3075
3120
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MessagesTapProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(CopilotMessages, { children: [
@@ -3201,8 +3246,6 @@ function useChat(options) {
3201
3246
  const { setBannerError } = useToast();
3202
3247
  const { onError } = useCopilotContext();
3203
3248
  const traceUIError = (error, originalError) => __async(this, null, function* () {
3204
- if (!onError || !(copilotConfig == null ? void 0 : copilotConfig.publicApiKey))
3205
- return;
3206
3249
  try {
3207
3250
  const traceEvent = {
3208
3251
  type: "error",
@@ -3241,7 +3284,8 @@ function useChat(options) {
3241
3284
  publicApiKey: copilotConfig.publicApiKey,
3242
3285
  headers,
3243
3286
  credentials: copilotConfig.credentials,
3244
- showDevConsole
3287
+ showDevConsole,
3288
+ onError
3245
3289
  });
3246
3290
  const pendingAppendsRef = (0, import_react13.useRef)([]);
3247
3291
  const runChatCompletion = useAsyncCallback(
@@ -4502,7 +4546,7 @@ var import_react21 = require("react");
4502
4546
  var import_shared18 = require("@copilotkit/shared");
4503
4547
  function useCoAgent(options) {
4504
4548
  const context = useCopilotContext();
4505
- const { availableAgents } = context;
4549
+ const { availableAgents, onError } = context;
4506
4550
  const { setBannerError } = useToast();
4507
4551
  const lastLoadedThreadId = (0, import_react21.useRef)();
4508
4552
  const lastLoadedState = (0, import_react21.useRef)();
@@ -4527,7 +4571,8 @@ function useCoAgent(options) {
4527
4571
  publicApiKey: copilotApiConfig.publicApiKey,
4528
4572
  headers,
4529
4573
  credentials: copilotApiConfig.credentials,
4530
- showDevConsole: context.showDevConsole
4574
+ showDevConsole: context.showDevConsole,
4575
+ onError
4531
4576
  });
4532
4577
  const setState = (0, import_react21.useCallback)(
4533
4578
  (newState) => {