@copilotkit/react-core 1.9.2-next.1 → 1.9.2-next.11

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 (168) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/{chunk-CCESTGAM.mjs → chunk-3OQM3NEK.mjs} +2 -2
  3. package/dist/{chunk-2FW7HH6W.mjs → chunk-3YHYWAHK.mjs} +3 -3
  4. package/dist/{chunk-RUY6MLHA.mjs → chunk-55QZ2SVJ.mjs} +36 -6
  5. package/dist/chunk-55QZ2SVJ.mjs.map +1 -0
  6. package/dist/chunk-57K2ZJ5F.mjs +348 -0
  7. package/dist/chunk-57K2ZJ5F.mjs.map +1 -0
  8. package/dist/{chunk-UIT6QMUJ.mjs → chunk-7BYXCFPB.mjs} +5 -5
  9. package/dist/{chunk-HJP2RX5R.mjs → chunk-AFDL5JI3.mjs} +82 -15
  10. package/dist/chunk-AFDL5JI3.mjs.map +1 -0
  11. package/dist/{chunk-SGLWMQ2J.mjs → chunk-BEDNUHSA.mjs} +15 -12
  12. package/dist/chunk-BEDNUHSA.mjs.map +1 -0
  13. package/dist/{chunk-Q5D5XQFA.mjs → chunk-CMQV4XNY.mjs} +2 -2
  14. package/dist/{chunk-LDACFA2B.mjs → chunk-EF5BNM34.mjs} +3 -3
  15. package/dist/{chunk-UHQMV2CE.mjs → chunk-ERXWDCY6.mjs} +2 -2
  16. package/dist/{chunk-NNSXCFQO.mjs → chunk-JDEWNLNP.mjs} +41 -7
  17. package/dist/chunk-JDEWNLNP.mjs.map +1 -0
  18. package/dist/{chunk-C6F6EQNA.mjs → chunk-JPMIAGI6.mjs} +2 -2
  19. package/dist/{chunk-T42PN5VN.mjs → chunk-NQVCZQ5T.mjs} +4 -4
  20. package/dist/{chunk-YZDRMIOM.mjs → chunk-OIPDW3UR.mjs} +4 -4
  21. package/dist/{chunk-XY5BN4HZ.mjs → chunk-RYREGU4E.mjs} +11 -8
  22. package/dist/{chunk-XY5BN4HZ.mjs.map → chunk-RYREGU4E.mjs.map} +1 -1
  23. package/dist/{chunk-QQZLIEXK.mjs → chunk-SJJNFYGQ.mjs} +3 -3
  24. package/dist/{chunk-YDENFEKA.mjs → chunk-U4LIYN3I.mjs} +2 -2
  25. package/dist/{chunk-LZDDYZEY.mjs → chunk-UBNRUXEK.mjs} +2 -2
  26. package/dist/{chunk-6KGEF242.mjs → chunk-XFOTNHYA.mjs} +3 -2
  27. package/dist/chunk-XFOTNHYA.mjs.map +1 -0
  28. package/dist/chunk-YAF2LATQ.mjs +310 -0
  29. package/dist/chunk-YAF2LATQ.mjs.map +1 -0
  30. package/dist/components/copilot-provider/copilot-messages.js +39 -4
  31. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  32. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  33. package/dist/components/copilot-provider/copilotkit-props.d.ts +21 -2
  34. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  35. package/dist/components/copilot-provider/copilotkit.d.ts +1 -1
  36. package/dist/components/copilot-provider/copilotkit.js +330 -240
  37. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  38. package/dist/components/copilot-provider/copilotkit.mjs +10 -10
  39. package/dist/components/copilot-provider/index.d.ts +1 -1
  40. package/dist/components/copilot-provider/index.js +330 -240
  41. package/dist/components/copilot-provider/index.js.map +1 -1
  42. package/dist/components/copilot-provider/index.mjs +10 -10
  43. package/dist/components/error-boundary/error-boundary.js +135 -146
  44. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  45. package/dist/components/error-boundary/error-boundary.mjs +4 -4
  46. package/dist/components/error-boundary/error-utils.js.map +1 -1
  47. package/dist/components/error-boundary/error-utils.mjs +2 -2
  48. package/dist/components/index.d.ts +1 -1
  49. package/dist/components/index.js +330 -240
  50. package/dist/components/index.js.map +1 -1
  51. package/dist/components/index.mjs +10 -10
  52. package/dist/components/toast/toast-provider.js +118 -85
  53. package/dist/components/toast/toast-provider.js.map +1 -1
  54. package/dist/components/toast/toast-provider.mjs +1 -1
  55. package/dist/components/usage-banner.js +135 -146
  56. package/dist/components/usage-banner.js.map +1 -1
  57. package/dist/components/usage-banner.mjs +1 -1
  58. package/dist/context/copilot-context.d.ts +1 -1
  59. package/dist/context/copilot-context.js +2 -1
  60. package/dist/context/copilot-context.js.map +1 -1
  61. package/dist/context/copilot-context.mjs +1 -1
  62. package/dist/context/index.d.ts +1 -1
  63. package/dist/context/index.js +2 -1
  64. package/dist/context/index.js.map +1 -1
  65. package/dist/context/index.mjs +1 -1
  66. package/dist/{copilot-context-f9b2b4c3.d.ts → copilot-context-3da805ab.d.ts} +5 -1
  67. package/dist/hooks/index.d.ts +1 -1
  68. package/dist/hooks/index.js +108 -12
  69. package/dist/hooks/index.js.map +1 -1
  70. package/dist/hooks/index.mjs +32 -32
  71. package/dist/hooks/use-chat.d.ts +1 -1
  72. package/dist/hooks/use-chat.js +105 -12
  73. package/dist/hooks/use-chat.js.map +1 -1
  74. package/dist/hooks/use-chat.mjs +6 -6
  75. package/dist/hooks/use-coagent-state-render.js +2 -1
  76. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  77. package/dist/hooks/use-coagent-state-render.mjs +3 -3
  78. package/dist/hooks/use-coagent.d.ts +1 -1
  79. package/dist/hooks/use-coagent.js +108 -12
  80. package/dist/hooks/use-coagent.js.map +1 -1
  81. package/dist/hooks/use-coagent.mjs +14 -14
  82. package/dist/hooks/use-copilot-action.js +2 -1
  83. package/dist/hooks/use-copilot-action.js.map +1 -1
  84. package/dist/hooks/use-copilot-action.mjs +4 -4
  85. package/dist/hooks/use-copilot-additional-instructions.js +2 -1
  86. package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
  87. package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
  88. package/dist/hooks/use-copilot-authenticated-action.js +2 -1
  89. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  90. package/dist/hooks/use-copilot-authenticated-action.mjs +5 -5
  91. package/dist/hooks/use-copilot-chat.d.ts +1 -1
  92. package/dist/hooks/use-copilot-chat.js +105 -12
  93. package/dist/hooks/use-copilot-chat.js.map +1 -1
  94. package/dist/hooks/use-copilot-chat.mjs +13 -13
  95. package/dist/hooks/use-copilot-readable.js +2 -1
  96. package/dist/hooks/use-copilot-readable.js.map +1 -1
  97. package/dist/hooks/use-copilot-readable.mjs +2 -2
  98. package/dist/hooks/use-copilot-runtime-client.d.ts +2 -0
  99. package/dist/hooks/use-copilot-runtime-client.js +52 -2
  100. package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
  101. package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
  102. package/dist/hooks/use-langgraph-interrupt-render.js +2 -1
  103. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
  104. package/dist/hooks/use-langgraph-interrupt-render.mjs +2 -2
  105. package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
  106. package/dist/hooks/use-langgraph-interrupt.js +105 -12
  107. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  108. package/dist/hooks/use-langgraph-interrupt.mjs +14 -14
  109. package/dist/hooks/use-make-copilot-document-readable.js +2 -1
  110. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  111. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  112. package/dist/index.d.ts +1 -1
  113. package/dist/index.js +404 -249
  114. package/dist/index.js.map +1 -1
  115. package/dist/index.mjs +33 -33
  116. package/dist/lib/copilot-task.d.ts +1 -1
  117. package/dist/lib/copilot-task.js.map +1 -1
  118. package/dist/lib/copilot-task.mjs +11 -11
  119. package/dist/lib/index.d.ts +1 -1
  120. package/dist/lib/index.js.map +1 -1
  121. package/dist/lib/index.mjs +11 -11
  122. package/dist/types/interrupt-action.d.ts +1 -1
  123. package/dist/utils/extract.d.ts +1 -1
  124. package/dist/utils/extract.js.map +1 -1
  125. package/dist/utils/extract.mjs +10 -10
  126. package/dist/utils/index.d.ts +1 -1
  127. package/dist/utils/index.js.map +1 -1
  128. package/dist/utils/index.mjs +10 -10
  129. package/jest.config.js +7 -3
  130. package/package.json +4 -3
  131. package/src/components/copilot-provider/__tests__/copilotkit-trace.test.tsx +75 -0
  132. package/src/components/copilot-provider/copilot-messages.tsx +46 -5
  133. package/src/components/copilot-provider/copilotkit-props.tsx +21 -0
  134. package/src/components/copilot-provider/copilotkit.tsx +5 -1
  135. package/src/components/toast/toast-provider.tsx +49 -24
  136. package/src/components/usage-banner.tsx +144 -147
  137. package/src/context/copilot-context.tsx +7 -1
  138. package/src/hooks/use-chat.ts +106 -6
  139. package/src/hooks/use-coagent.ts +5 -0
  140. package/src/hooks/use-copilot-runtime-client.ts +41 -39
  141. package/tsconfig.json +1 -8
  142. package/tsup.config.ts +6 -6
  143. package/dist/chunk-6KGEF242.mjs.map +0 -1
  144. package/dist/chunk-HD2GE3DK.mjs +0 -359
  145. package/dist/chunk-HD2GE3DK.mjs.map +0 -1
  146. package/dist/chunk-HJP2RX5R.mjs.map +0 -1
  147. package/dist/chunk-NNSXCFQO.mjs.map +0 -1
  148. package/dist/chunk-RUY6MLHA.mjs.map +0 -1
  149. package/dist/chunk-SGLWMQ2J.mjs.map +0 -1
  150. package/dist/chunk-VRXANACV.mjs +0 -277
  151. package/dist/chunk-VRXANACV.mjs.map +0 -1
  152. package/dist/utils/utils.test.d.ts +0 -2
  153. package/dist/utils/utils.test.js +0 -9
  154. package/dist/utils/utils.test.js.map +0 -1
  155. package/dist/utils/utils.test.mjs +0 -7
  156. package/dist/utils/utils.test.mjs.map +0 -1
  157. /package/dist/{chunk-CCESTGAM.mjs.map → chunk-3OQM3NEK.mjs.map} +0 -0
  158. /package/dist/{chunk-2FW7HH6W.mjs.map → chunk-3YHYWAHK.mjs.map} +0 -0
  159. /package/dist/{chunk-UIT6QMUJ.mjs.map → chunk-7BYXCFPB.mjs.map} +0 -0
  160. /package/dist/{chunk-Q5D5XQFA.mjs.map → chunk-CMQV4XNY.mjs.map} +0 -0
  161. /package/dist/{chunk-LDACFA2B.mjs.map → chunk-EF5BNM34.mjs.map} +0 -0
  162. /package/dist/{chunk-UHQMV2CE.mjs.map → chunk-ERXWDCY6.mjs.map} +0 -0
  163. /package/dist/{chunk-C6F6EQNA.mjs.map → chunk-JPMIAGI6.mjs.map} +0 -0
  164. /package/dist/{chunk-T42PN5VN.mjs.map → chunk-NQVCZQ5T.mjs.map} +0 -0
  165. /package/dist/{chunk-YZDRMIOM.mjs.map → chunk-OIPDW3UR.mjs.map} +0 -0
  166. /package/dist/{chunk-QQZLIEXK.mjs.map → chunk-SJJNFYGQ.mjs.map} +0 -0
  167. /package/dist/{chunk-YDENFEKA.mjs.map → chunk-U4LIYN3I.mjs.map} +0 -0
  168. /package/dist/{chunk-LZDDYZEY.mjs.map → chunk-UBNRUXEK.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,83 @@
1
1
  # ui
2
2
 
3
+ ## 1.9.2-next.11
4
+
5
+ ### Patch Changes
6
+
7
+ - @copilotkit/runtime-client-gql@1.9.2-next.11
8
+ - @copilotkit/shared@1.9.2-next.11
9
+
10
+ ## 1.9.2-next.10
11
+
12
+ ### Patch Changes
13
+
14
+ - @copilotkit/runtime-client-gql@1.9.2-next.10
15
+ - @copilotkit/shared@1.9.2-next.10
16
+
17
+ ## 1.9.2-next.9
18
+
19
+ ### Patch Changes
20
+
21
+ - 1d1c51d: - feat: surface all errors in structured format
22
+ - Updated dependencies [1d1c51d]
23
+ - @copilotkit/runtime-client-gql@1.9.2-next.9
24
+ - @copilotkit/shared@1.9.2-next.9
25
+
26
+ ## 1.9.2-next.8
27
+
28
+ ### Patch Changes
29
+
30
+ - @copilotkit/runtime-client-gql@1.9.2-next.8
31
+ - @copilotkit/shared@1.9.2-next.8
32
+
33
+ ## 1.9.2-next.7
34
+
35
+ ### Patch Changes
36
+
37
+ - @copilotkit/runtime-client-gql@1.9.2-next.7
38
+ - @copilotkit/shared@1.9.2-next.7
39
+
40
+ ## 1.9.2-next.6
41
+
42
+ ### Patch Changes
43
+
44
+ - @copilotkit/runtime-client-gql@1.9.2-next.6
45
+ - @copilotkit/shared@1.9.2-next.6
46
+
47
+ ## 1.9.2-next.5
48
+
49
+ ### Patch Changes
50
+
51
+ - @copilotkit/runtime-client-gql@1.9.2-next.5
52
+ - @copilotkit/shared@1.9.2-next.5
53
+
54
+ ## 1.9.2-next.4
55
+
56
+ ### Patch Changes
57
+
58
+ - 9169ad7: - feat: add onTrace handler for runtime and UI error/event tracking
59
+ - 9169ad7: - feat: add onTrace handler for comprehensive debugging and observability - Add CopilotTraceEvent interfaces with rich debugging context, implement runtime-side tracing with publicApiKey gating, add UI-side error tracing, include comprehensive test coverage, and fix tsup build config to exclude test files
60
+ - fix: extract publicApiKey for all requests + trace GraphQL errors
61
+ - Updated dependencies [9169ad7]
62
+ - Updated dependencies [9169ad7]
63
+ - @copilotkit/shared@1.9.2-next.4
64
+ - @copilotkit/runtime-client-gql@1.9.2-next.4
65
+
66
+ ## 1.9.2-next.3
67
+
68
+ ### Patch Changes
69
+
70
+ - 35537f1: - fix: memoize nested components to not rerender when content changes
71
+ - @copilotkit/runtime-client-gql@1.9.2-next.3
72
+ - @copilotkit/shared@1.9.2-next.3
73
+
74
+ ## 1.9.2-next.2
75
+
76
+ ### Patch Changes
77
+
78
+ - @copilotkit/runtime-client-gql@1.9.2-next.2
79
+ - @copilotkit/shared@1.9.2-next.2
80
+
3
81
  ## 1.9.2-next.1
4
82
 
5
83
  ### Patch Changes
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-O7ARI5CV.mjs";
4
4
  import {
5
5
  useToast
6
- } from "./chunk-VRXANACV.mjs";
6
+ } from "./chunk-YAF2LATQ.mjs";
7
7
  import {
8
8
  __async
9
9
  } from "./chunk-SKC7AJIV.mjs";
