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