@copilotkit/react-ui 1.10.6 → 1.50.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H5Y4W7DM.mjs → chunk-3JYVJHL5.mjs} +6 -6
- package/dist/chunk-3YWFGNSM.mjs +32 -0
- package/dist/chunk-3YWFGNSM.mjs.map +1 -0
- package/dist/{chunk-BAD2NFZ7.mjs → chunk-CQ2WALZ7.mjs} +2 -2
- package/dist/{chunk-W7ONZTSW.mjs → chunk-E6WVAOQA.mjs} +11 -5
- package/dist/chunk-E6WVAOQA.mjs.map +1 -0
- package/dist/{chunk-ME2WM7IP.mjs → chunk-G35HUUDA.mjs} +36 -260
- package/dist/chunk-G35HUUDA.mjs.map +1 -0
- package/dist/{chunk-EZQA3UPQ.mjs → chunk-HBZW7E5Z.mjs} +16 -13
- package/dist/chunk-HBZW7E5Z.mjs.map +1 -0
- package/dist/{chunk-3QYTKBWC.mjs → chunk-IHFR6PYG.mjs} +8 -5
- package/dist/chunk-IHFR6PYG.mjs.map +1 -0
- package/dist/{chunk-5XLGXUQI.mjs → chunk-MPF6BJUF.mjs} +7 -3
- package/dist/chunk-MPF6BJUF.mjs.map +1 -0
- package/dist/{chunk-W26XFBEG.mjs → chunk-NGJ32FAP.mjs} +3 -3
- package/dist/chunk-NGJ32FAP.mjs.map +1 -0
- package/dist/{chunk-2LIO4Z3E.mjs → chunk-ODEHR7KI.mjs} +9 -2
- package/dist/chunk-ODEHR7KI.mjs.map +1 -0
- package/dist/chunk-OYRZ4VLU.mjs +12 -0
- package/dist/chunk-OYRZ4VLU.mjs.map +1 -0
- package/dist/chunk-QB3GUN2N.mjs +31 -0
- package/dist/chunk-QB3GUN2N.mjs.map +1 -0
- package/dist/{chunk-7RDGZ5JL.mjs → chunk-SOB5EIL7.mjs} +2 -2
- package/dist/components/chat/Chat.d.ts +3 -98
- package/dist/components/chat/Chat.js +100 -279
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +12 -14
- package/dist/components/chat/Input.d.ts +1 -1
- package/dist/components/chat/Input.js +11 -8
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Messages.d.ts +4 -4
- package/dist/components/chat/Messages.js +44 -8
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +5 -5
- package/dist/components/chat/Modal.d.ts +1 -6
- package/dist/components/chat/Modal.js +106 -283
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +11 -11
- package/dist/components/chat/Popup.d.ts +1 -6
- package/dist/components/chat/Popup.js +106 -283
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +12 -12
- package/dist/components/chat/Sidebar.d.ts +1 -6
- package/dist/components/chat/Sidebar.js +106 -283
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +12 -12
- package/dist/components/chat/Suggestion.js.map +1 -1
- package/dist/components/chat/Suggestion.mjs +1 -1
- package/dist/components/chat/Suggestions.d.ts +1 -1
- package/dist/components/chat/Suggestions.js +19 -12
- package/dist/components/chat/Suggestions.js.map +1 -1
- package/dist/components/chat/Suggestions.mjs +2 -2
- package/dist/components/chat/index.d.ts +0 -5
- package/dist/components/chat/index.js +106 -283
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +13 -13
- package/dist/components/chat/messages/AssistantMessage.js +7 -4
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +1 -1
- package/dist/components/chat/messages/LegacyRenderMessage.js +37 -7
- package/dist/components/chat/messages/LegacyRenderMessage.js.map +1 -1
- package/dist/components/chat/messages/LegacyRenderMessage.mjs +4 -4
- package/dist/components/chat/messages/RenderMessage.js +30 -7
- package/dist/components/chat/messages/RenderMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderMessage.mjs +3 -3
- package/dist/components/chat/messages/UserMessage.js +19 -3
- package/dist/components/chat/messages/UserMessage.js.map +1 -1
- package/dist/components/chat/messages/UserMessage.mjs +1 -1
- package/dist/components/chat/props.d.ts +16 -0
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/index.d.ts +0 -5
- package/dist/components/index.js +106 -283
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +13 -13
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +2 -24
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.d.ts +4 -26
- package/dist/hooks/use-copilot-chat-suggestions.js +2 -24
- package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.mjs +1 -1
- package/dist/index.css +8 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +109 -308
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -14
- package/dist/types/suggestions.d.ts +1 -0
- package/dist/types/suggestions.js.map +1 -1
- package/package.json +23 -22
- package/src/components/chat/Chat.tsx +40 -325
- package/src/components/chat/Input.tsx +13 -12
- package/src/components/chat/Messages.tsx +10 -4
- package/src/components/chat/Suggestion.tsx +2 -2
- package/src/components/chat/Suggestions.tsx +6 -2
- package/src/components/chat/messages/AssistantMessage.tsx +14 -4
- package/src/components/chat/messages/LegacyRenderMessage.tsx +7 -0
- package/src/components/chat/messages/RenderMessage.tsx +4 -0
- package/src/components/chat/messages/UserMessage.tsx +30 -6
- package/src/components/chat/props.ts +19 -0
- package/src/css/messages.css +10 -1
- package/src/hooks/use-copilot-chat-suggestions.tsx +6 -57
- package/src/types/suggestions.ts +1 -0
- package/tsup.config.ts +1 -1
- package/dist/chunk-226ZMOE3.mjs +0 -24
- package/dist/chunk-226ZMOE3.mjs.map +0 -1
- package/dist/chunk-2LIO4Z3E.mjs.map +0 -1
- package/dist/chunk-3QYTKBWC.mjs.map +0 -1
- package/dist/chunk-5XLGXUQI.mjs.map +0 -1
- package/dist/chunk-EYRKZDP5.mjs +0 -32
- package/dist/chunk-EYRKZDP5.mjs.map +0 -1
- package/dist/chunk-EZQA3UPQ.mjs.map +0 -1
- package/dist/chunk-ME2WM7IP.mjs.map +0 -1
- package/dist/chunk-VVL6JFCJ.mjs +0 -16
- package/dist/chunk-VVL6JFCJ.mjs.map +0 -1
- package/dist/chunk-W26XFBEG.mjs.map +0 -1
- package/dist/chunk-W7ONZTSW.mjs.map +0 -1
- /package/dist/{chunk-H5Y4W7DM.mjs.map → chunk-3JYVJHL5.mjs.map} +0 -0
- /package/dist/{chunk-BAD2NFZ7.mjs.map → chunk-CQ2WALZ7.mjs.map} +0 -0
- /package/dist/{chunk-7RDGZ5JL.mjs.map → chunk-SOB5EIL7.mjs.map} +0 -0
|
@@ -80,8 +80,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
80
80
|
var Chat_exports = {};
|
|
81
81
|
__export(Chat_exports, {
|
|
82
82
|
CopilotChat: () => CopilotChat,
|
|
83
|
-
WrappedCopilotChat: () => WrappedCopilotChat
|
|
84
|
-
useCopilotChatLogic: () => useCopilotChatLogic
|
|
83
|
+
WrappedCopilotChat: () => WrappedCopilotChat
|
|
85
84
|
});
|
|
86
85
|
module.exports = __toCommonJS(Chat_exports);
|
|
87
86
|
|
|
@@ -400,14 +399,30 @@ var import_react_core = require("@copilotkit/react-core");
|
|
|
400
399
|
|
|
401
400
|
// src/components/chat/messages/UserMessage.tsx
|
|
402
401
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
402
|
+
var getTextContent = (content) => {
|
|
403
|
+
if (typeof content === "undefined") {
|
|
404
|
+
return void 0;
|
|
405
|
+
}
|
|
406
|
+
if (typeof content === "string") {
|
|
407
|
+
return content;
|
|
408
|
+
}
|
|
409
|
+
return content.map((part) => {
|
|
410
|
+
if (part.type === "text") {
|
|
411
|
+
return part.text;
|
|
412
|
+
}
|
|
413
|
+
return void 0;
|
|
414
|
+
}).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
|
|
415
|
+
};
|
|
403
416
|
var UserMessage = (props) => {
|
|
404
417
|
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
405
|
-
const isImageMessage = message && "image" in message && message.image;
|
|
418
|
+
const isImageMessage = message && "image" in message && Boolean(message.image);
|
|
406
419
|
if (isImageMessage) {
|
|
407
420
|
const imageMessage = message;
|
|
408
|
-
|
|
421
|
+
const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
|
|
422
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
|
|
409
423
|
}
|
|
410
|
-
|
|
424
|
+
const content = getTextContent(message == null ? void 0 : message.content);
|
|
425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
|
|
411
426
|
};
|
|
412
427
|
|
|
413
428
|
// src/components/chat/Markdown.tsx
|
|
@@ -950,6 +965,7 @@ var AssistantMessage = (props) => {
|
|
|
950
965
|
onThumbsUp,
|
|
951
966
|
onThumbsDown,
|
|
952
967
|
isCurrentMessage,
|
|
968
|
+
feedback,
|
|
953
969
|
markdownTagRenderers
|
|
954
970
|
} = props;
|
|
955
971
|
const [copied, setCopied] = (0, import_react4.useState)(false);
|
|
@@ -971,12 +987,14 @@ var AssistantMessage = (props) => {
|
|
|
971
987
|
onRegenerate();
|
|
972
988
|
};
|
|
973
989
|
const handleThumbsUp = () => {
|
|
974
|
-
if (onThumbsUp && message)
|
|
990
|
+
if (onThumbsUp && message) {
|
|
975
991
|
onThumbsUp(message);
|
|
992
|
+
}
|
|
976
993
|
};
|
|
977
994
|
const handleThumbsDown = () => {
|
|
978
|
-
if (onThumbsDown && message)
|
|
995
|
+
if (onThumbsDown && message) {
|
|
979
996
|
onThumbsDown(message);
|
|
997
|
+
}
|
|
980
998
|
};
|
|
981
999
|
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: icons.activityIcon });
|
|
982
1000
|
const content = (message == null ? void 0 : message.content) || "";
|
|
@@ -1012,7 +1030,7 @@ var AssistantMessage = (props) => {
|
|
|
1012
1030
|
onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1013
1031
|
"button",
|
|
1014
1032
|
{
|
|
1015
|
-
className:
|
|
1033
|
+
className: `copilotKitMessageControlButton ${feedback === "thumbsUp" ? "active" : ""}`,
|
|
1016
1034
|
onClick: handleThumbsUp,
|
|
1017
1035
|
"aria-label": labels.thumbsUp,
|
|
1018
1036
|
title: labels.thumbsUp,
|
|
@@ -1022,7 +1040,7 @@ var AssistantMessage = (props) => {
|
|
|
1022
1040
|
onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1023
1041
|
"button",
|
|
1024
1042
|
{
|
|
1025
|
-
className:
|
|
1043
|
+
className: `copilotKitMessageControlButton ${feedback === "thumbsDown" ? "active" : ""}`,
|
|
1026
1044
|
onClick: handleThumbsDown,
|
|
1027
1045
|
"aria-label": labels.thumbsDown,
|
|
1028
1046
|
title: labels.thumbsDown,
|
|
@@ -1083,6 +1101,7 @@ function RenderMessage(_a) {
|
|
|
1083
1101
|
var _a2;
|
|
1084
1102
|
const {
|
|
1085
1103
|
message,
|
|
1104
|
+
messages,
|
|
1086
1105
|
inProgress,
|
|
1087
1106
|
index,
|
|
1088
1107
|
isCurrentMessage,
|
|
@@ -1090,6 +1109,7 @@ function RenderMessage(_a) {
|
|
|
1090
1109
|
onCopy,
|
|
1091
1110
|
onThumbsUp,
|
|
1092
1111
|
onThumbsDown,
|
|
1112
|
+
messageFeedback,
|
|
1093
1113
|
markdownTagRenderers
|
|
1094
1114
|
} = props;
|
|
1095
1115
|
switch (message.role) {
|
|
@@ -1112,6 +1132,7 @@ function RenderMessage(_a) {
|
|
|
1112
1132
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1113
1133
|
rawData: message,
|
|
1114
1134
|
message,
|
|
1135
|
+
messages,
|
|
1115
1136
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1116
1137
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1117
1138
|
isCurrentMessage,
|
|
@@ -1119,6 +1140,7 @@ function RenderMessage(_a) {
|
|
|
1119
1140
|
onCopy,
|
|
1120
1141
|
onThumbsUp,
|
|
1121
1142
|
onThumbsDown,
|
|
1143
|
+
feedback: (messageFeedback == null ? void 0 : messageFeedback[message.id]) || null,
|
|
1122
1144
|
markdownTagRenderers,
|
|
1123
1145
|
ImageRenderer: ImageRenderer2
|
|
1124
1146
|
},
|
|
@@ -1132,6 +1154,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1132
1154
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1133
1155
|
var LegacyRenderMessage = ({
|
|
1134
1156
|
message,
|
|
1157
|
+
messages,
|
|
1135
1158
|
inProgress,
|
|
1136
1159
|
index,
|
|
1137
1160
|
isCurrentMessage,
|
|
@@ -1160,6 +1183,7 @@ var LegacyRenderMessage = ({
|
|
|
1160
1183
|
RenderTextMessage,
|
|
1161
1184
|
{
|
|
1162
1185
|
message,
|
|
1186
|
+
messages,
|
|
1163
1187
|
inProgress,
|
|
1164
1188
|
index,
|
|
1165
1189
|
isCurrentMessage,
|
|
@@ -1177,6 +1201,7 @@ var LegacyRenderMessage = ({
|
|
|
1177
1201
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1178
1202
|
RenderActionExecutionMessage,
|
|
1179
1203
|
{
|
|
1204
|
+
messages,
|
|
1180
1205
|
message,
|
|
1181
1206
|
inProgress,
|
|
1182
1207
|
index,
|
|
@@ -1191,6 +1216,7 @@ var LegacyRenderMessage = ({
|
|
|
1191
1216
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1192
1217
|
RenderAgentStateMessage,
|
|
1193
1218
|
{
|
|
1219
|
+
messages,
|
|
1194
1220
|
message,
|
|
1195
1221
|
inProgress,
|
|
1196
1222
|
index,
|
|
@@ -1204,6 +1230,7 @@ var LegacyRenderMessage = ({
|
|
|
1204
1230
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1205
1231
|
RenderResultMessage,
|
|
1206
1232
|
{
|
|
1233
|
+
messages,
|
|
1207
1234
|
message,
|
|
1208
1235
|
inProgress,
|
|
1209
1236
|
index,
|
|
@@ -1217,6 +1244,7 @@ var LegacyRenderMessage = ({
|
|
|
1217
1244
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1218
1245
|
RenderImageMessage,
|
|
1219
1246
|
{
|
|
1247
|
+
messages,
|
|
1220
1248
|
message,
|
|
1221
1249
|
inProgress,
|
|
1222
1250
|
index,
|
|
@@ -1229,6 +1257,7 @@ var LegacyRenderMessage = ({
|
|
|
1229
1257
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1230
1258
|
RenderMessage,
|
|
1231
1259
|
{
|
|
1260
|
+
messages,
|
|
1232
1261
|
message,
|
|
1233
1262
|
inProgress,
|
|
1234
1263
|
index,
|
|
@@ -1259,6 +1288,7 @@ var Messages = ({
|
|
|
1259
1288
|
onCopy,
|
|
1260
1289
|
onThumbsUp,
|
|
1261
1290
|
onThumbsDown,
|
|
1291
|
+
messageFeedback,
|
|
1262
1292
|
markdownTagRenderers,
|
|
1263
1293
|
chatError,
|
|
1264
1294
|
// Legacy props
|
|
@@ -1268,7 +1298,8 @@ var Messages = ({
|
|
|
1268
1298
|
RenderResultMessage,
|
|
1269
1299
|
RenderImageMessage
|
|
1270
1300
|
}) => {
|
|
1271
|
-
|
|
1301
|
+
var _a;
|
|
1302
|
+
const { labels, icons } = useChatContext();
|
|
1272
1303
|
const { messages: visibleMessages, interrupt } = (0, import_react_core.useCopilotChatInternal)();
|
|
1273
1304
|
const initialMessages = (0, import_react6.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1274
1305
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1298,6 +1329,7 @@ var Messages = ({
|
|
|
1298
1329
|
]
|
|
1299
1330
|
);
|
|
1300
1331
|
const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
|
|
1332
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: icons.activityIcon });
|
|
1301
1333
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1302
1334
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1303
1335
|
messages.map((message, index) => {
|
|
@@ -1306,6 +1338,7 @@ var Messages = ({
|
|
|
1306
1338
|
MessageRenderer,
|
|
1307
1339
|
{
|
|
1308
1340
|
message,
|
|
1341
|
+
messages,
|
|
1309
1342
|
inProgress,
|
|
1310
1343
|
index,
|
|
1311
1344
|
isCurrentMessage,
|
|
@@ -1316,11 +1349,13 @@ var Messages = ({
|
|
|
1316
1349
|
onCopy,
|
|
1317
1350
|
onThumbsUp,
|
|
1318
1351
|
onThumbsDown,
|
|
1352
|
+
messageFeedback,
|
|
1319
1353
|
markdownTagRenderers
|
|
1320
1354
|
},
|
|
1321
1355
|
index
|
|
1322
1356
|
);
|
|
1323
1357
|
}),
|
|
1358
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(LoadingIcon, {}),
|
|
1324
1359
|
interrupt,
|
|
1325
1360
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1326
1361
|
] }),
|
|
@@ -1614,12 +1649,12 @@ var MAX_NEWLINES = 6;
|
|
|
1614
1649
|
var Input = ({
|
|
1615
1650
|
inProgress,
|
|
1616
1651
|
onSend,
|
|
1617
|
-
|
|
1652
|
+
chatReady = true,
|
|
1618
1653
|
onStop,
|
|
1619
1654
|
onUpload,
|
|
1620
1655
|
hideStopButton = false
|
|
1621
1656
|
}) => {
|
|
1622
|
-
var _a
|
|
1657
|
+
var _a;
|
|
1623
1658
|
const context = useChatContext();
|
|
1624
1659
|
const copilotContext = (0, import_react_core3.useCopilotContext)();
|
|
1625
1660
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -1649,14 +1684,16 @@ var Input = ({
|
|
|
1649
1684
|
inProgress
|
|
1650
1685
|
});
|
|
1651
1686
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
1652
|
-
const buttonIcon
|
|
1687
|
+
const { buttonIcon, buttonAlt } = (0, import_react10.useMemo)(() => {
|
|
1688
|
+
if (!chatReady)
|
|
1689
|
+
return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
|
|
1690
|
+
return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
|
|
1691
|
+
}, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
|
|
1653
1692
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
1693
|
+
const { interrupt } = (0, import_react_core3.useCopilotChatInternal)();
|
|
1654
1694
|
const canSend = (0, import_react10.useMemo)(() => {
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
1658
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
1659
|
-
}, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
|
|
1695
|
+
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
|
|
1696
|
+
}, [interrupt, isInProgress, text, pushToTalkState]);
|
|
1660
1697
|
const canStop = (0, import_react10.useMemo)(() => {
|
|
1661
1698
|
return isInProgress && !hideStopButton;
|
|
1662
1699
|
}, [isInProgress, hideStopButton]);
|
|
@@ -1703,6 +1740,7 @@ var Input = ({
|
|
|
1703
1740
|
"data-copilotkit-in-progress": inProgress,
|
|
1704
1741
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
1705
1742
|
className: "copilotKitInputControlButton",
|
|
1743
|
+
"aria-label": buttonAlt,
|
|
1706
1744
|
children: buttonIcon
|
|
1707
1745
|
}
|
|
1708
1746
|
)
|
|
@@ -1716,8 +1754,6 @@ var Input = ({
|
|
|
1716
1754
|
var import_react11 = __toESM(require("react"));
|
|
1717
1755
|
var import_react_core5 = require("@copilotkit/react-core");
|
|
1718
1756
|
var import_shared = require("@copilotkit/shared");
|
|
1719
|
-
var import_shared2 = require("@copilotkit/shared");
|
|
1720
|
-
var import_react_core6 = require("@copilotkit/react-core");
|
|
1721
1757
|
|
|
1722
1758
|
// src/components/chat/ImageUploadQueue.tsx
|
|
1723
1759
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
@@ -1821,18 +1857,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
1821
1857
|
|
|
1822
1858
|
// src/components/chat/Suggestions.tsx
|
|
1823
1859
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1824
|
-
function Suggestions({
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1860
|
+
function Suggestions({
|
|
1861
|
+
suggestions,
|
|
1862
|
+
onSuggestionClick,
|
|
1863
|
+
isLoading
|
|
1864
|
+
}) {
|
|
1865
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
|
|
1866
|
+
var _a, _b;
|
|
1867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1868
|
+
Suggestion,
|
|
1869
|
+
{
|
|
1870
|
+
title: suggestion.title,
|
|
1871
|
+
message: suggestion.message,
|
|
1872
|
+
partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
|
|
1873
|
+
className: suggestion.className,
|
|
1874
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
1875
|
+
},
|
|
1876
|
+
index
|
|
1877
|
+
);
|
|
1878
|
+
}) });
|
|
1836
1879
|
}
|
|
1837
1880
|
|
|
1838
1881
|
// src/components/chat/Chat.tsx
|
|
@@ -1886,6 +1929,9 @@ function CopilotChat({
|
|
|
1886
1929
|
const { publicApiKey, chatApiEndpoint } = copilotApiConfig;
|
|
1887
1930
|
const [selectedImages, setSelectedImages] = (0, import_react11.useState)([]);
|
|
1888
1931
|
const [chatError, setChatError] = (0, import_react11.useState)(null);
|
|
1932
|
+
const [messageFeedback, setMessageFeedback] = (0, import_react11.useState)(
|
|
1933
|
+
{}
|
|
1934
|
+
);
|
|
1889
1935
|
const fileInputRef = (0, import_react11.useRef)(null);
|
|
1890
1936
|
const triggerObservabilityHook = (0, import_react11.useCallback)(
|
|
1891
1937
|
(hookName, ...args) => {
|
|
@@ -2029,16 +2075,12 @@ function CopilotChat({
|
|
|
2029
2075
|
sendMessage,
|
|
2030
2076
|
stopGeneration,
|
|
2031
2077
|
reloadMessages,
|
|
2032
|
-
suggestions: currentSuggestions
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
onSubmitMessage,
|
|
2039
|
-
onStopGeneration,
|
|
2040
|
-
onReloadMessages
|
|
2041
|
-
);
|
|
2078
|
+
suggestions: currentSuggestions,
|
|
2079
|
+
isLoadingSuggestions,
|
|
2080
|
+
agent
|
|
2081
|
+
} = (0, import_react_core5.useCopilotChatInternal)({
|
|
2082
|
+
suggestions
|
|
2083
|
+
});
|
|
2042
2084
|
const prevIsLoading = (0, import_react11.useRef)(isLoading);
|
|
2043
2085
|
(0, import_react11.useEffect)(() => {
|
|
2044
2086
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2057,7 +2099,11 @@ function CopilotChat({
|
|
|
2057
2099
|
fileInputRef.current.value = "";
|
|
2058
2100
|
}
|
|
2059
2101
|
triggerObservabilityHook("onMessageSent", text);
|
|
2060
|
-
return sendMessage(
|
|
2102
|
+
return sendMessage({
|
|
2103
|
+
id: (0, import_shared.randomUUID)(),
|
|
2104
|
+
content: text,
|
|
2105
|
+
role: "user"
|
|
2106
|
+
});
|
|
2061
2107
|
};
|
|
2062
2108
|
const chatContext = import_react11.default.useContext(ChatContext);
|
|
2063
2109
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2113,12 +2159,18 @@ function CopilotChat({
|
|
|
2113
2159
|
if (onThumbsUp) {
|
|
2114
2160
|
onThumbsUp(message);
|
|
2115
2161
|
}
|
|
2162
|
+
setMessageFeedback((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2163
|
+
[message.id]: "thumbsUp"
|
|
2164
|
+
}));
|
|
2116
2165
|
triggerObservabilityHook("onFeedbackGiven", message.id, "thumbsUp");
|
|
2117
2166
|
};
|
|
2118
2167
|
const handleThumbsDown = (message) => {
|
|
2119
2168
|
if (onThumbsDown) {
|
|
2120
2169
|
onThumbsDown(message);
|
|
2121
2170
|
}
|
|
2171
|
+
setMessageFeedback((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2172
|
+
[message.id]: "thumbsDown"
|
|
2173
|
+
}));
|
|
2122
2174
|
triggerObservabilityHook("onFeedbackGiven", message.id, "thumbsDown");
|
|
2123
2175
|
};
|
|
2124
2176
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
@@ -2140,6 +2192,7 @@ function CopilotChat({
|
|
|
2140
2192
|
onCopy: handleCopy,
|
|
2141
2193
|
onThumbsUp: handleThumbsUp,
|
|
2142
2194
|
onThumbsDown: handleThumbsDown,
|
|
2195
|
+
messageFeedback,
|
|
2143
2196
|
markdownTagRenderers,
|
|
2144
2197
|
ImageRenderer: ImageRenderer2,
|
|
2145
2198
|
ErrorMessage,
|
|
@@ -2153,7 +2206,8 @@ function CopilotChat({
|
|
|
2153
2206
|
RenderSuggestionsList,
|
|
2154
2207
|
{
|
|
2155
2208
|
onSuggestionClick: handleSendMessage,
|
|
2156
|
-
suggestions: currentSuggestions
|
|
2209
|
+
suggestions: currentSuggestions,
|
|
2210
|
+
isLoading: isLoadingSuggestions
|
|
2157
2211
|
}
|
|
2158
2212
|
)
|
|
2159
2213
|
}
|
|
@@ -2176,6 +2230,7 @@ function CopilotChat({
|
|
|
2176
2230
|
Input2,
|
|
2177
2231
|
{
|
|
2178
2232
|
inProgress: isLoading,
|
|
2233
|
+
chatReady: Boolean(agent),
|
|
2179
2234
|
onSend: handleSendMessage,
|
|
2180
2235
|
isVisible,
|
|
2181
2236
|
onStop: stopGeneration,
|
|
@@ -2201,243 +2256,9 @@ function WrappedCopilotChat({
|
|
|
2201
2256
|
}
|
|
2202
2257
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children });
|
|
2203
2258
|
}
|
|
2204
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2205
|
-
var _a;
|
|
2206
|
-
const {
|
|
2207
|
-
messages,
|
|
2208
|
-
sendMessage,
|
|
2209
|
-
setMessages,
|
|
2210
|
-
reloadMessages: defaultReloadMessages,
|
|
2211
|
-
stopGeneration: defaultStopGeneration,
|
|
2212
|
-
runChatCompletion,
|
|
2213
|
-
isLoading,
|
|
2214
|
-
suggestions,
|
|
2215
|
-
setSuggestions,
|
|
2216
|
-
generateSuggestions,
|
|
2217
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2218
|
-
isLoadingSuggestions
|
|
2219
|
-
} = (0, import_react_core5.useCopilotChatInternal)({
|
|
2220
|
-
makeSystemMessage,
|
|
2221
|
-
disableSystemMessage
|
|
2222
|
-
});
|
|
2223
|
-
const generalContext = (0, import_react_core5.useCopilotContext)();
|
|
2224
|
-
const messagesContext = (0, import_react_core5.useCopilotMessagesContext)();
|
|
2225
|
-
const { actions } = generalContext;
|
|
2226
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react11.useState)(false);
|
|
2227
|
-
const hasGeneratedInitialSuggestions = (0, import_react11.useRef)(false);
|
|
2228
|
-
(0, import_react11.useEffect)(() => {
|
|
2229
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2230
|
-
setSuggestions(chatSuggestions);
|
|
2231
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2232
|
-
}
|
|
2233
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2234
|
-
const generateSuggestionsWithErrorHandling = (0, import_react11.useCallback)(
|
|
2235
|
-
(context) => __async(void 0, null, function* () {
|
|
2236
|
-
try {
|
|
2237
|
-
yield generateSuggestions();
|
|
2238
|
-
} catch (error) {
|
|
2239
|
-
console.error("Failed to generate suggestions:", error);
|
|
2240
|
-
setSuggestionsFailed(true);
|
|
2241
|
-
}
|
|
2242
|
-
}),
|
|
2243
|
-
[generateSuggestions]
|
|
2244
|
-
);
|
|
2245
|
-
(0, import_react11.useEffect)(() => {
|
|
2246
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2247
|
-
return;
|
|
2248
|
-
}
|
|
2249
|
-
if (isLoading) {
|
|
2250
|
-
return;
|
|
2251
|
-
}
|
|
2252
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2253
|
-
return;
|
|
2254
|
-
}
|
|
2255
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2256
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2257
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2258
|
-
return;
|
|
2259
|
-
}
|
|
2260
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2261
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2262
|
-
return;
|
|
2263
|
-
}
|
|
2264
|
-
}, [
|
|
2265
|
-
chatSuggestions,
|
|
2266
|
-
isLoadingSuggestions,
|
|
2267
|
-
suggestionsFailed,
|
|
2268
|
-
messages.length,
|
|
2269
|
-
isLoading,
|
|
2270
|
-
suggestions.length,
|
|
2271
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2272
|
-
// Use stable string instead of object reference
|
|
2273
|
-
generateSuggestionsWithErrorHandling
|
|
2274
|
-
]);
|
|
2275
|
-
(0, import_react11.useEffect)(() => {
|
|
2276
|
-
if (chatSuggestions !== "auto") {
|
|
2277
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2278
|
-
setSuggestionsFailed(false);
|
|
2279
|
-
}
|
|
2280
|
-
}, [chatSuggestions]);
|
|
2281
|
-
const stableContext = (0, import_react11.useMemo)(
|
|
2282
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2283
|
-
[
|
|
2284
|
-
// Only include stable dependencies
|
|
2285
|
-
generalContext.actions,
|
|
2286
|
-
messagesContext.messages.length,
|
|
2287
|
-
generalContext.isLoading
|
|
2288
|
-
]
|
|
2289
|
-
);
|
|
2290
|
-
const resetSuggestions = (0, import_react11.useCallback)(() => {
|
|
2291
|
-
resetSuggestionsFromHook();
|
|
2292
|
-
setSuggestionsFailed(false);
|
|
2293
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2294
|
-
}, [resetSuggestionsFromHook]);
|
|
2295
|
-
(0, import_react11.useEffect)(() => {
|
|
2296
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2297
|
-
}, [onInProgress, isLoading]);
|
|
2298
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2299
|
-
const images = imagesToUse || [];
|
|
2300
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2301
|
-
setSuggestions([]);
|
|
2302
|
-
}
|
|
2303
|
-
let firstMessage = null;
|
|
2304
|
-
if (messageContent.trim().length > 0) {
|
|
2305
|
-
const textMessage = {
|
|
2306
|
-
id: (0, import_shared2.randomId)(),
|
|
2307
|
-
role: "user",
|
|
2308
|
-
content: messageContent
|
|
2309
|
-
};
|
|
2310
|
-
if (onSubmitMessage) {
|
|
2311
|
-
try {
|
|
2312
|
-
yield onSubmitMessage(messageContent);
|
|
2313
|
-
} catch (error) {
|
|
2314
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2315
|
-
}
|
|
2316
|
-
}
|
|
2317
|
-
yield sendMessage(textMessage, {
|
|
2318
|
-
followUp: images.length === 0,
|
|
2319
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2320
|
-
});
|
|
2321
|
-
if (!firstMessage) {
|
|
2322
|
-
firstMessage = textMessage;
|
|
2323
|
-
}
|
|
2324
|
-
}
|
|
2325
|
-
if (images.length > 0) {
|
|
2326
|
-
for (let i = 0; i < images.length; i++) {
|
|
2327
|
-
const imageMessage = {
|
|
2328
|
-
id: (0, import_shared2.randomId)(),
|
|
2329
|
-
role: "user",
|
|
2330
|
-
image: {
|
|
2331
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2332
|
-
bytes: images[i].bytes
|
|
2333
|
-
}
|
|
2334
|
-
};
|
|
2335
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2336
|
-
if (!firstMessage) {
|
|
2337
|
-
firstMessage = imageMessage;
|
|
2338
|
-
}
|
|
2339
|
-
}
|
|
2340
|
-
}
|
|
2341
|
-
if (!firstMessage) {
|
|
2342
|
-
return { role: "user", content: "", id: (0, import_shared2.randomId)() };
|
|
2343
|
-
}
|
|
2344
|
-
return firstMessage;
|
|
2345
|
-
});
|
|
2346
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
2347
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2348
|
-
if (generalContext.agentSession) {
|
|
2349
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
2350
|
-
nodeName: void 0,
|
|
2351
|
-
threadId: void 0
|
|
2352
|
-
}));
|
|
2353
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2354
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
2355
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
2356
|
-
threadId: void 0,
|
|
2357
|
-
nodeName: void 0,
|
|
2358
|
-
runId: void 0
|
|
2359
|
-
})
|
|
2360
|
-
});
|
|
2361
|
-
});
|
|
2362
|
-
}
|
|
2363
|
-
});
|
|
2364
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2365
|
-
if (generalContext.agentSession) {
|
|
2366
|
-
yield (0, import_react_core6.runAgent)(
|
|
2367
|
-
generalContext.agentSession.agentName,
|
|
2368
|
-
stableContext,
|
|
2369
|
-
messagesContext.messages,
|
|
2370
|
-
sendMessage,
|
|
2371
|
-
runChatCompletion
|
|
2372
|
-
);
|
|
2373
|
-
}
|
|
2374
|
-
});
|
|
2375
|
-
const stopCurrentAgent = () => {
|
|
2376
|
-
if (generalContext.agentSession) {
|
|
2377
|
-
(0, import_react_core6.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
2378
|
-
}
|
|
2379
|
-
};
|
|
2380
|
-
const setCurrentAgentState = (state) => {
|
|
2381
|
-
if (generalContext.agentSession) {
|
|
2382
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2383
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
2384
|
-
[generalContext.agentSession.agentName]: {
|
|
2385
|
-
state
|
|
2386
|
-
}
|
|
2387
|
-
});
|
|
2388
|
-
});
|
|
2389
|
-
}
|
|
2390
|
-
};
|
|
2391
|
-
function stopGeneration() {
|
|
2392
|
-
setSuggestions([]);
|
|
2393
|
-
if (onStopGeneration) {
|
|
2394
|
-
onStopGeneration({
|
|
2395
|
-
messages,
|
|
2396
|
-
setMessages,
|
|
2397
|
-
stopGeneration: defaultStopGeneration,
|
|
2398
|
-
currentAgentName,
|
|
2399
|
-
restartCurrentAgent,
|
|
2400
|
-
stopCurrentAgent,
|
|
2401
|
-
runCurrentAgent,
|
|
2402
|
-
setCurrentAgentState
|
|
2403
|
-
});
|
|
2404
|
-
} else {
|
|
2405
|
-
defaultStopGeneration();
|
|
2406
|
-
}
|
|
2407
|
-
}
|
|
2408
|
-
function reloadMessages(messageId) {
|
|
2409
|
-
if (onReloadMessages) {
|
|
2410
|
-
onReloadMessages({
|
|
2411
|
-
messages,
|
|
2412
|
-
setMessages,
|
|
2413
|
-
stopGeneration: defaultStopGeneration,
|
|
2414
|
-
currentAgentName,
|
|
2415
|
-
restartCurrentAgent,
|
|
2416
|
-
stopCurrentAgent,
|
|
2417
|
-
runCurrentAgent,
|
|
2418
|
-
setCurrentAgentState,
|
|
2419
|
-
messageId
|
|
2420
|
-
});
|
|
2421
|
-
} else {
|
|
2422
|
-
defaultReloadMessages(messageId);
|
|
2423
|
-
}
|
|
2424
|
-
}
|
|
2425
|
-
return {
|
|
2426
|
-
messages,
|
|
2427
|
-
isLoading,
|
|
2428
|
-
suggestions,
|
|
2429
|
-
sendMessage: safelySendMessage,
|
|
2430
|
-
stopGeneration,
|
|
2431
|
-
reloadMessages,
|
|
2432
|
-
resetSuggestions,
|
|
2433
|
-
context: stableContext,
|
|
2434
|
-
actions
|
|
2435
|
-
};
|
|
2436
|
-
};
|
|
2437
2259
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2438
2260
|
0 && (module.exports = {
|
|
2439
2261
|
CopilotChat,
|
|
2440
|
-
WrappedCopilotChat
|
|
2441
|
-
useCopilotChatLogic
|
|
2262
|
+
WrappedCopilotChat
|
|
2442
2263
|
});
|
|
2443
2264
|
//# sourceMappingURL=Chat.js.map
|