@copilotkit/react-core 1.9.2-next.10 → 1.9.2-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -56
- package/dist/{chunk-3YHYWAHK.mjs → chunk-2FW7HH6W.mjs} +3 -3
- package/dist/{chunk-OF4SZTLL.mjs → chunk-2XSUXRGG.mjs} +4 -4
- package/dist/{chunk-WOGURSAL.mjs → chunk-3XXVDQ7Z.mjs} +8 -10
- package/dist/chunk-3XXVDQ7Z.mjs.map +1 -0
- package/dist/{chunk-XFOTNHYA.mjs → chunk-6KGEF242.mjs} +2 -3
- package/dist/chunk-6KGEF242.mjs.map +1 -0
- package/dist/{chunk-EXU7GWLC.mjs → chunk-C3SYYVMR.mjs} +5 -5
- package/dist/{chunk-JPMIAGI6.mjs → chunk-C6F6EQNA.mjs} +2 -2
- package/dist/{chunk-3OQM3NEK.mjs → chunk-CCESTGAM.mjs} +2 -2
- package/dist/chunk-HD2GE3DK.mjs +359 -0
- package/dist/chunk-HD2GE3DK.mjs.map +1 -0
- package/dist/{chunk-G7LYGERN.mjs → chunk-HJP2RX5R.mjs} +14 -81
- package/dist/chunk-HJP2RX5R.mjs.map +1 -0
- package/dist/{chunk-ADIITPD2.mjs → chunk-IVXB3GYK.mjs} +6 -9
- package/dist/{chunk-ADIITPD2.mjs.map → chunk-IVXB3GYK.mjs.map} +1 -1
- package/dist/{chunk-EF5BNM34.mjs → chunk-LDACFA2B.mjs} +3 -3
- package/dist/{chunk-UBNRUXEK.mjs → chunk-LZDDYZEY.mjs} +2 -2
- package/dist/{chunk-FXK6RQIN.mjs → chunk-PUNALT2S.mjs} +2 -2
- package/dist/{chunk-CMQV4XNY.mjs → chunk-Q5D5XQFA.mjs} +2 -2
- package/dist/{chunk-SJJNFYGQ.mjs → chunk-QQZLIEXK.mjs} +3 -3
- package/dist/{chunk-JDEWNLNP.mjs → chunk-QRGDQSGZ.mjs} +5 -38
- package/dist/chunk-QRGDQSGZ.mjs.map +1 -0
- package/dist/{chunk-55QZ2SVJ.mjs → chunk-RUY6MLHA.mjs} +6 -36
- package/dist/chunk-RUY6MLHA.mjs.map +1 -0
- package/dist/{chunk-NQVCZQ5T.mjs → chunk-T42PN5VN.mjs} +4 -4
- package/dist/{chunk-ERXWDCY6.mjs → chunk-UHQMV2CE.mjs} +2 -2
- package/dist/chunk-VRXANACV.mjs +277 -0
- package/dist/chunk-VRXANACV.mjs.map +1 -0
- package/dist/components/copilot-provider/copilot-messages.js +3 -37
- package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
- package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
- package/dist/components/copilot-provider/copilotkit-props.d.ts +2 -21
- package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.d.ts +1 -1
- package/dist/components/copilot-provider/copilotkit.js +238 -326
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +8 -8
- package/dist/components/copilot-provider/index.d.ts +1 -1
- package/dist/components/copilot-provider/index.js +238 -326
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +8 -8
- package/dist/components/error-boundary/error-boundary.js +146 -135
- package/dist/components/error-boundary/error-boundary.js.map +1 -1
- package/dist/components/error-boundary/error-boundary.mjs +4 -4
- package/dist/components/error-boundary/error-utils.js.map +1 -1
- package/dist/components/error-boundary/error-utils.mjs +2 -2
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +238 -326
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +8 -8
- package/dist/components/toast/toast-provider.js +85 -118
- package/dist/components/toast/toast-provider.js.map +1 -1
- package/dist/components/toast/toast-provider.mjs +1 -1
- package/dist/components/usage-banner.js +146 -135
- package/dist/components/usage-banner.js.map +1 -1
- package/dist/components/usage-banner.mjs +1 -1
- package/dist/context/copilot-context.d.ts +1 -1
- package/dist/context/copilot-context.js +1 -2
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +1 -2
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +1 -1
- package/dist/{copilot-context-3da805ab.d.ts → copilot-context-f9b2b4c3.d.ts} +1 -5
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +12 -108
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +19 -19
- package/dist/hooks/use-chat.d.ts +1 -1
- package/dist/hooks/use-chat.js +12 -105
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +5 -5
- package/dist/hooks/use-coagent-state-render.js +1 -2
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +3 -3
- package/dist/hooks/use-coagent.d.ts +1 -1
- package/dist/hooks/use-coagent.js +12 -108
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +11 -11
- package/dist/hooks/use-copilot-action.js +1 -2
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +4 -4
- package/dist/hooks/use-copilot-additional-instructions.js +1 -2
- package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
- package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
- package/dist/hooks/use-copilot-authenticated-action.js +1 -2
- package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +5 -5
- package/dist/hooks/use-copilot-chat.d.ts +1 -1
- package/dist/hooks/use-copilot-chat.js +12 -105
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +10 -10
- package/dist/hooks/use-copilot-readable.js +1 -2
- package/dist/hooks/use-copilot-readable.js.map +1 -1
- package/dist/hooks/use-copilot-readable.mjs +2 -2
- package/dist/hooks/use-copilot-runtime-client.d.ts +0 -2
- package/dist/hooks/use-copilot-runtime-client.js +2 -52
- package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
- package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
- package/dist/hooks/use-langgraph-interrupt-render.js +1 -2
- package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt-render.mjs +2 -2
- package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
- package/dist/hooks/use-langgraph-interrupt.js +12 -105
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt.mjs +11 -11
- package/dist/hooks/use-make-copilot-document-readable.js +1 -2
- package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
- package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +247 -400
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -20
- package/dist/lib/copilot-task.d.ts +1 -1
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +9 -9
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +9 -9
- package/dist/types/interrupt-action.d.ts +1 -1
- package/dist/utils/extract.d.ts +1 -1
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +8 -8
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +8 -8
- package/dist/utils/utils.test.d.ts +2 -0
- package/dist/utils/utils.test.js +9 -0
- package/dist/utils/utils.test.js.map +1 -0
- package/dist/utils/utils.test.mjs +7 -0
- package/dist/utils/utils.test.mjs.map +1 -0
- package/jest.config.js +3 -7
- package/package.json +3 -4
- package/src/components/copilot-provider/copilot-messages.tsx +3 -42
- package/src/components/copilot-provider/copilotkit-props.tsx +0 -21
- package/src/components/copilot-provider/copilotkit.tsx +0 -2
- package/src/components/toast/toast-provider.tsx +24 -49
- package/src/components/usage-banner.tsx +147 -144
- package/src/context/copilot-context.tsx +1 -7
- package/src/hooks/use-chat.ts +6 -106
- package/src/hooks/use-coagent.ts +0 -5
- package/src/hooks/use-copilot-runtime-client.ts +39 -41
- package/tsconfig.json +8 -1
- package/tsup.config.ts +6 -6
- package/dist/chunk-55QZ2SVJ.mjs.map +0 -1
- package/dist/chunk-57K2ZJ5F.mjs +0 -348
- package/dist/chunk-57K2ZJ5F.mjs.map +0 -1
- package/dist/chunk-G7LYGERN.mjs.map +0 -1
- package/dist/chunk-JDEWNLNP.mjs.map +0 -1
- package/dist/chunk-WOGURSAL.mjs.map +0 -1
- package/dist/chunk-XFOTNHYA.mjs.map +0 -1
- package/dist/chunk-YAF2LATQ.mjs +0 -310
- package/dist/chunk-YAF2LATQ.mjs.map +0 -1
- package/src/components/copilot-provider/__tests__/copilotkit-trace.test.tsx +0 -75
- /package/dist/{chunk-3YHYWAHK.mjs.map → chunk-2FW7HH6W.mjs.map} +0 -0
- /package/dist/{chunk-OF4SZTLL.mjs.map → chunk-2XSUXRGG.mjs.map} +0 -0
- /package/dist/{chunk-EXU7GWLC.mjs.map → chunk-C3SYYVMR.mjs.map} +0 -0
- /package/dist/{chunk-JPMIAGI6.mjs.map → chunk-C6F6EQNA.mjs.map} +0 -0
- /package/dist/{chunk-3OQM3NEK.mjs.map → chunk-CCESTGAM.mjs.map} +0 -0
- /package/dist/{chunk-EF5BNM34.mjs.map → chunk-LDACFA2B.mjs.map} +0 -0
- /package/dist/{chunk-UBNRUXEK.mjs.map → chunk-LZDDYZEY.mjs.map} +0 -0
- /package/dist/{chunk-FXK6RQIN.mjs.map → chunk-PUNALT2S.mjs.map} +0 -0
- /package/dist/{chunk-CMQV4XNY.mjs.map → chunk-Q5D5XQFA.mjs.map} +0 -0
- /package/dist/{chunk-SJJNFYGQ.mjs.map → chunk-QQZLIEXK.mjs.map} +0 -0
- /package/dist/{chunk-NQVCZQ5T.mjs.map → chunk-T42PN5VN.mjs.map} +0 -0
- /package/dist/{chunk-ERXWDCY6.mjs.map → chunk-UHQMV2CE.mjs.map} +0 -0
|
@@ -0,0 +1,359 @@
|
|
|
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: "18",
|
|
10
|
+
height: "18",
|
|
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: "18",
|
|
28
|
+
height: "18",
|
|
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: "18",
|
|
46
|
+
height: "18",
|
|
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
|
+
const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
72
|
+
const matches = Array.from(rawMessage.matchAll(linkRegex));
|
|
73
|
+
if (matches.length > 0) {
|
|
74
|
+
let cleanMessage2 = rawMessage.replace(/\.\s*See more:\s*\[([^\]]+)\]\(([^)]+)\)/g, ".").replace(/See more:\s*\[([^\]]+)\]\(([^)]+)\)/g, "").trim();
|
|
75
|
+
return cleanMessage2;
|
|
76
|
+
}
|
|
77
|
+
return rawMessage;
|
|
78
|
+
};
|
|
79
|
+
const cleanMessage = parseMessage(message);
|
|
80
|
+
const Icon = icon || defaultIcons[severity];
|
|
81
|
+
const themeConfigs = {
|
|
82
|
+
[Severity.INFO]: {
|
|
83
|
+
bg: "linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%)",
|
|
84
|
+
border: "#93c5fd",
|
|
85
|
+
text: "#1e40af",
|
|
86
|
+
icon: "#3b82f6",
|
|
87
|
+
primaryBtn: "#3b82f6",
|
|
88
|
+
primaryBtnHover: "#2563eb"
|
|
89
|
+
},
|
|
90
|
+
[Severity.WARNING]: {
|
|
91
|
+
bg: "linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%)",
|
|
92
|
+
border: "#fbbf24",
|
|
93
|
+
text: "#92400e",
|
|
94
|
+
icon: "#f59e0b",
|
|
95
|
+
primaryBtn: "#f59e0b",
|
|
96
|
+
primaryBtnHover: "#d97706"
|
|
97
|
+
},
|
|
98
|
+
[Severity.CRITICAL]: {
|
|
99
|
+
bg: "linear-gradient(135deg, #fef2f2 0%, #fecaca 100%)",
|
|
100
|
+
border: "#f87171",
|
|
101
|
+
text: "#991b1b",
|
|
102
|
+
icon: "#ef4444",
|
|
103
|
+
primaryBtn: "#ef4444",
|
|
104
|
+
primaryBtnHover: "#dc2626"
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const themeConfig = themeConfigs[severity] || themeConfigs[Severity.CRITICAL];
|
|
108
|
+
return /* @__PURE__ */ jsxs(
|
|
109
|
+
"div",
|
|
110
|
+
{
|
|
111
|
+
style: {
|
|
112
|
+
position: "fixed",
|
|
113
|
+
bottom: "20px",
|
|
114
|
+
left: "50%",
|
|
115
|
+
transform: "translateX(-50%)",
|
|
116
|
+
maxWidth: "min(95vw, 680px)",
|
|
117
|
+
width: "100%",
|
|
118
|
+
zIndex: 1e4,
|
|
119
|
+
animation: "bannerSlideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1)"
|
|
120
|
+
},
|
|
121
|
+
children: [
|
|
122
|
+
/* @__PURE__ */ jsx("style", { children: `
|
|
123
|
+
@keyframes bannerSlideIn {
|
|
124
|
+
from {
|
|
125
|
+
opacity: 0;
|
|
126
|
+
transform: translateX(-50%) translateY(10px);
|
|
127
|
+
}
|
|
128
|
+
to {
|
|
129
|
+
opacity: 1;
|
|
130
|
+
transform: translateX(-50%) translateY(0);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
` }),
|
|
134
|
+
/* @__PURE__ */ jsxs(
|
|
135
|
+
"div",
|
|
136
|
+
{
|
|
137
|
+
style: {
|
|
138
|
+
display: "flex",
|
|
139
|
+
alignItems: "flex-start",
|
|
140
|
+
gap: "14px",
|
|
141
|
+
borderRadius: "16px",
|
|
142
|
+
border: `1px solid ${themeConfig.border}`,
|
|
143
|
+
background: themeConfig.bg,
|
|
144
|
+
padding: "18px 20px",
|
|
145
|
+
boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)",
|
|
146
|
+
position: "relative",
|
|
147
|
+
backdropFilter: "blur(10px)",
|
|
148
|
+
WebkitBackdropFilter: "blur(10px)"
|
|
149
|
+
},
|
|
150
|
+
children: [
|
|
151
|
+
onClose && /* @__PURE__ */ jsx(
|
|
152
|
+
"button",
|
|
153
|
+
{
|
|
154
|
+
onClick: onClose,
|
|
155
|
+
style: {
|
|
156
|
+
position: "absolute",
|
|
157
|
+
top: "12px",
|
|
158
|
+
right: "12px",
|
|
159
|
+
background: "rgba(255, 255, 255, 0.8)",
|
|
160
|
+
border: "none",
|
|
161
|
+
color: themeConfig.text,
|
|
162
|
+
cursor: "pointer",
|
|
163
|
+
fontSize: "18px",
|
|
164
|
+
lineHeight: "1",
|
|
165
|
+
padding: "6px",
|
|
166
|
+
borderRadius: "8px",
|
|
167
|
+
opacity: 0.7,
|
|
168
|
+
transition: "all 0.2s ease",
|
|
169
|
+
display: "flex",
|
|
170
|
+
alignItems: "center",
|
|
171
|
+
justifyContent: "center",
|
|
172
|
+
width: "28px",
|
|
173
|
+
height: "28px"
|
|
174
|
+
},
|
|
175
|
+
title: "Close",
|
|
176
|
+
onMouseOver: (e) => {
|
|
177
|
+
e.currentTarget.style.opacity = "1";
|
|
178
|
+
e.currentTarget.style.background = "rgba(255, 255, 255, 1)";
|
|
179
|
+
e.currentTarget.style.transform = "scale(1.05)";
|
|
180
|
+
},
|
|
181
|
+
onMouseOut: (e) => {
|
|
182
|
+
e.currentTarget.style.opacity = "0.7";
|
|
183
|
+
e.currentTarget.style.background = "rgba(255, 255, 255, 0.8)";
|
|
184
|
+
e.currentTarget.style.transform = "scale(1)";
|
|
185
|
+
},
|
|
186
|
+
children: "\xD7"
|
|
187
|
+
}
|
|
188
|
+
),
|
|
189
|
+
/* @__PURE__ */ jsx(
|
|
190
|
+
"div",
|
|
191
|
+
{
|
|
192
|
+
style: {
|
|
193
|
+
color: themeConfig.icon,
|
|
194
|
+
flexShrink: 0,
|
|
195
|
+
marginTop: "1px",
|
|
196
|
+
padding: "6px",
|
|
197
|
+
borderRadius: "10px",
|
|
198
|
+
background: "rgba(255, 255, 255, 0.7)",
|
|
199
|
+
display: "flex",
|
|
200
|
+
alignItems: "center",
|
|
201
|
+
justifyContent: "center"
|
|
202
|
+
},
|
|
203
|
+
children: Icon
|
|
204
|
+
}
|
|
205
|
+
),
|
|
206
|
+
/* @__PURE__ */ jsxs("div", { style: { flex: 1, paddingRight: onClose ? "40px" : "0" }, children: [
|
|
207
|
+
/* @__PURE__ */ jsx(
|
|
208
|
+
"div",
|
|
209
|
+
{
|
|
210
|
+
style: {
|
|
211
|
+
fontSize: "15px",
|
|
212
|
+
fontWeight: 600,
|
|
213
|
+
color: themeConfig.text,
|
|
214
|
+
lineHeight: "1.5",
|
|
215
|
+
marginBottom: actions ? "12px" : "0",
|
|
216
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
217
|
+
},
|
|
218
|
+
children: cleanMessage
|
|
219
|
+
}
|
|
220
|
+
),
|
|
221
|
+
actions && /* @__PURE__ */ jsxs(
|
|
222
|
+
"div",
|
|
223
|
+
{
|
|
224
|
+
style: {
|
|
225
|
+
display: "flex",
|
|
226
|
+
gap: "10px",
|
|
227
|
+
flexWrap: "wrap"
|
|
228
|
+
},
|
|
229
|
+
children: [
|
|
230
|
+
actions.secondary && /* @__PURE__ */ jsx(
|
|
231
|
+
"button",
|
|
232
|
+
{
|
|
233
|
+
onClick: actions.secondary.onClick,
|
|
234
|
+
style: {
|
|
235
|
+
borderRadius: "10px",
|
|
236
|
+
padding: "8px 16px",
|
|
237
|
+
fontSize: "14px",
|
|
238
|
+
fontWeight: 500,
|
|
239
|
+
color: themeConfig.text,
|
|
240
|
+
backgroundColor: "rgba(255, 255, 255, 0.8)",
|
|
241
|
+
border: `1.5px solid ${themeConfig.border}`,
|
|
242
|
+
cursor: "pointer",
|
|
243
|
+
transition: "all 0.2s ease",
|
|
244
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
245
|
+
},
|
|
246
|
+
onMouseOver: (e) => {
|
|
247
|
+
e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 1)";
|
|
248
|
+
e.currentTarget.style.transform = "translateY(-1px)";
|
|
249
|
+
e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.15)";
|
|
250
|
+
},
|
|
251
|
+
onMouseOut: (e) => {
|
|
252
|
+
e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.8)";
|
|
253
|
+
e.currentTarget.style.transform = "translateY(0)";
|
|
254
|
+
e.currentTarget.style.boxShadow = "none";
|
|
255
|
+
},
|
|
256
|
+
children: actions.secondary.label
|
|
257
|
+
}
|
|
258
|
+
),
|
|
259
|
+
actions.primary && /* @__PURE__ */ jsx(
|
|
260
|
+
"button",
|
|
261
|
+
{
|
|
262
|
+
onClick: actions.primary.onClick,
|
|
263
|
+
style: {
|
|
264
|
+
borderRadius: "10px",
|
|
265
|
+
padding: "8px 16px",
|
|
266
|
+
fontSize: "14px",
|
|
267
|
+
fontWeight: 600,
|
|
268
|
+
color: "#fff",
|
|
269
|
+
backgroundColor: themeConfig.primaryBtn,
|
|
270
|
+
border: "none",
|
|
271
|
+
cursor: "pointer",
|
|
272
|
+
transition: "all 0.2s ease",
|
|
273
|
+
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
|
|
274
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
275
|
+
},
|
|
276
|
+
onMouseOver: (e) => {
|
|
277
|
+
e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;
|
|
278
|
+
e.currentTarget.style.transform = "translateY(-1px)";
|
|
279
|
+
e.currentTarget.style.boxShadow = "0 6px 16px rgba(0, 0, 0, 0.2)";
|
|
280
|
+
},
|
|
281
|
+
onMouseOut: (e) => {
|
|
282
|
+
e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;
|
|
283
|
+
e.currentTarget.style.transform = "translateY(0)";
|
|
284
|
+
e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.15)";
|
|
285
|
+
},
|
|
286
|
+
children: actions.primary.label
|
|
287
|
+
}
|
|
288
|
+
)
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
)
|
|
292
|
+
] })
|
|
293
|
+
]
|
|
294
|
+
}
|
|
295
|
+
)
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
function renderCopilotKitUsage(error, onClose) {
|
|
301
|
+
if (error.visibility !== ErrorVisibility.BANNER) {
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
const extractUrlFromMessage = (message) => {
|
|
305
|
+
const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
306
|
+
const match = linkRegex.exec(message);
|
|
307
|
+
return match ? match[2] : null;
|
|
308
|
+
};
|
|
309
|
+
const getErrorActions = (error2) => {
|
|
310
|
+
switch (error2.name) {
|
|
311
|
+
case ERROR_NAMES.MISSING_PUBLIC_API_KEY_ERROR:
|
|
312
|
+
return {
|
|
313
|
+
primary: {
|
|
314
|
+
label: "Sign In",
|
|
315
|
+
onClick: () => window.location.href = "https://cloud.copilotkit.ai"
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
case ERROR_NAMES.UPGRADE_REQUIRED_ERROR:
|
|
319
|
+
return {
|
|
320
|
+
primary: {
|
|
321
|
+
label: "Upgrade",
|
|
322
|
+
onClick: () => window.location.href = "https://copilotkit.ai/"
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
case ERROR_NAMES.COPILOT_API_DISCOVERY_ERROR:
|
|
326
|
+
case ERROR_NAMES.COPILOT_REMOTE_ENDPOINT_DISCOVERY_ERROR:
|
|
327
|
+
case ERROR_NAMES.COPILOT_KIT_AGENT_DISCOVERY_ERROR:
|
|
328
|
+
return {
|
|
329
|
+
primary: {
|
|
330
|
+
label: "View Docs",
|
|
331
|
+
onClick: () => {
|
|
332
|
+
var _a;
|
|
333
|
+
const urlFromMessage = extractUrlFromMessage(error2.message);
|
|
334
|
+
const urlFromExtensions = (_a = error2.extensions) == null ? void 0 : _a.troubleshootingUrl;
|
|
335
|
+
const url = urlFromMessage || urlFromExtensions || "https://docs.copilotkit.ai/troubleshooting/common-issues";
|
|
336
|
+
window.open(url, "_blank");
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
default:
|
|
341
|
+
return void 0;
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
return /* @__PURE__ */ jsx(
|
|
345
|
+
UsageBanner,
|
|
346
|
+
{
|
|
347
|
+
severity: error.severity || Severity.CRITICAL,
|
|
348
|
+
message: error.message,
|
|
349
|
+
onClose,
|
|
350
|
+
actions: getErrorActions(error)
|
|
351
|
+
}
|
|
352
|
+
);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
export {
|
|
356
|
+
UsageBanner,
|
|
357
|
+
renderCopilotKitUsage
|
|
358
|
+
};
|
|
359
|
+
//# sourceMappingURL=chunk-HD2GE3DK.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=\"18\"\n height=\"18\"\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=\"18\"\n height=\"18\"\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=\"18\"\n height=\"18\"\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 // Parse markdown links from message and clean it up\n const parseMessage = (rawMessage: string) => {\n // Extract markdown links: [text](url)\n const linkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g;\n const matches = Array.from(rawMessage.matchAll(linkRegex));\n\n if (matches.length > 0) {\n // Remove \"See more:\" and markdown links from the main message\n let cleanMessage = rawMessage\n .replace(/\\.\\s*See more:\\s*\\[([^\\]]+)\\]\\(([^)]+)\\)/g, \".\")\n .replace(/See more:\\s*\\[([^\\]]+)\\]\\(([^)]+)\\)/g, \"\")\n .trim();\n\n return cleanMessage;\n }\n\n return rawMessage;\n };\n\n const cleanMessage = parseMessage(message);\n const Icon = icon || defaultIcons[severity];\n\n const themeConfigs = {\n [Severity.INFO]: {\n bg: \"linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%)\",\n border: \"#93c5fd\",\n text: \"#1e40af\",\n icon: \"#3b82f6\",\n primaryBtn: \"#3b82f6\",\n primaryBtnHover: \"#2563eb\",\n },\n [Severity.WARNING]: {\n bg: \"linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%)\",\n border: \"#fbbf24\",\n text: \"#92400e\",\n icon: \"#f59e0b\",\n primaryBtn: \"#f59e0b\",\n primaryBtnHover: \"#d97706\",\n },\n [Severity.CRITICAL]: {\n bg: \"linear-gradient(135deg, #fef2f2 0%, #fecaca 100%)\",\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: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n maxWidth: \"min(95vw, 680px)\",\n width: \"100%\",\n zIndex: 10000,\n animation: \"bannerSlideIn 0.4s 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(10px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n }\n `}\n </style>\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"14px\",\n borderRadius: \"16px\",\n border: `1px solid ${themeConfig.border}`,\n background: themeConfig.bg,\n padding: \"18px 20px\",\n boxShadow: \"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)\",\n position: \"relative\",\n backdropFilter: \"blur(10px)\",\n WebkitBackdropFilter: \"blur(10px)\",\n }}\n >\n {/* Close button */}\n {onClose && (\n <button\n onClick={onClose}\n style={{\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n background: \"rgba(255, 255, 255, 0.8)\",\n border: \"none\",\n color: themeConfig.text,\n cursor: \"pointer\",\n fontSize: \"18px\",\n lineHeight: \"1\",\n padding: \"6px\",\n borderRadius: \"8px\",\n opacity: 0.7,\n transition: \"all 0.2s ease\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"28px\",\n height: \"28px\",\n }}\n title=\"Close\"\n onMouseOver={(e) => {\n e.currentTarget.style.opacity = \"1\";\n e.currentTarget.style.background = \"rgba(255, 255, 255, 1)\";\n e.currentTarget.style.transform = \"scale(1.05)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.opacity = \"0.7\";\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.8)\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n ×\n </button>\n )}\n\n {/* Icon */}\n <div\n style={{\n color: themeConfig.icon,\n flexShrink: 0,\n marginTop: \"1px\",\n padding: \"6px\",\n borderRadius: \"10px\",\n background: \"rgba(255, 255, 255, 0.7)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {Icon}\n </div>\n\n {/* Content */}\n <div style={{ flex: 1, paddingRight: onClose ? \"40px\" : \"0\" }}>\n {/* Message */}\n <div\n style={{\n fontSize: \"15px\",\n fontWeight: 600,\n color: themeConfig.text,\n lineHeight: \"1.5\",\n marginBottom: actions ? \"12px\" : \"0\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n >\n {cleanMessage}\n </div>\n\n {/* Actions */}\n {actions && (\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n flexWrap: \"wrap\",\n }}\n >\n {actions.secondary && (\n <button\n onClick={actions.secondary.onClick}\n style={{\n borderRadius: \"10px\",\n padding: \"8px 16px\",\n fontSize: \"14px\",\n fontWeight: 500,\n color: themeConfig.text,\n backgroundColor: \"rgba(255, 255, 255, 0.8)\",\n border: `1.5px 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 e.currentTarget.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.15)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.backgroundColor = \"rgba(255, 255, 255, 0.8)\";\n e.currentTarget.style.transform = \"translateY(0)\";\n e.currentTarget.style.boxShadow = \"none\";\n }}\n >\n {actions.secondary.label}\n </button>\n )}\n {actions.primary && (\n <button\n onClick={actions.primary.onClick}\n style={{\n borderRadius: \"10px\",\n padding: \"8px 16px\",\n fontSize: \"14px\",\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 4px 12px 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 6px 16px 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 4px 12px rgba(0, 0, 0, 0.15)\";\n }}\n >\n {actions.primary.label}\n </button>\n )}\n </div>\n )}\n </div>\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"]}
|
|
@@ -4,16 +4,13 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
useAsyncCallback,
|
|
6
6
|
useErrorToast
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CCESTGAM.mjs";
|
|
8
8
|
import {
|
|
9
9
|
useCopilotRuntimeClient
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import {
|
|
12
|
-
useToast
|
|
13
|
-
} from "./chunk-YAF2LATQ.mjs";
|
|
10
|
+
} from "./chunk-RUY6MLHA.mjs";
|
|
14
11
|
import {
|
|
15
12
|
useCopilotContext
|
|
16
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6KGEF242.mjs";
|
|
17
14
|
import {
|
|
18
15
|
__async,
|
|
19
16
|
__spreadProps,
|
|
@@ -25,9 +22,7 @@ import { useCallback, useEffect, useRef } from "react";
|
|
|
25
22
|
import {
|
|
26
23
|
COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,
|
|
27
24
|
randomId,
|
|
28
|
-
parseJson
|
|
29
|
-
CopilotKitError,
|
|
30
|
-
CopilotKitErrorCode
|
|
25
|
+
parseJson
|
|
31
26
|
} from "@copilotkit/shared";
|
|
32
27
|
import {
|
|
33
28
|
TextMessage,
|
|
@@ -75,35 +70,6 @@ function useChat(options) {
|
|
|
75
70
|
} = options;
|
|
76
71
|
const runChatCompletionRef = useRef();
|
|
77
72
|
const addErrorToast = useErrorToast();
|
|
78
|
-
const { setBannerError } = useToast();
|
|
79
|
-
const { onTrace } = useCopilotContext();
|
|
80
|
-
const traceUIError = (error, originalError) => __async(this, null, function* () {
|
|
81
|
-
if (!onTrace || !(copilotConfig == null ? void 0 : copilotConfig.publicApiKey))
|
|
82
|
-
return;
|
|
83
|
-
try {
|
|
84
|
-
const traceEvent = {
|
|
85
|
-
type: "error",
|
|
86
|
-
timestamp: Date.now(),
|
|
87
|
-
context: {
|
|
88
|
-
source: "ui",
|
|
89
|
-
request: {
|
|
90
|
-
operation: "useChatCompletion",
|
|
91
|
-
url: copilotConfig.chatApiEndpoint,
|
|
92
|
-
startTime: Date.now()
|
|
93
|
-
},
|
|
94
|
-
technical: {
|
|
95
|
-
environment: "browser",
|
|
96
|
-
userAgent: typeof navigator !== "undefined" ? navigator.userAgent : void 0,
|
|
97
|
-
stackTrace: originalError instanceof Error ? originalError.stack : void 0
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
error
|
|
101
|
-
};
|
|
102
|
-
yield onTrace(traceEvent);
|
|
103
|
-
} catch (traceError) {
|
|
104
|
-
console.error("Error in use-chat onTrace handler:", traceError);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
73
|
const agentSessionRef = useRef(agentSession);
|
|
108
74
|
agentSessionRef.current = agentSession;
|
|
109
75
|
const runIdRef = useRef(runId);
|
|
@@ -123,7 +89,7 @@ function useChat(options) {
|
|
|
123
89
|
const pendingAppendsRef = useRef([]);
|
|
124
90
|
const runChatCompletion = useAsyncCallback(
|
|
125
91
|
(previousMessages) => __async(this, null, function* () {
|
|
126
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o
|
|
92
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
127
93
|
setIsLoading(true);
|
|
128
94
|
const interruptEvent = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event;
|
|
129
95
|
if ((interruptEvent == null ? void 0 : interruptEvent.name) === MetaEventName.LangGraphInterruptEvent && (interruptEvent == null ? void 0 : interruptEvent.value) && !(interruptEvent == null ? void 0 : interruptEvent.response) && agentSessionRef.current) {
|
|
@@ -255,53 +221,20 @@ function useChat(options) {
|
|
|
255
221
|
messages2 = convertGqlOutputToMessages(
|
|
256
222
|
filterAdjacentAgentStateMessages(rawMessagesResponse)
|
|
257
223
|
);
|
|
224
|
+
if (messages2.length === 0) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
258
227
|
newMessages = [];
|
|
259
228
|
if (((_k = value.generateCopilotResponse.status) == null ? void 0 : _k.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
|
|
260
|
-
const guardrailsReason = ((_l = value.generateCopilotResponse.status.details) == null ? void 0 : _l.guardrailsReason) || "";
|
|
261
229
|
newMessages = [
|
|
262
230
|
new TextMessage({
|
|
263
231
|
role: MessageRole.Assistant,
|
|
264
|
-
content: guardrailsReason
|
|
232
|
+
content: ((_l = value.generateCopilotResponse.status.details) == null ? void 0 : _l.guardrailsReason) || ""
|
|
265
233
|
})
|
|
266
234
|
];
|
|
267
|
-
const guardrailsError = new CopilotKitError({
|
|
268
|
-
message: `Guardrails validation failed: ${guardrailsReason}`,
|
|
269
|
-
code: CopilotKitErrorCode.MISUSE
|
|
270
|
-
});
|
|
271
|
-
yield traceUIError(guardrailsError, {
|
|
272
|
-
statusReason: value.generateCopilotResponse.status.reason,
|
|
273
|
-
statusDetails: value.generateCopilotResponse.status.details
|
|
274
|
-
});
|
|
275
235
|
setMessages([...previousMessages, ...newMessages]);
|
|
276
236
|
break;
|
|
277
|
-
}
|
|
278
|
-
if (((_m = value.generateCopilotResponse.status) == null ? void 0 : _m.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "UNKNOWN_ERROR") {
|
|
279
|
-
const errorMessage = ((_n = value.generateCopilotResponse.status.details) == null ? void 0 : _n.description) || "An unknown error occurred";
|
|
280
|
-
const statusDetails = value.generateCopilotResponse.status.details;
|
|
281
|
-
const originalError = (statusDetails == null ? void 0 : statusDetails.originalError) || (statusDetails == null ? void 0 : statusDetails.error);
|
|
282
|
-
const originalCode = (originalError == null ? void 0 : originalError.code) || ((_o = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _o.code);
|
|
283
|
-
const originalSeverity = (originalError == null ? void 0 : originalError.severity) || ((_p = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _p.severity);
|
|
284
|
-
const originalVisibility = (originalError == null ? void 0 : originalError.visibility) || ((_q = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _q.visibility);
|
|
285
|
-
let errorCode = CopilotKitErrorCode.NETWORK_ERROR;
|
|
286
|
-
if (originalCode && Object.values(CopilotKitErrorCode).includes(originalCode)) {
|
|
287
|
-
errorCode = originalCode;
|
|
288
|
-
}
|
|
289
|
-
const structuredError = new CopilotKitError({
|
|
290
|
-
message: errorMessage,
|
|
291
|
-
code: errorCode,
|
|
292
|
-
severity: originalSeverity,
|
|
293
|
-
visibility: originalVisibility
|
|
294
|
-
});
|
|
295
|
-
setBannerError(structuredError);
|
|
296
|
-
yield traceUIError(structuredError, {
|
|
297
|
-
statusReason: value.generateCopilotResponse.status.reason,
|
|
298
|
-
statusDetails: value.generateCopilotResponse.status.details,
|
|
299
|
-
originalErrorCode: originalCode,
|
|
300
|
-
preservedStructure: !!originalCode
|
|
301
|
-
});
|
|
302
|
-
setIsLoading(false);
|
|
303
|
-
break;
|
|
304
|
-
} else if (messages2.length > 0) {
|
|
237
|
+
} else {
|
|
305
238
|
newMessages = [...messages2];
|
|
306
239
|
for (const message of messages2) {
|
|
307
240
|
if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
|
|
@@ -432,11 +365,11 @@ function useChat(options) {
|
|
|
432
365
|
followUp !== false && // and we executed an action
|
|
433
366
|
(didExecuteAction || // the last message is a server side result
|
|
434
367
|
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
435
|
-
!((
|
|
368
|
+
!((_m = chatAbortControllerRef.current) == null ? void 0 : _m.signal.aborted)
|
|
436
369
|
) {
|
|
437
370
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
438
371
|
return yield runChatCompletionRef.current(finalMessages);
|
|
439
|
-
} else if ((
|
|
372
|
+
} else if ((_n = chatAbortControllerRef.current) == null ? void 0 : _n.signal.aborted) {
|
|
440
373
|
const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
|
|
441
374
|
if (message.isActionExecutionMessage()) {
|
|
442
375
|
return finalMessages.find(
|
|
@@ -447,7 +380,7 @@ function useChat(options) {
|
|
|
447
380
|
});
|
|
448
381
|
const repairedMessageIds = repairedMessages.map((message) => message.id);
|
|
449
382
|
setMessages(repairedMessages);
|
|
450
|
-
if ((
|
|
383
|
+
if ((_o = agentSessionRef.current) == null ? void 0 : _o.nodeName) {
|
|
451
384
|
setAgentSession({
|
|
452
385
|
threadId: agentSessionRef.current.threadId,
|
|
453
386
|
agentName: agentSessionRef.current.agentName,
|
|
@@ -652,4 +585,4 @@ function getPairedFeAction(actions, message) {
|
|
|
652
585
|
export {
|
|
653
586
|
useChat
|
|
654
587
|
};
|
|
655
|
-
//# sourceMappingURL=chunk-
|
|
588
|
+
//# sourceMappingURL=chunk-HJP2RX5R.mjs.map
|