@copilotkit/react-ui 1.9.3-next.4 → 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 +40 -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
package/dist/components/index.js
CHANGED
|
@@ -84,8 +84,8 @@ __export(components_exports, {
|
|
|
84
84
|
CopilotDevConsole: () => CopilotDevConsole,
|
|
85
85
|
CopilotPopup: () => CopilotPopup,
|
|
86
86
|
CopilotSidebar: () => CopilotSidebar,
|
|
87
|
+
ImageRenderer: () => ImageRenderer,
|
|
87
88
|
Markdown: () => Markdown,
|
|
88
|
-
RenderImageMessage: () => RenderImageMessage,
|
|
89
89
|
RenderSuggestion: () => Suggestion,
|
|
90
90
|
RenderSuggestionsList: () => Suggestions,
|
|
91
91
|
UserMessage: () => UserMessage,
|
|
@@ -95,7 +95,7 @@ __export(components_exports, {
|
|
|
95
95
|
module.exports = __toCommonJS(components_exports);
|
|
96
96
|
|
|
97
97
|
// src/components/chat/Modal.tsx
|
|
98
|
-
var
|
|
98
|
+
var import_react15 = __toESM(require("react"));
|
|
99
99
|
|
|
100
100
|
// src/components/chat/ChatContext.tsx
|
|
101
101
|
var import_react = __toESM(require("react"));
|
|
@@ -1039,18 +1039,12 @@ var Header = ({}) => {
|
|
|
1039
1039
|
|
|
1040
1040
|
// src/components/chat/Messages.tsx
|
|
1041
1041
|
var import_react6 = require("react");
|
|
1042
|
-
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
1043
1042
|
var import_react_core4 = require("@copilotkit/react-core");
|
|
1044
1043
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1045
1044
|
var Messages = ({
|
|
1046
|
-
messages,
|
|
1047
1045
|
inProgress,
|
|
1048
1046
|
children,
|
|
1049
|
-
|
|
1050
|
-
RenderActionExecutionMessage: RenderActionExecutionMessage2,
|
|
1051
|
-
RenderAgentStateMessage: RenderAgentStateMessage2,
|
|
1052
|
-
RenderResultMessage: RenderResultMessage2,
|
|
1053
|
-
RenderImageMessage: RenderImageMessage2,
|
|
1047
|
+
RenderMessage: RenderMessage2,
|
|
1054
1048
|
AssistantMessage: AssistantMessage2,
|
|
1055
1049
|
UserMessage: UserMessage2,
|
|
1056
1050
|
onRegenerate,
|
|
@@ -1059,106 +1053,32 @@ var Messages = ({
|
|
|
1059
1053
|
onThumbsDown,
|
|
1060
1054
|
markdownTagRenderers
|
|
1061
1055
|
}) => {
|
|
1062
|
-
const
|
|
1063
|
-
const
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
);
|
|
1067
|
-
messages = [...initialMessages, ...messages];
|
|
1068
|
-
const actionResults = {};
|
|
1069
|
-
for (let i = 0; i < messages.length; i++) {
|
|
1070
|
-
if (messages[i].isActionExecutionMessage()) {
|
|
1071
|
-
const id = messages[i].id;
|
|
1072
|
-
const resultMessage = messages.find(
|
|
1073
|
-
(message) => message.isResultMessage() && message.actionExecutionId === id
|
|
1074
|
-
);
|
|
1075
|
-
if (resultMessage) {
|
|
1076
|
-
actionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
|
|
1077
|
-
}
|
|
1078
|
-
}
|
|
1079
|
-
}
|
|
1056
|
+
const { labels } = useChatContext();
|
|
1057
|
+
const { visibleMessages, interrupt } = (0, import_react_core4.useCopilotChat)();
|
|
1058
|
+
const initialMessages = (0, import_react6.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1059
|
+
const messages = [...initialMessages, ...visibleMessages];
|
|
1080
1060
|
const { messagesContainerRef, messagesEndRef } = useScrollToBottom(messages);
|
|
1081
|
-
const interrupt = (0, import_react_core4.useLangGraphInterruptRender)();
|
|
1082
1061
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1083
1062
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1084
1063
|
messages.map((message, index) => {
|
|
1085
1064
|
const isCurrentMessage = index === messages.length - 1;
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
);
|
|
1104
|
-
} else if (message.isActionExecutionMessage()) {
|
|
1105
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1106
|
-
RenderActionExecutionMessage2,
|
|
1107
|
-
{
|
|
1108
|
-
message,
|
|
1109
|
-
inProgress,
|
|
1110
|
-
index,
|
|
1111
|
-
isCurrentMessage,
|
|
1112
|
-
actionResult: actionResults[message.id],
|
|
1113
|
-
AssistantMessage: AssistantMessage2,
|
|
1114
|
-
UserMessage: UserMessage2
|
|
1115
|
-
},
|
|
1116
|
-
index
|
|
1117
|
-
);
|
|
1118
|
-
} else if (message.isAgentStateMessage()) {
|
|
1119
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1120
|
-
RenderAgentStateMessage2,
|
|
1121
|
-
{
|
|
1122
|
-
message,
|
|
1123
|
-
inProgress,
|
|
1124
|
-
index,
|
|
1125
|
-
isCurrentMessage,
|
|
1126
|
-
AssistantMessage: AssistantMessage2,
|
|
1127
|
-
UserMessage: UserMessage2
|
|
1128
|
-
},
|
|
1129
|
-
index
|
|
1130
|
-
);
|
|
1131
|
-
} else if (message.isResultMessage()) {
|
|
1132
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1133
|
-
RenderResultMessage2,
|
|
1134
|
-
{
|
|
1135
|
-
message,
|
|
1136
|
-
inProgress,
|
|
1137
|
-
index,
|
|
1138
|
-
isCurrentMessage,
|
|
1139
|
-
AssistantMessage: AssistantMessage2,
|
|
1140
|
-
UserMessage: UserMessage2
|
|
1141
|
-
},
|
|
1142
|
-
index
|
|
1143
|
-
);
|
|
1144
|
-
} else if (message.isImageMessage && message.isImageMessage()) {
|
|
1145
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1146
|
-
RenderImageMessage2,
|
|
1147
|
-
{
|
|
1148
|
-
message,
|
|
1149
|
-
inProgress,
|
|
1150
|
-
index,
|
|
1151
|
-
isCurrentMessage,
|
|
1152
|
-
AssistantMessage: AssistantMessage2,
|
|
1153
|
-
UserMessage: UserMessage2,
|
|
1154
|
-
onRegenerate,
|
|
1155
|
-
onCopy,
|
|
1156
|
-
onThumbsUp,
|
|
1157
|
-
onThumbsDown
|
|
1158
|
-
},
|
|
1159
|
-
index
|
|
1160
|
-
);
|
|
1161
|
-
}
|
|
1065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1066
|
+
RenderMessage2,
|
|
1067
|
+
{
|
|
1068
|
+
message,
|
|
1069
|
+
inProgress,
|
|
1070
|
+
index,
|
|
1071
|
+
isCurrentMessage,
|
|
1072
|
+
AssistantMessage: AssistantMessage2,
|
|
1073
|
+
UserMessage: UserMessage2,
|
|
1074
|
+
onRegenerate,
|
|
1075
|
+
onCopy,
|
|
1076
|
+
onThumbsUp,
|
|
1077
|
+
onThumbsDown,
|
|
1078
|
+
markdownTagRenderers
|
|
1079
|
+
},
|
|
1080
|
+
index
|
|
1081
|
+
);
|
|
1162
1082
|
}),
|
|
1163
1083
|
interrupt
|
|
1164
1084
|
] }),
|
|
@@ -1166,20 +1086,24 @@ var Messages = ({
|
|
|
1166
1086
|
] });
|
|
1167
1087
|
};
|
|
1168
1088
|
function makeInitialMessages(initial) {
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1089
|
+
if (!initial)
|
|
1090
|
+
return [];
|
|
1091
|
+
if (Array.isArray(initial)) {
|
|
1092
|
+
return initial.map((message) => {
|
|
1093
|
+
return {
|
|
1094
|
+
id: message,
|
|
1095
|
+
role: "assistant",
|
|
1096
|
+
content: message
|
|
1097
|
+
};
|
|
1098
|
+
});
|
|
1176
1099
|
}
|
|
1177
|
-
return
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1100
|
+
return [
|
|
1101
|
+
{
|
|
1102
|
+
id: initial,
|
|
1103
|
+
role: "system",
|
|
1104
|
+
content: initial
|
|
1105
|
+
}
|
|
1106
|
+
];
|
|
1183
1107
|
}
|
|
1184
1108
|
function useScrollToBottom(messages) {
|
|
1185
1109
|
const messagesEndRef = (0, import_react6.useRef)(null);
|
|
@@ -1235,7 +1159,7 @@ function useScrollToBottom(messages) {
|
|
|
1235
1159
|
(0, import_react6.useEffect)(() => {
|
|
1236
1160
|
isUserScrollUpRef.current = false;
|
|
1237
1161
|
scrollToBottom();
|
|
1238
|
-
}, [messages.filter((m) => m.
|
|
1162
|
+
}, [messages.filter((m) => m.role === "user").length]);
|
|
1239
1163
|
return { messagesEndRef, messagesContainerRef };
|
|
1240
1164
|
}
|
|
1241
1165
|
|
|
@@ -1304,6 +1228,7 @@ var Textarea_default = AutoResizingTextarea;
|
|
|
1304
1228
|
|
|
1305
1229
|
// src/hooks/use-push-to-talk.tsx
|
|
1306
1230
|
var import_react_core5 = require("@copilotkit/react-core");
|
|
1231
|
+
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
1307
1232
|
var import_react8 = require("react");
|
|
1308
1233
|
var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
|
|
1309
1234
|
if (!mediaStreamRef.current || !audioContextRef.current) {
|
|
@@ -1395,9 +1320,8 @@ var usePushToTalk = ({
|
|
|
1395
1320
|
const lastMessageIndex = context.messages.findIndex(
|
|
1396
1321
|
(message) => message.id === startReadingFromMessageId
|
|
1397
1322
|
);
|
|
1398
|
-
const
|
|
1399
|
-
|
|
1400
|
-
);
|
|
1323
|
+
const aguiMessages = (0, import_runtime_client_gql.gqlToAGUI)(context.messages);
|
|
1324
|
+
const messagesAfterLast = aguiMessages.slice(lastMessageIndex + 1).filter((message) => message.role === "assistant");
|
|
1401
1325
|
const text = messagesAfterLast.map((message) => message.content).join("\n");
|
|
1402
1326
|
playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
|
|
1403
1327
|
setStartReadingFromMessageId(null);
|
|
@@ -1542,7 +1466,13 @@ var Input = ({
|
|
|
1542
1466
|
// src/components/chat/messages/UserMessage.tsx
|
|
1543
1467
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1544
1468
|
var UserMessage = (props) => {
|
|
1545
|
-
|
|
1469
|
+
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1470
|
+
const isImageMessage = message && "image" in message && message.image;
|
|
1471
|
+
if (isImageMessage) {
|
|
1472
|
+
const imageMessage = message;
|
|
1473
|
+
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 }) });
|
|
1474
|
+
}
|
|
1475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message == null ? void 0 : message.content });
|
|
1546
1476
|
};
|
|
1547
1477
|
|
|
1548
1478
|
// src/components/chat/Markdown.tsx
|
|
@@ -1976,8 +1906,19 @@ var defaultComponents = {
|
|
|
1976
1906
|
children[0] = (children == null ? void 0 : children[0]).replace("`\u258D`", "\u258D");
|
|
1977
1907
|
}
|
|
1978
1908
|
const match = /language-(\w+)/.exec(className || "");
|
|
1979
|
-
|
|
1980
|
-
|
|
1909
|
+
const hasLanguage = match && match[1];
|
|
1910
|
+
const content = String(children);
|
|
1911
|
+
const hasNewlines = content.includes("\n");
|
|
1912
|
+
const isInline = !hasLanguage && !hasNewlines;
|
|
1913
|
+
if (isInline) {
|
|
1914
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1915
|
+
"code",
|
|
1916
|
+
__spreadProps(__spreadValues({
|
|
1917
|
+
className: `copilotKitMarkdownElement copilotKitInlineCode ${className || ""}`
|
|
1918
|
+
}, props), {
|
|
1919
|
+
children
|
|
1920
|
+
})
|
|
1921
|
+
);
|
|
1981
1922
|
}
|
|
1982
1923
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1983
1924
|
CodeBlock,
|
|
@@ -2053,55 +1994,51 @@ var Markdown = ({ content, components }) => {
|
|
|
2053
1994
|
var import_react12 = require("react");
|
|
2054
1995
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
2055
1996
|
var AssistantMessage = (props) => {
|
|
1997
|
+
var _a;
|
|
2056
1998
|
const { icons, labels } = useChatContext();
|
|
2057
1999
|
const {
|
|
2058
2000
|
message,
|
|
2059
2001
|
isLoading,
|
|
2060
|
-
subComponent,
|
|
2061
2002
|
onRegenerate,
|
|
2062
2003
|
onCopy,
|
|
2063
2004
|
onThumbsUp,
|
|
2064
2005
|
onThumbsDown,
|
|
2065
2006
|
isCurrentMessage,
|
|
2066
|
-
rawData,
|
|
2067
2007
|
markdownTagRenderers
|
|
2068
2008
|
} = props;
|
|
2069
2009
|
const [copied, setCopied] = (0, import_react12.useState)(false);
|
|
2070
2010
|
const handleCopy = () => {
|
|
2071
|
-
|
|
2072
|
-
|
|
2011
|
+
const content2 = (message == null ? void 0 : message.content) || "";
|
|
2012
|
+
if (content2 && onCopy) {
|
|
2013
|
+
navigator.clipboard.writeText(content2);
|
|
2073
2014
|
setCopied(true);
|
|
2074
|
-
onCopy(
|
|
2015
|
+
onCopy(content2);
|
|
2075
2016
|
setTimeout(() => setCopied(false), 2e3);
|
|
2076
|
-
} else if (
|
|
2077
|
-
navigator.clipboard.writeText(
|
|
2017
|
+
} else if (content2) {
|
|
2018
|
+
navigator.clipboard.writeText(content2);
|
|
2078
2019
|
setCopied(true);
|
|
2079
2020
|
setTimeout(() => setCopied(false), 2e3);
|
|
2080
2021
|
}
|
|
2081
2022
|
};
|
|
2082
2023
|
const handleRegenerate = () => {
|
|
2083
|
-
if (onRegenerate)
|
|
2024
|
+
if (onRegenerate)
|
|
2084
2025
|
onRegenerate();
|
|
2085
|
-
}
|
|
2086
2026
|
};
|
|
2087
2027
|
const handleThumbsUp = () => {
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
onThumbsUp(fullMessage);
|
|
2091
|
-
}
|
|
2028
|
+
if (onThumbsUp && message)
|
|
2029
|
+
onThumbsUp(message);
|
|
2092
2030
|
};
|
|
2093
2031
|
const handleThumbsDown = () => {
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
onThumbsDown(fullMessage);
|
|
2097
|
-
}
|
|
2032
|
+
if (onThumbsDown && message)
|
|
2033
|
+
onThumbsDown(message);
|
|
2098
2034
|
};
|
|
2099
2035
|
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
2036
|
+
const content = (message == null ? void 0 : message.content) || "";
|
|
2037
|
+
const subComponent = (_a = message == null ? void 0 : message.generativeUI) == null ? void 0 : _a.call(message);
|
|
2100
2038
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.
|
|
2104
|
-
message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
2039
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2040
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Markdown, { content, components: markdownTagRenderers }),
|
|
2041
|
+
content && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
2105
2042
|
"div",
|
|
2106
2043
|
{
|
|
2107
2044
|
className: `copilotKitMessageControls ${isCurrentMessage ? "currentMessage" : ""}`,
|
|
@@ -2150,19 +2087,52 @@ var AssistantMessage = (props) => {
|
|
|
2150
2087
|
}
|
|
2151
2088
|
)
|
|
2152
2089
|
] }),
|
|
2153
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
|
|
2090
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent }),
|
|
2091
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {})
|
|
2154
2092
|
] });
|
|
2155
2093
|
};
|
|
2156
2094
|
|
|
2157
|
-
// src/components/chat/messages/
|
|
2095
|
+
// src/components/chat/messages/ImageRenderer.tsx
|
|
2096
|
+
var import_react13 = require("react");
|
|
2158
2097
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2159
|
-
|
|
2098
|
+
var ImageRenderer = ({ image, content, className = "" }) => {
|
|
2099
|
+
const [imageError, setImageError] = (0, import_react13.useState)(false);
|
|
2100
|
+
const imageSrc = `data:image/${image.format};base64,${image.bytes}`;
|
|
2101
|
+
const altText = content || "User uploaded image";
|
|
2102
|
+
const handleImageError = () => {
|
|
2103
|
+
setImageError(true);
|
|
2104
|
+
};
|
|
2105
|
+
if (imageError) {
|
|
2106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: `copilotKitImageRendering copilotKitImageRenderingError ${className}`, children: [
|
|
2107
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitImageRenderingErrorMessage", children: "Failed to load image" }),
|
|
2108
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitImageRenderingContent", children: content })
|
|
2109
|
+
] });
|
|
2110
|
+
}
|
|
2111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: `copilotKitImageRendering ${className}`, children: [
|
|
2112
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2113
|
+
"img",
|
|
2114
|
+
{
|
|
2115
|
+
src: imageSrc,
|
|
2116
|
+
alt: altText,
|
|
2117
|
+
className: "copilotKitImageRenderingImage",
|
|
2118
|
+
onError: handleImageError
|
|
2119
|
+
}
|
|
2120
|
+
),
|
|
2121
|
+
content && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitImageRenderingContent", children: content })
|
|
2122
|
+
] });
|
|
2123
|
+
};
|
|
2124
|
+
|
|
2125
|
+
// src/components/chat/messages/RenderMessage.tsx
|
|
2126
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2127
|
+
function RenderMessage(_a) {
|
|
2160
2128
|
var _b = _a, {
|
|
2161
2129
|
UserMessage: UserMessage2 = UserMessage,
|
|
2162
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2130
|
+
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2131
|
+
ImageRenderer: ImageRenderer2 = ImageRenderer
|
|
2163
2132
|
} = _b, props = __objRest(_b, [
|
|
2164
2133
|
"UserMessage",
|
|
2165
|
-
"AssistantMessage"
|
|
2134
|
+
"AssistantMessage",
|
|
2135
|
+
"ImageRenderer"
|
|
2166
2136
|
]);
|
|
2167
2137
|
const {
|
|
2168
2138
|
message,
|
|
@@ -2175,24 +2145,23 @@ function RenderTextMessage(_a) {
|
|
|
2175
2145
|
onThumbsDown,
|
|
2176
2146
|
markdownTagRenderers
|
|
2177
2147
|
} = props;
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
return /* @__PURE__ */ (0,
|
|
2148
|
+
switch (message.role) {
|
|
2149
|
+
case "user":
|
|
2150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2181
2151
|
UserMessage2,
|
|
2182
2152
|
{
|
|
2183
2153
|
"data-message-role": "user",
|
|
2184
|
-
message
|
|
2185
|
-
|
|
2154
|
+
message,
|
|
2155
|
+
ImageRenderer: ImageRenderer2
|
|
2186
2156
|
},
|
|
2187
2157
|
index
|
|
2188
2158
|
);
|
|
2189
|
-
|
|
2190
|
-
return /* @__PURE__ */ (0,
|
|
2159
|
+
case "assistant":
|
|
2160
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2191
2161
|
AssistantMessage2,
|
|
2192
2162
|
{
|
|
2193
2163
|
"data-message-role": "assistant",
|
|
2194
|
-
message
|
|
2195
|
-
rawData: message,
|
|
2164
|
+
message,
|
|
2196
2165
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
2197
2166
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
2198
2167
|
isCurrentMessage,
|
|
@@ -2200,421 +2169,22 @@ function RenderTextMessage(_a) {
|
|
|
2200
2169
|
onCopy,
|
|
2201
2170
|
onThumbsUp,
|
|
2202
2171
|
onThumbsDown,
|
|
2203
|
-
markdownTagRenderers
|
|
2172
|
+
markdownTagRenderers,
|
|
2173
|
+
ImageRenderer: ImageRenderer2
|
|
2204
2174
|
},
|
|
2205
2175
|
index
|
|
2206
2176
|
);
|
|
2207
|
-
}
|
|
2208
2177
|
}
|
|
2209
2178
|
}
|
|
2210
2179
|
|
|
2211
|
-
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
2212
|
-
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
2213
|
-
var import_react_core7 = require("@copilotkit/react-core");
|
|
2214
|
-
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2215
|
-
function RenderActionExecutionMessage(_a) {
|
|
2216
|
-
var _b = _a, {
|
|
2217
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2218
|
-
} = _b, props = __objRest(_b, [
|
|
2219
|
-
"AssistantMessage"
|
|
2220
|
-
]);
|
|
2221
|
-
const { chatComponentsCache } = (0, import_react_core7.useCopilotContext)();
|
|
2222
|
-
const { message, inProgress, index, isCurrentMessage, actionResult } = props;
|
|
2223
|
-
if (message.isActionExecutionMessage()) {
|
|
2224
|
-
if (chatComponentsCache.current !== null && (chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"])) {
|
|
2225
|
-
const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
|
|
2226
|
-
if (typeof render === "string") {
|
|
2227
|
-
if (isCurrentMessage && inProgress) {
|
|
2228
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2229
|
-
AssistantMessage2,
|
|
2230
|
-
{
|
|
2231
|
-
rawData: message,
|
|
2232
|
-
"data-message-role": "assistant",
|
|
2233
|
-
isLoading: false,
|
|
2234
|
-
isGenerating: true,
|
|
2235
|
-
message: render
|
|
2236
|
-
},
|
|
2237
|
-
index
|
|
2238
|
-
);
|
|
2239
|
-
} else {
|
|
2240
|
-
return null;
|
|
2241
|
-
}
|
|
2242
|
-
} else {
|
|
2243
|
-
const args = message.arguments;
|
|
2244
|
-
let status = "inProgress";
|
|
2245
|
-
if (actionResult !== void 0) {
|
|
2246
|
-
status = "complete";
|
|
2247
|
-
} else if (message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending) {
|
|
2248
|
-
status = "executing";
|
|
2249
|
-
}
|
|
2250
|
-
try {
|
|
2251
|
-
const toRender = render({
|
|
2252
|
-
status,
|
|
2253
|
-
// Cast to any as RenderFunctionStatus is a union that can be complex to narrow here
|
|
2254
|
-
args,
|
|
2255
|
-
result: actionResult,
|
|
2256
|
-
name: message.name,
|
|
2257
|
-
messageId: message.id
|
|
2258
|
-
// Pass messageId for HITL action correlation
|
|
2259
|
-
});
|
|
2260
|
-
if (!toRender && status === "complete") {
|
|
2261
|
-
return null;
|
|
2262
|
-
}
|
|
2263
|
-
if (typeof toRender === "string") {
|
|
2264
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2265
|
-
AssistantMessage2,
|
|
2266
|
-
{
|
|
2267
|
-
rawData: message,
|
|
2268
|
-
"data-message-role": "assistant",
|
|
2269
|
-
isLoading: false,
|
|
2270
|
-
isGenerating: false,
|
|
2271
|
-
message: toRender
|
|
2272
|
-
},
|
|
2273
|
-
index
|
|
2274
|
-
);
|
|
2275
|
-
} else {
|
|
2276
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2277
|
-
AssistantMessage2,
|
|
2278
|
-
{
|
|
2279
|
-
rawData: message,
|
|
2280
|
-
"data-message-role": "action-render",
|
|
2281
|
-
isLoading: false,
|
|
2282
|
-
isGenerating: false,
|
|
2283
|
-
subComponent: toRender
|
|
2284
|
-
},
|
|
2285
|
-
index
|
|
2286
|
-
);
|
|
2287
|
-
}
|
|
2288
|
-
} catch (e) {
|
|
2289
|
-
console.error(`Error executing render function for action ${message.name}: ${e}`);
|
|
2290
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2291
|
-
AssistantMessage2,
|
|
2292
|
-
{
|
|
2293
|
-
rawData: message,
|
|
2294
|
-
"data-message-role": "assistant",
|
|
2295
|
-
isLoading: false,
|
|
2296
|
-
isGenerating: false,
|
|
2297
|
-
subComponent: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2298
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("b", { children: [
|
|
2299
|
-
"\u274C Error executing render function for action ",
|
|
2300
|
-
message.name,
|
|
2301
|
-
":"
|
|
2302
|
-
] }),
|
|
2303
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
|
|
2304
|
-
] })
|
|
2305
|
-
},
|
|
2306
|
-
index
|
|
2307
|
-
);
|
|
2308
|
-
}
|
|
2309
|
-
}
|
|
2310
|
-
} else if (!inProgress || !isCurrentMessage) {
|
|
2311
|
-
return null;
|
|
2312
|
-
} else {
|
|
2313
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2314
|
-
AssistantMessage2,
|
|
2315
|
-
{
|
|
2316
|
-
rawData: message,
|
|
2317
|
-
"data-message-role": "assistant",
|
|
2318
|
-
isLoading: true,
|
|
2319
|
-
isGenerating: true
|
|
2320
|
-
},
|
|
2321
|
-
index
|
|
2322
|
-
);
|
|
2323
|
-
}
|
|
2324
|
-
}
|
|
2325
|
-
}
|
|
2326
|
-
|
|
2327
|
-
// src/components/chat/messages/RenderResultMessage.tsx
|
|
2328
|
-
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2329
|
-
function RenderResultMessage(_a) {
|
|
2330
|
-
var _b = _a, {
|
|
2331
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2332
|
-
} = _b, props = __objRest(_b, [
|
|
2333
|
-
"AssistantMessage"
|
|
2334
|
-
]);
|
|
2335
|
-
const { message, inProgress, index, isCurrentMessage } = props;
|
|
2336
|
-
if (message.isResultMessage() && inProgress && isCurrentMessage) {
|
|
2337
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2338
|
-
AssistantMessage2,
|
|
2339
|
-
{
|
|
2340
|
-
"data-message-role": "assistant",
|
|
2341
|
-
rawData: message,
|
|
2342
|
-
isLoading: true,
|
|
2343
|
-
isGenerating: true
|
|
2344
|
-
},
|
|
2345
|
-
index
|
|
2346
|
-
);
|
|
2347
|
-
} else {
|
|
2348
|
-
return null;
|
|
2349
|
-
}
|
|
2350
|
-
}
|
|
2351
|
-
|
|
2352
|
-
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
2353
|
-
var import_react_core8 = require("@copilotkit/react-core");
|
|
2354
|
-
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2355
|
-
function RenderAgentStateMessage(_a) {
|
|
2356
|
-
var _b = _a, {
|
|
2357
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2358
|
-
} = _b, props = __objRest(_b, [
|
|
2359
|
-
"AssistantMessage"
|
|
2360
|
-
]);
|
|
2361
|
-
const { chatComponentsCache } = (0, import_react_core8.useCopilotContext)();
|
|
2362
|
-
const { message, inProgress, index, isCurrentMessage } = props;
|
|
2363
|
-
if (message.isAgentStateMessage()) {
|
|
2364
|
-
let render;
|
|
2365
|
-
if (chatComponentsCache.current !== null) {
|
|
2366
|
-
render = chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-${message.nodeName}`] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];
|
|
2367
|
-
}
|
|
2368
|
-
if (render) {
|
|
2369
|
-
if (typeof render === "string") {
|
|
2370
|
-
if (isCurrentMessage && inProgress) {
|
|
2371
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2372
|
-
AssistantMessage2,
|
|
2373
|
-
{
|
|
2374
|
-
rawData: message,
|
|
2375
|
-
message: render,
|
|
2376
|
-
"data-message-role": "assistant",
|
|
2377
|
-
isLoading: true,
|
|
2378
|
-
isGenerating: true
|
|
2379
|
-
},
|
|
2380
|
-
index
|
|
2381
|
-
);
|
|
2382
|
-
} else {
|
|
2383
|
-
return null;
|
|
2384
|
-
}
|
|
2385
|
-
} else {
|
|
2386
|
-
const state = message.state;
|
|
2387
|
-
let status = message.active ? "inProgress" : "complete";
|
|
2388
|
-
const toRender = render({
|
|
2389
|
-
status,
|
|
2390
|
-
state,
|
|
2391
|
-
nodeName: message.nodeName
|
|
2392
|
-
});
|
|
2393
|
-
if (!toRender && status === "complete") {
|
|
2394
|
-
return null;
|
|
2395
|
-
}
|
|
2396
|
-
if (!toRender && isCurrentMessage && inProgress) {
|
|
2397
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2398
|
-
AssistantMessage2,
|
|
2399
|
-
{
|
|
2400
|
-
"data-message-role": "assistant",
|
|
2401
|
-
rawData: message,
|
|
2402
|
-
isLoading: true,
|
|
2403
|
-
isGenerating: true
|
|
2404
|
-
},
|
|
2405
|
-
index
|
|
2406
|
-
);
|
|
2407
|
-
} else if (!toRender) {
|
|
2408
|
-
return null;
|
|
2409
|
-
}
|
|
2410
|
-
if (typeof toRender === "string") {
|
|
2411
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2412
|
-
AssistantMessage2,
|
|
2413
|
-
{
|
|
2414
|
-
rawData: message,
|
|
2415
|
-
message: toRender,
|
|
2416
|
-
isLoading: true,
|
|
2417
|
-
isGenerating: true,
|
|
2418
|
-
"data-message-role": "assistant"
|
|
2419
|
-
},
|
|
2420
|
-
index
|
|
2421
|
-
);
|
|
2422
|
-
} else {
|
|
2423
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2424
|
-
AssistantMessage2,
|
|
2425
|
-
{
|
|
2426
|
-
rawData: message,
|
|
2427
|
-
"data-message-role": "agent-state-render",
|
|
2428
|
-
isLoading: false,
|
|
2429
|
-
isGenerating: false,
|
|
2430
|
-
subComponent: toRender
|
|
2431
|
-
},
|
|
2432
|
-
index
|
|
2433
|
-
);
|
|
2434
|
-
}
|
|
2435
|
-
}
|
|
2436
|
-
} else if (!inProgress || !isCurrentMessage) {
|
|
2437
|
-
return null;
|
|
2438
|
-
} else {
|
|
2439
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2440
|
-
AssistantMessage2,
|
|
2441
|
-
{
|
|
2442
|
-
rawData: message,
|
|
2443
|
-
isLoading: true,
|
|
2444
|
-
isGenerating: true,
|
|
2445
|
-
"data-message-role": "assistant"
|
|
2446
|
-
},
|
|
2447
|
-
index
|
|
2448
|
-
);
|
|
2449
|
-
}
|
|
2450
|
-
}
|
|
2451
|
-
}
|
|
2452
|
-
|
|
2453
|
-
// src/components/chat/messages/RenderImageMessage.tsx
|
|
2454
|
-
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2455
|
-
function RenderImageMessage(_a) {
|
|
2456
|
-
var _b = _a, {
|
|
2457
|
-
UserMessage: UserMessage2 = UserMessage,
|
|
2458
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
2459
|
-
} = _b, props = __objRest(_b, [
|
|
2460
|
-
"UserMessage",
|
|
2461
|
-
"AssistantMessage"
|
|
2462
|
-
]);
|
|
2463
|
-
const {
|
|
2464
|
-
message,
|
|
2465
|
-
inProgress,
|
|
2466
|
-
index,
|
|
2467
|
-
isCurrentMessage,
|
|
2468
|
-
onRegenerate,
|
|
2469
|
-
onCopy,
|
|
2470
|
-
onThumbsUp,
|
|
2471
|
-
onThumbsDown
|
|
2472
|
-
} = props;
|
|
2473
|
-
if (message.isImageMessage()) {
|
|
2474
|
-
const imageData = `data:${message.format};base64,${message.bytes}`;
|
|
2475
|
-
const imageComponent = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "copilotKitImage", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2476
|
-
"img",
|
|
2477
|
-
{
|
|
2478
|
-
src: imageData,
|
|
2479
|
-
alt: "User uploaded image",
|
|
2480
|
-
style: { maxWidth: "100%", maxHeight: "300px", borderRadius: "8px" }
|
|
2481
|
-
}
|
|
2482
|
-
) });
|
|
2483
|
-
if (message.role === "user") {
|
|
2484
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2485
|
-
UserMessage2,
|
|
2486
|
-
{
|
|
2487
|
-
"data-message-role": "user",
|
|
2488
|
-
message: "",
|
|
2489
|
-
rawData: message,
|
|
2490
|
-
subComponent: imageComponent
|
|
2491
|
-
},
|
|
2492
|
-
index
|
|
2493
|
-
);
|
|
2494
|
-
} else if (message.role === "assistant") {
|
|
2495
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2496
|
-
AssistantMessage2,
|
|
2497
|
-
{
|
|
2498
|
-
"data-message-role": "assistant",
|
|
2499
|
-
message: "",
|
|
2500
|
-
rawData: message,
|
|
2501
|
-
subComponent: imageComponent,
|
|
2502
|
-
isLoading: inProgress && isCurrentMessage && !message.bytes,
|
|
2503
|
-
isGenerating: inProgress && isCurrentMessage && !!message.bytes,
|
|
2504
|
-
isCurrentMessage,
|
|
2505
|
-
onRegenerate: () => onRegenerate == null ? void 0 : onRegenerate(message.id),
|
|
2506
|
-
onCopy,
|
|
2507
|
-
onThumbsUp,
|
|
2508
|
-
onThumbsDown
|
|
2509
|
-
},
|
|
2510
|
-
index
|
|
2511
|
-
);
|
|
2512
|
-
}
|
|
2513
|
-
}
|
|
2514
|
-
return null;
|
|
2515
|
-
}
|
|
2516
|
-
|
|
2517
2180
|
// src/components/chat/Chat.tsx
|
|
2518
|
-
var
|
|
2519
|
-
var
|
|
2520
|
-
|
|
2521
|
-
// src/components/chat/Suggestion.tsx
|
|
2522
|
-
var import_react_core9 = require("@copilotkit/react-core");
|
|
2181
|
+
var import_react14 = __toESM(require("react"));
|
|
2182
|
+
var import_react_core8 = require("@copilotkit/react-core");
|
|
2523
2183
|
var import_shared3 = require("@copilotkit/shared");
|
|
2524
|
-
var
|
|
2525
|
-
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2526
|
-
function Suggestion({ title, onClick, partial, className }) {
|
|
2527
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2528
|
-
"button",
|
|
2529
|
-
{
|
|
2530
|
-
disabled: partial,
|
|
2531
|
-
onClick: (e) => {
|
|
2532
|
-
e.preventDefault();
|
|
2533
|
-
onClick();
|
|
2534
|
-
},
|
|
2535
|
-
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2536
|
-
"data-test-id": "suggestion",
|
|
2537
|
-
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: title })
|
|
2538
|
-
}
|
|
2539
|
-
);
|
|
2540
|
-
}
|
|
2541
|
-
var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggestions, abortControllerRef) => __async(void 0, null, function* () {
|
|
2542
|
-
const abortController = abortControllerRef.current;
|
|
2543
|
-
const tools = JSON.stringify(
|
|
2544
|
-
Object.values(context.actions).map((action) => ({
|
|
2545
|
-
name: action.name,
|
|
2546
|
-
description: action.description,
|
|
2547
|
-
jsonSchema: JSON.stringify((0, import_shared3.actionParametersToJsonSchema)(action.parameters))
|
|
2548
|
-
}))
|
|
2549
|
-
);
|
|
2550
|
-
const allSuggestions = [];
|
|
2551
|
-
for (const config of Object.values(chatSuggestionConfiguration)) {
|
|
2552
|
-
try {
|
|
2553
|
-
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.`;
|
|
2554
|
-
const result = yield (0, import_react_core9.extract)({
|
|
2555
|
-
context,
|
|
2556
|
-
instructions: "Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. ",
|
|
2557
|
-
data: config.instructions + "\n\n" + numOfSuggestionsInstructions + "\n\nAvailable tools: " + tools + "\n\n",
|
|
2558
|
-
requestType: import_runtime_client_gql3.CopilotRequestType.Task,
|
|
2559
|
-
parameters: [
|
|
2560
|
-
{
|
|
2561
|
-
name: "suggestions",
|
|
2562
|
-
type: "object[]",
|
|
2563
|
-
attributes: [
|
|
2564
|
-
{
|
|
2565
|
-
name: "title",
|
|
2566
|
-
description: "The title of the suggestion. This is shown as a button and should be short.",
|
|
2567
|
-
type: "string"
|
|
2568
|
-
},
|
|
2569
|
-
{
|
|
2570
|
-
name: "message",
|
|
2571
|
-
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.",
|
|
2572
|
-
type: "string"
|
|
2573
|
-
}
|
|
2574
|
-
]
|
|
2575
|
-
}
|
|
2576
|
-
],
|
|
2577
|
-
include: {
|
|
2578
|
-
messages: true,
|
|
2579
|
-
readable: true
|
|
2580
|
-
},
|
|
2581
|
-
abortSignal: abortController == null ? void 0 : abortController.signal,
|
|
2582
|
-
stream: ({ status, args }) => {
|
|
2583
|
-
const suggestions = args.suggestions || [];
|
|
2584
|
-
const newSuggestions = [];
|
|
2585
|
-
for (let i = 0; i < suggestions.length; i++) {
|
|
2586
|
-
if (config.maxSuggestions !== void 0 && i >= config.maxSuggestions) {
|
|
2587
|
-
break;
|
|
2588
|
-
}
|
|
2589
|
-
const { title, message } = suggestions[i];
|
|
2590
|
-
const partial = i == suggestions.length - 1 && status !== "complete";
|
|
2591
|
-
newSuggestions.push({
|
|
2592
|
-
title,
|
|
2593
|
-
message,
|
|
2594
|
-
partial,
|
|
2595
|
-
className: config.className
|
|
2596
|
-
});
|
|
2597
|
-
}
|
|
2598
|
-
setCurrentSuggestions([...allSuggestions, ...newSuggestions]);
|
|
2599
|
-
}
|
|
2600
|
-
});
|
|
2601
|
-
allSuggestions.push(...result.suggestions);
|
|
2602
|
-
} catch (error) {
|
|
2603
|
-
console.error("Error loading suggestions", error);
|
|
2604
|
-
}
|
|
2605
|
-
}
|
|
2606
|
-
if (abortControllerRef.current === abortController) {
|
|
2607
|
-
abortControllerRef.current = null;
|
|
2608
|
-
}
|
|
2609
|
-
});
|
|
2610
|
-
|
|
2611
|
-
// src/components/chat/Chat.tsx
|
|
2612
|
-
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
2613
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2614
|
-
var import_react_core11 = require("@copilotkit/react-core");
|
|
2184
|
+
var import_react_core9 = require("@copilotkit/react-core");
|
|
2615
2185
|
|
|
2616
2186
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2617
|
-
var
|
|
2187
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2618
2188
|
var ImageUploadQueue = ({
|
|
2619
2189
|
images,
|
|
2620
2190
|
onRemoveImage,
|
|
@@ -2622,7 +2192,7 @@ var ImageUploadQueue = ({
|
|
|
2622
2192
|
}) => {
|
|
2623
2193
|
if (images.length === 0)
|
|
2624
2194
|
return null;
|
|
2625
|
-
return /* @__PURE__ */ (0,
|
|
2195
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2626
2196
|
"div",
|
|
2627
2197
|
{
|
|
2628
2198
|
className: `copilotKitImageUploadQueue ${className}`,
|
|
@@ -2633,7 +2203,7 @@ var ImageUploadQueue = ({
|
|
|
2633
2203
|
margin: "8px",
|
|
2634
2204
|
padding: "8px"
|
|
2635
2205
|
},
|
|
2636
|
-
children: images.map((image, index) => /* @__PURE__ */ (0,
|
|
2206
|
+
children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2637
2207
|
"div",
|
|
2638
2208
|
{
|
|
2639
2209
|
className: "copilotKitImageUploadQueueItem",
|
|
@@ -2646,7 +2216,7 @@ var ImageUploadQueue = ({
|
|
|
2646
2216
|
overflow: "hidden"
|
|
2647
2217
|
},
|
|
2648
2218
|
children: [
|
|
2649
|
-
/* @__PURE__ */ (0,
|
|
2219
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2650
2220
|
"img",
|
|
2651
2221
|
{
|
|
2652
2222
|
src: `data:${image.contentType};base64,${image.bytes}`,
|
|
@@ -2658,7 +2228,7 @@ var ImageUploadQueue = ({
|
|
|
2658
2228
|
}
|
|
2659
2229
|
}
|
|
2660
2230
|
),
|
|
2661
|
-
/* @__PURE__ */ (0,
|
|
2231
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2662
2232
|
"button",
|
|
2663
2233
|
{
|
|
2664
2234
|
onClick: () => onRemoveImage(index),
|
|
@@ -2691,10 +2261,32 @@ var ImageUploadQueue = ({
|
|
|
2691
2261
|
);
|
|
2692
2262
|
};
|
|
2693
2263
|
|
|
2264
|
+
// src/components/chat/Suggestion.tsx
|
|
2265
|
+
var import_react_core7 = require("@copilotkit/react-core");
|
|
2266
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2267
|
+
function Suggestion({ title, onClick, partial, className }) {
|
|
2268
|
+
if (!title)
|
|
2269
|
+
return null;
|
|
2270
|
+
const { isLoading } = (0, import_react_core7.useCopilotChat)();
|
|
2271
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2272
|
+
"button",
|
|
2273
|
+
{
|
|
2274
|
+
disabled: partial || isLoading,
|
|
2275
|
+
onClick: (e) => {
|
|
2276
|
+
e.preventDefault();
|
|
2277
|
+
onClick();
|
|
2278
|
+
},
|
|
2279
|
+
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2280
|
+
"data-test-id": "suggestion",
|
|
2281
|
+
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: title })
|
|
2282
|
+
}
|
|
2283
|
+
);
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2694
2286
|
// src/components/chat/Suggestions.tsx
|
|
2695
|
-
var
|
|
2287
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2696
2288
|
function Suggestions({ suggestions, onSuggestionClick }) {
|
|
2697
|
-
return /* @__PURE__ */ (0,
|
|
2289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2698
2290
|
Suggestion,
|
|
2699
2291
|
{
|
|
2700
2292
|
title: suggestion.title,
|
|
@@ -2708,9 +2300,10 @@ function Suggestions({ suggestions, onSuggestionClick }) {
|
|
|
2708
2300
|
}
|
|
2709
2301
|
|
|
2710
2302
|
// src/components/chat/Chat.tsx
|
|
2711
|
-
var
|
|
2303
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2712
2304
|
function CopilotChat({
|
|
2713
2305
|
instructions,
|
|
2306
|
+
suggestions = "auto",
|
|
2714
2307
|
onSubmitMessage,
|
|
2715
2308
|
makeSystemMessage,
|
|
2716
2309
|
onInProgress,
|
|
@@ -2722,11 +2315,7 @@ function CopilotChat({
|
|
|
2722
2315
|
onThumbsDown,
|
|
2723
2316
|
markdownTagRenderers,
|
|
2724
2317
|
Messages: Messages2 = Messages,
|
|
2725
|
-
|
|
2726
|
-
RenderActionExecutionMessage: RenderActionExecutionMessage2 = RenderActionExecutionMessage,
|
|
2727
|
-
RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
|
|
2728
|
-
RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
|
|
2729
|
-
RenderImageMessage: RenderImageMessage2 = RenderImageMessage,
|
|
2318
|
+
RenderMessage: RenderMessage2 = RenderMessage,
|
|
2730
2319
|
RenderSuggestionsList = Suggestions,
|
|
2731
2320
|
Input: Input2 = Input,
|
|
2732
2321
|
className,
|
|
@@ -2734,14 +2323,15 @@ function CopilotChat({
|
|
|
2734
2323
|
labels,
|
|
2735
2324
|
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2736
2325
|
UserMessage: UserMessage2 = UserMessage,
|
|
2326
|
+
ImageRenderer: ImageRenderer2 = ImageRenderer,
|
|
2737
2327
|
imageUploadsEnabled,
|
|
2738
2328
|
inputFileAccept = "image/*",
|
|
2739
2329
|
hideStopButton
|
|
2740
2330
|
}) {
|
|
2741
|
-
const { additionalInstructions, setChatInstructions } = (0,
|
|
2742
|
-
const [selectedImages, setSelectedImages] = (0,
|
|
2743
|
-
const fileInputRef = (0,
|
|
2744
|
-
(0,
|
|
2331
|
+
const { additionalInstructions, setChatInstructions } = (0, import_react_core8.useCopilotContext)();
|
|
2332
|
+
const [selectedImages, setSelectedImages] = (0, import_react14.useState)([]);
|
|
2333
|
+
const fileInputRef = (0, import_react14.useRef)(null);
|
|
2334
|
+
(0, import_react14.useEffect)(() => {
|
|
2745
2335
|
if (!imageUploadsEnabled)
|
|
2746
2336
|
return;
|
|
2747
2337
|
const handlePaste = (e) => __async(this, null, function* () {
|
|
@@ -2786,7 +2376,7 @@ function CopilotChat({
|
|
|
2786
2376
|
document.addEventListener("paste", handlePaste);
|
|
2787
2377
|
return () => document.removeEventListener("paste", handlePaste);
|
|
2788
2378
|
}, [imageUploadsEnabled]);
|
|
2789
|
-
(0,
|
|
2379
|
+
(0, import_react14.useEffect)(() => {
|
|
2790
2380
|
if (!(additionalInstructions == null ? void 0 : additionalInstructions.length)) {
|
|
2791
2381
|
setChatInstructions(instructions || "");
|
|
2792
2382
|
return;
|
|
@@ -2796,17 +2386,17 @@ function CopilotChat({
|
|
|
2796
2386
|
"Additionally, follow these instructions:",
|
|
2797
2387
|
...additionalInstructions.map((instruction) => `- ${instruction}`)
|
|
2798
2388
|
];
|
|
2799
|
-
console.log("combinedAdditionalInstructions", combinedAdditionalInstructions);
|
|
2800
2389
|
setChatInstructions(combinedAdditionalInstructions.join("\n") || "");
|
|
2801
2390
|
}, [instructions, additionalInstructions]);
|
|
2802
2391
|
const {
|
|
2803
2392
|
visibleMessages,
|
|
2804
2393
|
isLoading,
|
|
2805
|
-
currentSuggestions,
|
|
2806
2394
|
sendMessage,
|
|
2807
2395
|
stopGeneration,
|
|
2808
|
-
reloadMessages
|
|
2396
|
+
reloadMessages,
|
|
2397
|
+
suggestions: currentSuggestions
|
|
2809
2398
|
} = useCopilotChatLogic(
|
|
2399
|
+
suggestions,
|
|
2810
2400
|
makeSystemMessage,
|
|
2811
2401
|
onInProgress,
|
|
2812
2402
|
onSubmitMessage,
|
|
@@ -2821,7 +2411,7 @@ function CopilotChat({
|
|
|
2821
2411
|
}
|
|
2822
2412
|
return sendMessage(text, images);
|
|
2823
2413
|
};
|
|
2824
|
-
const chatContext =
|
|
2414
|
+
const chatContext = import_react14.default.useContext(ChatContext);
|
|
2825
2415
|
const isVisible = chatContext ? chatContext.open : true;
|
|
2826
2416
|
const handleRegenerate = (messageId) => {
|
|
2827
2417
|
if (onRegenerate) {
|
|
@@ -2868,17 +2458,13 @@ function CopilotChat({
|
|
|
2868
2458
|
const removeSelectedImage = (index) => {
|
|
2869
2459
|
setSelectedImages((prev) => prev.filter((_, i) => i !== index));
|
|
2870
2460
|
};
|
|
2871
|
-
return /* @__PURE__ */ (0,
|
|
2872
|
-
/* @__PURE__ */ (0,
|
|
2461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
2462
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2873
2463
|
Messages2,
|
|
2874
2464
|
{
|
|
2875
2465
|
AssistantMessage: AssistantMessage2,
|
|
2876
2466
|
UserMessage: UserMessage2,
|
|
2877
|
-
|
|
2878
|
-
RenderActionExecutionMessage: RenderActionExecutionMessage2,
|
|
2879
|
-
RenderAgentStateMessage: RenderAgentStateMessage2,
|
|
2880
|
-
RenderResultMessage: RenderResultMessage2,
|
|
2881
|
-
RenderImageMessage: RenderImageMessage2,
|
|
2467
|
+
RenderMessage: RenderMessage2,
|
|
2882
2468
|
messages: visibleMessages,
|
|
2883
2469
|
inProgress: isLoading,
|
|
2884
2470
|
onRegenerate: handleRegenerate,
|
|
@@ -2886,7 +2472,8 @@ function CopilotChat({
|
|
|
2886
2472
|
onThumbsUp,
|
|
2887
2473
|
onThumbsDown,
|
|
2888
2474
|
markdownTagRenderers,
|
|
2889
|
-
|
|
2475
|
+
ImageRenderer: ImageRenderer2,
|
|
2476
|
+
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2890
2477
|
RenderSuggestionsList,
|
|
2891
2478
|
{
|
|
2892
2479
|
onSuggestionClick: handleSendMessage,
|
|
@@ -2895,9 +2482,9 @@ function CopilotChat({
|
|
|
2895
2482
|
)
|
|
2896
2483
|
}
|
|
2897
2484
|
),
|
|
2898
|
-
imageUploadsEnabled && /* @__PURE__ */ (0,
|
|
2899
|
-
/* @__PURE__ */ (0,
|
|
2900
|
-
/* @__PURE__ */ (0,
|
|
2485
|
+
imageUploadsEnabled && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
2486
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ImageUploadQueue, { images: selectedImages, onRemoveImage: removeSelectedImage }),
|
|
2487
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2901
2488
|
"input",
|
|
2902
2489
|
{
|
|
2903
2490
|
type: "file",
|
|
@@ -2909,7 +2496,7 @@ function CopilotChat({
|
|
|
2909
2496
|
}
|
|
2910
2497
|
)
|
|
2911
2498
|
] }),
|
|
2912
|
-
/* @__PURE__ */ (0,
|
|
2499
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2913
2500
|
Input2,
|
|
2914
2501
|
{
|
|
2915
2502
|
inProgress: isLoading,
|
|
@@ -2931,75 +2518,118 @@ function WrappedCopilotChat({
|
|
|
2931
2518
|
labels,
|
|
2932
2519
|
className
|
|
2933
2520
|
}) {
|
|
2934
|
-
const chatContext =
|
|
2521
|
+
const chatContext = import_react14.default.useContext(ChatContext);
|
|
2935
2522
|
if (!chatContext) {
|
|
2936
|
-
return /* @__PURE__ */ (0,
|
|
2937
|
-
}, children: /* @__PURE__ */ (0,
|
|
2523
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
|
|
2524
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `copilotKitChat ${className != null ? className : ""}`, children }) });
|
|
2938
2525
|
}
|
|
2939
|
-
return /* @__PURE__ */ (0,
|
|
2526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children });
|
|
2940
2527
|
}
|
|
2941
|
-
var
|
|
2942
|
-
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2528
|
+
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2943
2529
|
var _a;
|
|
2944
2530
|
const {
|
|
2945
2531
|
visibleMessages,
|
|
2946
2532
|
appendMessage,
|
|
2533
|
+
setMessages,
|
|
2947
2534
|
reloadMessages: defaultReloadMessages,
|
|
2948
2535
|
stopGeneration: defaultStopGeneration,
|
|
2949
2536
|
runChatCompletion,
|
|
2950
|
-
isLoading
|
|
2951
|
-
|
|
2952
|
-
|
|
2537
|
+
isLoading,
|
|
2538
|
+
suggestions,
|
|
2539
|
+
setSuggestions,
|
|
2540
|
+
generateSuggestions,
|
|
2541
|
+
resetSuggestions: resetSuggestionsFromHook,
|
|
2542
|
+
isLoadingSuggestions
|
|
2543
|
+
} = (0, import_react_core8.useCopilotChat)({
|
|
2953
2544
|
makeSystemMessage
|
|
2954
2545
|
});
|
|
2955
|
-
const
|
|
2956
|
-
const
|
|
2957
|
-
const
|
|
2958
|
-
const
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
(0,
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
()
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2546
|
+
const generalContext = (0, import_react_core8.useCopilotContext)();
|
|
2547
|
+
const messagesContext = (0, import_react_core8.useCopilotMessagesContext)();
|
|
2548
|
+
const { actions } = generalContext;
|
|
2549
|
+
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react14.useState)(false);
|
|
2550
|
+
const hasGeneratedInitialSuggestions = (0, import_react14.useRef)(false);
|
|
2551
|
+
(0, import_react14.useEffect)(() => {
|
|
2552
|
+
if (Array.isArray(chatSuggestions)) {
|
|
2553
|
+
setSuggestions(chatSuggestions);
|
|
2554
|
+
hasGeneratedInitialSuggestions.current = true;
|
|
2555
|
+
}
|
|
2556
|
+
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2557
|
+
const generateSuggestionsWithErrorHandling = (0, import_react14.useCallback)(
|
|
2558
|
+
(context) => __async(void 0, null, function* () {
|
|
2559
|
+
try {
|
|
2560
|
+
yield generateSuggestions();
|
|
2561
|
+
} catch (error) {
|
|
2562
|
+
console.error("Failed to generate suggestions:", error);
|
|
2563
|
+
setSuggestionsFailed(true);
|
|
2564
|
+
}
|
|
2565
|
+
}),
|
|
2566
|
+
[generateSuggestions]
|
|
2567
|
+
);
|
|
2568
|
+
(0, import_react14.useEffect)(() => {
|
|
2569
|
+
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2570
|
+
return;
|
|
2571
|
+
}
|
|
2572
|
+
if (isLoading) {
|
|
2573
|
+
return;
|
|
2574
|
+
}
|
|
2575
|
+
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2576
|
+
return;
|
|
2577
|
+
}
|
|
2578
|
+
if (visibleMessages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2579
|
+
hasGeneratedInitialSuggestions.current = true;
|
|
2580
|
+
generateSuggestionsWithErrorHandling("initial");
|
|
2581
|
+
return;
|
|
2582
|
+
}
|
|
2583
|
+
if (visibleMessages.length > 0 && suggestions.length === 0) {
|
|
2584
|
+
generateSuggestionsWithErrorHandling("post-message");
|
|
2585
|
+
return;
|
|
2586
|
+
}
|
|
2986
2587
|
}, [
|
|
2588
|
+
chatSuggestions,
|
|
2589
|
+
isLoadingSuggestions,
|
|
2590
|
+
suggestionsFailed,
|
|
2591
|
+
visibleMessages.length,
|
|
2987
2592
|
isLoading,
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
//
|
|
2991
|
-
|
|
2593
|
+
suggestions.length,
|
|
2594
|
+
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2595
|
+
// Use stable string instead of object reference
|
|
2596
|
+
generateSuggestionsWithErrorHandling
|
|
2992
2597
|
]);
|
|
2598
|
+
(0, import_react14.useEffect)(() => {
|
|
2599
|
+
if (chatSuggestions !== "auto") {
|
|
2600
|
+
hasGeneratedInitialSuggestions.current = false;
|
|
2601
|
+
setSuggestionsFailed(false);
|
|
2602
|
+
}
|
|
2603
|
+
}, [chatSuggestions]);
|
|
2604
|
+
const stableContext = (0, import_react14.useMemo)(
|
|
2605
|
+
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2606
|
+
[
|
|
2607
|
+
// Only include stable dependencies
|
|
2608
|
+
generalContext.actions,
|
|
2609
|
+
messagesContext.messages.length,
|
|
2610
|
+
generalContext.isLoading
|
|
2611
|
+
]
|
|
2612
|
+
);
|
|
2613
|
+
const resetSuggestions = (0, import_react14.useCallback)(() => {
|
|
2614
|
+
resetSuggestionsFromHook();
|
|
2615
|
+
setSuggestionsFailed(false);
|
|
2616
|
+
hasGeneratedInitialSuggestions.current = false;
|
|
2617
|
+
}, [resetSuggestionsFromHook]);
|
|
2618
|
+
(0, import_react14.useEffect)(() => {
|
|
2619
|
+
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2620
|
+
}, [onInProgress, isLoading]);
|
|
2993
2621
|
const sendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2994
2622
|
const images = imagesToUse || [];
|
|
2995
|
-
|
|
2996
|
-
|
|
2623
|
+
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2624
|
+
setSuggestions([]);
|
|
2625
|
+
}
|
|
2997
2626
|
let firstMessage = null;
|
|
2998
2627
|
if (messageContent.trim().length > 0) {
|
|
2999
|
-
const textMessage =
|
|
3000
|
-
|
|
3001
|
-
role:
|
|
3002
|
-
|
|
2628
|
+
const textMessage = {
|
|
2629
|
+
id: (0, import_shared3.randomId)(),
|
|
2630
|
+
role: "user",
|
|
2631
|
+
content: messageContent
|
|
2632
|
+
};
|
|
3003
2633
|
if (onSubmitMessage) {
|
|
3004
2634
|
try {
|
|
3005
2635
|
yield onSubmitMessage(messageContent);
|
|
@@ -3007,18 +2637,24 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3007
2637
|
console.error("Error in onSubmitMessage:", error);
|
|
3008
2638
|
}
|
|
3009
2639
|
}
|
|
3010
|
-
yield appendMessage(textMessage, {
|
|
2640
|
+
yield appendMessage(textMessage, {
|
|
2641
|
+
followUp: images.length === 0,
|
|
2642
|
+
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2643
|
+
});
|
|
3011
2644
|
if (!firstMessage) {
|
|
3012
2645
|
firstMessage = textMessage;
|
|
3013
2646
|
}
|
|
3014
2647
|
}
|
|
3015
2648
|
if (images.length > 0) {
|
|
3016
2649
|
for (let i = 0; i < images.length; i++) {
|
|
3017
|
-
const imageMessage =
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
2650
|
+
const imageMessage = {
|
|
2651
|
+
id: (0, import_shared3.randomId)(),
|
|
2652
|
+
role: "user",
|
|
2653
|
+
image: {
|
|
2654
|
+
format: images[i].contentType.replace("image/", ""),
|
|
2655
|
+
bytes: images[i].bytes
|
|
2656
|
+
}
|
|
2657
|
+
};
|
|
3022
2658
|
yield appendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
3023
2659
|
if (!firstMessage) {
|
|
3024
2660
|
firstMessage = imageMessage;
|
|
@@ -3026,12 +2662,11 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3026
2662
|
}
|
|
3027
2663
|
}
|
|
3028
2664
|
if (!firstMessage) {
|
|
3029
|
-
return
|
|
2665
|
+
return { role: "user", content: "", id: (0, import_shared3.randomId)() };
|
|
3030
2666
|
}
|
|
3031
2667
|
return firstMessage;
|
|
3032
2668
|
});
|
|
3033
2669
|
const messages = visibleMessages;
|
|
3034
|
-
const { setMessages } = messagesContext;
|
|
3035
2670
|
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
3036
2671
|
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3037
2672
|
if (generalContext.agentSession) {
|
|
@@ -3052,9 +2687,9 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3052
2687
|
});
|
|
3053
2688
|
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3054
2689
|
if (generalContext.agentSession) {
|
|
3055
|
-
yield (0,
|
|
2690
|
+
yield (0, import_react_core9.runAgent)(
|
|
3056
2691
|
generalContext.agentSession.agentName,
|
|
3057
|
-
|
|
2692
|
+
stableContext,
|
|
3058
2693
|
appendMessage,
|
|
3059
2694
|
runChatCompletion,
|
|
3060
2695
|
hint
|
|
@@ -3063,7 +2698,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3063
2698
|
});
|
|
3064
2699
|
const stopCurrentAgent = () => {
|
|
3065
2700
|
if (generalContext.agentSession) {
|
|
3066
|
-
(0,
|
|
2701
|
+
(0, import_react_core9.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3067
2702
|
}
|
|
3068
2703
|
};
|
|
3069
2704
|
const setCurrentAgentState = (state) => {
|
|
@@ -3078,6 +2713,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3078
2713
|
}
|
|
3079
2714
|
};
|
|
3080
2715
|
function stopGeneration() {
|
|
2716
|
+
setSuggestions([]);
|
|
3081
2717
|
if (onStopGeneration) {
|
|
3082
2718
|
onStopGeneration({
|
|
3083
2719
|
messages,
|
|
@@ -3111,17 +2747,21 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
3111
2747
|
}
|
|
3112
2748
|
}
|
|
3113
2749
|
return {
|
|
2750
|
+
messages,
|
|
3114
2751
|
visibleMessages,
|
|
3115
2752
|
isLoading,
|
|
3116
|
-
|
|
2753
|
+
suggestions,
|
|
3117
2754
|
sendMessage,
|
|
3118
2755
|
stopGeneration,
|
|
3119
|
-
reloadMessages
|
|
2756
|
+
reloadMessages,
|
|
2757
|
+
resetSuggestions,
|
|
2758
|
+
context: stableContext,
|
|
2759
|
+
actions
|
|
3120
2760
|
};
|
|
3121
2761
|
};
|
|
3122
2762
|
|
|
3123
2763
|
// src/components/chat/Modal.tsx
|
|
3124
|
-
var
|
|
2764
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3125
2765
|
var CopilotModal = (_a) => {
|
|
3126
2766
|
var _b = _a, {
|
|
3127
2767
|
instructions,
|
|
@@ -3180,18 +2820,18 @@ var CopilotModal = (_a) => {
|
|
|
3180
2820
|
"className",
|
|
3181
2821
|
"children"
|
|
3182
2822
|
]);
|
|
3183
|
-
const [openState, setOpenState] =
|
|
2823
|
+
const [openState, setOpenState] = import_react15.default.useState(defaultOpen);
|
|
3184
2824
|
const setOpen = (open) => {
|
|
3185
2825
|
onSetOpen == null ? void 0 : onSetOpen(open);
|
|
3186
2826
|
setOpenState(open);
|
|
3187
2827
|
};
|
|
3188
|
-
const memoizedHeader = (0,
|
|
3189
|
-
const memoizedChildren = (0,
|
|
3190
|
-
return /* @__PURE__ */ (0,
|
|
2828
|
+
const memoizedHeader = (0, import_react15.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Header2, {}), [Header2]);
|
|
2829
|
+
const memoizedChildren = (0, import_react15.useMemo)(() => children, [children]);
|
|
2830
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
|
|
3191
2831
|
memoizedChildren,
|
|
3192
|
-
/* @__PURE__ */ (0,
|
|
3193
|
-
/* @__PURE__ */ (0,
|
|
3194
|
-
/* @__PURE__ */ (0,
|
|
2832
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className, children: [
|
|
2833
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button2, {}),
|
|
2834
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
3195
2835
|
Window2,
|
|
3196
2836
|
{
|
|
3197
2837
|
clickOutsideToClose,
|
|
@@ -3199,7 +2839,7 @@ var CopilotModal = (_a) => {
|
|
|
3199
2839
|
hitEscapeToClose,
|
|
3200
2840
|
children: [
|
|
3201
2841
|
memoizedHeader,
|
|
3202
|
-
/* @__PURE__ */ (0,
|
|
2842
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3203
2843
|
CopilotChat,
|
|
3204
2844
|
__spreadProps(__spreadValues({}, props), {
|
|
3205
2845
|
instructions,
|
|
@@ -3227,22 +2867,22 @@ var CopilotModal = (_a) => {
|
|
|
3227
2867
|
};
|
|
3228
2868
|
|
|
3229
2869
|
// src/components/chat/Popup.tsx
|
|
3230
|
-
var
|
|
2870
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3231
2871
|
function CopilotPopup(props) {
|
|
3232
2872
|
props = __spreadProps(__spreadValues({}, props), {
|
|
3233
2873
|
className: props.className ? props.className + " copilotKitPopup" : "copilotKitPopup"
|
|
3234
2874
|
});
|
|
3235
|
-
return /* @__PURE__ */ (0,
|
|
2875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CopilotModal, __spreadProps(__spreadValues({}, props), { children: props.children }));
|
|
3236
2876
|
}
|
|
3237
2877
|
|
|
3238
2878
|
// src/components/chat/Sidebar.tsx
|
|
3239
|
-
var
|
|
3240
|
-
var
|
|
2879
|
+
var import_react16 = require("react");
|
|
2880
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
3241
2881
|
function CopilotSidebar(props) {
|
|
3242
2882
|
props = __spreadProps(__spreadValues({}, props), {
|
|
3243
2883
|
className: props.className ? props.className + " copilotKitSidebar" : "copilotKitSidebar"
|
|
3244
2884
|
});
|
|
3245
|
-
const [expandedClassName, setExpandedClassName] = (0,
|
|
2885
|
+
const [expandedClassName, setExpandedClassName] = (0, import_react16.useState)(
|
|
3246
2886
|
props.defaultOpen ? "sidebarExpanded" : ""
|
|
3247
2887
|
);
|
|
3248
2888
|
const onSetOpen = (open) => {
|
|
@@ -3250,7 +2890,7 @@ function CopilotSidebar(props) {
|
|
|
3250
2890
|
(_a = props.onSetOpen) == null ? void 0 : _a.call(props, open);
|
|
3251
2891
|
setExpandedClassName(open ? "sidebarExpanded" : "");
|
|
3252
2892
|
};
|
|
3253
|
-
return /* @__PURE__ */ (0,
|
|
2893
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: `copilotKitSidebarContentWrapper ${expandedClassName}`, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(CopilotModal, __spreadProps(__spreadValues(__spreadValues({}, props), { onSetOpen }), { children: props.children })) });
|
|
3254
2894
|
}
|
|
3255
2895
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3256
2896
|
0 && (module.exports = {
|
|
@@ -3259,8 +2899,8 @@ function CopilotSidebar(props) {
|
|
|
3259
2899
|
CopilotDevConsole,
|
|
3260
2900
|
CopilotPopup,
|
|
3261
2901
|
CopilotSidebar,
|
|
2902
|
+
ImageRenderer,
|
|
3262
2903
|
Markdown,
|
|
3263
|
-
RenderImageMessage,
|
|
3264
2904
|
RenderSuggestion,
|
|
3265
2905
|
RenderSuggestionsList,
|
|
3266
2906
|
UserMessage,
|