@copilotkit/react-ui 1.10.7-next.0 → 1.50.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +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 +23 -22
- 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
package/dist/components/index.js
CHANGED
|
@@ -1041,14 +1041,30 @@ var import_react_core5 = require("@copilotkit/react-core");
|
|
|
1041
1041
|
|
|
1042
1042
|
// src/components/chat/messages/UserMessage.tsx
|
|
1043
1043
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1044
|
+
var getTextContent = (content) => {
|
|
1045
|
+
if (typeof content === "undefined") {
|
|
1046
|
+
return void 0;
|
|
1047
|
+
}
|
|
1048
|
+
if (typeof content === "string") {
|
|
1049
|
+
return content;
|
|
1050
|
+
}
|
|
1051
|
+
return content.map((part) => {
|
|
1052
|
+
if (part.type === "text") {
|
|
1053
|
+
return part.text;
|
|
1054
|
+
}
|
|
1055
|
+
return void 0;
|
|
1056
|
+
}).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
|
|
1057
|
+
};
|
|
1044
1058
|
var UserMessage = (props) => {
|
|
1045
1059
|
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1046
|
-
const isImageMessage = message && "image" in message && message.image;
|
|
1060
|
+
const isImageMessage = message && "image" in message && Boolean(message.image);
|
|
1047
1061
|
if (isImageMessage) {
|
|
1048
1062
|
const imageMessage = message;
|
|
1049
|
-
|
|
1063
|
+
const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
|
|
1064
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
|
|
1050
1065
|
}
|
|
1051
|
-
|
|
1066
|
+
const content = getTextContent(message == null ? void 0 : message.content);
|
|
1067
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
|
|
1052
1068
|
};
|
|
1053
1069
|
|
|
1054
1070
|
// src/components/chat/Markdown.tsx
|
|
@@ -1727,6 +1743,7 @@ function RenderMessage(_a) {
|
|
|
1727
1743
|
var _a2;
|
|
1728
1744
|
const {
|
|
1729
1745
|
message,
|
|
1746
|
+
messages,
|
|
1730
1747
|
inProgress,
|
|
1731
1748
|
index,
|
|
1732
1749
|
isCurrentMessage,
|
|
@@ -1757,6 +1774,7 @@ function RenderMessage(_a) {
|
|
|
1757
1774
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1758
1775
|
rawData: message,
|
|
1759
1776
|
message,
|
|
1777
|
+
messages,
|
|
1760
1778
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1761
1779
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1762
1780
|
isCurrentMessage,
|
|
@@ -1778,6 +1796,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1778
1796
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1779
1797
|
var LegacyRenderMessage = ({
|
|
1780
1798
|
message,
|
|
1799
|
+
messages,
|
|
1781
1800
|
inProgress,
|
|
1782
1801
|
index,
|
|
1783
1802
|
isCurrentMessage,
|
|
@@ -1806,6 +1825,7 @@ var LegacyRenderMessage = ({
|
|
|
1806
1825
|
RenderTextMessage,
|
|
1807
1826
|
{
|
|
1808
1827
|
message,
|
|
1828
|
+
messages,
|
|
1809
1829
|
inProgress,
|
|
1810
1830
|
index,
|
|
1811
1831
|
isCurrentMessage,
|
|
@@ -1823,6 +1843,7 @@ var LegacyRenderMessage = ({
|
|
|
1823
1843
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1824
1844
|
RenderActionExecutionMessage,
|
|
1825
1845
|
{
|
|
1846
|
+
messages,
|
|
1826
1847
|
message,
|
|
1827
1848
|
inProgress,
|
|
1828
1849
|
index,
|
|
@@ -1837,6 +1858,7 @@ var LegacyRenderMessage = ({
|
|
|
1837
1858
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1838
1859
|
RenderAgentStateMessage,
|
|
1839
1860
|
{
|
|
1861
|
+
messages,
|
|
1840
1862
|
message,
|
|
1841
1863
|
inProgress,
|
|
1842
1864
|
index,
|
|
@@ -1850,6 +1872,7 @@ var LegacyRenderMessage = ({
|
|
|
1850
1872
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1851
1873
|
RenderResultMessage,
|
|
1852
1874
|
{
|
|
1875
|
+
messages,
|
|
1853
1876
|
message,
|
|
1854
1877
|
inProgress,
|
|
1855
1878
|
index,
|
|
@@ -1863,6 +1886,7 @@ var LegacyRenderMessage = ({
|
|
|
1863
1886
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1864
1887
|
RenderImageMessage,
|
|
1865
1888
|
{
|
|
1889
|
+
messages,
|
|
1866
1890
|
message,
|
|
1867
1891
|
inProgress,
|
|
1868
1892
|
index,
|
|
@@ -1875,6 +1899,7 @@ var LegacyRenderMessage = ({
|
|
|
1875
1899
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1876
1900
|
RenderMessage,
|
|
1877
1901
|
{
|
|
1902
|
+
messages,
|
|
1878
1903
|
message,
|
|
1879
1904
|
inProgress,
|
|
1880
1905
|
index,
|
|
@@ -1915,7 +1940,8 @@ var Messages = ({
|
|
|
1915
1940
|
RenderResultMessage,
|
|
1916
1941
|
RenderImageMessage
|
|
1917
1942
|
}) => {
|
|
1918
|
-
|
|
1943
|
+
var _a;
|
|
1944
|
+
const { labels, icons } = useChatContext();
|
|
1919
1945
|
const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
|
|
1920
1946
|
const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1921
1947
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1945,6 +1971,7 @@ var Messages = ({
|
|
|
1945
1971
|
]
|
|
1946
1972
|
);
|
|
1947
1973
|
const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
|
|
1974
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
1948
1975
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1949
1976
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1950
1977
|
messages.map((message, index) => {
|
|
@@ -1953,6 +1980,7 @@ var Messages = ({
|
|
|
1953
1980
|
MessageRenderer,
|
|
1954
1981
|
{
|
|
1955
1982
|
message,
|
|
1983
|
+
messages,
|
|
1956
1984
|
inProgress,
|
|
1957
1985
|
index,
|
|
1958
1986
|
isCurrentMessage,
|
|
@@ -1969,6 +1997,7 @@ var Messages = ({
|
|
|
1969
1997
|
index
|
|
1970
1998
|
);
|
|
1971
1999
|
}),
|
|
2000
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
|
|
1972
2001
|
interrupt,
|
|
1973
2002
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1974
2003
|
] }),
|
|
@@ -2262,12 +2291,12 @@ var MAX_NEWLINES = 6;
|
|
|
2262
2291
|
var Input = ({
|
|
2263
2292
|
inProgress,
|
|
2264
2293
|
onSend,
|
|
2265
|
-
|
|
2294
|
+
chatReady = true,
|
|
2266
2295
|
onStop,
|
|
2267
2296
|
onUpload,
|
|
2268
2297
|
hideStopButton = false
|
|
2269
2298
|
}) => {
|
|
2270
|
-
var _a
|
|
2299
|
+
var _a;
|
|
2271
2300
|
const context = useChatContext();
|
|
2272
2301
|
const copilotContext = (0, import_react_core7.useCopilotContext)();
|
|
2273
2302
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -2297,14 +2326,16 @@ var Input = ({
|
|
|
2297
2326
|
inProgress
|
|
2298
2327
|
});
|
|
2299
2328
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
2300
|
-
const buttonIcon
|
|
2329
|
+
const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
|
|
2330
|
+
if (!chatReady)
|
|
2331
|
+
return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
|
|
2332
|
+
return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
|
|
2333
|
+
}, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
|
|
2301
2334
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
2335
|
+
const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
|
|
2302
2336
|
const canSend = (0, import_react14.useMemo)(() => {
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
2306
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
2307
|
-
}, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
|
|
2337
|
+
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
|
|
2338
|
+
}, [interrupt, isInProgress, text, pushToTalkState]);
|
|
2308
2339
|
const canStop = (0, import_react14.useMemo)(() => {
|
|
2309
2340
|
return isInProgress && !hideStopButton;
|
|
2310
2341
|
}, [isInProgress, hideStopButton]);
|
|
@@ -2351,6 +2382,7 @@ var Input = ({
|
|
|
2351
2382
|
"data-copilotkit-in-progress": inProgress,
|
|
2352
2383
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
2353
2384
|
className: "copilotKitInputControlButton",
|
|
2385
|
+
"aria-label": buttonAlt,
|
|
2354
2386
|
children: buttonIcon
|
|
2355
2387
|
}
|
|
2356
2388
|
)
|
|
@@ -2364,8 +2396,6 @@ var Input = ({
|
|
|
2364
2396
|
var import_react15 = __toESM(require("react"));
|
|
2365
2397
|
var import_react_core9 = require("@copilotkit/react-core");
|
|
2366
2398
|
var import_shared3 = require("@copilotkit/shared");
|
|
2367
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2368
|
-
var import_react_core10 = require("@copilotkit/react-core");
|
|
2369
2399
|
|
|
2370
2400
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2371
2401
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
@@ -2469,18 +2499,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
2469
2499
|
|
|
2470
2500
|
// src/components/chat/Suggestions.tsx
|
|
2471
2501
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2472
|
-
function Suggestions({
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2502
|
+
function Suggestions({
|
|
2503
|
+
suggestions,
|
|
2504
|
+
onSuggestionClick,
|
|
2505
|
+
isLoading
|
|
2506
|
+
}) {
|
|
2507
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
|
|
2508
|
+
var _a, _b;
|
|
2509
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2510
|
+
Suggestion,
|
|
2511
|
+
{
|
|
2512
|
+
title: suggestion.title,
|
|
2513
|
+
message: suggestion.message,
|
|
2514
|
+
partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
|
|
2515
|
+
className: suggestion.className,
|
|
2516
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
2517
|
+
},
|
|
2518
|
+
index
|
|
2519
|
+
);
|
|
2520
|
+
}) });
|
|
2484
2521
|
}
|
|
2485
2522
|
|
|
2486
2523
|
// src/components/chat/Chat.tsx
|
|
@@ -2680,16 +2717,12 @@ function CopilotChat({
|
|
|
2680
2717
|
sendMessage,
|
|
2681
2718
|
stopGeneration,
|
|
2682
2719
|
reloadMessages,
|
|
2683
|
-
suggestions: currentSuggestions
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
onSubmitMessage,
|
|
2690
|
-
onStopGeneration,
|
|
2691
|
-
onReloadMessages
|
|
2692
|
-
);
|
|
2720
|
+
suggestions: currentSuggestions,
|
|
2721
|
+
isLoadingSuggestions,
|
|
2722
|
+
agent
|
|
2723
|
+
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2724
|
+
suggestions
|
|
2725
|
+
});
|
|
2693
2726
|
const prevIsLoading = (0, import_react15.useRef)(isLoading);
|
|
2694
2727
|
(0, import_react15.useEffect)(() => {
|
|
2695
2728
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2708,7 +2741,11 @@ function CopilotChat({
|
|
|
2708
2741
|
fileInputRef.current.value = "";
|
|
2709
2742
|
}
|
|
2710
2743
|
triggerObservabilityHook("onMessageSent", text);
|
|
2711
|
-
return sendMessage(
|
|
2744
|
+
return sendMessage({
|
|
2745
|
+
id: (0, import_shared3.randomUUID)(),
|
|
2746
|
+
content: text,
|
|
2747
|
+
role: "user"
|
|
2748
|
+
});
|
|
2712
2749
|
};
|
|
2713
2750
|
const chatContext = import_react15.default.useContext(ChatContext);
|
|
2714
2751
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2811,7 +2848,8 @@ function CopilotChat({
|
|
|
2811
2848
|
RenderSuggestionsList,
|
|
2812
2849
|
{
|
|
2813
2850
|
onSuggestionClick: handleSendMessage,
|
|
2814
|
-
suggestions: currentSuggestions
|
|
2851
|
+
suggestions: currentSuggestions,
|
|
2852
|
+
isLoading: isLoadingSuggestions
|
|
2815
2853
|
}
|
|
2816
2854
|
)
|
|
2817
2855
|
}
|
|
@@ -2834,6 +2872,7 @@ function CopilotChat({
|
|
|
2834
2872
|
Input2,
|
|
2835
2873
|
{
|
|
2836
2874
|
inProgress: isLoading,
|
|
2875
|
+
chatReady: Boolean(agent),
|
|
2837
2876
|
onSend: handleSendMessage,
|
|
2838
2877
|
isVisible,
|
|
2839
2878
|
onStop: stopGeneration,
|
|
@@ -2859,243 +2898,10 @@ function WrappedCopilotChat({
|
|
|
2859
2898
|
}
|
|
2860
2899
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
|
|
2861
2900
|
}
|
|
2862
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2863
|
-
var _a;
|
|
2864
|
-
const {
|
|
2865
|
-
messages,
|
|
2866
|
-
sendMessage,
|
|
2867
|
-
setMessages,
|
|
2868
|
-
reloadMessages: defaultReloadMessages,
|
|
2869
|
-
stopGeneration: defaultStopGeneration,
|
|
2870
|
-
runChatCompletion,
|
|
2871
|
-
isLoading,
|
|
2872
|
-
suggestions,
|
|
2873
|
-
setSuggestions,
|
|
2874
|
-
generateSuggestions,
|
|
2875
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2876
|
-
isLoadingSuggestions
|
|
2877
|
-
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2878
|
-
makeSystemMessage,
|
|
2879
|
-
disableSystemMessage
|
|
2880
|
-
});
|
|
2881
|
-
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2882
|
-
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2883
|
-
const { actions } = generalContext;
|
|
2884
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
|
|
2885
|
-
const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
|
|
2886
|
-
(0, import_react15.useEffect)(() => {
|
|
2887
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2888
|
-
setSuggestions(chatSuggestions);
|
|
2889
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2890
|
-
}
|
|
2891
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2892
|
-
const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
|
|
2893
|
-
(context) => __async(void 0, null, function* () {
|
|
2894
|
-
try {
|
|
2895
|
-
yield generateSuggestions();
|
|
2896
|
-
} catch (error) {
|
|
2897
|
-
console.error("Failed to generate suggestions:", error);
|
|
2898
|
-
setSuggestionsFailed(true);
|
|
2899
|
-
}
|
|
2900
|
-
}),
|
|
2901
|
-
[generateSuggestions]
|
|
2902
|
-
);
|
|
2903
|
-
(0, import_react15.useEffect)(() => {
|
|
2904
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2905
|
-
return;
|
|
2906
|
-
}
|
|
2907
|
-
if (isLoading) {
|
|
2908
|
-
return;
|
|
2909
|
-
}
|
|
2910
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2911
|
-
return;
|
|
2912
|
-
}
|
|
2913
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2914
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2915
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2916
|
-
return;
|
|
2917
|
-
}
|
|
2918
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2919
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2920
|
-
return;
|
|
2921
|
-
}
|
|
2922
|
-
}, [
|
|
2923
|
-
chatSuggestions,
|
|
2924
|
-
isLoadingSuggestions,
|
|
2925
|
-
suggestionsFailed,
|
|
2926
|
-
messages.length,
|
|
2927
|
-
isLoading,
|
|
2928
|
-
suggestions.length,
|
|
2929
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2930
|
-
// Use stable string instead of object reference
|
|
2931
|
-
generateSuggestionsWithErrorHandling
|
|
2932
|
-
]);
|
|
2933
|
-
(0, import_react15.useEffect)(() => {
|
|
2934
|
-
if (chatSuggestions !== "auto") {
|
|
2935
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2936
|
-
setSuggestionsFailed(false);
|
|
2937
|
-
}
|
|
2938
|
-
}, [chatSuggestions]);
|
|
2939
|
-
const stableContext = (0, import_react15.useMemo)(
|
|
2940
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2941
|
-
[
|
|
2942
|
-
// Only include stable dependencies
|
|
2943
|
-
generalContext.actions,
|
|
2944
|
-
messagesContext.messages.length,
|
|
2945
|
-
generalContext.isLoading
|
|
2946
|
-
]
|
|
2947
|
-
);
|
|
2948
|
-
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2949
|
-
resetSuggestionsFromHook();
|
|
2950
|
-
setSuggestionsFailed(false);
|
|
2951
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2952
|
-
}, [resetSuggestionsFromHook]);
|
|
2953
|
-
(0, import_react15.useEffect)(() => {
|
|
2954
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2955
|
-
}, [onInProgress, isLoading]);
|
|
2956
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2957
|
-
const images = imagesToUse || [];
|
|
2958
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2959
|
-
setSuggestions([]);
|
|
2960
|
-
}
|
|
2961
|
-
let firstMessage = null;
|
|
2962
|
-
if (messageContent.trim().length > 0) {
|
|
2963
|
-
const textMessage = {
|
|
2964
|
-
id: (0, import_shared4.randomId)(),
|
|
2965
|
-
role: "user",
|
|
2966
|
-
content: messageContent
|
|
2967
|
-
};
|
|
2968
|
-
if (onSubmitMessage) {
|
|
2969
|
-
try {
|
|
2970
|
-
yield onSubmitMessage(messageContent);
|
|
2971
|
-
} catch (error) {
|
|
2972
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2973
|
-
}
|
|
2974
|
-
}
|
|
2975
|
-
yield sendMessage(textMessage, {
|
|
2976
|
-
followUp: images.length === 0,
|
|
2977
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2978
|
-
});
|
|
2979
|
-
if (!firstMessage) {
|
|
2980
|
-
firstMessage = textMessage;
|
|
2981
|
-
}
|
|
2982
|
-
}
|
|
2983
|
-
if (images.length > 0) {
|
|
2984
|
-
for (let i = 0; i < images.length; i++) {
|
|
2985
|
-
const imageMessage = {
|
|
2986
|
-
id: (0, import_shared4.randomId)(),
|
|
2987
|
-
role: "user",
|
|
2988
|
-
image: {
|
|
2989
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2990
|
-
bytes: images[i].bytes
|
|
2991
|
-
}
|
|
2992
|
-
};
|
|
2993
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2994
|
-
if (!firstMessage) {
|
|
2995
|
-
firstMessage = imageMessage;
|
|
2996
|
-
}
|
|
2997
|
-
}
|
|
2998
|
-
}
|
|
2999
|
-
if (!firstMessage) {
|
|
3000
|
-
return { role: "user", content: "", id: (0, import_shared4.randomId)() };
|
|
3001
|
-
}
|
|
3002
|
-
return firstMessage;
|
|
3003
|
-
});
|
|
3004
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
3005
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3006
|
-
if (generalContext.agentSession) {
|
|
3007
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
3008
|
-
nodeName: void 0,
|
|
3009
|
-
threadId: void 0
|
|
3010
|
-
}));
|
|
3011
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3012
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3013
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
3014
|
-
threadId: void 0,
|
|
3015
|
-
nodeName: void 0,
|
|
3016
|
-
runId: void 0
|
|
3017
|
-
})
|
|
3018
|
-
});
|
|
3019
|
-
});
|
|
3020
|
-
}
|
|
3021
|
-
});
|
|
3022
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3023
|
-
if (generalContext.agentSession) {
|
|
3024
|
-
yield (0, import_react_core10.runAgent)(
|
|
3025
|
-
generalContext.agentSession.agentName,
|
|
3026
|
-
stableContext,
|
|
3027
|
-
messagesContext.messages,
|
|
3028
|
-
sendMessage,
|
|
3029
|
-
runChatCompletion
|
|
3030
|
-
);
|
|
3031
|
-
}
|
|
3032
|
-
});
|
|
3033
|
-
const stopCurrentAgent = () => {
|
|
3034
|
-
if (generalContext.agentSession) {
|
|
3035
|
-
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3036
|
-
}
|
|
3037
|
-
};
|
|
3038
|
-
const setCurrentAgentState = (state) => {
|
|
3039
|
-
if (generalContext.agentSession) {
|
|
3040
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3041
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3042
|
-
[generalContext.agentSession.agentName]: {
|
|
3043
|
-
state
|
|
3044
|
-
}
|
|
3045
|
-
});
|
|
3046
|
-
});
|
|
3047
|
-
}
|
|
3048
|
-
};
|
|
3049
|
-
function stopGeneration() {
|
|
3050
|
-
setSuggestions([]);
|
|
3051
|
-
if (onStopGeneration) {
|
|
3052
|
-
onStopGeneration({
|
|
3053
|
-
messages,
|
|
3054
|
-
setMessages,
|
|
3055
|
-
stopGeneration: defaultStopGeneration,
|
|
3056
|
-
currentAgentName,
|
|
3057
|
-
restartCurrentAgent,
|
|
3058
|
-
stopCurrentAgent,
|
|
3059
|
-
runCurrentAgent,
|
|
3060
|
-
setCurrentAgentState
|
|
3061
|
-
});
|
|
3062
|
-
} else {
|
|
3063
|
-
defaultStopGeneration();
|
|
3064
|
-
}
|
|
3065
|
-
}
|
|
3066
|
-
function reloadMessages(messageId) {
|
|
3067
|
-
if (onReloadMessages) {
|
|
3068
|
-
onReloadMessages({
|
|
3069
|
-
messages,
|
|
3070
|
-
setMessages,
|
|
3071
|
-
stopGeneration: defaultStopGeneration,
|
|
3072
|
-
currentAgentName,
|
|
3073
|
-
restartCurrentAgent,
|
|
3074
|
-
stopCurrentAgent,
|
|
3075
|
-
runCurrentAgent,
|
|
3076
|
-
setCurrentAgentState,
|
|
3077
|
-
messageId
|
|
3078
|
-
});
|
|
3079
|
-
} else {
|
|
3080
|
-
defaultReloadMessages(messageId);
|
|
3081
|
-
}
|
|
3082
|
-
}
|
|
3083
|
-
return {
|
|
3084
|
-
messages,
|
|
3085
|
-
isLoading,
|
|
3086
|
-
suggestions,
|
|
3087
|
-
sendMessage: safelySendMessage,
|
|
3088
|
-
stopGeneration,
|
|
3089
|
-
reloadMessages,
|
|
3090
|
-
resetSuggestions,
|
|
3091
|
-
context: stableContext,
|
|
3092
|
-
actions
|
|
3093
|
-
};
|
|
3094
|
-
};
|
|
3095
2901
|
|
|
3096
2902
|
// src/components/chat/Modal.tsx
|
|
3097
|
-
var
|
|
3098
|
-
var
|
|
2903
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2904
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
3099
2905
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3100
2906
|
var CopilotModalInner = (_a) => {
|
|
3101
2907
|
var _b = _a, {
|
|
@@ -3121,7 +2927,7 @@ var CopilotModalInner = (_a) => {
|
|
|
3121
2927
|
"Button",
|
|
3122
2928
|
"Header"
|
|
3123
2929
|
]);
|
|
3124
|
-
const { copilotApiConfig, setBannerError } = (0,
|
|
2930
|
+
const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
|
|
3125
2931
|
const { publicApiKey } = copilotApiConfig;
|
|
3126
2932
|
const triggerObservabilityHook = (0, import_react16.useCallback)(
|
|
3127
2933
|
(hookName, ...args) => {
|
|
@@ -3130,14 +2936,14 @@ var CopilotModalInner = (_a) => {
|
|
|
3130
2936
|
}
|
|
3131
2937
|
if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
|
|
3132
2938
|
setBannerError(
|
|
3133
|
-
new
|
|
2939
|
+
new import_shared4.CopilotKitError({
|
|
3134
2940
|
message: "observabilityHooks requires a publicApiKey to function.",
|
|
3135
|
-
code:
|
|
3136
|
-
severity:
|
|
3137
|
-
visibility:
|
|
2941
|
+
code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
2942
|
+
severity: import_shared4.Severity.CRITICAL,
|
|
2943
|
+
visibility: import_shared4.ErrorVisibility.BANNER
|
|
3138
2944
|
})
|
|
3139
2945
|
);
|
|
3140
|
-
|
|
2946
|
+
import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
|
|
3141
2947
|
}
|
|
3142
2948
|
},
|
|
3143
2949
|
[publicApiKey, observabilityHooks, setBannerError]
|