@@ -99,4 +99,4 @@ export {
99
99
  useErrorToast,
100
100
  useAsyncCallback
101
101
  };
102
- //# sourceMappingURL=chunk-CCESTGAM.mjs.map
102
+ //# sourceMappingURL=chunk-3OQM3NEK.mjs.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useToast
3
- } from "./chunk-VRXANACV.mjs";
3
+ } from "./chunk-YAF2LATQ.mjs";
4
4
  import {
5
5
  CopilotContext
6
- } from "./chunk-6KGEF242.mjs";
6
+ } from "./chunk-XFOTNHYA.mjs";
7
7
 
8
8
  // src/hooks/use-coagent-state-render.ts
9
9
  import { useRef, useContext, useEffect } from "react";
@@ -85,4 +85,4 @@ function useCoAgentStateRender(action, dependencies) {
85
85
  export {
86
86
  useCoAgentStateRender
87
87
  };
88
- //# sourceMappingURL=chunk-2FW7HH6W.mjs.map
88
+ //# sourceMappingURL=chunk-3YHYWAHK.mjs.map
@@ -3,8 +3,9 @@ import {
3
3
  } from "./chunk-GFJW4RIM.mjs";
4
4
  import {
5
5
  useToast
6
- } from "./chunk-VRXANACV.mjs";
6
+ } from "./chunk-YAF2LATQ.mjs";
7
7
  import {
8
+ __async,
8
9
  __objRest,
9
10
  __spreadProps,
10
11
  __spreadValues
@@ -21,13 +22,39 @@ import {
21
22
  CopilotKitRemoteEndpointDiscoveryError,
22
23
  CopilotKitAgentDiscoveryError,
23
24
  CopilotKitError,
24
- CopilotKitErrorCode,
25
- ERROR_CONFIG
25
+ CopilotKitErrorCode
26
26
  } from "@copilotkit/shared";
27
27
  var useCopilotRuntimeClient = (options) => {
28
28
  const { setBannerError } = useToast();
29
- const _a = options, { showDevConsole } = _a, runtimeOptions = __objRest(_a, ["showDevConsole"]);
29
+ const _a = options, { showDevConsole, onTrace } = _a, runtimeOptions = __objRest(_a, ["showDevConsole", "onTrace"]);
30
30
  const lastStructuredErrorRef = useRef(null);
31
+ const traceUIError = (error, originalError) => __async(void 0, null, function* () {
32
+ if (!onTrace || !runtimeOptions.publicApiKey)
33
+ return;
34
+ try {
35
+ const traceEvent = {
36
+ type: "error",
37
+ timestamp: Date.now(),
38
+ context: {
39
+ source: "ui",
40
+ request: {
41
+ operation: "runtimeClient",
42
+ url: runtimeOptions.url,
43
+ startTime: Date.now()
44
+ },
45
+ technical: {
46
+ environment: "browser",
47
+ userAgent: typeof navigator !== "undefined" ? navigator.userAgent : void 0,
48
+ stackTrace: originalError instanceof Error ? originalError.stack : void 0
49
+ }
50
+ },
51
+ error
52
+ };
53
+ yield onTrace(traceEvent);
54
+ } catch (traceError) {
55
+ console.error("Error in onTrace handler:", traceError);
56
+ }
57
+ });
31
58
  const runtimeClient = useMemo(() => {
32
59
  return new CopilotRuntimeClient(__spreadProps(__spreadValues({}, runtimeOptions), {
33
60
  handleGQLErrors: (error) => {
@@ -55,12 +82,14 @@ var useCopilotRuntimeClient = (options) => {
55
82
  const ckError = createStructuredError(gqlError);
56
83
  if (ckError) {
57
84
  setBannerError(ckError);
85
+ traceUIError(ckError, gqlError);
58
86
  } else {
59
87
  const fallbackError = new CopilotKitError({
60
88
  message: gqlError.message,
61
89
  code: CopilotKitErrorCode.UNKNOWN
62
90
  });
63
91
  setBannerError(fallbackError);
92
+ traceUIError(fallbackError, gqlError);
64
93
  }
65
94
  };
66
95
  graphQLErrors.forEach(routeError);
@@ -74,6 +103,7 @@ var useCopilotRuntimeClient = (options) => {
74
103
  code: CopilotKitErrorCode.UNKNOWN
75
104
  });
76
105
  setBannerError(fallbackError);
106
+ traceUIError(fallbackError, error);
77
107
  }
78
108
  }
79
109
  },
@@ -86,7 +116,7 @@ var useCopilotRuntimeClient = (options) => {
86
116
  setBannerError(warningError);
87
117
  }
88
118
  }));
89
- }, [runtimeOptions, setBannerError, showDevConsole]);
119
+ }, [runtimeOptions, setBannerError, showDevConsole, onTrace]);
90
120
  return runtimeClient;
