@copilotkit/react-core 1.9.2-next.8 → 1.9.2-next.9

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 (99) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{chunk-CCESTGAM.mjs → chunk-3OQM3NEK.mjs} +2 -2
  3. package/dist/{chunk-T4ZKC4X4.mjs → chunk-3YHYWAHK.mjs} +2 -2
  4. package/dist/{chunk-ISYBUDL4.mjs → chunk-55QZ2SVJ.mjs} +4 -5
  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-ZHEEHGLS.mjs → chunk-ADIITPD2.mjs} +8 -5
  9. package/dist/{chunk-ZHEEHGLS.mjs.map → chunk-ADIITPD2.mjs.map} +1 -1
  10. package/dist/{chunk-S4BOATBG.mjs → chunk-EF5BNM34.mjs} +2 -2
  11. package/dist/{chunk-I4JPQECN.mjs → chunk-EXU7GWLC.mjs} +4 -4
  12. package/dist/{chunk-7G6RR4HE.mjs → chunk-FXK6RQIN.mjs} +2 -2
  13. package/dist/{chunk-JXF732XG.mjs → chunk-G7LYGERN.mjs} +80 -13
  14. package/dist/chunk-G7LYGERN.mjs.map +1 -0
  15. package/dist/{chunk-VJCHRQ7Q.mjs → chunk-JDEWNLNP.mjs} +37 -4
  16. package/dist/chunk-JDEWNLNP.mjs.map +1 -0
  17. package/dist/{chunk-JHIZ5HAI.mjs → chunk-NQVCZQ5T.mjs} +3 -3
  18. package/dist/{chunk-VF6UPRKM.mjs → chunk-OF4SZTLL.mjs} +3 -3
  19. package/dist/{chunk-QQZLIEXK.mjs → chunk-SJJNFYGQ.mjs} +3 -3
  20. package/dist/{chunk-RN3ZRHI7.mjs → chunk-WOGURSAL.mjs} +5 -5
  21. package/dist/chunk-YAF2LATQ.mjs +310 -0
  22. package/dist/chunk-YAF2LATQ.mjs.map +1 -0
  23. package/dist/components/copilot-provider/copilot-messages.js +35 -2
  24. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  25. package/dist/components/copilot-provider/copilot-messages.mjs +2 -2
  26. package/dist/components/copilot-provider/copilotkit.js +289 -234
  27. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  28. package/dist/components/copilot-provider/copilotkit.mjs +7 -7
  29. package/dist/components/copilot-provider/index.js +289 -234
  30. package/dist/components/copilot-provider/index.js.map +1 -1
  31. package/dist/components/copilot-provider/index.mjs +7 -7
  32. package/dist/components/error-boundary/error-boundary.js +135 -146
  33. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  34. package/dist/components/error-boundary/error-boundary.mjs +4 -4
  35. package/dist/components/error-boundary/error-utils.js.map +1 -1
  36. package/dist/components/error-boundary/error-utils.mjs +2 -2
  37. package/dist/components/index.js +289 -234
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/index.mjs +7 -7
  40. package/dist/components/toast/toast-provider.js +118 -85
  41. package/dist/components/toast/toast-provider.js.map +1 -1
  42. package/dist/components/toast/toast-provider.mjs +1 -1
  43. package/dist/components/usage-banner.js +135 -146
  44. package/dist/components/usage-banner.js.map +1 -1
  45. package/dist/components/usage-banner.mjs +1 -1
  46. package/dist/hooks/index.js +75 -10
  47. package/dist/hooks/index.js.map +1 -1
  48. package/dist/hooks/index.mjs +14 -14
  49. package/dist/hooks/use-chat.js +72 -10
  50. package/dist/hooks/use-chat.js.map +1 -1
  51. package/dist/hooks/use-chat.mjs +4 -4
  52. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  53. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  54. package/dist/hooks/use-coagent.js +75 -10
  55. package/dist/hooks/use-coagent.js.map +1 -1
  56. package/dist/hooks/use-coagent.mjs +10 -10
  57. package/dist/hooks/use-copilot-action.js.map +1 -1
  58. package/dist/hooks/use-copilot-action.mjs +3 -3
  59. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  60. package/dist/hooks/use-copilot-authenticated-action.mjs +4 -4
  61. package/dist/hooks/use-copilot-chat.js +72 -10
  62. package/dist/hooks/use-copilot-chat.js.map +1 -1
  63. package/dist/hooks/use-copilot-chat.mjs +9 -9
  64. package/dist/hooks/use-copilot-runtime-client.js +1 -1
  65. package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
  66. package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
  67. package/dist/hooks/use-langgraph-interrupt.js +72 -10
  68. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  69. package/dist/hooks/use-langgraph-interrupt.mjs +10 -10
  70. package/dist/index.js +363 -243
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +15 -15
  73. package/dist/lib/copilot-task.mjs +8 -8
  74. package/dist/lib/index.mjs +8 -8
  75. package/dist/utils/extract.mjs +7 -7
  76. package/dist/utils/index.mjs +7 -7
  77. package/package.json +3 -3
  78. package/src/components/copilot-provider/copilot-messages.tsx +42 -3
  79. package/src/components/toast/toast-provider.tsx +49 -24
  80. package/src/components/usage-banner.tsx +144 -147
  81. package/src/hooks/use-chat.ts +106 -6
  82. package/src/hooks/use-coagent.ts +5 -0
  83. package/src/hooks/use-copilot-runtime-client.ts +2 -39
  84. package/dist/chunk-HD2GE3DK.mjs +0 -359
  85. package/dist/chunk-HD2GE3DK.mjs.map +0 -1
  86. package/dist/chunk-ISYBUDL4.mjs.map +0 -1
  87. package/dist/chunk-JXF732XG.mjs.map +0 -1
  88. package/dist/chunk-VJCHRQ7Q.mjs.map +0 -1
  89. package/dist/chunk-VRXANACV.mjs +0 -277
  90. package/dist/chunk-VRXANACV.mjs.map +0 -1
  91. /package/dist/{chunk-CCESTGAM.mjs.map → chunk-3OQM3NEK.mjs.map} +0 -0
  92. /package/dist/{chunk-T4ZKC4X4.mjs.map → chunk-3YHYWAHK.mjs.map} +0 -0
  93. /package/dist/{chunk-S4BOATBG.mjs.map → chunk-EF5BNM34.mjs.map} +0 -0
  94. /package/dist/{chunk-I4JPQECN.mjs.map → chunk-EXU7GWLC.mjs.map} +0 -0
  95. /package/dist/{chunk-7G6RR4HE.mjs.map → chunk-FXK6RQIN.mjs.map} +0 -0
  96. /package/dist/{chunk-JHIZ5HAI.mjs.map → chunk-NQVCZQ5T.mjs.map} +0 -0
  97. /package/dist/{chunk-VF6UPRKM.mjs.map → chunk-OF4SZTLL.mjs.map} +0 -0
  98. /package/dist/{chunk-QQZLIEXK.mjs.map → chunk-SJJNFYGQ.mjs.map} +0 -0
  99. /package/dist/{chunk-RN3ZRHI7.mjs.map → chunk-WOGURSAL.mjs.map} +0 -0
