@copilotkit/react-ui 1.9.3 → 1.10.0-next.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/CHANGELOG.md +30 -0
- package/dist/{chunk-KENCH7RN.mjs → chunk-B5IFB5YJ.mjs} +1 -1
- package/dist/chunk-B5IFB5YJ.mjs.map +1 -0
- package/dist/chunk-DBKRAOH7.mjs +34 -0
- package/dist/chunk-DBKRAOH7.mjs.map +1 -0
- package/dist/{chunk-4HUXYD3B.mjs → chunk-DTRPPNSA.mjs} +2 -2
- package/dist/{chunk-YTXEWDNC.mjs → chunk-E6MQUIZW.mjs} +15 -4
- package/dist/chunk-E6MQUIZW.mjs.map +1 -0
- package/dist/{chunk-L3GZ7TXC.mjs → chunk-GCKKSSBU.mjs} +21 -24
- package/dist/chunk-GCKKSSBU.mjs.map +1 -0
- package/dist/{chunk-KN2GCKBE.mjs → chunk-GJ3MFNBX.mjs} +6 -6
- package/dist/{chunk-32MUWKL3.mjs → chunk-JHUTTP5C.mjs} +21 -17
- package/dist/chunk-JHUTTP5C.mjs.map +1 -0
- package/dist/{chunk-HKTWKCPS.mjs → chunk-LXCD3K7B.mjs} +127 -92
- package/dist/chunk-LXCD3K7B.mjs.map +1 -0
- package/dist/{chunk-S5MBUNGN.mjs → chunk-O72ZB5V3.mjs} +4 -4
- package/dist/chunk-O72ZB5V3.mjs.map +1 -0
- package/dist/{chunk-QGSPTXOV.mjs → chunk-O7KTFUAN.mjs} +2 -2
- package/dist/chunk-O7KTFUAN.mjs.map +1 -0
- package/dist/chunk-Q2467VHZ.mjs +30 -0
- package/dist/chunk-Q2467VHZ.mjs.map +1 -0
- package/dist/{chunk-H3EM63WS.mjs → chunk-VLNT34X3.mjs} +2 -2
- package/dist/chunk-VVL6JFCJ.mjs +16 -0
- package/dist/chunk-VVL6JFCJ.mjs.map +1 -0
- package/dist/chunk-WHDNKXMP.mjs +135 -0
- package/dist/chunk-WHDNKXMP.mjs.map +1 -0
- package/dist/{chunk-ALIBUJML.mjs → chunk-WPVTPQ7X.mjs} +2 -2
- package/dist/components/chat/Button.d.ts +1 -1
- package/dist/components/chat/Chat.d.ts +119 -28
- package/dist/components/chat/Chat.js +298 -658
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +12 -15
- package/dist/components/chat/CodeBlock.js.map +1 -1
- package/dist/components/chat/CodeBlock.mjs +1 -1
- package/dist/components/chat/Header.d.ts +1 -1
- package/dist/components/chat/Input.d.ts +1 -1
- package/dist/components/chat/Input.js +3 -3
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Markdown.js +13 -2
- package/dist/components/chat/Markdown.js.map +1 -1
- package/dist/components/chat/Markdown.mjs +2 -2
- package/dist/components/chat/Messages.d.ts +3 -3
- package/dist/components/chat/Messages.js +40 -116
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +1 -1
- package/dist/components/chat/Modal.d.ts +7 -2
- package/dist/components/chat/Modal.js +308 -668
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +13 -16
- package/dist/components/chat/Popup.d.ts +7 -2
- package/dist/components/chat/Popup.js +310 -670
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +14 -17
- package/dist/components/chat/Sidebar.d.ts +7 -2
- package/dist/components/chat/Sidebar.js +312 -672
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +14 -17
- package/dist/components/chat/Suggestion.d.ts +2 -9
- package/dist/components/chat/Suggestion.js +6 -96
- package/dist/components/chat/Suggestion.js.map +1 -1
- package/dist/components/chat/Suggestion.mjs +3 -5
- package/dist/components/chat/Suggestions.d.ts +1 -1
- package/dist/components/chat/Suggestions.js +4 -3
- package/dist/components/chat/Suggestions.js.map +1 -1
- package/dist/components/chat/Suggestions.mjs +2 -2
- package/dist/components/chat/Window.d.ts +1 -1
- package/dist/components/chat/index.d.ts +8 -3
- package/dist/components/chat/index.js +316 -676
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +18 -21
- package/dist/components/chat/messages/AssistantMessage.d.ts +1 -1
- package/dist/components/chat/messages/AssistantMessage.js +32 -24
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +3 -3
- package/dist/components/chat/messages/ImageRenderer.d.ts +12 -0
- package/dist/components/chat/messages/ImageRenderer.js +58 -0
- package/dist/components/chat/messages/ImageRenderer.js.map +1 -0
- package/dist/components/chat/messages/ImageRenderer.mjs +8 -0
- package/dist/components/chat/messages/RenderMessage.d.ts +9 -0
- package/dist/components/chat/messages/{RenderTextMessage.js → RenderMessage.js} +92 -47
- package/dist/components/chat/messages/RenderMessage.js.map +1 -0
- package/dist/components/chat/messages/RenderMessage.mjs +16 -0
- package/dist/components/chat/messages/UserMessage.d.ts +1 -1
- package/dist/components/chat/messages/UserMessage.js +7 -1
- 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 +32 -27
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/index.d.ts +8 -3
- package/dist/components/index.js +316 -676
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +18 -21
- package/dist/hooks/use-push-to-talk.d.ts +1 -1
- package/dist/hooks/use-push-to-talk.js +3 -3
- package/dist/hooks/use-push-to-talk.js.map +1 -1
- package/dist/hooks/use-push-to-talk.mjs +1 -1
- package/dist/index.css +59 -3
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.js +322 -682
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -21
- package/dist/types/css.d.ts +3 -0
- package/dist/types/css.js.map +1 -1
- package/package.json +4 -4
- package/src/components/chat/Chat.tsx +193 -105
- package/src/components/chat/CodeBlock.tsx +1 -1
- package/src/components/chat/Markdown.tsx +12 -2
- package/src/components/chat/Messages.tsx +43 -122
- package/src/components/chat/Suggestion.tsx +5 -108
- package/src/components/chat/Suggestions.tsx +0 -1
- package/src/components/chat/index.tsx +1 -1
- package/src/components/chat/messages/AssistantMessage.tsx +15 -23
- package/src/components/chat/messages/ImageRenderer.tsx +37 -0
- package/src/components/chat/messages/{RenderTextMessage.tsx → RenderMessage.tsx} +10 -9
- package/src/components/chat/messages/UserMessage.tsx +16 -5
- package/src/components/chat/props.ts +36 -28
- package/src/css/colors.css +10 -0
- package/src/css/markdown.css +8 -0
- package/src/css/messages.css +54 -5
- package/src/css/suggestions.css +1 -1
- package/src/hooks/use-push-to-talk.tsx +6 -5
- package/src/styles.css +1 -1
- package/src/types/css.ts +3 -0
- package/dist/chunk-2II3Q27P.mjs +0 -112
- package/dist/chunk-2II3Q27P.mjs.map +0 -1
- package/dist/chunk-32MUWKL3.mjs.map +0 -1
- package/dist/chunk-53CVDVS5.mjs +0 -127
- package/dist/chunk-53CVDVS5.mjs.map +0 -1
- package/dist/chunk-B3D7U7TJ.mjs +0 -211
- package/dist/chunk-B3D7U7TJ.mjs.map +0 -1
- package/dist/chunk-C7OB63U5.mjs +0 -36
- package/dist/chunk-C7OB63U5.mjs.map +0 -1
- package/dist/chunk-HKTWKCPS.mjs.map +0 -1
- package/dist/chunk-HWMFMBJC.mjs +0 -10
- package/dist/chunk-HWMFMBJC.mjs.map +0 -1
- package/dist/chunk-IMBPSLL4.mjs +0 -104
- package/dist/chunk-IMBPSLL4.mjs.map +0 -1
- package/dist/chunk-KENCH7RN.mjs.map +0 -1
- package/dist/chunk-L3GZ7TXC.mjs.map +0 -1
- package/dist/chunk-QGSPTXOV.mjs.map +0 -1
- package/dist/chunk-S5MBUNGN.mjs.map +0 -1
- package/dist/chunk-ULDQXCED.mjs +0 -78
- package/dist/chunk-ULDQXCED.mjs.map +0 -1
- package/dist/chunk-YTXEWDNC.mjs.map +0 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderActionExecutionMessage.js +0 -869
- package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +0 -14
- package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderAgentStateMessage.js +0 -854
- package/dist/components/chat/messages/RenderAgentStateMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderAgentStateMessage.mjs +0 -14
- package/dist/components/chat/messages/RenderImageMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderImageMessage.js +0 -823
- package/dist/components/chat/messages/RenderImageMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderImageMessage.mjs +0 -15
- package/dist/components/chat/messages/RenderImageMessage.mjs.map +0 -1
- package/dist/components/chat/messages/RenderResultMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderResultMessage.js +0 -778
- package/dist/components/chat/messages/RenderResultMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderResultMessage.mjs +0 -14
- package/dist/components/chat/messages/RenderResultMessage.mjs.map +0 -1
- package/dist/components/chat/messages/RenderTextMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderTextMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderTextMessage.mjs +0 -15
- package/dist/components/chat/messages/RenderTextMessage.mjs.map +0 -1
- package/src/components/chat/messages/RenderActionExecutionMessage.tsx +0 -127
- package/src/components/chat/messages/RenderAgentStateMessage.tsx +0 -116
- package/src/components/chat/messages/RenderImageMessage.tsx +0 -64
- package/src/components/chat/messages/RenderResultMessage.tsx +0 -26
- /package/dist/{chunk-4HUXYD3B.mjs.map → chunk-DTRPPNSA.mjs.map} +0 -0
- /package/dist/{chunk-KN2GCKBE.mjs.map → chunk-GJ3MFNBX.mjs.map} +0 -0
- /package/dist/{chunk-H3EM63WS.mjs.map → chunk-VLNT34X3.mjs.map} +0 -0
- /package/dist/{chunk-ALIBUJML.mjs.map → chunk-WPVTPQ7X.mjs.map} +0 -0
- /package/dist/components/chat/messages/{RenderActionExecutionMessage.mjs.map → ImageRenderer.mjs.map} +0 -0
- /package/dist/components/chat/messages/{RenderAgentStateMessage.mjs.map → RenderMessage.mjs.map} +0 -0
|
@@ -82,7 +82,7 @@ __export(Modal_exports, {
|
|
|
82
82
|
CopilotModal: () => CopilotModal
|
|
83
83
|
});
|
|
84
84
|
module.exports = __toCommonJS(Modal_exports);
|
|
85
|
-
var
|
|
85
|
+
var import_react15 = __toESM(require("react"));
|
|
86
86
|
|
|
87
87
|
// src/components/chat/ChatContext.tsx
|
|
88
88
|
var import_react = __toESM(require("react"));
|
|
@@ -1026,18 +1026,12 @@ var Header = ({}) => {
|
|
|
1026
1026
|
|
|
1027
1027
|
// src/components/chat/Messages.tsx
|
|
1028
1028
|
var import_react6 = require("react");
|
|
1029
|
-
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
1030
1029
|
var import_react_core4 = require("@copilotkit/react-core");
|
|
1031
1030
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1032
1031
|
var Messages = ({
|
|
1033
|
-
messages,
|
|
1034
1032
|
inProgress,
|
|
1035
1033
|
children,
|
|
1036
|
-
|
|
1037
|
-
RenderActionExecutionMessage: RenderActionExecutionMessage2,
|
|
1038
|
-
RenderAgentStateMessage: RenderAgentStateMessage2,
|
|
1039
|
-
RenderResultMessage: RenderResultMessage2,
|
|
1040
|
-
RenderImageMessage: RenderImageMessage2,
|
|
1034
|
+
RenderMessage: RenderMessage2,
|
|
1041
1035
|
AssistantMessage: AssistantMessage2,
|
|
1042
1036
|
UserMessage: UserMessage2,
|
|
1043
1037
|
onRegenerate,
|
|
@@ -1046,106 +1040,32 @@ var Messages = ({
|
|
|
1046
1040
|
onThumbsDown,
|
|
1047
1041
|
markdownTagRenderers
|
|
1048
1042
|
}) => {
|
|
1049
|
-
const
|
|
1050
|
-
const
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
);
|
|
1054
|
-
messages = [...initialMessages, ...messages];
|
|
1055
|
-
const actionResults = {};
|
|
1056
|
-
for (let i = 0; i < messages.length; i++) {
|
|
1057
|
-
if (messages[i].isActionExecutionMessage()) {
|
|
1058
|
-
const id = messages[i].id;
|
|
1059
|
-
const resultMessage = messages.find(
|
|
1060
|
-
(message) => message.isResultMessage() && message.actionExecutionId === id
|
|
1061
|
-
);
|
|
1062
|
-
if (resultMessage) {
|
|
1063
|
-
actionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
|
|
1064
|
-
}
|
|
1065
|
-
}
|
|
1066
|
-
}
|
|
1043
|
+
const { labels } = useChatContext();
|
|
1044
|
+
const { visibleMessages, interrupt } = (0, import_react_core4.useCopilotChat)();
|
|
1045
|
+
const initialMessages = (0, import_react6.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1046
|
+
const messages = [...initialMessages, ...visibleMessages];
|
|
1067
1047
|
const { messagesContainerRef, messagesEndRef } = useScrollToBottom(messages);
|
|
1068
|
-
const interrupt = (0, import_react_core4.useLangGraphInterruptRender)();
|
|
1069
1048
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1070
1049
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1071
1050
|
messages.map((message, index) => {
|
|
1072
1051
|
const isCurrentMessage = index === messages.length - 1;
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
);
|
|
1091
|
-
} else if (message.isActionExecutionMessage()) {
|
|
1092
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1093
|
-
RenderActionExecutionMessage2,
|
|
1094
|
-
{
|
|
1095
|
-
message,
|
|
1096
|
-
inProgress,
|
|
1097
|
-
index,
|
|
1098
|
-
isCurrentMessage,
|
|
1099
|
-
actionResult: actionResults[message.id],
|
|
1100
|
-
AssistantMessage: AssistantMessage2,
|
|
1101
|
-
UserMessage: UserMessage2
|
|
1102
|
-
},
|
|
1103
|
-
index
|
|
1104
|
-
);
|
|
1105
|
-
} else if (message.isAgentStateMessage()) {
|
|
1106
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1107
|
-
RenderAgentStateMessage2,
|
|
1108
|
-
{
|
|
1109
|
-
message,
|
|
1110
|
-
inProgress,
|
|
1111
|
-
index,
|
|
1112
|
-
isCurrentMessage,
|
|
1113
|
-
AssistantMessage: AssistantMessage2,
|
|
1114
|
-
UserMessage: UserMessage2
|
|
1115
|
-
},
|
|
1116
|
-
index
|
|
1117
|
-
);
|
|
1118
|
-
} else if (message.isResultMessage()) {
|
|
1119
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1120
|
-
RenderResultMessage2,
|
|
1121
|
-
{
|
|
1122
|
-
message,
|
|
1123
|
-
inProgress,
|
|
1124
|
-
index,
|
|
1125
|
-
isCurrentMessage,
|
|
1126
|
-
AssistantMessage: AssistantMessage2,
|
|
1127
|
-
UserMessage: UserMessage2
|
|
1128
|
-
},
|
|
1129
|
-
index
|
|
1130
|
-
);
|
|
1131
|
-
} else if (message.isImageMessage && message.isImageMessage()) {
|
|
1132
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1133
|
-
RenderImageMessage2,
|
|
1134
|
-
{
|
|
1135
|
-
message,
|
|
1136
|
-
inProgress,
|
|
1137
|
-
index,
|
|
1138
|
-
isCurrentMessage,
|
|
1139
|
-
AssistantMessage: AssistantMessage2,
|
|
1140
|
-
UserMessage: UserMessage2,
|
|
1141
|
-
onRegenerate,
|
|
1142
|
-
onCopy,
|
|
1143
|
-
onThumbsUp,
|
|
1144
|
-
onThumbsDown
|
|
1145
|
-
},
|
|
1146
|
-
index
|
|
1147
|
-
);
|
|
1148
|
-
}
|
|
1052
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1053
|
+
RenderMessage2,
|
|
1054
|
+
{
|
|
1055
|
+
message,
|
|
1056
|
+
inProgress,
|
|
1057
|
+
index,
|
|
1058
|
+
isCurrentMessage,
|
|
1059
|
+
AssistantMessage: AssistantMessage2,
|
|
1060
|
+
UserMessage: UserMessage2,
|
|
1061
|
+
onRegenerate,
|
|
1062
|
+
onCopy,
|
|
1063
|
+
onThumbsUp,
|
|
1064
|
+
onThumbsDown,
|
|
1065
|
+
markdownTagRenderers
|
|
1066
|
+
},
|
|
1067
|
+
index
|
|
1068
|
+
);
|
|
1149
1069
|
}),
|
|
1150
1070
|
interrupt
|
|
1151
1071
|
] }),
|
|
@@ -1153,20 +1073,24 @@ var Messages = ({
|
|
|
1153
1073
|
] });
|
|
1154
1074
|
};
|
|
1155
1075
|
function makeInitialMessages(initial) {
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1076
|
+
if (!initial)
|
|
1077
|
+
return [];
|
|
1078
|
+
if (Array.isArray(initial)) {
|
|
1079
|
+
return initial.map((message) => {
|
|
1080
|
+
return {
|
|
1081
|
+
id: message,
|
|
1082
|
+
role: "assistant",
|
|
1083
|
+
content: message
|
|
1084
|
+
};
|
|
1085
|
+
});
|
|
1163
1086
|
}
|
|
1164
|
-
return
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1087
|
+
return [
|
|
1088
|
+
{
|
|
1089
|
+
id: initial,
|
|
1090
|
+
role: "system",
|
|
1091
|
+
content: initial
|
|
1092
|
+
}
|
|
1093
|
+
];
|
|
1170
1094
|
}
|
|
1171
1095
|
function useScrollToBottom(messages) {
|
|
1172
1096
|
const messagesEndRef = (0, import_react6.useRef)(null);
|
|
@@ -1222,7 +1146,7 @@ function useScrollToBottom(messages) {
|
|
|
1222
1146
|
(0, import_react6.useEffect)(() => {
|
|
1223
1147
|
isUserScrollUpRef.current = false;
|
|
1224
1148
|
scrollToBottom();
|
|
1225
|
-
}, [messages.filter((m) => m.
|
|
1149
|
+
}, [messages.filter((m) => m.role === "user").length]);
|
|
1226
1150
|
return { messagesEndRef, messagesContainerRef };
|
|
1227
1151
|
}
|
|
1228
1152
|
|
|
@@ -1291,6 +1215,7 @@ var Textarea_default = AutoResizingTextarea;
|
|
|
1291
1215
|
|
|
1292
1216
|
// src/hooks/use-push-to-talk.tsx
|
|
1293
1217
|
var import_react_core5 = require("@copilotkit/react-core");
|
|
1218
|
+
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
1294
1219
|
var import_react8 = require("react");
|
|
1295
1220
|
var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
|
|
1296
1221
|
if (!mediaStreamRef.current || !audioContextRef.current) {
|
|
@@ -1382,9 +1307,8 @@ var usePushToTalk = ({
|
|
|
1382
1307
|
const lastMessageIndex = context.messages.findIndex(
|
|
1383
1308
|
(message) => message.id === startReadingFromMessageId
|
|
1384
1309
|
);
|
|
1385
|
-
const
|
|
1386
|
-
|
|
1387
|
-
);
|
|
1310
|
+
const aguiMessages = (0, import_runtime_client_gql.gqlToAGUI)(context.messages);
|
|
1311
|
+
const messagesAfterLast = aguiMessages.slice(lastMessageIndex + 1).filter((message) => message.role === "assistant");
|
|
1388
1312
|
const text = messagesAfterLast.map((message) => message.content).join("\n");
|
|
1389
1313
|
playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
|
|
1390
1314
|
setStartReadingFromMessageId(null);
|
|
@@ -1529,7 +1453,13 @@ var Input = ({
|
|
|
1529
1453
|
// src/components/chat/messages/UserMessage.tsx
|
|
1530
1454
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1531
1455
|
var UserMessage = (props) => {
|
|
1532
|
-
|
|
1456
|
+
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1457
|
+
const isImageMessage = message && "image" in message && message.image;
|
|
1458
|
+
if (isImageMessage) {
|
|
1459
|
+
const imageMessage = message;
|
|
1460
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ImageRenderer2, { image: imageMessage.image, content: imageMessage.content }) });
|
|
1461
|
+
}
|
|
1462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message == null ? void 0 : message.content });
|
|
1533
1463
|
};
|
|
1534
1464
|
|
|
1535
1465
|
// src/components/chat/Markdown.tsx
|
|
@@ -1963,8 +1893,19 @@ var defaultComponents = {
|
|
|
1963
1893
|
children[0] = (children == null ? void 0 : children[0]).replace("`\u258D`", "\u258D");
|
|
1964
1894
|
}
|
|
1965
1895
|
const match = /language-(\w+)/.exec(className || "");
|
|
1966
|
-
|
|
1967
|
-
|
|
1896
|
+
const hasLanguage = match && match[1];
|
|
1897
|
+
const content = String(children);
|
|
1898
|
+
const hasNewlines = content.includes("\n");
|
|
1899
|
+
const isInline = !hasLanguage && !hasNewlines;
|
|
1900
|
+
if (isInline) {
|
|
1901
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1902
|
+
"code",
|
|
1903
|
+
__spreadProps(__spreadValues({
|
|
1904
|
+
className: `copilotKitMarkdownElement copilotKitInlineCode ${className || ""}`
|
|
1905
|
+
}, props), {
|
|
1906
|
+
children
|
|
1907
|
+
})
|
|
1908
|
+
);
|
|
1968
1909
|
}
|
|
1969
1910
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1970
1911
|
CodeBlock,
|
|
@@ -2040,55 +1981,51 @@ var Markdown = ({ content, components }) => {
|
|
|
2040
1981
|
var import_react12 = require("react");
|
|
2041
1982
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
2042
1983
|
var AssistantMessage = (props) => {
|
|
1984
|
+
var _a;
|
|
2043
1985
|
const { icons, labels } = useChatContext();
|
|
2044
1986
|
const {
|
|
2045
1987
|
message,
|
|
2046
1988
|
isLoading,
|
|
2047
|
-
subComponent,
|
|
2048
1989
|
onRegenerate,
|
|
2049
1990
|
onCopy,
|
|
2050
1991
|
onThumbsUp,
|
|
2051
1992
|
onThumbsDown,
|
|
2052
1993
|
isCurrentMessage,
|
|
2053
|
-
rawData,
|
|
2054
1994
|
markdownTagRenderers
|
|
2055
1995
|
} = props;
|
|
2056
1996
|
const [copied, setCopied] = (0, import_react12.useState)(false);
|
|
2057
1997
|
const handleCopy = () => {
|
|
2058
|
-
|
|
2059
|
-
|
|
1998
|
+
const content2 = (message == null ? void 0 : message.content) || "";
|
|
1999
|
+
if (content2 && onCopy) {
|
|
2000
|
+
navigator.clipboard.writeText(content2);
|
|
2060
2001
|
setCopied(true);
|
|
2061
|
-
onCopy(
|
|
2002
|
+
onCopy(content2);
|
|
2062
2003
|
setTimeout(() => setCopied(false), 2e3);
|
|
2063
|
-
} else if (
|
|
2064
|
-
navigator.clipboard.writeText(
|
|
2004
|
+
} else if (content2) {
|
|
2005
|
+
navigator.clipboard.writeText(content2);
|
|
2065
2006
|
setCopied(true);
|
|
2066
2007
|
setTimeout(() => setCopied(false), 2e3);
|
|
2067
2008
|
}
|
|
2068
2009
|
};
|
|
2069
2010
|
const handleRegenerate = () => {
|
|
2070
|
-
if (onRegenerate)
|
|
2011
|
+
if (onRegenerate)
|
|
2071
2012
|
onRegenerate();
|
|
2072
|
-
}
|
|
2073
2013
|
};
|
|
2074
2014
|
const handleThumbsUp = () => {
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
onThumbsUp(fullMessage);
|
|
2078
|
-
}
|
|
2015
|
+
if (onThumbsUp && message)
|
|
2016
|
+
onThumbsUp(message);
|
|
2079
2017
|
};
|
|
2080
2018
|
const handleThumbsDown = () => {
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
onThumbsDown(fullMessage);
|
|
2084
|
-
}
|
|
2019
|
+
if (onThumbsDown && message)
|
|
2020
|
+
onThumbsDown(message);
|
|
2085
2021
|
};
|
|
2086
2022
|
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
2023
|
+
const content = (message == null ? void 0 : message.content) || "";
|
|
2024
|
+
const subComponent = (_a = message == null ? void 0 : message.generativeUI) == null ? void 0 : _a.call(message);
|
|
2087
2025
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.
|
|
2091
|
-
message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
2026
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2027
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Markdown, { content, components: markdownTagRenderers }),
|
|
2028
|
+
content && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
2092
2029
|
"div",
|
|
2093
2030
|
{
|
|
2094
2031
|
className: `copilotKitMessageControls ${isCurrentMessage ? "currentMessage" : ""}`,
|
|
@@ -2137,19 +2074,52 @@ var AssistantMessage = (props) => {
|
|
|
2137
2074
|
}
|
|
2138
2075
|
)
|
|
2139
2076
|
] }),
|
|
2140
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
|
|
2077
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent }),
|
|
2078
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {})
|
|
2141
2079
|
] });
|
|
2142
2080
|
};
|
|
2143
2081
|
|
|
2144
|
-
// src/components/chat/messages/
|
|
2082
|
+
// src/components/chat/messages/ImageRenderer.tsx
|
|
2083
|
+
var import_react13 = require("react");
|
|
2145
2084
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2146
|
-
|
|
2085
|
+
var ImageRenderer = ({ image, content, className = "" }) => {
|
|
2086
|
+
const [imageError, setImageError] = (0, import_react13.useState)(false);
|
|
2087
|
+
const imageSrc = `data:image/${image.format};base64,${image.bytes}`;
|
|
2088
|
+
const altText = content || "User uploaded image";
|
|
2089
|
+
const handleImageError = () => {
|
|
2090
|
+
setImageError(true);
|
|
2091
|
+
};
|
|
2092
|
+
if (imageError) {
|
|
2093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: `copilotKitImageRendering copilotKitImageRenderingError ${className}`, children: [
|
|
2094
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitImageRenderingErrorMessage", children: "Failed to load image" }),
|
|
2095
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitImageRenderingContent", children: content })
|
|
2096
|
+
] });
|
|
2097
|
+
}
|
|
2098
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: `copilotKitImageRendering ${className}`, children: [
|
|
2099
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2100
|
+
"img",
|
|
2101
|
+
{
|
|
2102
|
+
src: imageSrc,
|
|
2103
|
+
alt: altText,
|
|
2104
|
+
className: "copilotKitImageRenderingImage",
|
|
2105
|
+
onError: handleImageError
|
|
2106
|
+
}
|
|
2107
|
+
),
|
|
2108
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitImageRenderingContent", children: content })
|
|
2109
|
+
] });
|
|
2110
|
+
};
|
|
2111
|
+
|
|
2112
|
+
// src/components/chat/messages/RenderMessage.tsx
|
|
2113
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2114
|
+
function RenderMessage(_a) {
|
|
2147
2115
|
var _b = _a, {
|
|
2148
2116
|
UserMessage: UserMessage2 = UserMessage,
|
|
2149
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2117
|
+
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2118
|
+
ImageRenderer: ImageRenderer2 = ImageRenderer
|
|
2150
2119
|
} = _b, props = __objRest(_b, [
|
|
2151
2120
|
"UserMessage",
|
|
2152
|
-
"AssistantMessage"
|
|
2121
|
+
"AssistantMessage",
|
|
2122
|
+
"ImageRenderer"
|
|
2153
2123
|
]);
|
|
2154
2124
|
const {
|
|
2155
2125
|
message,
|
|
@@ -2162,24 +2132,23 @@ function RenderTextMessage(_a) {
|
|
|
2162
2132
|
onThumbsDown,
|
|
2163
2133
|
markdownTagRenderers
|
|
2164
2134
|
} = props;
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
return /* @__PURE__ */ (0,
|
|
2135
|
+
switch (message.role) {
|
|
2136
|
+
case "user":
|
|
2137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2168
2138
|
UserMessage2,
|
|
2169
2139
|
{
|
|
2170
2140
|
"data-message-role": "user",
|
|
2171
|
-
message
|
|
2172
|
-
|
|
2141
|
+
message,
|
|
2142
|
+
ImageRenderer: ImageRenderer2
|
|
2173
2143
|
},
|
|
2174
2144
|
index
|
|
2175
2145
|
);
|
|
2176
|
-
|
|
2177
|
-
return /* @__PURE__ */ (0,
|
|
2146
|
+
case "assistant":
|
|
2147
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2178
2148
|
AssistantMessage2,
|
|
2179
2149
|
{
|
|
2180
2150
|
"data-message-role": "assistant",
|
|
2181
|
-
message
|
|
2182
|
-
rawData: message,
|
|
2151
|
+
message,
|
|
2183
2152
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
2184
2153
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
2185
2154
|
isCurrentMessage,
|
|
@@ -2187,421 +2156,22 @@ function RenderTextMessage(_a) {
|
|
|
2187
2156
|
onCopy,
|
|
2188
2157
|
onThumbsUp,
|
|
2189
2158
|
onThumbsDown,
|
|
2190
|
-
markdownTagRenderers
|
|
2159
|
+
markdownTagRenderers,
|
|
2160
|
+
ImageRenderer: ImageRenderer2
|
|
2191
2161
|
},
|
|
2192
2162
|
index
|
|
2193
2163
|
);
|
|
2194
|
-
}
|
|
2195
2164
|
}
|
|
2196
2165
|
}
|
|
2197
2166
|
|
|
2198
|
-
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
2199
|
-
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
2200
|
-
var import_react_core7 = require("@copilotkit/react-core");
|
|
2201
|
-
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2202
|
-
function RenderActionExecutionMessage(_a) {
|
|
2203
|
-
var _b = _a, {
|
|
2204
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2205
|
-
} = _b, props = __objRest(_b, [
|
|
2206
|
-
"AssistantMessage"
|
|
2207
|
-
]);
|
|
2208
|
-
const { chatComponentsCache } = (0, import_react_core7.useCopilotContext)();
|
|
2209
|
-
const { message, inProgress, index, isCurrentMessage, actionResult } = props;
|
|
2210
|
-
if (message.isActionExecutionMessage()) {
|
|
2211
|
-
if (chatComponentsCache.current !== null && (chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"])) {
|
|
2212
|
-
const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
|
|
2213
|
-
if (typeof render === "string") {
|
|
2214
|
-
if (isCurrentMessage && inProgress) {
|
|
2215
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2216
|
-
AssistantMessage2,
|
|
2217
|
-
{
|
|
2218
|
-
rawData: message,
|
|
2219
|
-
"data-message-role": "assistant",
|
|
2220
|
-
isLoading: false,
|
|
2221
|
-
isGenerating: true,
|
|
2222
|
-
message: render
|
|
2223
|
-
},
|
|
2224
|
-
index
|
|
2225
|
-
);
|
|
2226
|
-
} else {
|
|
2227
|
-
return null;
|
|
2228
|
-
}
|
|
2229
|
-
} else {
|
|
2230
|
-
const args = message.arguments;
|
|
2231
|
-
let status = "inProgress";
|
|
2232
|
-
if (actionResult !== void 0) {
|
|
2233
|
-
status = "complete";
|
|
2234
|
-
} else if (message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending) {
|
|
2235
|
-
status = "executing";
|
|
2236
|
-
}
|
|
2237
|
-
try {
|
|
2238
|
-
const toRender = render({
|
|
2239
|
-
status,
|
|
2240
|
-
// Cast to any as RenderFunctionStatus is a union that can be complex to narrow here
|
|
2241
|
-
args,
|
|
2242
|
-
result: actionResult,
|
|
2243
|
-
name: message.name,
|
|
2244
|
-
messageId: message.id
|
|
2245
|
-
// Pass messageId for HITL action correlation
|
|
2246
|
-
});
|
|
2247
|
-
if (!toRender && status === "complete") {
|
|
2248
|
-
return null;
|
|
2249
|
-
}
|
|
2250
|
-
if (typeof toRender === "string") {
|
|
2251
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2252
|
-
AssistantMessage2,
|
|
2253
|
-
{
|
|
2254
|
-
rawData: message,
|
|
2255
|
-
"data-message-role": "assistant",
|
|
2256
|
-
isLoading: false,
|
|
2257
|
-
isGenerating: false,
|
|
2258
|
-
message: toRender
|
|
2259
|
-
},
|
|
2260
|
-
index
|
|
2261
|
-
);
|
|
2262
|
-
} else {
|
|
2263
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2264
|
-
AssistantMessage2,
|
|
2265
|
-
{
|
|
2266
|
-
rawData: message,
|
|
2267
|
-
"data-message-role": "action-render",
|
|
2268
|
-
isLoading: false,
|
|
2269
|
-
isGenerating: false,
|
|
2270
|
-
subComponent: toRender
|
|
2271
|
-
},
|
|
2272
|
-
index
|
|
2273
|
-
);
|
|
2274
|
-
}
|
|
2275
|
-
} catch (e) {
|
|
2276
|
-
console.error(`Error executing render function for action ${message.name}: ${e}`);
|
|
2277
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2278
|
-
AssistantMessage2,
|
|
2279
|
-
{
|
|
2280
|
-
rawData: message,
|
|
2281
|
-
"data-message-role": "assistant",
|
|
2282
|
-
isLoading: false,
|
|
2283
|
-
isGenerating: false,
|
|
2284
|
-
subComponent: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2285
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("b", { children: [
|
|
2286
|
-
"\u274C Error executing render function for action ",
|
|
2287
|
-
message.name,
|
|
2288
|
-
":"
|
|
2289
|
-
] }),
|
|
2290
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
|
|
2291
|
-
] })
|
|
2292
|
-
},
|
|
2293
|
-
index
|
|
2294
|
-
);
|
|
2295
|
-
}
|
|
2296
|
-
}
|
|
2297
|
-
} else if (!inProgress || !isCurrentMessage) {
|
|
2298
|
-
return null;
|
|
2299
|
-
} else {
|
|
2300
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2301
|
-
AssistantMessage2,
|
|
2302
|
-
{
|
|
2303
|
-
rawData: message,
|
|
2304
|
-
"data-message-role": "assistant",
|
|
2305
|
-
isLoading: true,
|
|
2306
|
-
isGenerating: true
|
|
2307
|
-
},
|
|
2308
|
-
index
|
|
2309
|
-
);
|
|
2310
|
-
}
|
|
2311
|
-
}
|
|
2312
|
-
}
|
|
2313
|
-
|
|
2314
|
-
// src/components/chat/messages/RenderResultMessage.tsx
|
|
2315
|
-
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2316
|
-
function RenderResultMessage(_a) {
|
|
2317
|
-
var _b = _a, {
|
|
2318
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2319
|
-
} = _b, props = __objRest(_b, [
|
|
2320
|
-
"AssistantMessage"
|
|
2321
|
-
]);
|
|
2322
|
-
const { message, inProgress, index, isCurrentMessage } = props;
|
|
2323
|
-
if (message.isResultMessage() && inProgress && isCurrentMessage) {
|
|
2324
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2325
|
-
AssistantMessage2,
|
|
2326
|
-
{
|
|
2327
|
-
"data-message-role": "assistant",
|
|
2328
|
-
rawData: message,
|
|
2329
|
-
isLoading: true,
|
|
2330
|
-
isGenerating: true
|
|
2331
|
-
},
|
|
2332
|
-
index
|
|
2333
|
-
);
|
|
2334
|
-
} else {
|
|
2335
|
-
return null;
|
|
2336
|
-
}
|
|
2337
|
-
}
|
|
2338
|
-
|
|
2339
|
-
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
2340
|
-
var import_react_core8 = require("@copilotkit/react-core");
|
|
2341
|
-
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2342
|
-
function RenderAgentStateMessage(_a) {
|
|
2343
|
-
var _b = _a, {
|
|
2344
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2345
|
-
} = _b, props = __objRest(_b, [
|
|
2346
|
-
"AssistantMessage"
|
|
2347
|
-
]);
|
|
2348
|
-
const { chatComponentsCache } = (0, import_react_core8.useCopilotContext)();
|
|
2349
|
-
const { message, inProgress, index, isCurrentMessage } = props;
|
|
2350
|
-
if (message.isAgentStateMessage()) {
|
|
2351
|
-
let render;
|
|
2352
|
-
if (chatComponentsCache.current !== null) {
|
|
2353
|
-
render = chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-${message.nodeName}`] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];
|
|
2354
|
-
}
|
|
2355
|
-
if (render) {
|
|
2356
|
-
if (typeof render === "string") {
|
|
2357
|
-
if (isCurrentMessage && inProgress) {
|
|
2358
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2359
|
-
AssistantMessage2,
|
|
2360
|
-
{
|
|
2361
|
-
rawData: message,
|
|
2362
|
-
message: render,
|
|
2363
|
-
"data-message-role": "assistant",
|
|
2364
|
-
isLoading: true,
|
|
2365
|
-
isGenerating: true
|
|
2366
|
-
},
|
|
2367
|
-
index
|
|
2368
|
-
);
|
|
2369
|
-
} else {
|
|
2370
|
-
return null;
|
|
2371
|
-
}
|
|
2372
|
-
} else {
|
|
2373
|
-
const state = message.state;
|
|
2374
|
-
let status = message.active ? "inProgress" : "complete";
|
|
2375
|
-
const toRender = render({
|
|
2376
|
-
status,
|
|
2377
|
-
state,
|
|
2378
|
-
nodeName: message.nodeName
|
|
2379
|
-
});
|
|
2380
|
-
if (!toRender && status === "complete") {
|
|
2381
|
-
return null;
|
|
2382
|
-
}
|
|
2383
|
-
if (!toRender && isCurrentMessage && inProgress) {
|
|
2384
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2385
|
-
AssistantMessage2,
|
|
2386
|
-
{
|
|
2387
|
-
"data-message-role": "assistant",
|
|
2388
|
-
rawData: message,
|
|
2389
|
-
isLoading: true,
|
|
2390
|
-
isGenerating: true
|
|
2391
|
-
},
|
|
2392
|
-
index
|
|
2393
|
-
);
|
|
2394
|
-
} else if (!toRender) {
|
|
2395
|
-
return null;
|
|
2396
|
-
}
|
|
2397
|
-
if (typeof toRender === "string") {
|
|
2398
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2399
|
-
AssistantMessage2,
|
|
2400
|
-
{
|
|
2401
|
-
rawData: message,
|
|
2402
|
-
message: toRender,
|
|
2403
|
-
isLoading: true,
|
|
2404
|
-
isGenerating: true,
|
|
2405
|
-
"data-message-role": "assistant"
|
|
2406
|
-
},
|
|
2407
|
-
index
|
|
2408
|
-
);
|
|
2409
|
-
} else {
|
|
2410
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2411
|
-
AssistantMessage2,
|
|
2412
|
-
{
|
|
2413
|
-
rawData: message,
|
|
2414
|
-
"data-message-role": "agent-state-render",
|
|
2415
|
-
isLoading: false,
|
|
2416
|
-
isGenerating: false,
|
|
2417
|
-
subComponent: toRender
|
|
2418
|
-
},
|
|
2419
|
-
index
|
|
2420
|
-
);
|
|
2421
|
-
}
|
|
2422
|
-
}
|
|
2423
|
-
} else if (!inProgress || !isCurrentMessage) {
|
|
2424
|
-
return null;
|
|
2425
|
-
} else {
|
|
2426
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2427
|
-
AssistantMessage2,
|
|
2428
|
-
{
|
|
2429
|
-
rawData: message,
|
|
2430
|
-
isLoading: true,
|
|
2431
|
-
isGenerating: true,
|
|
2432
|
-
"data-message-role": "assistant"
|
|
2433
|
-
},
|
|
2434
|
-
index
|
|
2435
|
-
);
|
|
2436
|
-
}
|
|
2437
|
-
}
|
|
2438
|
-
}
|
|
2439
|
-
|
|
2440
|
-
// src/components/chat/messages/RenderImageMessage.tsx
|
|
2441
|
-
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2442
|
-
function RenderImageMessage(_a) {
|
|
2443
|
-
var _b = _a, {
|
|
2444
|
-
UserMessage: UserMessage2 = UserMessage,
|
|
2445
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2446
|
-
} = _b, props = __objRest(_b, [
|
|
2447
|
-
"UserMessage",
|
|
2448
|
-
"AssistantMessage"
|
|
2449
|
-
]);
|
|
2450
|
-
const {
|
|
2451
|
-
message,
|
|
2452
|
-
inProgress,
|
|
2453
|
-
index,
|
|
2454
|
-
isCurrentMessage,
|
|
2455
|
-
onRegenerate,
|
|
2456
|
-
onCopy,
|
|
2457
|
-
onThumbsUp,
|
|
2458
|
-
onThumbsDown
|
|
2459
|
-
} = props;
|
|
2460
|
-
if (message.isImageMessage()) {
|
|
2461
|
-
const imageData = `data:${message.format};base64,${message.bytes}`;
|
|
2462
|
-
const imageComponent = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "copilotKitImage", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2463
|
-
"img",
|
|
2464
|
-
{
|
|
2465
|
-
src: imageData,
|
|
2466
|
-
alt: "User uploaded image",
|
|
2467
|
-
style: { maxWidth: "100%", maxHeight: "300px", borderRadius: "8px" }
|
|
2468
|
-
}
|
|
2469
|
-
) });
|
|
2470
|
-
if (message.role === "user") {
|
|
2471
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2472
|
-
UserMessage2,
|
|
2473
|
-
{
|
|
2474
|
-
"data-message-role": "user",
|
|
2475
|
-
message: "",
|
|
2476
|
-
rawData: message,
|
|
2477
|
-
subComponent: imageComponent
|
|
2478
|
-
},
|
|
2479
|
-
index
|
|
2480
|
-
);
|
|
2481
|
-
} else if (message.role === "assistant") {
|
|
2482
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2483
|
-
AssistantMessage2,
|
|
2484
|
-
{
|
|
2485
|
-
"data-message-role": "assistant",
|
|
2486
|
-
message: "",
|
|
2487
|
-
rawData: message,
|
|
2488
|
-
subComponent: imageComponent,
|
|
2489
|
-
isLoading: inProgress && isCurrentMessage && !message.bytes,
|
|
2490
|
-
isGenerating: inProgress && isCurrentMessage && !!message.bytes,
|
|
2491
|
-
isCurrentMessage,
|
|
2492
|
-
onRegenerate: () => onRegenerate == null ? void 0 : onRegenerate(message.id),
|
|
2493
|
-
onCopy,
|
|
2494
|
-
onThumbsUp,
|
|
2495
|
-
onThumbsDown
|
|
2496
|
-
},
|
|
2497
|
-
index
|
|
2498
|
-
);
|
|
2499
|
-
}
|
|
2500
|
-
}
|
|
2501
|
-
return null;
|
|
2502
|
-
}
|
|
2503
|
-
|
|
2504
2167
|
// src/components/chat/Chat.tsx
|
|
2505
|
-
var
|
|
2506
|
-
var
|
|
2507
|
-
|
|
2508
|
-
// src/components/chat/Suggestion.tsx
|
|
2509
|
-
var import_react_core9 = require("@copilotkit/react-core");
|
|
2168
|
+
var import_react14 = __toESM(require("react"));
|
|
2169
|
+
var import_react_core8 = require("@copilotkit/react-core");
|
|
2510
2170
|
var import_shared3 = require("@copilotkit/shared");
|
|
2511
|
-
var
|
|
2512
|
-
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2513
|
-
function Suggestion({ title, onClick, partial, className }) {
|
|
2514
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2515
|
-
"button",
|
|
2516
|
-
{
|
|
2517
|
-
disabled: partial,
|
|
2518
|
-
onClick: (e) => {
|
|
2519
|
-
e.preventDefault();
|
|
2520
|
-
onClick();
|
|
2521
|
-
},
|
|
2522
|
-
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2523
|
-
"data-test-id": "suggestion",
|
|
2524
|
-
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: title })
|
|
2525
|
-
}
|
|
2526
|
-
);
|
|
2527
|
-
}
|
|
2528
|
-
var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggestions, abortControllerRef) => __async(void 0, null, function* () {
|
|
2529
|
-
const abortController = abortControllerRef.current;
|
|
2530
|
-
const tools = JSON.stringify(
|
|
2531
|
-
Object.values(context.actions).map((action) => ({
|
|
2532
|
-
name: action.name,
|
|
2533
|
-
description: action.description,
|
|
2534
|
-
jsonSchema: JSON.stringify((0, import_shared3.actionParametersToJsonSchema)(action.parameters))
|
|
2535
|
-
}))
|
|
2536
|
-
);
|
|
2537
|
-
const allSuggestions = [];
|
|
2538
|
-
for (const config of Object.values(chatSuggestionConfiguration)) {
|
|
2539
|
-
try {
|
|
2540
|
-
const numOfSuggestionsInstructions = config.minSuggestions === 0 ? `Produce up to ${config.maxSuggestions} suggestions. If there are no highly relevant suggestions you can think of, provide an empty array.` : `Produce between ${config.minSuggestions} and ${config.maxSuggestions} suggestions.`;
|
|
2541
|
-
const result = yield (0, import_react_core9.extract)({
|
|
2542
|
-
context,
|
|
2543
|
-
instructions: "Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. ",
|
|
2544
|
-
data: config.instructions + "\n\n" + numOfSuggestionsInstructions + "\n\nAvailable tools: " + tools + "\n\n",
|
|
2545
|
-
requestType: import_runtime_client_gql3.CopilotRequestType.Task,
|
|
2546
|
-
parameters: [
|
|
2547
|
-
{
|
|
2548
|
-
name: "suggestions",
|
|
2549
|
-
type: "object[]",
|
|
2550
|
-
attributes: [
|
|
2551
|
-
{
|
|
2552
|
-
name: "title",
|
|
2553
|
-
description: "The title of the suggestion. This is shown as a button and should be short.",
|
|
2554
|
-
type: "string"
|
|
2555
|
-
},
|
|
2556
|
-
{
|
|
2557
|
-
name: "message",
|
|
2558
|
-
description: "The message to send when the suggestion is clicked. This should be a clear, complete sentence and will be sent as an instruction to the AI.",
|
|
2559
|
-
type: "string"
|
|
2560
|
-
}
|
|
2561
|
-
]
|
|
2562
|
-
}
|
|
2563
|
-
],
|
|
2564
|
-
include: {
|
|
2565
|
-
messages: true,
|
|
2566
|
-
readable: true
|
|
2567
|
-
},
|
|
2568
|
-
abortSignal: abortController == null ? void 0 : abortController.signal,
|
|
2569
|
-
stream: ({ status, args }) => {
|
|
2570
|
-
const suggestions = args.suggestions || [];
|
|
2571
|
-
const newSuggestions = [];
|
|
2572
|
-
for (let i = 0; i < suggestions.length; i++) {
|
|
2573
|
-
if (config.maxSuggestions !== void 0 && i >= config.maxSuggestions) {
|
|
2574
|
-
break;
|
|
2575
|
-
}
|
|
2576
|
-
const { title, message } = suggestions[i];
|
|
2577
|
-
const partial = i == suggestions.length - 1 && status !== "complete";
|
|
2578
|
-
newSuggestions.push({
|
|
2579
|
-
title,
|
|
2580
|
-
message,
|
|
2581
|
-
partial,
|
|
2582
|
-
className: config.className
|
|
2583
|
-
});
|
|
2584
|
-
}
|
|
2585
|
-
setCurrentSuggestions([...allSuggestions, ...newSuggestions]);
|
|
2586
|
-
}
|
|
2587
|
-
});
|
|
2588
|
-
allSuggestions.push(...result.suggestions);
|
|
2589
|
-
} catch (error) {
|
|
2590
|
-
console.error("Error loading suggestions", error);
|
|
2591
|
-
}
|
|
2592
|
-
}
|
|
2593
|
-
if (abortControllerRef.current === abortController) {
|
|
2594
|
-
abortControllerRef.current = null;
|
|
2595
|
-
}
|
|
2596
|
-
});
|
|
2597
|
-
|
|
2598
|
-
// src/components/chat/Chat.tsx
|
|
2599
|
-
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
2600
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2601
|
-
var import_react_core11 = require("@copilotkit/react-core");
|
|
2171
|
+
var import_react_core9 = require("@copilotkit/react-core");
|
|
2602
2172
|
|
|
2603
2173
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2604
|
-
var
|
|
2174
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2605
2175
|
var ImageUploadQueue = ({
|
|
2606
2176
|
images,
|
|
2607
2177
|
onRemoveImage,
|
|
@@ -2609,7 +2179,7 @@ var ImageUploadQueue = ({
|
|
|
2609
2179
|
}) => {
|
|
2610
2180
|
if (images.length === 0)
|
|
2611
2181
|
return null;
|
|
2612
|
-
return /* @__PURE__ */ (0,
|
|
2182
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2613
2183
|
"div",
|
|
2614
2184
|
{
|
|
2615
2185
|
className: `copilotKitImageUploadQueue ${className}`,
|
|
@@ -2620,7 +2190,7 @@ var ImageUploadQueue = ({
|
|
|
2620
2190
|
margin: "8px",
|
|
2621
2191
|
padding: "8px"
|
|
2622
2192
|
},
|
|
2623
|
-
children: images.map((image, index) => /* @__PURE__ */ (0,
|
|
2193
|
+
children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2624
2194
|
"div",
|
|
2625
2195
|
{
|
|
2626
2196
|
className: "copilotKitImageUploadQueueItem",
|
|
@@ -2633,7 +2203,7 @@ var ImageUploadQueue = ({
|
|
|
2633
2203
|
overflow: "hidden"
|
|
2634
2204
|
},
|
|
2635
2205
|
children: [
|
|
2636
|
-
/* @__PURE__ */ (0,
|
|
2206
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2637
2207
|
"img",
|
|
2638
2208
|
{
|
|
2639
2209
|
src: `data:${image.contentType};base64,${image.bytes}`,
|
|
@@ -2645,7 +2215,7 @@ var ImageUploadQueue = ({
|
|
|
2645
2215
|
}
|
|
2646
2216
|
}
|
|
2647
2217
|
),
|
|
2648
|
-
/* @__PURE__ */ (0,
|
|
2218
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2649
2219
|
"button",
|
|
2650
2220
|
{
|
|
2651
2221
|
onClick: () => onRemoveImage(index),
|
|
@@ -2678,10 +2248,32 @@ var ImageUploadQueue = ({
|
|
|
2678
2248
|
);
|
|
2679
2249
|
};
|
|
2680
2250
|
|
|
2251
|
+
// src/components/chat/Suggestion.tsx
|
|
2252
|
+
var import_react_core7 = require("@copilotkit/react-core");
|
|
2253
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2254
|
+
function Suggestion({ title, onClick, partial, className }) {
|
|
2255
|
+
if (!title)
|
|
2256
|
+
return null;
|
|
2257
|
+
const { isLoading } = (0, import_react_core7.useCopilotChat)();
|
|
2258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2259
|
+
"button",
|
|
2260
|
+
{
|
|
2261
|
+
disabled: partial || isLoading,
|
|
2262
|
+
onClick: (e) => {
|
|
2263
|
+
e.preventDefault();
|
|
2264
|
+
onClick();
|
|
2265
|
+
},
|
|
2266
|
+
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2267
|
+
"data-test-id": "suggestion",
|
|
2268
|
+
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: title })
|
|
2269
|
+
}
|
|
2270
|
+
);
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2681
2273
|
// src/components/chat/Suggestions.tsx
|
|
2682
|
-
var
|
|
2274
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2683
2275
|
function Suggestions({ suggestions, onSuggestionClick }) {
|
|
2684
|
-
return /* @__PURE__ */ (0,
|
|
2276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2685
2277
|
Suggestion,
|
|
2686
2278
|
{
|
|
2687
2279
|
title: suggestion.title,
|
|
@@ -2695,9 +2287,10 @@ function Suggestions({ suggestions, onSuggestionClick }) {
|
|
|
2695
2287
|
}
|
|
2696
2288
|
|
|
2697
2289
|
// src/components/chat/Chat.tsx
|
|
2698
|
-
var
|
|
2290
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2699
2291
|
function CopilotChat({
|
|
2700
2292
|
instructions,
|
|
2293
|
+
suggestions = "auto",
|
|
2701
2294
|
onSubmitMessage,
|
|
2702
2295
|
makeSystemMessage,
|
|
2703
2296
|
onInProgress,
|
|
@@ -2709,11 +2302,7 @@ function CopilotChat({
|
|
|
2709
2302
|
onThumbsDown,
|
|
2710
2303
|
markdownTagRenderers,
|
|
2711
2304
|
Messages: Messages2 = Messages,
|
|
2712
|
-
|
|
2713
|
-
RenderActionExecutionMessage: RenderActionExecutionMessage2 = RenderActionExecutionMessage,
|
|
2714
|
-
RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
|
|
2715
|
-
RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
|
|
2716
|
-
RenderImageMessage: RenderImageMessage2 = RenderImageMessage,
|
|
2305
|
+
RenderMessage: RenderMessage2 = RenderMessage,
|
|
2717
2306
|
RenderSuggestionsList = Suggestions,
|
|
2718
2307
|
Input: Input2 = Input,
|
|
2719
2308
|
className,
|
|
@@ -2721,14 +2310,15 @@ function CopilotChat({
|
|
|
2721
2310
|
labels,
|
|
2722
2311
|
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2723
2312
|
UserMessage: UserMessage2 = UserMessage,
|
|
2313
|
+
ImageRenderer: ImageRenderer2 = ImageRenderer,
|
|
2724
2314
|
imageUploadsEnabled,
|
|
2725
2315
|
inputFileAccept = "image/*",
|
|
2726
2316
|
hideStopButton
|
|
2727
2317
|
}) {
|
|
2728
|
-
const { additionalInstructions, setChatInstructions } = (0,
|
|
2729
|
-
const [selectedImages, setSelectedImages] = (0,
|
|
2730
|
-
const fileInputRef = (0,
|
|
2731
|
-
(0,
|
|
2318
|
+
const { additionalInstructions, setChatInstructions } = (0, import_react_core8.useCopilotContext)();
|
|
2319
|
+
const [selectedImages, setSelectedImages] = (0, import_react14.useState)([]);
|
|
2320
|
+
const fileInputRef = (0, import_react14.useRef)(null);
|
|
2321
|
+
(0, import_react14.useEffect)(() => {
|
|
2732
2322
|
if (!imageUploadsEnabled)
|
|
2733
2323
|
return;
|
|
2734
2324
|
const handlePaste = (e) => __async(this, null, function* () {
|
|
@@ -2773,7 +2363,7 @@ function CopilotChat({
|
|
|
2773
2363
|
document.addEventListener("paste", handlePaste);
|
|
2774
2364
|
return () => document.removeEventListener("paste", handlePaste);
|
|
2775
2365
|
}, [imageUploadsEnabled]);
|
|
2776
|
-
(0,
|
|
2366
|
+
(0, import_react14.useEffect)(() => {
|
|
2777
2367
|
if (!(additionalInstructions == null ? void 0 : additionalInstructions.length)) {
|
|
2778
2368
|
setChatInstructions(instructions || "");
|
|
2779
2369
|
return;
|
|
@@ -2783,17 +2373,17 @@ function CopilotChat({
|
|
|
2783
2373
|
"Additionally, follow these instructions:",
|
|
2784
2374
|
...additionalInstructions.map((instruction) => `- ${instruction}`)
|
|
2785
2375
|
];
|
|
2786
|
-
console.log("combinedAdditionalInstructions", combinedAdditionalInstructions);
|
|
2787
2376
|
setChatInstructions(combinedAdditionalInstructions.join("\n") || "");
|
|
2788
2377
|
}, [instructions, additionalInstructions]);
|
|
2789
2378
|
const {
|
|
2790
2379
|
visibleMessages,
|
|
2791
2380
|
isLoading,
|
|
2792
|
-
currentSuggestions,
|
|
2793
2381
|
sendMessage,
|
|
2794
2382
|
stopGeneration,
|
|
2795
|
-
reloadMessages
|
|
2383
|
+
reloadMessages,
|
|
2384
|
+
suggestions: currentSuggestions
|
|
2796
2385
|
} = useCopilotChatLogic(
|
|
2386
|
+
suggestions,
|
|
2797
2387
|
makeSystemMessage,
|
|
2798
2388
|
onInProgress,
|
|
2799
2389
|
onSubmitMessage,
|
|
@@ -2808,7 +2398,7 @@ function CopilotChat({
|
|
|
2808
2398
|
}
|
|
2809
2399
|
return sendMessage(text, images);
|
|
2810
2400
|
};
|
|
2811
|
-
const chatContext =
|
|
2401
|
+
const chatContext = import_react14.default.useContext(ChatContext);
|
|
2812
2402
|
const isVisible = chatContext ? chatContext.open : true;
|
|
2813
2403
|
const handleRegenerate = (messageId) => {
|
|
2814
2404
|
if (onRegenerate) {
|
|
@@ -2855,17 +2445,13 @@ function CopilotChat({
|
|
|
2855
2445
|
const removeSelectedImage = (index) => {
|
|
2856
2446
|
setSelectedImages((prev) => prev.filter((_, i) => i !== index));
|
|
2857
2447
|
};
|
|
2858
|
-
return /* @__PURE__ */ (0,
|
|
2859
|
-
/* @__PURE__ */ (0,
|
|
2448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
2449
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2860
2450
|
Messages2,
|
|
2861
2451
|
{
|
|
2862
2452
|
AssistantMessage: AssistantMessage2,
|
|
2863
2453
|
UserMessage: UserMessage2,
|
|
2864
|
-
|
|
2865
|
-
RenderActionExecutionMessage: RenderActionExecutionMessage2,
|
|
2866
|
-
RenderAgentStateMessage: RenderAgentStateMessage2,
|
|
2867
|
-
RenderResultMessage: RenderResultMessage2,
|
|
2868
|
-
RenderImageMessage: RenderImageMessage2,
|
|
2454
|
+
RenderMessage: RenderMessage2,
|
|
2869
2455
|
messages: visibleMessages,
|
|
2870
2456
|
inProgress: isLoading,
|
|
2871
2457
|
onRegenerate: handleRegenerate,
|
|
@@ -2873,7 +2459,8 @@ function CopilotChat({
|
|
|
2873
2459
|
onThumbsUp,
|
|
2874
2460
|
onThumbsDown,
|
|
2875
2461
|
markdownTagRenderers,
|
|
2876
|
-
|
|
2462
|
+
ImageRenderer: ImageRenderer2,
|
|
2463
|
+
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2877
2464
|
RenderSuggestionsList,
|
|
2878
2465
|
{
|
|
2879
2466
|
onSuggestionClick: handleSendMessage,
|
|
@@ -2882,9 +2469,9 @@ function CopilotChat({
|
|
|
2882
2469
|
)
|
|
2883
2470
|
}
|
|
2884
2471
|
),
|
|
2885
|
-
imageUploadsEnabled && /* @__PURE__ */ (0,
|
|
2886
|
-
/* @__PURE__ */ (0,
|
|
2887
|
-
/* @__PURE__ */ (0,
|
|
2472
|
+
imageUploadsEnabled && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
2473
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ImageUploadQueue, { images: selectedImages, onRemoveImage: removeSelectedImage }),
|
|
2474
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2888
2475
|
"input",
|
|
2889
2476
|
{
|
|
2890
2477
|
type: "file",
|
|
@@ -2896,7 +2483,7 @@ function CopilotChat({
|
|
|
2896
2483
|
}
|
|
2897
2484
|
)
|
|
2898
2485
|
] }),
|
|
2899
|
-
/* @__PURE__ */ (0,
|
|
2486
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2900
2487
|
Input2,
|
|
2901
2488
|
{
|
|
2902
2489
|
inProgress: isLoading,
|
|
@@ -2918,75 +2505,118 @@ function WrappedCopilotChat({
|
|
|
2918
2505
|
labels,
|
|
2919
2506
|
className
|
|
2920
2507
|
}) {
|
|
2921
|
-
const chatContext =
|
|
2508
|
+
const chatContext = import_react14.default.useContext(ChatContext);
|
|
2922
2509
|
if (!chatContext) {
|
|
2923
|
-
return /* @__PURE__ */ (0,
|
|
2924
|
-
}, children: /* @__PURE__ */ (0,
|
|
2510
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
|
|
2511
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `copilotKitChat ${className != null ? className : ""}`, children }) });
|
|
2925
2512
|
}
|
|
2926
|
-
return /* @__PURE__ */ (0,
|
|
2513
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children });
|
|
2927
2514
|
}
|
|
2928
|
-
var
|
|
2929
|
-
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2515
|
+
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2930
2516
|
var _a;
|
|
2931
2517
|
const {
|
|
2932
2518
|
visibleMessages,
|
|
2933
2519
|
appendMessage,
|
|
2520
|
+
setMessages,
|
|
2934
2521
|
reloadMessages: defaultReloadMessages,
|
|
2935
2522
|
stopGeneration: defaultStopGeneration,
|
|
2936
2523
|
runChatCompletion,
|
|
2937
|
-
isLoading
|
|
2938
|
-
|
|
2939
|
-
|
|
2524
|
+
isLoading,
|
|
2525
|
+
suggestions,
|
|
2526
|
+
setSuggestions,
|
|
2527
|
+
generateSuggestions,
|
|
2528
|
+
resetSuggestions: resetSuggestionsFromHook,
|
|
2529
|
+
isLoadingSuggestions
|
|
2530
|
+
} = (0, import_react_core8.useCopilotChat)({
|
|
2940
2531
|
makeSystemMessage
|
|
2941
2532
|
});
|
|
2942
|
-
const
|
|
2943
|
-
const
|
|
2944
|
-
const
|
|
2945
|
-
const
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
(0,
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
()
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2533
|
+
const generalContext = (0, import_react_core8.useCopilotContext)();
|
|
2534
|
+
const messagesContext = (0, import_react_core8.useCopilotMessagesContext)();
|
|
2535
|
+
const { actions } = generalContext;
|
|
2536
|
+
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react14.useState)(false);
|
|
2537
|
+
const hasGeneratedInitialSuggestions = (0, import_react14.useRef)(false);
|
|
2538
|
+
(0, import_react14.useEffect)(() => {
|
|
2539
|
+
if (Array.isArray(chatSuggestions)) {
|
|
2540
|
+
setSuggestions(chatSuggestions);
|
|
2541
|
+
hasGeneratedInitialSuggestions.current = true;
|
|
2542
|
+
}
|
|
2543
|
+
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2544
|
+
const generateSuggestionsWithErrorHandling = (0, import_react14.useCallback)(
|
|
2545
|
+
(context) => __async(void 0, null, function* () {
|
|
2546
|
+
try {
|
|
2547
|
+
yield generateSuggestions();
|
|
2548
|
+
} catch (error) {
|
|
2549
|
+
console.error("Failed to generate suggestions:", error);
|
|
2550
|
+
setSuggestionsFailed(true);
|
|
2551
|
+
}
|
|
2552
|
+
}),
|
|
2553
|
+
[generateSuggestions]
|
|
2554
|
+
);
|
|
2555
|
+
(0, import_react14.useEffect)(() => {
|
|
2556
|
+
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2557
|
+
return;
|
|
2558
|
+
}
|
|
2559
|
+
if (isLoading) {
|
|
2560
|
+
return;
|
|
2561
|
+
}
|
|
2562
|
+
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2563
|
+
return;
|
|
2564
|
+
}
|
|
2565
|
+
if (visibleMessages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2566
|
+
hasGeneratedInitialSuggestions.current = true;
|
|
2567
|
+
generateSuggestionsWithErrorHandling("initial");
|
|
2568
|
+
return;
|
|
2569
|
+
}
|
|
2570
|
+
if (visibleMessages.length > 0 && suggestions.length === 0) {
|
|
2571
|
+
generateSuggestionsWithErrorHandling("post-message");
|
|
2572
|
+
return;
|
|
2573
|
+
}
|
|
2973
2574
|
}, [
|
|
2575
|
+
chatSuggestions,
|
|
2576
|
+
isLoadingSuggestions,
|
|
2577
|
+
suggestionsFailed,
|
|
2578
|
+
visibleMessages.length,
|
|
2974
2579
|
isLoading,
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
//
|
|
2978
|
-
|
|
2580
|
+
suggestions.length,
|
|
2581
|
+
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2582
|
+
// Use stable string instead of object reference
|
|
2583
|
+
generateSuggestionsWithErrorHandling
|
|
2979
2584
|
]);
|
|
2585
|
+
(0, import_react14.useEffect)(() => {
|
|
2586
|
+
if (chatSuggestions !== "auto") {
|
|
2587
|
+
hasGeneratedInitialSuggestions.current = false;
|
|
2588
|
+
setSuggestionsFailed(false);
|
|
2589
|
+
}
|
|
2590
|
+
}, [chatSuggestions]);
|
|
2591
|
+
const stableContext = (0, import_react14.useMemo)(
|
|
2592
|
+
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2593
|
+
[
|
|
2594
|
+
// Only include stable dependencies
|
|
2595
|
+
generalContext.actions,
|
|
2596
|
+
messagesContext.messages.length,
|
|
2597
|
+
generalContext.isLoading
|
|
2598
|
+
]
|
|
2599
|
+
);
|
|
2600
|
+
const resetSuggestions = (0, import_react14.useCallback)(() => {
|
|
2601
|
+
resetSuggestionsFromHook();
|
|
2602
|
+
setSuggestionsFailed(false);
|
|
2603
|
+
hasGeneratedInitialSuggestions.current = false;
|
|
2604
|
+
}, [resetSuggestionsFromHook]);
|
|
2605
|
+
(0, import_react14.useEffect)(() => {
|
|
2606
|
+
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2607
|
+
}, [onInProgress, isLoading]);
|
|
2980
2608
|
const sendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2981
2609
|
const images = imagesToUse || [];
|
|
2982
|
-
|
|
2983
|
-
|
|
2610
|
+
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2611
|
+
setSuggestions([]);
|
|
2612
|
+
}
|
|
2984
2613
|
let firstMessage = null;
|
|
2985
2614
|
if (messageContent.trim().length > 0) {
|
|
2986
|
-
const textMessage =
|
|
2987
|
-
|
|
2988
|
-
role:
|
|
2989
|
-
|
|
2615
|
+
const textMessage = {
|
|
2616
|
+
id: (0, import_shared3.randomId)(),
|
|
2617
|
+
role: "user",
|
|
2618
|
+
content: messageContent
|
|
2619
|
+
};
|
|
2990
2620
|
if (onSubmitMessage) {
|
|
2991
2621
|
try {
|
|
2992
2622
|
yield onSubmitMessage(messageContent);
|
|
@@ -2994,18 +2624,24 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2994
2624
|
console.error("Error in onSubmitMessage:", error);
|
|
2995
2625
|
}
|
|
2996
2626
|
}
|
|
2997
|
-
yield appendMessage(textMessage, {
|
|
2627
|
+
yield appendMessage(textMessage, {
|
|
2628
|
+
followUp: images.length === 0,
|
|
2629
|
+
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2630
|
+
});
|
|
2998
2631
|
if (!firstMessage) {
|
|
2999
2632
|
firstMessage = textMessage;
|
|
3000
2633
|
}
|
|
3001
2634
|
}
|
|
3002
2635
|
if (images.length > 0) {
|
|
3003
2636
|
for (let i = 0; i < images.length; i++) {
|
|
3004
|
-
const imageMessage =
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
2637
|
+
const imageMessage = {
|
|
2638
|
+
id: (0, import_shared3.randomId)(),
|
|
2639
|
+
role: "user",
|
|
2640
|
+
image: {
|
|
2641
|
+
format: images[i].contentType.replace("image/", ""),
|
|
2642
|
+
bytes: images[i].bytes
|
|
2643
|
+
}
|
|
2644
|
+
};
|
|
3009
2645
|
yield appendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
3010
2646
|
if (!firstMessage) {
|
|
3011
2647
|
firstMessage = imageMessage;
|
|
@@ -3013,12 +2649,11 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3013
2649
|
}
|
|
3014
2650
|
}
|
|
3015
2651
|
if (!firstMessage) {
|
|
3016
|
-
return
|
|
2652
|
+
return { role: "user", content: "", id: (0, import_shared3.randomId)() };
|
|
3017
2653
|
}
|
|
3018
2654
|
return firstMessage;
|
|
3019
2655
|
});
|
|
3020
2656
|
const messages = visibleMessages;
|
|
3021
|
-
const { setMessages } = messagesContext;
|
|
3022
2657
|
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
3023
2658
|
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3024
2659
|
if (generalContext.agentSession) {
|
|
@@ -3039,9 +2674,9 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3039
2674
|
});
|
|
3040
2675
|
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3041
2676
|
if (generalContext.agentSession) {
|
|
3042
|
-
yield (0,
|
|
2677
|
+
yield (0, import_react_core9.runAgent)(
|
|
3043
2678
|
generalContext.agentSession.agentName,
|
|
3044
|
-
|
|
2679
|
+
stableContext,
|
|
3045
2680
|
appendMessage,
|
|
3046
2681
|
runChatCompletion,
|
|
3047
2682
|
hint
|
|
@@ -3050,7 +2685,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3050
2685
|
});
|
|
3051
2686
|
const stopCurrentAgent = () => {
|
|
3052
2687
|
if (generalContext.agentSession) {
|
|
3053
|
-
(0,
|
|
2688
|
+
(0, import_react_core9.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3054
2689
|
}
|
|
3055
2690
|
};
|
|
3056
2691
|
const setCurrentAgentState = (state) => {
|
|
@@ -3065,6 +2700,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3065
2700
|
}
|
|
3066
2701
|
};
|
|
3067
2702
|
function stopGeneration() {
|
|
2703
|
+
setSuggestions([]);
|
|
3068
2704
|
if (onStopGeneration) {
|
|
3069
2705
|
onStopGeneration({
|
|
3070
2706
|
messages,
|
|
@@ -3098,17 +2734,21 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3098
2734
|
}
|
|
3099
2735
|
}
|
|
3100
2736
|
return {
|
|
2737
|
+
messages,
|
|
3101
2738
|
visibleMessages,
|
|
3102
2739
|
isLoading,
|
|
3103
|
-
|
|
2740
|
+
suggestions,
|
|
3104
2741
|
sendMessage,
|
|
3105
2742
|
stopGeneration,
|
|
3106
|
-
reloadMessages
|
|
2743
|
+
reloadMessages,
|
|
2744
|
+
resetSuggestions,
|
|
2745
|
+
context: stableContext,
|
|
2746
|
+
actions
|
|
3107
2747
|
};
|
|
3108
2748
|
};
|
|
3109
2749
|
|
|
3110
2750
|
// src/components/chat/Modal.tsx
|
|
3111
|
-
var
|
|
2751
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3112
2752
|
var CopilotModal = (_a) => {
|
|
3113
2753
|
var _b = _a, {
|
|
3114
2754
|
instructions,
|
|
@@ -3167,18 +2807,18 @@ var CopilotModal = (_a) => {
|
|
|
3167
2807
|
"className",
|
|
3168
2808
|
"children"
|
|
3169
2809
|
]);
|
|
3170
|
-
const [openState, setOpenState] =
|
|
2810
|
+
const [openState, setOpenState] = import_react15.default.useState(defaultOpen);
|
|
3171
2811
|
const setOpen = (open) => {
|
|
3172
2812
|
onSetOpen == null ? void 0 : onSetOpen(open);
|
|
3173
2813
|
setOpenState(open);
|
|
3174
2814
|
};
|
|
3175
|
-
const memoizedHeader = (0,
|
|
3176
|
-
const memoizedChildren = (0,
|
|
3177
|
-
return /* @__PURE__ */ (0,
|
|
2815
|
+
const memoizedHeader = (0, import_react15.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Header2, {}), [Header2]);
|
|
2816
|
+
const memoizedChildren = (0, import_react15.useMemo)(() => children, [children]);
|
|
2817
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
|
|
3178
2818
|
memoizedChildren,
|
|
3179
|
-
/* @__PURE__ */ (0,
|
|
3180
|
-
/* @__PURE__ */ (0,
|
|
3181
|
-
/* @__PURE__ */ (0,
|
|
2819
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className, children: [
|
|
2820
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button2, {}),
|
|
2821
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
3182
2822
|
Window2,
|
|
3183
2823
|
{
|
|
3184
2824
|
clickOutsideToClose,
|
|
@@ -3186,7 +2826,7 @@ var CopilotModal = (_a) => {
|
|
|
3186
2826
|
hitEscapeToClose,
|
|
3187
2827
|
children: [
|
|
3188
2828
|
memoizedHeader,
|
|
3189
|
-
/* @__PURE__ */ (0,
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3190
2830
|
CopilotChat,
|
|
3191
2831
|
__spreadProps(__spreadValues({}, props), {
|
|
3192
2832
|
instructions,
|