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