package/dist/index.mjs CHANGED
@@ -4,38 +4,38 @@ import "./chunk-6YOKPWQ7.mjs";
4
4
  import "./chunk-LUGEI4YQ.mjs";
5
5
  import {
6
6
  CopilotTask
7
- } from "./chunk-7G6RR4HE.mjs";
7
+ } from "./chunk-FXK6RQIN.mjs";
8
8
  import "./chunk-CQPYJIBH.mjs";
9
9
  import {
10
10
  useLangGraphInterruptRender
11
11
  } from "./chunk-CMQV4XNY.mjs";
12
12
  import {
13
13
  useLangGraphInterrupt
14
- } from "./chunk-VF6UPRKM.mjs";
14
+ } from "./chunk-OF4SZTLL.mjs";
15
15
  import {
16
16
  useMakeCopilotDocumentReadable
17
17
  } from "./chunk-ERXWDCY6.mjs";
18
18
  import {
19
19
  useCoAgentStateRender
20
- } from "./chunk-T4ZKC4X4.mjs";
20
+ } from "./chunk-3YHYWAHK.mjs";
21
21
  import {
22
22
  runAgent,
23
23
  startAgent,
24
24
  stopAgent,
25
25
  useCoAgent
26
- } from "./chunk-ZHEEHGLS.mjs";
26
+ } from "./chunk-ADIITPD2.mjs";
27
27
  import {
28
28
  useCopilotAdditionalInstructions
29
29
  } from "./chunk-JPMIAGI6.mjs";