91
121
  };
92
122
  function createStructuredError(gqlError) {
@@ -116,4 +146,4 @@ function createStructuredError(gqlError) {
116
146
  export {
117
147
  useCopilotRuntimeClient
118
148
  };
119
- //# sourceMappingURL=chunk-RUY6MLHA.mjs.map
149
+ //# sourceMappingURL=chunk-55QZ2SVJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-copilot-runtime-client.ts"],"sourcesContent":["import {\n CopilotRuntimeClient,\n CopilotRuntimeClientOptions,\n GraphQLError,\n} from \"@copilotkit/runtime-client-gql\";\nimport { useToast } from \"../components/toast/toast-provider\";\nimport { useMemo, useRef } from \"react\";\nimport {\n ErrorVisibility,\n CopilotKitApiDiscoveryError,\n CopilotKitRemoteEndpointDiscoveryError,\n CopilotKitAgentDiscoveryError,\n CopilotKitError,\n CopilotKitErrorCode,\n ERROR_CONFIG,\n CopilotTraceHandler,\n CopilotTraceEvent,\n} from \"@copilotkit/shared\";\nimport { shouldShowDevConsole } from \"../utils/dev-console\";\n\nexport interface CopilotRuntimeClientHookOptions extends CopilotRuntimeClientOptions {\n showDevConsole?: boolean;\n onTrace?: CopilotTraceHandler;\n}\n\nexport const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions) => {\n const { setBannerError } = useToast();\n const { showDevConsole, onTrace, ...runtimeOptions } = options;\n\n // Deduplication state for structured errors\n const lastStructuredErrorRef = useRef<{ message: string; timestamp: number } | null>(null);\n\n // Helper function to trace UI errors\n const traceUIError = async (error: CopilotKitError, originalError?: any) => {\n // Just check if onTrace and publicApiKey are defined\n if (!onTrace || !runtimeOptions.publicApiKey) return;\n\n try {\n const traceEvent: CopilotTraceEvent = {\n type: \"error\",\n timestamp: Date.now(),\n context: {\n source: \"ui\",\n request: {\n operation: \"runtimeClient\",\n url: runtimeOptions.url,\n startTime: Date.now(),\n },\n technical: {\n environment: \"browser\",\n userAgent: typeof navigator !== \"undefined\" ? navigator.userAgent : undefined,\n stackTrace: originalError instanceof Error ? originalError.stack : undefined,\n },\n },\n error,\n };\n await onTrace(traceEvent);\n } catch (traceError) {\n console.error(\"Error in onTrace handler:\", traceError);\n }\n };\n\n const runtimeClient = useMemo(() => {\n return new CopilotRuntimeClient({\n ...runtimeOptions,\n handleGQLErrors: (error) => {\n if ((error as any).graphQLErrors?.length) {\n const graphQLErrors = (error as any).graphQLErrors as GraphQLError[];\n\n // Route all errors to banners for consistent UI\n const routeError = (gqlError: GraphQLError) => {\n const extensions = gqlError.extensions;\n const visibility = extensions?.visibility as ErrorVisibility;\n const isDev = shouldShowDevConsole(showDevConsole ?? false);\n\n // Silent errors - just log\n if (visibility === ErrorVisibility.SILENT) {\n console.error(\"CopilotKit Silent Error:\", gqlError.message);\n return;\n }\n\n if (!isDev) {\n console.error(\"CopilotKit Error (hidden in production):\", gqlError.message);\n return;\n }\n\n // All errors (including DEV_ONLY) show as banners for consistency\n // Deduplicate to prevent spam\n const now = Date.now();\n const errorMessage = gqlError.message;\n if (\n lastStructuredErrorRef.current &&\n lastStructuredErrorRef.current.message === errorMessage &&\n now - lastStructuredErrorRef.current.timestamp < 150\n ) {\n return; // Skip duplicate\n }\n lastStructuredErrorRef.current = { message: errorMessage, timestamp: now };\n\n const ckError = createStructuredError(gqlError);\n if (ckError) {\n setBannerError(ckError);\n // Trace the error\n traceUIError(ckError, gqlError);\n } else {\n // Fallback for unstructured errors\n const fallbackError = new CopilotKitError({\n message: gqlError.message,\n code: CopilotKitErrorCode.UNKNOWN,\n });\n setBannerError(fallbackError);\n // Trace the fallback error\n traceUIError(fallbackError, gqlError);\n }\n };\n\n // Process all errors as banners\n graphQLErrors.forEach(routeError);\n } else {\n const isDev = shouldShowDevConsole(showDevConsole ?? false);\n if (!isDev) {\n console.error(\"CopilotKit Error (hidden in production):\", error);\n } else {\n // Route non-GraphQL errors to banner as well\n const fallbackError = new CopilotKitError({\n message: error?.message || String(error),\n code: CopilotKitErrorCode.UNKNOWN,\n });\n setBannerError(fallbackError);\n // Trace the non-GraphQL error\n traceUIError(fallbackError, error);\n }\n }\n },\n handleGQLWarning: (message: string) => {\n console.warn(message);\n // Show warnings as banners too for consistency\n const warningError = new CopilotKitError({\n message,\n code: CopilotKitErrorCode.UNKNOWN,\n });\n setBannerError(warningError);\n },\n });\n }, [runtimeOptions, setBannerError, showDevConsole, onTrace]);\n\n return runtimeClient;\n};\n\n// Create appropriate structured error from GraphQL error\nfunction createStructuredError(gqlError: GraphQLError): CopilotKitError | null {\n const extensions = gqlError.extensions;\n const originalError = extensions?.originalError as any;\n const message = originalError?.message || gqlError.message;\n const code = extensions?.code as CopilotKitErrorCode;\n\n if (code) {\n return new CopilotKitError({ message, code });\n }\n\n // Legacy error detection by stack trace\n if (originalError?.stack?.includes(\"CopilotApiDiscoveryError\")) {\n return new CopilotKitApiDiscoveryError({ message });\n }\n if (originalError?.stack?.includes(\"CopilotKitRemoteEndpointDiscoveryError\")) {\n return new CopilotKitRemoteEndpointDiscoveryError({ message });\n }\n if (originalError?.stack?.includes(\"CopilotKitAgentDiscoveryError\")) {\n return new CopilotKitAgentDiscoveryError({\n agentName: \"\",\n availableAgents: [],\n });\n }\n\n return null;\n}\n"],"mappings":"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","names":["_a"]}
@@ -0,0 +1,348 @@
1
+ // src/components/usage-banner.tsx
2
+ import { Severity, ERROR_NAMES, ErrorVisibility } from "@copilotkit/shared";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ var defaultIcons = {
5
+ [Severity.CRITICAL]: /* @__PURE__ */ jsxs(
6
+ "svg",
7
+ {
8
+ viewBox: "0 0 24 24",
9
+ width: "16",
10
+ height: "16",
11
+ stroke: "currentColor",
12
+ strokeWidth: "2.5",
13
+ fill: "none",
14
+ strokeLinecap: "round",
15
+ strokeLinejoin: "round",
16
+ children: [
17
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
18
+ /* @__PURE__ */ jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
19
+ /* @__PURE__ */ jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
20
+ ]
21
+ }
22
+ ),
23
+ [Severity.WARNING]: /* @__PURE__ */ jsxs(
24
+ "svg",
25
+ {
26
+ viewBox: "0 0 24 24",
27
+ width: "16",
28
+ height: "16",
29
+ stroke: "currentColor",
30
+ strokeWidth: "2.5",
31
+ fill: "none",
32
+ strokeLinecap: "round",
33
+ strokeLinejoin: "round",
34
+ children: [
35
+ /* @__PURE__ */ jsx("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }),
36
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
37
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
38
+ ]
39
+ }
40
+ ),
41
+ [Severity.INFO]: /* @__PURE__ */ jsxs(
42
+ "svg",
43
+ {
44
+ viewBox: "0 0 24 24",
45
+ width: "16",
46
+ height: "16",
47
+ stroke: "currentColor",
48
+ strokeWidth: "2.5",
49
+ fill: "none",
50
+ strokeLinecap: "round",
51
+ strokeLinejoin: "round",
52
+ children: [
53
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
54
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
55
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
56
+ ]
57
+ }
58
+ )
59
+ };
60
+ function UsageBanner({
61
+ severity = Severity.CRITICAL,
62
+ message = "",
63
+ icon,
64
+ onClose,
65
+ actions
66
+ }) {
67
+ if (!message || !severity) {
68
+ return null;
69
+ }
70
+ const parseMessage = (rawMessage) => {
71
+ if (rawMessage.toLowerCase().includes("authentication") || rawMessage.toLowerCase().includes("api key")) {
72
+ return "Authentication failed. Please check your API key.";
73
+ }
74
+ if (rawMessage.toLowerCase().includes("rate limit")) {
75
+ return "Rate limit exceeded. Please try again later.";
76
+ }
77
+ if (rawMessage.toLowerCase().includes("checkpointer")) {
78
+ return "Agent configuration error. Please check your setup.";
79
+ }
80
+ let cleanMessage2 = rawMessage;
81
+ cleanMessage2 = cleanMessage2.split(" - ")[0];
82
+ cleanMessage2 = cleanMessage2.split(": Error code")[0];
83
+ cleanMessage2 = cleanMessage2.split(": 401")[0];
84
+ cleanMessage2 = cleanMessage2.split(": 403")[0];
85
+ cleanMessage2 = cleanMessage2.split(": 404")[0];
86
+ cleanMessage2 = cleanMessage2.split(": 500")[0];
87
+ cleanMessage2 = cleanMessage2.replace(/See more:.*$/g, "").trim();
88
+ if (cleanMessage2.includes("{") || cleanMessage2.includes("'") || cleanMessage2.length > 60) {
89
+ return "Configuration error. Please check your setup.";
90
+ }
91
+ return cleanMessage2 || "An error occurred. Please check your configuration.";
92
+ };
93
+ const cleanMessage = parseMessage(message);
94
+ const Icon = icon || defaultIcons[severity];
95
+ const themeConfigs = {
96
+ [Severity.INFO]: {
97
+ bg: "rgba(239, 246, 255, 0.95)",
98
+ border: "#93c5fd",
99
+ text: "#1e40af",
100
+ icon: "#3b82f6",
101
+ primaryBtn: "#3b82f6",
102
+ primaryBtnHover: "#2563eb"
103
+ },
104
+ [Severity.WARNING]: {
105
+ bg: "rgba(255, 251, 235, 0.95)",
106
+ border: "#fbbf24",
107
+ text: "#92400e",
108
+ icon: "#f59e0b",
109
+ primaryBtn: "#f59e0b",
110
+ primaryBtnHover: "#d97706"
111
+ },
112
+ [Severity.CRITICAL]: {
113
+ bg: "rgba(254, 242, 242, 0.95)",
114
+ border: "#f87171",
115
+ text: "#991b1b",
116
+ icon: "#ef4444",
117
+ primaryBtn: "#ef4444",
118
+ primaryBtnHover: "#dc2626"
119
+ }
120
+ };
121
+ const themeConfig = themeConfigs[severity] || themeConfigs[Severity.CRITICAL];
122
+ return /* @__PURE__ */ jsxs(
123
+ "div",
124
+ {
125
+ style: {
126
+ position: "fixed",
127
+ bottom: "24px",
128
+ left: "50%",
129
+ transform: "translateX(-50%)",
130
+ width: "400px",
131
+ maxWidth: "90vw",
132
+ zIndex: 1e4,
133
+ animation: "bannerSlideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1)"
134
+ },
135
+ children: [
136
+ /* @__PURE__ */ jsx("style", { children: `
137
+ @keyframes bannerSlideIn {
138
+ from {
139
+ opacity: 0;
140
+ transform: translateX(-50%) translateY(20px);
141
+ scale: 0.95;
142
+ }
143
+ to {
144
+ opacity: 1;
145
+ transform: translateX(-50%) translateY(0);
146
+ scale: 1;
147
+ }
148
+ }
149
+ ` }),
150
+ /* @__PURE__ */ jsxs(
151
+ "div",
152
+ {
153
+ style: {
154
+ borderRadius: "12px",
155
+ border: `1px solid ${themeConfig.border}`,
156
+ background: themeConfig.bg,
157
+ padding: "14px",
158
+ boxShadow: "0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
159
+ position: "relative",
160
+ backdropFilter: "blur(12px)",
161
+ WebkitBackdropFilter: "blur(12px)",
162
+ boxSizing: "border-box",
163
+ overflow: "hidden"
164
+ },
165
+ children: [
166
+ onClose && /* @__PURE__ */ jsx(
167
+ "button",
168
+ {
169
+ onClick: onClose,
170
+ style: {
171
+ position: "absolute",
172
+ top: "8px",
173
+ right: "8px",
174
+ background: "rgba(255, 255, 255, 0.9)",
175
+ border: "none",
176
+ color: themeConfig.text,
177
+ cursor: "pointer",
178
+ fontSize: "16px",
179
+ lineHeight: "1",
180
+ padding: "4px",
181
+ borderRadius: "4px",
182
+ width: "20px",
183
+ height: "20px",
184
+ display: "flex",
185
+ alignItems: "center",
186
+ justifyContent: "center"
187
+ },
188
+ title: "Close",
189
+ children: "\xD7"
190
+ }
191
+ ),
192
+ /* @__PURE__ */ jsx(
193
+ "div",
194
+ {
195
+ style: {
196
+ fontSize: "14px",
197
+ fontWeight: 500,
198
+ color: themeConfig.text,
199
+ lineHeight: "1.4",
200
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
201
+ paddingRight: onClose ? "30px" : "0",
202
+ marginBottom: actions ? "12px" : "0",
203
+ wordBreak: "break-word",
204
+ overflow: "hidden",
205
+ textOverflow: "ellipsis",
206
+ display: "-webkit-box",
207
+ WebkitLineClamp: 2,
208
+ WebkitBoxOrient: "vertical"
209
+ },
210
+ children: cleanMessage
211
+ }
212
+ ),
213
+ actions && /* @__PURE__ */ jsxs(
214
+ "div",
215
+ {
216
+ style: {
217
+ display: "flex",
218
+ gap: "8px",
219
+ flexWrap: "wrap"
220
+ },
221
+ children: [
222
+ actions.secondary && /* @__PURE__ */ jsx(
223
+ "button",
224
+ {
225
+ onClick: actions.secondary.onClick,
226
+ style: {
227
+ borderRadius: "8px",
228
+ padding: "6px 12px",
229
+ fontSize: "13px",
230
+ fontWeight: 500,
231
+ color: themeConfig.text,
232
+ backgroundColor: "rgba(255, 255, 255, 0.9)",
233
+ border: `1px solid ${themeConfig.border}`,
234
+ cursor: "pointer",
235
+ transition: "all 0.2s ease",
236
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
237
+ },
238
+ onMouseOver: (e) => {
239
+ e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 1)";
240
+ e.currentTarget.style.transform = "translateY(-1px)";
241
+ },
242
+ onMouseOut: (e) => {
243
+ e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.9)";
244
+ e.currentTarget.style.transform = "translateY(0)";
245
+ },
246
+ children: actions.secondary.label
247
+ }
248
+ ),
249
+ actions.primary && /* @__PURE__ */ jsx(
250
+ "button",
251
+ {
252
+ onClick: actions.primary.onClick,
253
+ style: {
254
+ borderRadius: "8px",
255
+ padding: "6px 12px",
256
+ fontSize: "13px",
257
+ fontWeight: 600,
258
+ color: "#fff",
259
+ backgroundColor: themeConfig.primaryBtn,
260
+ border: "none",
261
+ cursor: "pointer",
262
+ transition: "all 0.2s ease",
263
+ boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)",
264
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
265
+ },
266
+ onMouseOver: (e) => {
267
+ e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;
268
+ e.currentTarget.style.transform = "translateY(-1px)";
269
+ e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.2)";
270
+ },
271
+ onMouseOut: (e) => {
272
+ e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;
273
+ e.currentTarget.style.transform = "translateY(0)";
274
+ e.currentTarget.style.boxShadow = "0 2px 8px rgba(0, 0, 0, 0.15)";
275
+ },
276
+ children: actions.primary.label
277
+ }
278
+ )
279
+ ]
280
+ }
281
+ )
282
+ ]
283
+ }
284
+ )
285
+ ]
286
+ }
287
+ );
288
+ }
289
+ function renderCopilotKitUsage(error, onClose) {
290
+ if (error.visibility !== ErrorVisibility.BANNER) {
291
+ return null;
292
+ }
293
+ const extractUrlFromMessage = (message) => {
294
+ const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
295
+ const match = linkRegex.exec(message);
296
+ return match ? match[2] : null;
297
+ };
298
+ const getErrorActions = (error2) => {
299
+ switch (error2.name) {
300
+ case ERROR_NAMES.MISSING_PUBLIC_API_KEY_ERROR:
301
+ return {
302
+ primary: {
303
+ label: "Sign In",
304
+ onClick: () => window.location.href = "https://cloud.copilotkit.ai"
305
+ }
306
+ };
307
+ case ERROR_NAMES.UPGRADE_REQUIRED_ERROR:
308
+ return {
309
+ primary: {
310
+ label: "Upgrade",
311
+ onClick: () => window.location.href = "https://copilotkit.ai/"
312
+ }
313
+ };
314
+ case ERROR_NAMES.COPILOT_API_DISCOVERY_ERROR:
315
+ case ERROR_NAMES.COPILOT_REMOTE_ENDPOINT_DISCOVERY_ERROR:
316
+ case ERROR_NAMES.COPILOT_KIT_AGENT_DISCOVERY_ERROR:
317
+ return {
318
+ primary: {
319
+ label: "View Docs",
320
+ onClick: () => {
321
+ var _a;
322
+ const urlFromMessage = extractUrlFromMessage(error2.message);
323
+ const urlFromExtensions = (_a = error2.extensions) == null ? void 0 : _a.troubleshootingUrl;
324
+ const url = urlFromMessage || urlFromExtensions || "https://docs.copilotkit.ai/troubleshooting/common-issues";
325
+ window.open(url, "_blank");
326
+ }
327
+ }
328
+ };
329
+ default:
330
+ return void 0;
331
+ }
332
+ };
333
+ return /* @__PURE__ */ jsx(
334
+ UsageBanner,
335
+ {
336
+ severity: error.severity || Severity.CRITICAL,
337
+ message: error.message,
338
+ onClose,
339
+ actions: getErrorActions(error)
340
+ }
341
+ );
342
+ }
343
+
344
+ export {
345
+ UsageBanner,
346
+ renderCopilotKitUsage
347
+ };
348
+ //# sourceMappingURL=chunk-57K2ZJ5F.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/usage-banner.tsx"],"sourcesContent":["import { Severity, CopilotKitError, ERROR_NAMES, ErrorVisibility } from \"@copilotkit/shared\";\n\ninterface UsageBannerProps {\n severity?: Severity;\n message?: string;\n icon?: React.ReactNode;\n onClose?: () => void;\n actions?: {\n primary?: {\n label: string;\n onClick: () => void;\n };\n secondary?: {\n label: string;\n onClick: () => void;\n };\n };\n}\n\nconst defaultIcons: Record<Severity, JSX.Element> = {\n [Severity.CRITICAL]: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n ),\n [Severity.WARNING]: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n ),\n [Severity.INFO]: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n ),\n};\n\nexport function UsageBanner({\n severity = Severity.CRITICAL,\n message = \"\",\n icon,\n onClose,\n actions,\n}: UsageBannerProps) {\n if (!message || !severity) {\n return null;\n }\n\n // Enhanced message parsing to clean up technical details\n const parseMessage = (rawMessage: string) => {\n // console.log(\"Raw message:\", rawMessage); // Debug\n\n // Super aggressive cleaning - handle common error patterns first\n if (\n rawMessage.toLowerCase().includes(\"authentication\") ||\n rawMessage.toLowerCase().includes(\"api key\")\n ) {\n return \"Authentication failed. Please check your API key.\";\n }\n\n if (rawMessage.toLowerCase().includes(\"rate limit\")) {\n return \"Rate limit exceeded. Please try again later.\";\n }\n\n if (rawMessage.toLowerCase().includes(\"checkpointer\")) {\n return \"Agent configuration error. Please check your setup.\";\n }\n\n // For any other error, extract just the main error type\n let cleanMessage = rawMessage;\n\n // Remove everything after the first \" - \" or \":\" followed by technical details\n cleanMessage = cleanMessage.split(\" - \")[0];\n cleanMessage = cleanMessage.split(\": Error code\")[0];\n cleanMessage = cleanMessage.split(\": 401\")[0];\n cleanMessage = cleanMessage.split(\": 403\")[0];\n cleanMessage = cleanMessage.split(\": 404\")[0];\n cleanMessage = cleanMessage.split(\": 500\")[0];\n\n // Remove \"See more\" links\n cleanMessage = cleanMessage.replace(/See more:.*$/g, \"\").trim();\n\n // If still too technical, just show a generic message\n if (cleanMessage.includes(\"{\") || cleanMessage.includes(\"'\") || cleanMessage.length > 60) {\n return \"Configuration error. Please check your setup.\";\n }\n\n return cleanMessage || \"An error occurred. Please check your configuration.\";\n };\n\n const cleanMessage = parseMessage(message);\n const Icon = icon || defaultIcons[severity];\n\n const themeConfigs = {\n [Severity.INFO]: {\n bg: \"rgba(239, 246, 255, 0.95)\",\n border: \"#93c5fd\",\n text: \"#1e40af\",\n icon: \"#3b82f6\",\n primaryBtn: \"#3b82f6\",\n primaryBtnHover: \"#2563eb\",\n },\n [Severity.WARNING]: {\n bg: \"rgba(255, 251, 235, 0.95)\",\n border: \"#fbbf24\",\n text: \"#92400e\",\n icon: \"#f59e0b\",\n primaryBtn: \"#f59e0b\",\n primaryBtnHover: \"#d97706\",\n },\n [Severity.CRITICAL]: {\n bg: \"rgba(254, 242, 242, 0.95)\",\n border: \"#f87171\",\n text: \"#991b1b\",\n icon: \"#ef4444\",\n primaryBtn: \"#ef4444\",\n primaryBtnHover: \"#dc2626\",\n },\n };\n\n const themeConfig = themeConfigs[severity] || themeConfigs[Severity.CRITICAL];\n\n return (\n <div\n style={{\n position: \"fixed\",\n bottom: \"24px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n width: \"400px\",\n maxWidth: \"90vw\",\n zIndex: 10000,\n animation: \"bannerSlideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n }}\n >\n <style>\n {`\n @keyframes bannerSlideIn {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(20px);\n scale: 0.95;\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n scale: 1;\n }\n }\n `}\n </style>\n <div\n style={{\n borderRadius: \"12px\",\n border: `1px solid ${themeConfig.border}`,\n background: themeConfig.bg,\n padding: \"14px\",\n boxShadow: \"0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)\",\n position: \"relative\",\n backdropFilter: \"blur(12px)\",\n WebkitBackdropFilter: \"blur(12px)\",\n boxSizing: \"border-box\",\n overflow: \"hidden\",\n }}\n >\n {/* Close button */}\n {onClose && (\n <button\n onClick={onClose}\n style={{\n position: \"absolute\",\n top: \"8px\",\n right: \"8px\",\n background: \"rgba(255, 255, 255, 0.9)\",\n border: \"none\",\n color: themeConfig.text,\n cursor: \"pointer\",\n fontSize: \"16px\",\n lineHeight: \"1\",\n padding: \"4px\",\n borderRadius: \"4px\",\n width: \"20px\",\n height: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n title=\"Close\"\n >\n ×\n </button>\n )}\n\n {/* Message */}\n <div\n style={{\n fontSize: \"14px\",\n fontWeight: 500,\n color: themeConfig.text,\n lineHeight: \"1.4\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n paddingRight: onClose ? \"30px\" : \"0\",\n marginBottom: actions ? \"12px\" : \"0\",\n wordBreak: \"break-word\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n WebkitLineClamp: 2,\n WebkitBoxOrient: \"vertical\",\n }}\n >\n {cleanMessage}\n </div>\n\n {/* Actions */}\n {actions && (\n <div\n style={{\n display: \"flex\",\n gap: \"8px\",\n flexWrap: \"wrap\",\n }}\n >\n {actions.secondary && (\n <button\n onClick={actions.secondary.onClick}\n style={{\n borderRadius: \"8px\",\n padding: \"6px 12px\",\n fontSize: \"13px\",\n fontWeight: 500,\n color: themeConfig.text,\n backgroundColor: \"rgba(255, 255, 255, 0.9)\",\n border: `1px solid ${themeConfig.border}`,\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n onMouseOver={(e) => {\n e.currentTarget.style.backgroundColor = \"rgba(255, 255, 255, 1)\";\n e.currentTarget.style.transform = \"translateY(-1px)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.backgroundColor = \"rgba(255, 255, 255, 0.9)\";\n e.currentTarget.style.transform = \"translateY(0)\";\n }}\n >\n {actions.secondary.label}\n </button>\n )}\n {actions.primary && (\n <button\n onClick={actions.primary.onClick}\n style={{\n borderRadius: \"8px\",\n padding: \"6px 12px\",\n fontSize: \"13px\",\n fontWeight: 600,\n color: \"#fff\",\n backgroundColor: themeConfig.primaryBtn,\n border: \"none\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n onMouseOver={(e) => {\n e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;\n e.currentTarget.style.transform = \"translateY(-1px)\";\n e.currentTarget.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.2)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;\n e.currentTarget.style.transform = \"translateY(0)\";\n e.currentTarget.style.boxShadow = \"0 2px 8px rgba(0, 0, 0, 0.15)\";\n }}\n >\n {actions.primary.label}\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport function renderCopilotKitUsage(error: CopilotKitError, onClose?: () => void) {\n // Route based on error visibility level\n if (error.visibility !== ErrorVisibility.BANNER) {\n return null;\n }\n\n // Extract URL from markdown links in the message\n const extractUrlFromMessage = (message: string): string | null => {\n const linkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g;\n const match = linkRegex.exec(message);\n return match ? match[2] : null;\n };\n\n // Get action button based on error type\n const getErrorActions = (error: CopilotKitError) => {\n switch (error.name) {\n case ERROR_NAMES.MISSING_PUBLIC_API_KEY_ERROR:\n return {\n primary: {\n label: \"Sign In\",\n onClick: () => (window.location.href = \"https://cloud.copilotkit.ai\"),\n },\n };\n case ERROR_NAMES.UPGRADE_REQUIRED_ERROR:\n return {\n primary: {\n label: \"Upgrade\",\n onClick: () => (window.location.href = \"https://copilotkit.ai/\"),\n },\n };\n case ERROR_NAMES.COPILOT_API_DISCOVERY_ERROR:\n case ERROR_NAMES.COPILOT_REMOTE_ENDPOINT_DISCOVERY_ERROR:\n case ERROR_NAMES.COPILOT_KIT_AGENT_DISCOVERY_ERROR:\n return {\n primary: {\n label: \"View Docs\",\n onClick: () => {\n // Try to get URL from the error message first, then extensions, then default\n const urlFromMessage = extractUrlFromMessage(error.message);\n const urlFromExtensions = (error.extensions as any)?.troubleshootingUrl;\n const url =\n urlFromMessage ||\n urlFromExtensions ||\n \"https://docs.copilotkit.ai/troubleshooting/common-issues\";\n window.open(url, \"_blank\");\n },\n },\n };\n default:\n return undefined;\n }\n };\n\n return (\n <UsageBanner\n severity={error.severity || Severity.CRITICAL}\n message={error.message}\n onClose={onClose}\n actions={getErrorActions(error)}\n />\n );\n}\n"],"mappings":"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","names":["cleanMessage","error"]}
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  defaultCopilotContextCategories
3
- } from "./chunk-SGLWMQ2J.mjs";
3
+ } from "./chunk-BEDNUHSA.mjs";
4
4
  import {
5
5
  useCopilotMessagesContext
6
6
  } from "./chunk-DCTJZ742.mjs";
7
7
  import {
8
8
  useChat
9
- } from "./chunk-HJP2RX5R.mjs";
9
+ } from "./chunk-AFDL5JI3.mjs";
10
10
  import {
11
11
  useAsyncCallback
12
- } from "./chunk-CCESTGAM.mjs";
12
+ } from "./chunk-3OQM3NEK.mjs";
13
13
  import {
14
14
  useCopilotContext
15
- } from "./chunk-6KGEF242.mjs";
15
+ } from "./chunk-XFOTNHYA.mjs";
16
16
  import {
17
17
  __async,
18
18
  __objRest,
@@ -240,4 +240,4 @@ export {
240
240
  useCopilotChat,
241
241
  defaultSystemMessage
242
242
  };
243
- //# sourceMappingURL=chunk-UIT6QMUJ.mjs.map
243
+ //# sourceMappingURL=chunk-7BYXCFPB.mjs.map