@copilotkit/react-ui 1.10.7-next.0 → 1.50.0-beta.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 +0 -9
- package/dist/{chunk-VTYBYTE6.mjs → chunk-3JYVJHL5.mjs} +7 -7
- package/dist/chunk-3YWFGNSM.mjs +32 -0
- package/dist/chunk-3YWFGNSM.mjs.map +1 -0
- package/dist/{chunk-YBRHDFVQ.mjs → chunk-CQ2WALZ7.mjs} +2 -2
- package/dist/{chunk-OWX6YJZH.mjs → chunk-E6WVAOQA.mjs} +9 -5
- package/dist/chunk-E6WVAOQA.mjs.map +1 -0
- package/dist/{chunk-WBPBTTQD.mjs → chunk-FFJHOZX6.mjs} +4 -4
- package/dist/{chunk-MJEYL3FK.mjs → chunk-G35HUUDA.mjs} +26 -260
- package/dist/chunk-G35HUUDA.mjs.map +1 -0
- package/dist/{chunk-V6DDX4LH.mjs → chunk-GDSZGYCE.mjs} +2 -2
- package/dist/{chunk-ZJCHKHE4.mjs → chunk-HBZW7E5Z.mjs} +13 -10
- package/dist/chunk-HBZW7E5Z.mjs.map +1 -0
- package/dist/{chunk-KX44MLR6.mjs → chunk-IHFR6PYG.mjs} +1 -1
- package/dist/chunk-IHFR6PYG.mjs.map +1 -0
- package/dist/{chunk-2XARU6EY.mjs → chunk-MPF6BJUF.mjs} +5 -3
- package/dist/chunk-MPF6BJUF.mjs.map +1 -0
- package/dist/{chunk-W26XFBEG.mjs → chunk-NGJ32FAP.mjs} +3 -3
- package/dist/chunk-NGJ32FAP.mjs.map +1 -0
- package/dist/{chunk-RKULVDQO.mjs → chunk-ODEHR7KI.mjs} +9 -2
- package/dist/chunk-ODEHR7KI.mjs.map +1 -0
- package/dist/chunk-OYRZ4VLU.mjs +12 -0
- package/dist/chunk-OYRZ4VLU.mjs.map +1 -0
- package/dist/chunk-QB3GUN2N.mjs +31 -0
- package/dist/chunk-QB3GUN2N.mjs.map +1 -0
- package/dist/{chunk-PIFTVJG3.mjs → chunk-SOB5EIL7.mjs} +2 -2
- package/dist/components/chat/Chat.d.ts +3 -98
- package/dist/components/chat/Chat.js +79 -275
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +11 -13
- package/dist/components/chat/Header.mjs +4 -4
- package/dist/components/chat/Input.d.ts +1 -1
- package/dist/components/chat/Input.js +11 -8
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +1 -1
- package/dist/components/chat/Messages.d.ts +3 -3
- package/dist/components/chat/Messages.js +33 -4
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +5 -5
- package/dist/components/chat/Modal.d.ts +1 -6
- package/dist/components/chat/Modal.js +85 -279
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +14 -14
- package/dist/components/chat/Popup.d.ts +1 -6
- package/dist/components/chat/Popup.js +85 -279
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +15 -15
- package/dist/components/chat/Sidebar.d.ts +1 -6
- package/dist/components/chat/Sidebar.js +85 -279
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +15 -15
- package/dist/components/chat/Suggestion.js.map +1 -1
- package/dist/components/chat/Suggestion.mjs +1 -1
- package/dist/components/chat/Suggestions.d.ts +1 -1
- package/dist/components/chat/Suggestions.js +19 -12
- package/dist/components/chat/Suggestions.js.map +1 -1
- package/dist/components/chat/Suggestions.mjs +2 -2
- package/dist/components/chat/index.d.ts +0 -5
- package/dist/components/chat/index.js +85 -279
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +16 -16
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +1 -1
- package/dist/components/chat/messages/LegacyRenderMessage.js +28 -3
- package/dist/components/chat/messages/LegacyRenderMessage.js.map +1 -1
- package/dist/components/chat/messages/LegacyRenderMessage.mjs +4 -4
- package/dist/components/chat/messages/RenderMessage.js +21 -3
- package/dist/components/chat/messages/RenderMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderMessage.mjs +3 -3
- package/dist/components/chat/messages/UserMessage.js +19 -3
- 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 +4 -0
- 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 +0 -5
- package/dist/components/index.js +85 -279
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +17 -17
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +2 -24
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.d.ts +4 -26
- package/dist/hooks/use-copilot-chat-suggestions.js +2 -24
- package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.mjs +1 -1
- package/dist/index.css +0 -2
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +88 -304
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -18
- package/dist/types/suggestions.d.ts +1 -0
- package/dist/types/suggestions.js.map +1 -1
- package/package.json +8 -7
- package/src/components/chat/Chat.tsx +24 -325
- package/src/components/chat/Input.tsx +13 -12
- package/src/components/chat/Messages.tsx +8 -4
- package/src/components/chat/Suggestion.tsx +2 -2
- package/src/components/chat/Suggestions.tsx +6 -2
- package/src/components/chat/messages/AssistantMessage.tsx +1 -0
- package/src/components/chat/messages/LegacyRenderMessage.tsx +7 -0
- package/src/components/chat/messages/RenderMessage.tsx +2 -0
- package/src/components/chat/messages/UserMessage.tsx +30 -6
- package/src/components/chat/props.ts +4 -0
- package/src/css/messages.css +0 -2
- package/src/hooks/use-copilot-chat-suggestions.tsx +6 -57
- package/src/types/suggestions.ts +1 -0
- package/tsup.config.ts +1 -1
- package/dist/chunk-226ZMOE3.mjs +0 -24
- package/dist/chunk-226ZMOE3.mjs.map +0 -1
- package/dist/chunk-2XARU6EY.mjs.map +0 -1
- package/dist/chunk-EYRKZDP5.mjs +0 -32
- package/dist/chunk-EYRKZDP5.mjs.map +0 -1
- package/dist/chunk-KX44MLR6.mjs.map +0 -1
- package/dist/chunk-MJEYL3FK.mjs.map +0 -1
- package/dist/chunk-OWX6YJZH.mjs.map +0 -1
- package/dist/chunk-RKULVDQO.mjs.map +0 -1
- package/dist/chunk-VVL6JFCJ.mjs +0 -16
- package/dist/chunk-VVL6JFCJ.mjs.map +0 -1
- package/dist/chunk-W26XFBEG.mjs.map +0 -1
- package/dist/chunk-ZJCHKHE4.mjs.map +0 -1
- /package/dist/{chunk-VTYBYTE6.mjs.map → chunk-3JYVJHL5.mjs.map} +0 -0
- /package/dist/{chunk-YBRHDFVQ.mjs.map → chunk-CQ2WALZ7.mjs.map} +0 -0
- /package/dist/{chunk-WBPBTTQD.mjs.map → chunk-FFJHOZX6.mjs.map} +0 -0
- /package/dist/{chunk-V6DDX4LH.mjs.map → chunk-GDSZGYCE.mjs.map} +0 -0
- /package/dist/{chunk-PIFTVJG3.mjs.map → chunk-SOB5EIL7.mjs.map} +0 -0
|
@@ -1039,14 +1039,30 @@ var import_react_core5 = require("@copilotkit/react-core");
|
|
|
1039
1039
|
|
|
1040
1040
|
// src/components/chat/messages/UserMessage.tsx
|
|
1041
1041
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1042
|
+
var getTextContent = (content) => {
|
|
1043
|
+
if (typeof content === "undefined") {
|
|
1044
|
+
return void 0;
|
|
1045
|
+
}
|
|
1046
|
+
if (typeof content === "string") {
|
|
1047
|
+
return content;
|
|
1048
|
+
}
|
|
1049
|
+
return content.map((part) => {
|
|
1050
|
+
if (part.type === "text") {
|
|
1051
|
+
return part.text;
|
|
1052
|
+
}
|
|
1053
|
+
return void 0;
|
|
1054
|
+
}).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
|
|
1055
|
+
};
|
|
1042
1056
|
var UserMessage = (props) => {
|
|
1043
1057
|
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1044
|
-
const isImageMessage = message && "image" in message && message.image;
|
|
1058
|
+
const isImageMessage = message && "image" in message && Boolean(message.image);
|
|
1045
1059
|
if (isImageMessage) {
|
|
1046
1060
|
const imageMessage = message;
|
|
1047
|
-
|
|
1061
|
+
const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
|
|
1062
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
|
|
1048
1063
|
}
|
|
1049
|
-
|
|
1064
|
+
const content = getTextContent(message == null ? void 0 : message.content);
|
|
1065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
|
|
1050
1066
|
};
|
|
1051
1067
|
|
|
1052
1068
|
// src/components/chat/Markdown.tsx
|
|
@@ -1725,6 +1741,7 @@ function RenderMessage(_a) {
|
|
|
1725
1741
|
var _a2;
|
|
1726
1742
|
const {
|
|
1727
1743
|
message,
|
|
1744
|
+
messages,
|
|
1728
1745
|
inProgress,
|
|
1729
1746
|
index,
|
|
1730
1747
|
isCurrentMessage,
|
|
@@ -1755,6 +1772,7 @@ function RenderMessage(_a) {
|
|
|
1755
1772
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1756
1773
|
rawData: message,
|
|
1757
1774
|
message,
|
|
1775
|
+
messages,
|
|
1758
1776
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1759
1777
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1760
1778
|
isCurrentMessage,
|
|
@@ -1776,6 +1794,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1776
1794
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1777
1795
|
var LegacyRenderMessage = ({
|
|
1778
1796
|
message,
|
|
1797
|
+
messages,
|
|
1779
1798
|
inProgress,
|
|
1780
1799
|
index,
|
|
1781
1800
|
isCurrentMessage,
|
|
@@ -1804,6 +1823,7 @@ var LegacyRenderMessage = ({
|
|
|
1804
1823
|
RenderTextMessage,
|
|
1805
1824
|
{
|
|
1806
1825
|
message,
|
|
1826
|
+
messages,
|
|
1807
1827
|
inProgress,
|
|
1808
1828
|
index,
|
|
1809
1829
|
isCurrentMessage,
|
|
@@ -1821,6 +1841,7 @@ var LegacyRenderMessage = ({
|
|
|
1821
1841
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1822
1842
|
RenderActionExecutionMessage,
|
|
1823
1843
|
{
|
|
1844
|
+
messages,
|
|
1824
1845
|
message,
|
|
1825
1846
|
inProgress,
|
|
1826
1847
|
index,
|
|
@@ -1835,6 +1856,7 @@ var LegacyRenderMessage = ({
|
|
|
1835
1856
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1836
1857
|
RenderAgentStateMessage,
|
|
1837
1858
|
{
|
|
1859
|
+
messages,
|
|
1838
1860
|
message,
|
|
1839
1861
|
inProgress,
|
|
1840
1862
|
index,
|
|
@@ -1848,6 +1870,7 @@ var LegacyRenderMessage = ({
|
|
|
1848
1870
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1849
1871
|
RenderResultMessage,
|
|
1850
1872
|
{
|
|
1873
|
+
messages,
|
|
1851
1874
|
message,
|
|
1852
1875
|
inProgress,
|
|
1853
1876
|
index,
|
|
@@ -1861,6 +1884,7 @@ var LegacyRenderMessage = ({
|
|
|
1861
1884
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1862
1885
|
RenderImageMessage,
|
|
1863
1886
|
{
|
|
1887
|
+
messages,
|
|
1864
1888
|
message,
|
|
1865
1889
|
inProgress,
|
|
1866
1890
|
index,
|
|
@@ -1873,6 +1897,7 @@ var LegacyRenderMessage = ({
|
|
|
1873
1897
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1874
1898
|
RenderMessage,
|
|
1875
1899
|
{
|
|
1900
|
+
messages,
|
|
1876
1901
|
message,
|
|
1877
1902
|
inProgress,
|
|
1878
1903
|
index,
|
|
@@ -1913,7 +1938,8 @@ var Messages = ({
|
|
|
1913
1938
|
RenderResultMessage,
|
|
1914
1939
|
RenderImageMessage
|
|
1915
1940
|
}) => {
|
|
1916
|
-
|
|
1941
|
+
var _a;
|
|
1942
|
+
const { labels, icons } = useChatContext();
|
|
1917
1943
|
const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
|
|
1918
1944
|
const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1919
1945
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1943,6 +1969,7 @@ var Messages = ({
|
|
|
1943
1969
|
]
|
|
1944
1970
|
);
|
|
1945
1971
|
const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
|
|
1972
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
1946
1973
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1947
1974
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1948
1975
|
messages.map((message, index) => {
|
|
@@ -1951,6 +1978,7 @@ var Messages = ({
|
|
|
1951
1978
|
MessageRenderer,
|
|
1952
1979
|
{
|
|
1953
1980
|
message,
|
|
1981
|
+
messages,
|
|
1954
1982
|
inProgress,
|
|
1955
1983
|
index,
|
|
1956
1984
|
isCurrentMessage,
|
|
@@ -1967,6 +1995,7 @@ var Messages = ({
|
|
|
1967
1995
|
index
|
|
1968
1996
|
);
|
|
1969
1997
|
}),
|
|
1998
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
|
|
1970
1999
|
interrupt,
|
|
1971
2000
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1972
2001
|
] }),
|
|
@@ -2260,12 +2289,12 @@ var MAX_NEWLINES = 6;
|
|
|
2260
2289
|
var Input = ({
|
|
2261
2290
|
inProgress,
|
|
2262
2291
|
onSend,
|
|
2263
|
-
|
|
2292
|
+
chatReady = true,
|
|
2264
2293
|
onStop,
|
|
2265
2294
|
onUpload,
|
|
2266
2295
|
hideStopButton = false
|
|
2267
2296
|
}) => {
|
|
2268
|
-
var _a
|
|
2297
|
+
var _a;
|
|
2269
2298
|
const context = useChatContext();
|
|
2270
2299
|
const copilotContext = (0, import_react_core7.useCopilotContext)();
|
|
2271
2300
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -2295,14 +2324,16 @@ var Input = ({
|
|
|
2295
2324
|
inProgress
|
|
2296
2325
|
});
|
|
2297
2326
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
2298
|
-
const buttonIcon
|
|
2327
|
+
const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
|
|
2328
|
+
if (!chatReady)
|
|
2329
|
+
return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
|
|
2330
|
+
return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
|
|
2331
|
+
}, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
|
|
2299
2332
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
2333
|
+
const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
|
|
2300
2334
|
const canSend = (0, import_react14.useMemo)(() => {
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
2304
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
2305
|
-
}, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
|
|
2335
|
+
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
|
|
2336
|
+
}, [interrupt, isInProgress, text, pushToTalkState]);
|
|
2306
2337
|
const canStop = (0, import_react14.useMemo)(() => {
|
|
2307
2338
|
return isInProgress && !hideStopButton;
|
|
2308
2339
|
}, [isInProgress, hideStopButton]);
|
|
@@ -2349,6 +2380,7 @@ var Input = ({
|
|
|
2349
2380
|
"data-copilotkit-in-progress": inProgress,
|
|
2350
2381
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
2351
2382
|
className: "copilotKitInputControlButton",
|
|
2383
|
+
"aria-label": buttonAlt,
|
|
2352
2384
|
children: buttonIcon
|
|
2353
2385
|
}
|
|
2354
2386
|
)
|
|
@@ -2362,8 +2394,6 @@ var Input = ({
|
|
|
2362
2394
|
var import_react15 = __toESM(require("react"));
|
|
2363
2395
|
var import_react_core9 = require("@copilotkit/react-core");
|
|
2364
2396
|
var import_shared3 = require("@copilotkit/shared");
|
|
2365
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2366
|
-
var import_react_core10 = require("@copilotkit/react-core");
|
|
2367
2397
|
|
|
2368
2398
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2369
2399
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
@@ -2467,18 +2497,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
2467
2497
|
|
|
2468
2498
|
// src/components/chat/Suggestions.tsx
|
|
2469
2499
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2470
|
-
function Suggestions({
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2500
|
+
function Suggestions({
|
|
2501
|
+
suggestions,
|
|
2502
|
+
onSuggestionClick,
|
|
2503
|
+
isLoading
|
|
2504
|
+
}) {
|
|
2505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
|
|
2506
|
+
var _a, _b;
|
|
2507
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2508
|
+
Suggestion,
|
|
2509
|
+
{
|
|
2510
|
+
title: suggestion.title,
|
|
2511
|
+
message: suggestion.message,
|
|
2512
|
+
partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
|
|
2513
|
+
className: suggestion.className,
|
|
2514
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
2515
|
+
},
|
|
2516
|
+
index
|
|
2517
|
+
);
|
|
2518
|
+
}) });
|
|
2482
2519
|
}
|
|
2483
2520
|
|
|
2484
2521
|
// src/components/chat/Chat.tsx
|
|
@@ -2678,16 +2715,12 @@ function CopilotChat({
|
|
|
2678
2715
|
sendMessage,
|
|
2679
2716
|
stopGeneration,
|
|
2680
2717
|
reloadMessages,
|
|
2681
|
-
suggestions: currentSuggestions
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
onSubmitMessage,
|
|
2688
|
-
onStopGeneration,
|
|
2689
|
-
onReloadMessages
|
|
2690
|
-
);
|
|
2718
|
+
suggestions: currentSuggestions,
|
|
2719
|
+
isLoadingSuggestions,
|
|
2720
|
+
agent
|
|
2721
|
+
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2722
|
+
suggestions
|
|
2723
|
+
});
|
|
2691
2724
|
const prevIsLoading = (0, import_react15.useRef)(isLoading);
|
|
2692
2725
|
(0, import_react15.useEffect)(() => {
|
|
2693
2726
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2706,7 +2739,11 @@ function CopilotChat({
|
|
|
2706
2739
|
fileInputRef.current.value = "";
|
|
2707
2740
|
}
|
|
2708
2741
|
triggerObservabilityHook("onMessageSent", text);
|
|
2709
|
-
return sendMessage(
|
|
2742
|
+
return sendMessage({
|
|
2743
|
+
id: (0, import_shared3.randomUUID)(),
|
|
2744
|
+
content: text,
|
|
2745
|
+
role: "user"
|
|
2746
|
+
});
|
|
2710
2747
|
};
|
|
2711
2748
|
const chatContext = import_react15.default.useContext(ChatContext);
|
|
2712
2749
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2809,7 +2846,8 @@ function CopilotChat({
|
|
|
2809
2846
|
RenderSuggestionsList,
|
|
2810
2847
|
{
|
|
2811
2848
|
onSuggestionClick: handleSendMessage,
|
|
2812
|
-
suggestions: currentSuggestions
|
|
2849
|
+
suggestions: currentSuggestions,
|
|
2850
|
+
isLoading: isLoadingSuggestions
|
|
2813
2851
|
}
|
|
2814
2852
|
)
|
|
2815
2853
|
}
|
|
@@ -2832,6 +2870,7 @@ function CopilotChat({
|
|
|
2832
2870
|
Input2,
|
|
2833
2871
|
{
|
|
2834
2872
|
inProgress: isLoading,
|
|
2873
|
+
chatReady: Boolean(agent),
|
|
2835
2874
|
onSend: handleSendMessage,
|
|
2836
2875
|
isVisible,
|
|
2837
2876
|
onStop: stopGeneration,
|
|
@@ -2857,243 +2896,10 @@ function WrappedCopilotChat({
|
|
|
2857
2896
|
}
|
|
2858
2897
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
|
|
2859
2898
|
}
|
|
2860
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2861
|
-
var _a;
|
|
2862
|
-
const {
|
|
2863
|
-
messages,
|
|
2864
|
-
sendMessage,
|
|
2865
|
-
setMessages,
|
|
2866
|
-
reloadMessages: defaultReloadMessages,
|
|
2867
|
-
stopGeneration: defaultStopGeneration,
|
|
2868
|
-
runChatCompletion,
|
|
2869
|
-
isLoading,
|
|
2870
|
-
suggestions,
|
|
2871
|
-
setSuggestions,
|
|
2872
|
-
generateSuggestions,
|
|
2873
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2874
|
-
isLoadingSuggestions
|
|
2875
|
-
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2876
|
-
makeSystemMessage,
|
|
2877
|
-
disableSystemMessage
|
|
2878
|
-
});
|
|
2879
|
-
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2880
|
-
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2881
|
-
const { actions } = generalContext;
|
|
2882
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
|
|
2883
|
-
const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
|
|
2884
|
-
(0, import_react15.useEffect)(() => {
|
|
2885
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2886
|
-
setSuggestions(chatSuggestions);
|
|
2887
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2888
|
-
}
|
|
2889
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2890
|
-
const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
|
|
2891
|
-
(context) => __async(void 0, null, function* () {
|
|
2892
|
-
try {
|
|
2893
|
-
yield generateSuggestions();
|
|
2894
|
-
} catch (error) {
|
|
2895
|
-
console.error("Failed to generate suggestions:", error);
|
|
2896
|
-
setSuggestionsFailed(true);
|
|
2897
|
-
}
|
|
2898
|
-
}),
|
|
2899
|
-
[generateSuggestions]
|
|
2900
|
-
);
|
|
2901
|
-
(0, import_react15.useEffect)(() => {
|
|
2902
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2903
|
-
return;
|
|
2904
|
-
}
|
|
2905
|
-
if (isLoading) {
|
|
2906
|
-
return;
|
|
2907
|
-
}
|
|
2908
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2909
|
-
return;
|
|
2910
|
-
}
|
|
2911
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2912
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2913
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2914
|
-
return;
|
|
2915
|
-
}
|
|
2916
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2917
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2918
|
-
return;
|
|
2919
|
-
}
|
|
2920
|
-
}, [
|
|
2921
|
-
chatSuggestions,
|
|
2922
|
-
isLoadingSuggestions,
|
|
2923
|
-
suggestionsFailed,
|
|
2924
|
-
messages.length,
|
|
2925
|
-
isLoading,
|
|
2926
|
-
suggestions.length,
|
|
2927
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2928
|
-
// Use stable string instead of object reference
|
|
2929
|
-
generateSuggestionsWithErrorHandling
|
|
2930
|
-
]);
|
|
2931
|
-
(0, import_react15.useEffect)(() => {
|
|
2932
|
-
if (chatSuggestions !== "auto") {
|
|
2933
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2934
|
-
setSuggestionsFailed(false);
|
|
2935
|
-
}
|
|
2936
|
-
}, [chatSuggestions]);
|
|
2937
|
-
const stableContext = (0, import_react15.useMemo)(
|
|
2938
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2939
|
-
[
|
|
2940
|
-
// Only include stable dependencies
|
|
2941
|
-
generalContext.actions,
|
|
2942
|
-
messagesContext.messages.length,
|
|
2943
|
-
generalContext.isLoading
|
|
2944
|
-
]
|
|
2945
|
-
);
|
|
2946
|
-
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2947
|
-
resetSuggestionsFromHook();
|
|
2948
|
-
setSuggestionsFailed(false);
|
|
2949
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2950
|
-
}, [resetSuggestionsFromHook]);
|
|
2951
|
-
(0, import_react15.useEffect)(() => {
|
|
2952
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2953
|
-
}, [onInProgress, isLoading]);
|
|
2954
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2955
|
-
const images = imagesToUse || [];
|
|
2956
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2957
|
-
setSuggestions([]);
|
|
2958
|
-
}
|
|
2959
|
-
let firstMessage = null;
|
|
2960
|
-
if (messageContent.trim().length > 0) {
|
|
2961
|
-
const textMessage = {
|
|
2962
|
-
id: (0, import_shared4.randomId)(),
|
|
2963
|
-
role: "user",
|
|
2964
|
-
content: messageContent
|
|
2965
|
-
};
|
|
2966
|
-
if (onSubmitMessage) {
|
|
2967
|
-
try {
|
|
2968
|
-
yield onSubmitMessage(messageContent);
|
|
2969
|
-
} catch (error) {
|
|
2970
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2971
|
-
}
|
|
2972
|
-
}
|
|
2973
|
-
yield sendMessage(textMessage, {
|
|
2974
|
-
followUp: images.length === 0,
|
|
2975
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2976
|
-
});
|
|
2977
|
-
if (!firstMessage) {
|
|
2978
|
-
firstMessage = textMessage;
|
|
2979
|
-
}
|
|
2980
|
-
}
|
|
2981
|
-
if (images.length > 0) {
|
|
2982
|
-
for (let i = 0; i < images.length; i++) {
|
|
2983
|
-
const imageMessage = {
|
|
2984
|
-
id: (0, import_shared4.randomId)(),
|
|
2985
|
-
role: "user",
|
|
2986
|
-
image: {
|
|
2987
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2988
|
-
bytes: images[i].bytes
|
|
2989
|
-
}
|
|
2990
|
-
};
|
|
2991
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2992
|
-
if (!firstMessage) {
|
|
2993
|
-
firstMessage = imageMessage;
|
|
2994
|
-
}
|
|
2995
|
-
}
|
|
2996
|
-
}
|
|
2997
|
-
if (!firstMessage) {
|
|
2998
|
-
return { role: "user", content: "", id: (0, import_shared4.randomId)() };
|
|
2999
|
-
}
|
|
3000
|
-
return firstMessage;
|
|
3001
|
-
});
|
|
3002
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
3003
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3004
|
-
if (generalContext.agentSession) {
|
|
3005
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
3006
|
-
nodeName: void 0,
|
|
3007
|
-
threadId: void 0
|
|
3008
|
-
}));
|
|
3009
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3010
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3011
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
3012
|
-
threadId: void 0,
|
|
3013
|
-
nodeName: void 0,
|
|
3014
|
-
runId: void 0
|
|
3015
|
-
})
|
|
3016
|
-
});
|
|
3017
|
-
});
|
|
3018
|
-
}
|
|
3019
|
-
});
|
|
3020
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3021
|
-
if (generalContext.agentSession) {
|
|
3022
|
-
yield (0, import_react_core10.runAgent)(
|
|
3023
|
-
generalContext.agentSession.agentName,
|
|
3024
|
-
stableContext,
|
|
3025
|
-
messagesContext.messages,
|
|
3026
|
-
sendMessage,
|
|
3027
|
-
runChatCompletion
|
|
3028
|
-
);
|
|
3029
|
-
}
|
|
3030
|
-
});
|
|
3031
|
-
const stopCurrentAgent = () => {
|
|
3032
|
-
if (generalContext.agentSession) {
|
|
3033
|
-
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3034
|
-
}
|
|
3035
|
-
};
|
|
3036
|
-
const setCurrentAgentState = (state) => {
|
|
3037
|
-
if (generalContext.agentSession) {
|
|
3038
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3039
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3040
|
-
[generalContext.agentSession.agentName]: {
|
|
3041
|
-
state
|
|
3042
|
-
}
|
|
3043
|
-
});
|
|
3044
|
-
});
|
|
3045
|
-
}
|
|
3046
|
-
};
|
|
3047
|
-
function stopGeneration() {
|
|
3048
|
-
setSuggestions([]);
|
|
3049
|
-
if (onStopGeneration) {
|
|
3050
|
-
onStopGeneration({
|
|
3051
|
-
messages,
|
|
3052
|
-
setMessages,
|
|
3053
|
-
stopGeneration: defaultStopGeneration,
|
|
3054
|
-
currentAgentName,
|
|
3055
|
-
restartCurrentAgent,
|
|
3056
|
-
stopCurrentAgent,
|
|
3057
|
-
runCurrentAgent,
|
|
3058
|
-
setCurrentAgentState
|
|
3059
|
-
});
|
|
3060
|
-
} else {
|
|
3061
|
-
defaultStopGeneration();
|
|
3062
|
-
}
|
|
3063
|
-
}
|
|
3064
|
-
function reloadMessages(messageId) {
|
|
3065
|
-
if (onReloadMessages) {
|
|
3066
|
-
onReloadMessages({
|
|
3067
|
-
messages,
|
|
3068
|
-
setMessages,
|
|
3069
|
-
stopGeneration: defaultStopGeneration,
|
|
3070
|
-
currentAgentName,
|
|
3071
|
-
restartCurrentAgent,
|
|
3072
|
-
stopCurrentAgent,
|
|
3073
|
-
runCurrentAgent,
|
|
3074
|
-
setCurrentAgentState,
|
|
3075
|
-
messageId
|
|
3076
|
-
});
|
|
3077
|
-
} else {
|
|
3078
|
-
defaultReloadMessages(messageId);
|
|
3079
|
-
}
|
|
3080
|
-
}
|
|
3081
|
-
return {
|
|
3082
|
-
messages,
|
|
3083
|
-
isLoading,
|
|
3084
|
-
suggestions,
|
|
3085
|
-
sendMessage: safelySendMessage,
|
|
3086
|
-
stopGeneration,
|
|
3087
|
-
reloadMessages,
|
|
3088
|
-
resetSuggestions,
|
|
3089
|
-
context: stableContext,
|
|
3090
|
-
actions
|
|
3091
|
-
};
|
|
3092
|
-
};
|
|
3093
2899
|
|
|
3094
2900
|
// src/components/chat/Modal.tsx
|
|
3095
|
-
var
|
|
3096
|
-
var
|
|
2901
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2902
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
3097
2903
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3098
2904
|
var CopilotModalInner = (_a) => {
|
|
3099
2905
|
var _b = _a, {
|
|
@@ -3119,7 +2925,7 @@ var CopilotModalInner = (_a) => {
|
|
|
3119
2925
|
"Button",
|
|
3120
2926
|
"Header"
|
|
3121
2927
|
]);
|
|
3122
|
-
const { copilotApiConfig, setBannerError } = (0,
|
|
2928
|
+
const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
|
|
3123
2929
|
const { publicApiKey } = copilotApiConfig;
|
|
3124
2930
|
const triggerObservabilityHook = (0, import_react16.useCallback)(
|
|
3125
2931
|
(hookName, ...args) => {
|
|
@@ -3128,14 +2934,14 @@ var CopilotModalInner = (_a) => {
|
|
|
3128
2934
|
}
|
|
3129
2935
|
if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
|
|
3130
2936
|
setBannerError(
|
|
3131
|
-
new
|
|
2937
|
+
new import_shared4.CopilotKitError({
|
|
3132
2938
|
message: "observabilityHooks requires a publicApiKey to function.",
|
|
3133
|
-
code:
|
|
3134
|
-
severity:
|
|
3135
|
-
visibility:
|
|
2939
|
+
code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
2940
|
+
severity: import_shared4.Severity.CRITICAL,
|
|
2941
|
+
visibility: import_shared4.ErrorVisibility.BANNER
|
|
3136
2942
|
})
|
|
3137
2943
|
);
|
|
3138
|
-
|
|
2944
|
+
import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
|
|
3139
2945
|
}
|
|
3140
2946
|
},
|
|
3141
2947
|
[publicApiKey, observabilityHooks, setBannerError]
|