30
30
  import {
31
31
  useCopilotAuthenticatedAction_c
32
- } from "./chunk-S4BOATBG.mjs";
32
+ } from "./chunk-EF5BNM34.mjs";
33
33
  import {
34
34
  useCopilotAction
35
- } from "./chunk-JHIZ5HAI.mjs";
35
+ } from "./chunk-NQVCZQ5T.mjs";
36
36
  import {
37
37
  useCopilotChat
38
- } from "./chunk-I4JPQECN.mjs";
38
+ } from "./chunk-EXU7GWLC.mjs";
39
39
  import {
40
40
  useCopilotReadable
41
41
  } from "./chunk-UBNRUXEK.mjs";
@@ -43,29 +43,29 @@ import {
43
43
  CopilotKit,
44
44
  defaultCopilotContextCategories,
45
45
  extract
46
- } from "./chunk-RN3ZRHI7.mjs";
47
- import "./chunk-QQZLIEXK.mjs";
48
- import "./chunk-VJCHRQ7Q.mjs";
46
+ } from "./chunk-WOGURSAL.mjs";
47
+ import "./chunk-SJJNFYGQ.mjs";
48
+ import "./chunk-JDEWNLNP.mjs";
49
49
  import "./chunk-5FHSUKQL.mjs";
50
50
  import "./chunk-RKTVJRK7.mjs";
51
51
  import "./chunk-PMAFHQ7P.mjs";
52
- import "./chunk-HD2GE3DK.mjs";
52
+ import "./chunk-57K2ZJ5F.mjs";
53
53
  import "./chunk-YPSGKPDA.mjs";
54
54
  import {
55
55
  CopilotMessagesContext,
56
56
  useCopilotMessagesContext
57
57
  } from "./chunk-DCTJZ742.mjs";
58
- import "./chunk-JXF732XG.mjs";
58
+ import "./chunk-G7LYGERN.mjs";
59
59
  import "./chunk-4CEQJ2X6.mjs";
60
- import "./chunk-CCESTGAM.mjs";
60
+ import "./chunk-3OQM3NEK.mjs";
61
61
  import "./chunk-O7ARI5CV.mjs";
62
62
  import {
63
63
  useCopilotRuntimeClient
64
- } from "./chunk-ISYBUDL4.mjs";
64
+ } from "./chunk-55QZ2SVJ.mjs";
65
65
  import {
66
66
  shouldShowDevConsole
67
67
  } from "./chunk-GFJW4RIM.mjs";
68
- import "./chunk-VRXANACV.mjs";
68
+ import "./chunk-YAF2LATQ.mjs";
69
69
  import {
70
70
  CopilotContext,
71
71
  useCopilotContext
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  CopilotTask
3
- } from "../chunk-7G6RR4HE.mjs";
4
- import "../chunk-RN3ZRHI7.mjs";
5
- import "../chunk-QQZLIEXK.mjs";
6
- import "../chunk-VJCHRQ7Q.mjs";
3
+ } from "../chunk-FXK6RQIN.mjs";
4
+ import "../chunk-WOGURSAL.mjs";
5
+ import "../chunk-SJJNFYGQ.mjs";
6
+ import "../chunk-JDEWNLNP.mjs";
7
7
  import "../chunk-5FHSUKQL.mjs";
