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