8
8
  import "../chunk-RKTVJRK7.mjs";
9
9
  import "../chunk-PMAFHQ7P.mjs";
10
- import "../chunk-HD2GE3DK.mjs";
10
+ import "../chunk-57K2ZJ5F.mjs";
11
11
  import "../chunk-DCTJZ742.mjs";
12
12
  import "../chunk-4CEQJ2X6.mjs";
13
- import "../chunk-CCESTGAM.mjs";
13
+ import "../chunk-3OQM3NEK.mjs";
14
14
  import "../chunk-O7ARI5CV.mjs";
15
- import "../chunk-ISYBUDL4.mjs";
15
+ import "../chunk-55QZ2SVJ.mjs";
16
16
  import "../chunk-GFJW4RIM.mjs";
17
- import "../chunk-VRXANACV.mjs";
17
+ import "../chunk-YAF2LATQ.mjs";
18
18
  import "../chunk-XFOTNHYA.mjs";
19
19
  import "../chunk-SKC7AJIV.mjs";
20
20
  export {
@@ -1,21 +1,21 @@
1
1
  import "../chunk-LUGEI4YQ.mjs";
2
2
  import {
3
3
  CopilotTask
4
- } from "../chunk-7G6RR4HE.mjs";
5
- import "../chunk-RN3ZRHI7.mjs";
6
- import "../chunk-QQZLIEXK.mjs";
7
- import "../chunk-VJCHRQ7Q.mjs";
4
+ } from "../chunk-FXK6RQIN.mjs";
5
+ import "../chunk-WOGURSAL.mjs";
6
+ import "../chunk-SJJNFYGQ.mjs";
7
+ import "../chunk-JDEWNLNP.mjs";
8
8
  import "../chunk-5FHSUKQL.mjs";
9
9
  import "../chunk-RKTVJRK7.mjs";
10
10
  import "../chunk-PMAFHQ7P.mjs";
11
- import "../chunk-HD2GE3DK.mjs";
11
+ import "../chunk-57K2ZJ5F.mjs";
12
12
  import "../chunk-DCTJZ742.mjs";
13
13
  import "../chunk-4CEQJ2X6.mjs";
14
- import "../chunk-CCESTGAM.mjs";
14
+ import "../chunk-3OQM3NEK.mjs";
15
15
  import "../chunk-O7ARI5CV.mjs";
16
- import "../chunk-ISYBUDL4.mjs";
16
+ import "../chunk-55QZ2SVJ.mjs";
17
17
  import "../chunk-GFJW4RIM.mjs";
18
- import "../chunk-VRXANACV.mjs";
18
+ import "../chunk-YAF2LATQ.mjs";
19
19
  import "../chunk-XFOTNHYA.mjs";
20
20
  import "../chunk-SKC7AJIV.mjs";
21
21
  export {
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  extract
3
- } from "../chunk-RN3ZRHI7.mjs";
4
- import "../chunk-QQZLIEXK.mjs";
5
- import "../chunk-VJCHRQ7Q.mjs";
3
+ } from "../chunk-WOGURSAL.mjs";
4
+ import "../chunk-SJJNFYGQ.mjs";
5
+ import "../chunk-JDEWNLNP.mjs";
6
6
  import "../chunk-5FHSUKQL.mjs";
7
7
  import "../chunk-RKTVJRK7.mjs";
8
8
  import "../chunk-PMAFHQ7P.mjs";
9
- import "../chunk-HD2GE3DK.mjs";
9
+ import "../chunk-57K2ZJ5F.mjs";
10
10
  import "../chunk-DCTJZ742.mjs";
11
- import "../chunk-CCESTGAM.mjs";
11
+ import "../chunk-3OQM3NEK.mjs";
12
12
  import "../chunk-O7ARI5CV.mjs";
13
- import "../chunk-ISYBUDL4.mjs";
13
+ import "../chunk-55QZ2SVJ.mjs";
14
14
  import "../chunk-GFJW4RIM.mjs";
15
- import "../chunk-VRXANACV.mjs";
15
+ import "../chunk-YAF2LATQ.mjs";
16
16
  import "../chunk-XFOTNHYA.mjs";
17
17
  import "../chunk-SKC7AJIV.mjs";
18
18
  export {
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  extract
3
- } from "../chunk-RN3ZRHI7.mjs";
4
- import "../chunk-QQZLIEXK.mjs";
5
- import "../chunk-VJCHRQ7Q.mjs";
3
+ } from "../chunk-WOGURSAL.mjs";
4
+ import "../chunk-SJJNFYGQ.mjs";
5
+ import "../chunk-JDEWNLNP.mjs";
6
6
  import "../chunk-5FHSUKQL.mjs";
7
7
  import "../chunk-RKTVJRK7.mjs";
8
8
  import "../chunk-PMAFHQ7P.mjs";
9
- import "../chunk-HD2GE3DK.mjs";
9
+ import "../chunk-57K2ZJ5F.mjs";
10
10
  import "../chunk-DCTJZ742.mjs";
11
- import "../chunk-CCESTGAM.mjs";
11
+ import "../chunk-3OQM3NEK.mjs";
12
12
  import "../chunk-O7ARI5CV.mjs";
13
- import "../chunk-ISYBUDL4.mjs";
13
+ import "../chunk-55QZ2SVJ.mjs";
14
14
  import {
15
15
  shouldShowDevConsole
16
16
  } from "../chunk-GFJW4RIM.mjs";
17
- import "../chunk-VRXANACV.mjs";
17
+ import "../chunk-YAF2LATQ.mjs";
18
18
  import "../chunk-XFOTNHYA.mjs";
19
19
  import "../chunk-SKC7AJIV.mjs";
20
20
  export {
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "version": "1.9.2-next.8",
12
+ "version": "1.9.2-next.9",
13
13
  "sideEffects": false,
14
14
  "main": "./dist/index.js",
15
15
  "module": "./dist/index.mjs",
@@ -44,8 +44,8 @@
44
44
  "@scarf/scarf": "^1.3.0",
45
45
  "react-markdown": "^8.0.7",
46
46
  "untruncate-json": "^0.0.1",
47
- "@copilotkit/runtime-client-gql": "1.9.2-next.8",
48
- "@copilotkit/shared": "1.9.2-next.8"
47
+ "@copilotkit/runtime-client-gql": "1.9.2-next.9",
48
+ "@copilotkit/shared": "1.9.2-next.9"
49
49
  },
50
50
  "keywords": [
51
51
  "copilotkit",
@@ -75,9 +75,43 @@ export function CopilotMessages({ children }: { children: ReactNode }) {
75
75
  const lastLoadedAgentName = useRef<string>();
76
76
  const lastLoadedMessages = useRef<string>();
77
77
 
78
- const { threadId, agentSession, runtimeClient, showDevConsole } = useCopilotContext();
78
+ const { threadId, agentSession, runtimeClient, showDevConsole, onTrace, copilotApiConfig } =
79
+ useCopilotContext();
79
80
  const { setBannerError } = useToast();
80
81
 
82
+ // Helper function to trace UI errors (similar to useCopilotRuntimeClient)
83
+ const traceUIError = useCallback(
84
+ async (error: CopilotKitError, originalError?: any) => {
85
+ // Just check if onTrace and publicApiKey are defined
86
+ if (!onTrace || !copilotApiConfig.publicApiKey) return;
87
+
88
+ try {
89
+ const traceEvent = {
90
+ type: "error" as const,
91
+ timestamp: Date.now(),
92
+ context: {
93
+ source: "ui" as const,
94
+ request: {
95
+ operation: "loadAgentState",
96
+ url: copilotApiConfig.chatApiEndpoint,
97
+ startTime: Date.now(),
98
+ },
99
+ technical: {
100
+ environment: "browser",
101
+ userAgent: typeof navigator !== "undefined" ? navigator.userAgent : undefined,
102
+ stackTrace: originalError instanceof Error ? originalError.stack : undefined,
103
+ },
104
+ },
105
+ error,
106
+ };
107
+ await onTrace(traceEvent);
108
+ } catch (traceError) {
109
+ console.error("Error in CopilotMessages onTrace handler:", traceError);
110
+ }
111
+ },
112
+ [onTrace, copilotApiConfig.publicApiKey, copilotApiConfig.chatApiEndpoint],
113
+ );
114
+
81
115
  const createStructuredError = (gqlError: GraphQLError): CopilotKitError | null => {
82
116
  const extensions = gqlError.extensions;
83
117
  const originalError = extensions?.originalError as any;
@@ -120,7 +154,6 @@ export function CopilotMessages({ children }: { children: ReactNode }) {
120
154
  const visibility = extensions?.visibility as ErrorVisibility;
121
155
  const isDev = shouldShowDevConsole(showDevConsole);
122
156
 
123
- // If dev console is disabled, don't show ANY error UI to users
124
157
  if (!isDev) {
125
158
  console.error("CopilotKit Error (hidden in production):", gqlError.message);
126
159
  return;
@@ -136,6 +169,8 @@ export function CopilotMessages({ children }: { children: ReactNode }) {
136
169
  const ckError = createStructuredError(gqlError);
137
170
  if (ckError) {
138
171
  setBannerError(ckError);
172
+ // Trace the structured error
173
+ traceUIError(ckError, gqlError);
139
174
  } else {
140
175
  // Fallback: create a generic error for unstructured GraphQL errors
141
176
  const fallbackError = new CopilotKitError({
@@ -143,6 +178,8 @@ export function CopilotMessages({ children }: { children: ReactNode }) {
143
178
  code: CopilotKitErrorCode.UNKNOWN,
144
179
  });
145
180
  setBannerError(fallbackError);
181
+ // Trace the fallback error
182
+ traceUIError(fallbackError, gqlError);
146
183
  }
147
184
  };
148
185
 
@@ -159,10 +196,12 @@ export function CopilotMessages({ children }: { children: ReactNode }) {
159
196
  code: CopilotKitErrorCode.UNKNOWN,
160
197
  });
161
198
  setBannerError(fallbackError);
199
+ // Trace the non-GraphQL error
200
+ traceUIError(fallbackError, error);
162
201
  }
163
202
  }
164
203
  },
165
- [setBannerError, showDevConsole],
204
+ [setBannerError, showDevConsole, traceUIError],
166
205
  );
167
206
 
168
207
  useEffect(() => {
@@ -183,12 +183,14 @@ export function ToastProvider({
183
183
  border: `1px solid ${colors.border}`,
184
184
  borderLeft: `4px solid ${colors.border}`,
185
185
  borderRadius: "8px",
186
- padding: "10px 14px",
186
+ padding: "12px 16px",
187
187
  fontSize: "13px",
188
188
  boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
189
189
  backdropFilter: "blur(8px)",
190
- maxWidth: "500px",
191
- minWidth: "350px",
190
+ maxWidth: "min(90vw, 700px)",
191
+ width: "100%",
192
+ boxSizing: "border-box",
193
+ overflow: "hidden",
192
194
  }}
193
195
  >
194
196
  <div
@@ -199,7 +201,15 @@ export function ToastProvider({
199
201
  gap: "10px",
200
202
  }}
201
203
  >
202
- <div style={{ display: "flex", alignItems: "center", gap: "8px", flex: 1 }}>
204
+ <div
205
+ style={{
206
+ display: "flex",
207
+ alignItems: "center",
208
+ gap: "8px",
209
+ flex: 1,
210
+ minWidth: 0,
211
+ }}
212
+ >
203
213
  <div
204
214
  style={{
205
215
  width: "12px",
@@ -209,7 +219,15 @@ export function ToastProvider({
209
219
  flexShrink: 0,
210
220
  }}
211
221
  />
212
- <div style={{ display: "flex", alignItems: "center", gap: "10px", flex: 1 }}>
222
+ <div
223
+ style={{
224
+ display: "flex",
225
+ alignItems: "center",
226
+ gap: "10px",
227
+ flex: 1,
228
+ minWidth: 0,
229
+ }}
230
+ >
213
231
  <div
214
232
  style={{
215
233
  color: colors.text,
@@ -217,30 +235,37 @@ export function ToastProvider({
217
235
  fontWeight: "400",
218
236
  fontSize: "13px",
219
237
  flex: 1,
220
- wordWrap: "break-word",
238
+ wordBreak: "break-all",
221
239
  overflowWrap: "break-word",
222
- hyphens: "auto",
240
+ maxWidth: "550px",
241
+ overflow: "hidden",
242
+ display: "-webkit-box",
243
+ WebkitLineClamp: 10,
244
+ WebkitBoxOrient: "vertical",
223
245
  }}
224
246
  >
225
247
  {(() => {
226
- const message = bannerError.message;
227
- const markdownLinkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
228
- const plainUrlRegex = /(https?:\/\/[^\s)]+)/g;
229
-
230
- // Remove URLs and markdown links from the message, keep just the text
231
- let cleanMessage = message
232
- .replace(markdownLinkRegex, "") // Remove [text](url)
233
- .replace(plainUrlRegex, "") // Remove plain URLs
234
- .replace(/See more:\s*/g, "") // Remove "See more:" text
235
- .replace(/\s+/g, " ") // Clean up extra spaces
236
- .trim();
237
-
238
- // Truncate very long messages for better display
239
- if (cleanMessage.length > 120) {
240
- cleanMessage = cleanMessage.substring(0, 117) + "...";
248
+ let message = bannerError.message;
249
+
250
+ // Try to extract the useful message from JSON first
251
+ const jsonMatch = message.match(/'message':\s*'([^']+)'/);
252
+ if (jsonMatch) {
253
+ return jsonMatch[1]; // Return the actual error message
241
254
  }
242
255
 
243
- return cleanMessage;
256
+ // Strip technical garbage but keep the meaningful message
257
+ message = message.split(" - ")[0]; // Remove everything after " - {"
258
+ message = message.split(": Error code")[0]; // Remove ": Error code: 401"
259
+ message = message.replace(/:\s*\d{3}$/, ""); // Remove trailing ": 401"
260
+ message = message.replace(/See more:.*$/g, ""); // Remove "See more" links
261
+ message = message.trim();
262
+
263
+ // If it's still garbage (contains { or '), use fallback
264
+ // if (message.includes("{") || message.includes("'")) {
265
+ // return "Configuration error.... Please check your setup.";
266
+ // }
267
+
268
+ return message || "Configuration error occurred.";
244
269
  })()}
245
270
  </div>
246
271
 
@@ -262,7 +287,7 @@ export function ToastProvider({
262
287
  // Check for plain URLs
263
288
  const urlMatch = plainUrlRegex.exec(message);
264
289
  if (urlMatch) {
265
- url = urlMatch[0];
290
+ url = urlMatch[0].replace(/[.,;:'"]*$/, ""); // Remove trailing punctuation
266
291
  buttonText = "See More";
267
292
  }
268
293
  }