@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/index.js
CHANGED
|
@@ -1043,14 +1043,30 @@ var import_react_core5 = require("@copilotkit/react-core");
|
|
|
1043
1043
|
|
|
1044
1044
|
// src/components/chat/messages/UserMessage.tsx
|
|
1045
1045
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1046
|
+
var getTextContent = (content) => {
|
|
1047
|
+
if (typeof content === "undefined") {
|
|
1048
|
+
return void 0;
|
|
1049
|
+
}
|
|
1050
|
+
if (typeof content === "string") {
|
|
1051
|
+
return content;
|
|
1052
|
+
}
|
|
1053
|
+
return content.map((part) => {
|
|
1054
|
+
if (part.type === "text") {
|
|
1055
|
+
return part.text;
|
|
1056
|
+
}
|
|
1057
|
+
return void 0;
|
|
1058
|
+
}).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
|
|
1059
|
+
};
|
|
1046
1060
|
var UserMessage = (props) => {
|
|
1047
1061
|
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1048
|
-
const isImageMessage = message && "image" in message && message.image;
|
|
1062
|
+
const isImageMessage = message && "image" in message && Boolean(message.image);
|
|
1049
1063
|
if (isImageMessage) {
|
|
1050
1064
|
const imageMessage = message;
|
|
1051
|
-
|
|
1065
|
+
const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
|
|
1066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
|
|
1052
1067
|
}
|
|
1053
|
-
|
|
1068
|
+
const content = getTextContent(message == null ? void 0 : message.content);
|
|
1069
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
|
|
1054
1070
|
};
|
|
1055
1071
|
|
|
1056
1072
|
// src/components/chat/Markdown.tsx
|
|
@@ -1729,6 +1745,7 @@ function RenderMessage(_a) {
|
|
|
1729
1745
|
var _a2;
|
|
1730
1746
|
const {
|
|
1731
1747
|
message,
|
|
1748
|
+
messages,
|
|
1732
1749
|
inProgress,
|
|
1733
1750
|
index,
|
|
1734
1751
|
isCurrentMessage,
|
|
@@ -1759,6 +1776,7 @@ function RenderMessage(_a) {
|
|
|
1759
1776
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1760
1777
|
rawData: message,
|
|
1761
1778
|
message,
|
|
1779
|
+
messages,
|
|
1762
1780
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1763
1781
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1764
1782
|
isCurrentMessage,
|
|
@@ -1780,6 +1798,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1780
1798
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1781
1799
|
var LegacyRenderMessage = ({
|
|
1782
1800
|
message,
|
|
1801
|
+
messages,
|
|
1783
1802
|
inProgress,
|
|
1784
1803
|
index,
|
|
1785
1804
|
isCurrentMessage,
|
|
@@ -1808,6 +1827,7 @@ var LegacyRenderMessage = ({
|
|
|
1808
1827
|
RenderTextMessage,
|
|
1809
1828
|
{
|
|
1810
1829
|
message,
|
|
1830
|
+
messages,
|
|
1811
1831
|
inProgress,
|
|
1812
1832
|
index,
|
|
1813
1833
|
isCurrentMessage,
|
|
@@ -1825,6 +1845,7 @@ var LegacyRenderMessage = ({
|
|
|
1825
1845
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1826
1846
|
RenderActionExecutionMessage,
|
|
1827
1847
|
{
|
|
1848
|
+
messages,
|
|
1828
1849
|
message,
|
|
1829
1850
|
inProgress,
|
|
1830
1851
|
index,
|
|
@@ -1839,6 +1860,7 @@ var LegacyRenderMessage = ({
|
|
|
1839
1860
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1840
1861
|
RenderAgentStateMessage,
|
|
1841
1862
|
{
|
|
1863
|
+
messages,
|
|
1842
1864
|
message,
|
|
1843
1865
|
inProgress,
|
|
1844
1866
|
index,
|
|
@@ -1852,6 +1874,7 @@ var LegacyRenderMessage = ({
|
|
|
1852
1874
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1853
1875
|
RenderResultMessage,
|
|
1854
1876
|
{
|
|
1877
|
+
messages,
|
|
1855
1878
|
message,
|
|
1856
1879
|
inProgress,
|
|
1857
1880
|
index,
|
|
@@ -1865,6 +1888,7 @@ var LegacyRenderMessage = ({
|
|
|
1865
1888
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1866
1889
|
RenderImageMessage,
|
|
1867
1890
|
{
|
|
1891
|
+
messages,
|
|
1868
1892
|
message,
|
|
1869
1893
|
inProgress,
|
|
1870
1894
|
index,
|
|
@@ -1877,6 +1901,7 @@ var LegacyRenderMessage = ({
|
|
|
1877
1901
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1878
1902
|
RenderMessage,
|
|
1879
1903
|
{
|
|
1904
|
+
messages,
|
|
1880
1905
|
message,
|
|
1881
1906
|
inProgress,
|
|
1882
1907
|
index,
|
|
@@ -1917,7 +1942,8 @@ var Messages = ({
|
|
|
1917
1942
|
RenderResultMessage,
|
|
1918
1943
|
RenderImageMessage
|
|
1919
1944
|
}) => {
|
|
1920
|
-
|
|
1945
|
+
var _a;
|
|
1946
|
+
const { labels, icons } = useChatContext();
|
|
1921
1947
|
const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
|
|
1922
1948
|
const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1923
1949
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1947,6 +1973,7 @@ var Messages = ({
|
|
|
1947
1973
|
]
|
|
1948
1974
|
);
|
|
1949
1975
|
const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
|
|
1976
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
1950
1977
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1951
1978
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1952
1979
|
messages.map((message, index) => {
|
|
@@ -1955,6 +1982,7 @@ var Messages = ({
|
|
|
1955
1982
|
MessageRenderer,
|
|
1956
1983
|
{
|
|
1957
1984
|
message,
|
|
1985
|
+
messages,
|
|
1958
1986
|
inProgress,
|
|
1959
1987
|
index,
|
|
1960
1988
|
isCurrentMessage,
|
|
@@ -1971,6 +1999,7 @@ var Messages = ({
|
|
|
1971
1999
|
index
|
|
1972
2000
|
);
|
|
1973
2001
|
}),
|
|
2002
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
|
|
1974
2003
|
interrupt,
|
|
1975
2004
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1976
2005
|
] }),
|
|
@@ -2264,12 +2293,12 @@ var MAX_NEWLINES = 6;
|
|
|
2264
2293
|
var Input = ({
|
|
2265
2294
|
inProgress,
|
|
2266
2295
|
onSend,
|
|
2267
|
-
|
|
2296
|
+
chatReady = true,
|
|
2268
2297
|
onStop,
|
|
2269
2298
|
onUpload,
|
|
2270
2299
|
hideStopButton = false
|
|
2271
2300
|
}) => {
|
|
2272
|
-
var _a
|
|
2301
|
+
var _a;
|
|
2273
2302
|
const context = useChatContext();
|
|
2274
2303
|
const copilotContext = (0, import_react_core7.useCopilotContext)();
|
|
2275
2304
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -2299,14 +2328,16 @@ var Input = ({
|
|
|
2299
2328
|
inProgress
|
|
2300
2329
|
});
|
|
2301
2330
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
2302
|
-
const buttonIcon
|
|
2331
|
+
const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
|
|
2332
|
+
if (!chatReady)
|
|
2333
|
+
return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
|
|
2334
|
+
return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
|
|
2335
|
+
}, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
|
|
2303
2336
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
2337
|
+
const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
|
|
2304
2338
|
const canSend = (0, import_react14.useMemo)(() => {
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
2308
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
2309
|
-
}, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
|
|
2339
|
+
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
|
|
2340
|
+
}, [interrupt, isInProgress, text, pushToTalkState]);
|
|
2310
2341
|
const canStop = (0, import_react14.useMemo)(() => {
|
|
2311
2342
|
return isInProgress && !hideStopButton;
|
|
2312
2343
|
}, [isInProgress, hideStopButton]);
|
|
@@ -2353,6 +2384,7 @@ var Input = ({
|
|
|
2353
2384
|
"data-copilotkit-in-progress": inProgress,
|
|
2354
2385
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
2355
2386
|
className: "copilotKitInputControlButton",
|
|
2387
|
+
"aria-label": buttonAlt,
|
|
2356
2388
|
children: buttonIcon
|
|
2357
2389
|
}
|
|
2358
2390
|
)
|
|
@@ -2366,8 +2398,6 @@ var Input = ({
|
|
|
2366
2398
|
var import_react15 = __toESM(require("react"));
|
|
2367
2399
|
var import_react_core9 = require("@copilotkit/react-core");
|
|
2368
2400
|
var import_shared3 = require("@copilotkit/shared");
|
|
2369
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2370
|
-
var import_react_core10 = require("@copilotkit/react-core");
|
|
2371
2401
|
|
|
2372
2402
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2373
2403
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
@@ -2471,18 +2501,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
2471
2501
|
|
|
2472
2502
|
// src/components/chat/Suggestions.tsx
|
|
2473
2503
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2474
|
-
function Suggestions({
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2504
|
+
function Suggestions({
|
|
2505
|
+
suggestions,
|
|
2506
|
+
onSuggestionClick,
|
|
2507
|
+
isLoading
|
|
2508
|
+
}) {
|
|
2509
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
|
|
2510
|
+
var _a, _b;
|
|
2511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2512
|
+
Suggestion,
|
|
2513
|
+
{
|
|
2514
|
+
title: suggestion.title,
|
|
2515
|
+
message: suggestion.message,
|
|
2516
|
+
partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
|
|
2517
|
+
className: suggestion.className,
|
|
2518
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
2519
|
+
},
|
|
2520
|
+
index
|
|
2521
|
+
);
|
|
2522
|
+
}) });
|
|
2486
2523
|
}
|
|
2487
2524
|
|
|
2488
2525
|
// src/components/chat/Chat.tsx
|
|
@@ -2682,16 +2719,12 @@ function CopilotChat({
|
|
|
2682
2719
|
sendMessage,
|
|
2683
2720
|
stopGeneration,
|
|
2684
2721
|
reloadMessages,
|
|
2685
|
-
suggestions: currentSuggestions
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
onSubmitMessage,
|
|
2692
|
-
onStopGeneration,
|
|
2693
|
-
onReloadMessages
|
|
2694
|
-
);
|
|
2722
|
+
suggestions: currentSuggestions,
|
|
2723
|
+
isLoadingSuggestions,
|
|
2724
|
+
agent
|
|
2725
|
+
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2726
|
+
suggestions
|
|
2727
|
+
});
|
|
2695
2728
|
const prevIsLoading = (0, import_react15.useRef)(isLoading);
|
|
2696
2729
|
(0, import_react15.useEffect)(() => {
|
|
2697
2730
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2710,7 +2743,11 @@ function CopilotChat({
|
|
|
2710
2743
|
fileInputRef.current.value = "";
|
|
2711
2744
|
}
|
|
2712
2745
|
triggerObservabilityHook("onMessageSent", text);
|
|
2713
|
-
return sendMessage(
|
|
2746
|
+
return sendMessage({
|
|
2747
|
+
id: (0, import_shared3.randomUUID)(),
|
|
2748
|
+
content: text,
|
|
2749
|
+
role: "user"
|
|
2750
|
+
});
|
|
2714
2751
|
};
|
|
2715
2752
|
const chatContext = import_react15.default.useContext(ChatContext);
|
|
2716
2753
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2813,7 +2850,8 @@ function CopilotChat({
|
|
|
2813
2850
|
RenderSuggestionsList,
|
|
2814
2851
|
{
|
|
2815
2852
|
onSuggestionClick: handleSendMessage,
|
|
2816
|
-
suggestions: currentSuggestions
|
|
2853
|
+
suggestions: currentSuggestions,
|
|
2854
|
+
isLoading: isLoadingSuggestions
|
|
2817
2855
|
}
|
|
2818
2856
|
)
|
|
2819
2857
|
}
|
|
@@ -2836,6 +2874,7 @@ function CopilotChat({
|
|
|
2836
2874
|
Input2,
|
|
2837
2875
|
{
|
|
2838
2876
|
inProgress: isLoading,
|
|
2877
|
+
chatReady: Boolean(agent),
|
|
2839
2878
|
onSend: handleSendMessage,
|
|
2840
2879
|
isVisible,
|
|
2841
2880
|
onStop: stopGeneration,
|
|
@@ -2861,243 +2900,10 @@ function WrappedCopilotChat({
|
|
|
2861
2900
|
}
|
|
2862
2901
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
|
|
2863
2902
|
}
|
|
2864
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2865
|
-
var _a;
|
|
2866
|
-
const {
|
|
2867
|
-
messages,
|
|
2868
|
-
sendMessage,
|
|
2869
|
-
setMessages,
|
|
2870
|
-
reloadMessages: defaultReloadMessages,
|
|
2871
|
-
stopGeneration: defaultStopGeneration,
|
|
2872
|
-
runChatCompletion,
|
|
2873
|
-
isLoading,
|
|
2874
|
-
suggestions,
|
|
2875
|
-
setSuggestions,
|
|
2876
|
-
generateSuggestions,
|
|
2877
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2878
|
-
isLoadingSuggestions
|
|
2879
|
-
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2880
|
-
makeSystemMessage,
|
|
2881
|
-
disableSystemMessage
|
|
2882
|
-
});
|
|
2883
|
-
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2884
|
-
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2885
|
-
const { actions } = generalContext;
|
|
2886
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
|
|
2887
|
-
const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
|
|
2888
|
-
(0, import_react15.useEffect)(() => {
|
|
2889
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2890
|
-
setSuggestions(chatSuggestions);
|
|
2891
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2892
|
-
}
|
|
2893
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2894
|
-
const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
|
|
2895
|
-
(context) => __async(void 0, null, function* () {
|
|
2896
|
-
try {
|
|
2897
|
-
yield generateSuggestions();
|
|
2898
|
-
} catch (error) {
|
|
2899
|
-
console.error("Failed to generate suggestions:", error);
|
|
2900
|
-
setSuggestionsFailed(true);
|
|
2901
|
-
}
|
|
2902
|
-
}),
|
|
2903
|
-
[generateSuggestions]
|
|
2904
|
-
);
|
|
2905
|
-
(0, import_react15.useEffect)(() => {
|
|
2906
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2907
|
-
return;
|
|
2908
|
-
}
|
|
2909
|
-
if (isLoading) {
|
|
2910
|
-
return;
|
|
2911
|
-
}
|
|
2912
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2913
|
-
return;
|
|
2914
|
-
}
|
|
2915
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2916
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2917
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2918
|
-
return;
|
|
2919
|
-
}
|
|
2920
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2921
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2922
|
-
return;
|
|
2923
|
-
}
|
|
2924
|
-
}, [
|
|
2925
|
-
chatSuggestions,
|
|
2926
|
-
isLoadingSuggestions,
|
|
2927
|
-
suggestionsFailed,
|
|
2928
|
-
messages.length,
|
|
2929
|
-
isLoading,
|
|
2930
|
-
suggestions.length,
|
|
2931
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2932
|
-
// Use stable string instead of object reference
|
|
2933
|
-
generateSuggestionsWithErrorHandling
|
|
2934
|
-
]);
|
|
2935
|
-
(0, import_react15.useEffect)(() => {
|
|
2936
|
-
if (chatSuggestions !== "auto") {
|
|
2937
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2938
|
-
setSuggestionsFailed(false);
|
|
2939
|
-
}
|
|
2940
|
-
}, [chatSuggestions]);
|
|
2941
|
-
const stableContext = (0, import_react15.useMemo)(
|
|
2942
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2943
|
-
[
|
|
2944
|
-
// Only include stable dependencies
|
|
2945
|
-
generalContext.actions,
|
|
2946
|
-
messagesContext.messages.length,
|
|
2947
|
-
generalContext.isLoading
|
|
2948
|
-
]
|
|
2949
|
-
);
|
|
2950
|
-
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2951
|
-
resetSuggestionsFromHook();
|
|
2952
|
-
setSuggestionsFailed(false);
|
|
2953
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2954
|
-
}, [resetSuggestionsFromHook]);
|
|
2955
|
-
(0, import_react15.useEffect)(() => {
|
|
2956
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2957
|
-
}, [onInProgress, isLoading]);
|
|
2958
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2959
|
-
const images = imagesToUse || [];
|
|
2960
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2961
|
-
setSuggestions([]);
|
|
2962
|
-
}
|
|
2963
|
-
let firstMessage = null;
|
|
2964
|
-
if (messageContent.trim().length > 0) {
|
|
2965
|
-
const textMessage = {
|
|
2966
|
-
id: (0, import_shared4.randomId)(),
|
|
2967
|
-
role: "user",
|
|
2968
|
-
content: messageContent
|
|
2969
|
-
};
|
|
2970
|
-
if (onSubmitMessage) {
|
|
2971
|
-
try {
|
|
2972
|
-
yield onSubmitMessage(messageContent);
|
|
2973
|
-
} catch (error) {
|
|
2974
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
yield sendMessage(textMessage, {
|
|
2978
|
-
followUp: images.length === 0,
|
|
2979
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2980
|
-
});
|
|
2981
|
-
if (!firstMessage) {
|
|
2982
|
-
firstMessage = textMessage;
|
|
2983
|
-
}
|
|
2984
|
-
}
|
|
2985
|
-
if (images.length > 0) {
|
|
2986
|
-
for (let i = 0; i < images.length; i++) {
|
|
2987
|
-
const imageMessage = {
|
|
2988
|
-
id: (0, import_shared4.randomId)(),
|
|
2989
|
-
role: "user",
|
|
2990
|
-
image: {
|
|
2991
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2992
|
-
bytes: images[i].bytes
|
|
2993
|
-
}
|
|
2994
|
-
};
|
|
2995
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2996
|
-
if (!firstMessage) {
|
|
2997
|
-
firstMessage = imageMessage;
|
|
2998
|
-
}
|
|
2999
|
-
}
|
|
3000
|
-
}
|
|
3001
|
-
if (!firstMessage) {
|
|
3002
|
-
return { role: "user", content: "", id: (0, import_shared4.randomId)() };
|
|
3003
|
-
}
|
|
3004
|
-
return firstMessage;
|
|
3005
|
-
});
|
|
3006
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
3007
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3008
|
-
if (generalContext.agentSession) {
|
|
3009
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
3010
|
-
nodeName: void 0,
|
|
3011
|
-
threadId: void 0
|
|
3012
|
-
}));
|
|
3013
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3014
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3015
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
3016
|
-
threadId: void 0,
|
|
3017
|
-
nodeName: void 0,
|
|
3018
|
-
runId: void 0
|
|
3019
|
-
})
|
|
3020
|
-
});
|
|
3021
|
-
});
|
|
3022
|
-
}
|
|
3023
|
-
});
|
|
3024
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3025
|
-
if (generalContext.agentSession) {
|
|
3026
|
-
yield (0, import_react_core10.runAgent)(
|
|
3027
|
-
generalContext.agentSession.agentName,
|
|
3028
|
-
stableContext,
|
|
3029
|
-
messagesContext.messages,
|
|
3030
|
-
sendMessage,
|
|
3031
|
-
runChatCompletion
|
|
3032
|
-
);
|
|
3033
|
-
}
|
|
3034
|
-
});
|
|
3035
|
-
const stopCurrentAgent = () => {
|
|
3036
|
-
if (generalContext.agentSession) {
|
|
3037
|
-
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3038
|
-
}
|
|
3039
|
-
};
|
|
3040
|
-
const setCurrentAgentState = (state) => {
|
|
3041
|
-
if (generalContext.agentSession) {
|
|
3042
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3043
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3044
|
-
[generalContext.agentSession.agentName]: {
|
|
3045
|
-
state
|
|
3046
|
-
}
|
|
3047
|
-
});
|
|
3048
|
-
});
|
|
3049
|
-
}
|
|
3050
|
-
};
|
|
3051
|
-
function stopGeneration() {
|
|
3052
|
-
setSuggestions([]);
|
|
3053
|
-
if (onStopGeneration) {
|
|
3054
|
-
onStopGeneration({
|
|
3055
|
-
messages,
|
|
3056
|
-
setMessages,
|
|
3057
|
-
stopGeneration: defaultStopGeneration,
|
|
3058
|
-
currentAgentName,
|
|
3059
|
-
restartCurrentAgent,
|
|
3060
|
-
stopCurrentAgent,
|
|
3061
|
-
runCurrentAgent,
|
|
3062
|
-
setCurrentAgentState
|
|
3063
|
-
});
|
|
3064
|
-
} else {
|
|
3065
|
-
defaultStopGeneration();
|
|
3066
|
-
}
|
|
3067
|
-
}
|
|
3068
|
-
function reloadMessages(messageId) {
|
|
3069
|
-
if (onReloadMessages) {
|
|
3070
|
-
onReloadMessages({
|
|
3071
|
-
messages,
|
|
3072
|
-
setMessages,
|
|
3073
|
-
stopGeneration: defaultStopGeneration,
|
|
3074
|
-
currentAgentName,
|
|
3075
|
-
restartCurrentAgent,
|
|
3076
|
-
stopCurrentAgent,
|
|
3077
|
-
runCurrentAgent,
|
|
3078
|
-
setCurrentAgentState,
|
|
3079
|
-
messageId
|
|
3080
|
-
});
|
|
3081
|
-
} else {
|
|
3082
|
-
defaultReloadMessages(messageId);
|
|
3083
|
-
}
|
|
3084
|
-
}
|
|
3085
|
-
return {
|
|
3086
|
-
messages,
|
|
3087
|
-
isLoading,
|
|
3088
|
-
suggestions,
|
|
3089
|
-
sendMessage: safelySendMessage,
|
|
3090
|
-
stopGeneration,
|
|
3091
|
-
reloadMessages,
|
|
3092
|
-
resetSuggestions,
|
|
3093
|
-
context: stableContext,
|
|
3094
|
-
actions
|
|
3095
|
-
};
|
|
3096
|
-
};
|
|
3097
2903
|
|
|
3098
2904
|
// src/components/chat/Modal.tsx
|
|
3099
|
-
var
|
|
3100
|
-
var
|
|
2905
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2906
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
3101
2907
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3102
2908
|
var CopilotModalInner = (_a) => {
|
|
3103
2909
|
var _b = _a, {
|
|
@@ -3123,7 +2929,7 @@ var CopilotModalInner = (_a) => {
|
|
|
3123
2929
|
"Button",
|
|
3124
2930
|
"Header"
|
|
3125
2931
|
]);
|
|
3126
|
-
const { copilotApiConfig, setBannerError } = (0,
|
|
2932
|
+
const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
|
|
3127
2933
|
const { publicApiKey } = copilotApiConfig;
|
|
3128
2934
|
const triggerObservabilityHook = (0, import_react16.useCallback)(
|
|
3129
2935
|
(hookName, ...args) => {
|
|
@@ -3132,14 +2938,14 @@ var CopilotModalInner = (_a) => {
|
|
|
3132
2938
|
}
|
|
3133
2939
|
if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
|
|
3134
2940
|
setBannerError(
|
|
3135
|
-
new
|
|
2941
|
+
new import_shared4.CopilotKitError({
|
|
3136
2942
|
message: "observabilityHooks requires a publicApiKey to function.",
|
|
3137
|
-
code:
|
|
3138
|
-
severity:
|
|
3139
|
-
visibility:
|
|
2943
|
+
code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
2944
|
+
severity: import_shared4.Severity.CRITICAL,
|
|
2945
|
+
visibility: import_shared4.ErrorVisibility.BANNER
|
|
3140
2946
|
})
|
|
3141
2947
|
);
|
|
3142
|
-
|
|
2948
|
+
import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
|
|
3143
2949
|
}
|
|
3144
2950
|
},
|
|
3145
2951
|
[publicApiKey, observabilityHooks, setBannerError]
|
|
@@ -3300,31 +3106,9 @@ function CopilotSidebar(props) {
|
|
|
3300
3106
|
}
|
|
3301
3107
|
|
|
3302
3108
|
// src/hooks/use-copilot-chat-suggestions.tsx
|
|
3303
|
-
var
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
function useCopilotChatSuggestions({
|
|
3307
|
-
available = "enabled",
|
|
3308
|
-
instructions,
|
|
3309
|
-
className,
|
|
3310
|
-
minSuggestions = 1,
|
|
3311
|
-
maxSuggestions = 3
|
|
3312
|
-
}, dependencies = []) {
|
|
3313
|
-
const context = (0, import_react_core12.useCopilotContext)();
|
|
3314
|
-
(0, import_react18.useEffect)(() => {
|
|
3315
|
-
if (available === "disabled")
|
|
3316
|
-
return;
|
|
3317
|
-
const id = (0, import_shared6.randomId)();
|
|
3318
|
-
context.addChatSuggestionConfiguration(id, {
|
|
3319
|
-
instructions,
|
|
3320
|
-
minSuggestions,
|
|
3321
|
-
maxSuggestions,
|
|
3322
|
-
className
|
|
3323
|
-
});
|
|
3324
|
-
return () => {
|
|
3325
|
-
context.removeChatSuggestionConfiguration(id);
|
|
3326
|
-
};
|
|
3327
|
-
}, [...dependencies, instructions, minSuggestions, maxSuggestions, className, available]);
|
|
3109
|
+
var import_react_core11 = require("@copilotkit/react-core");
|
|
3110
|
+
function useCopilotChatSuggestions(config, dependencies = []) {
|
|
3111
|
+
(0, import_react_core11.useConfigureChatSuggestions)(config, dependencies);
|
|
3328
3112
|
}
|
|
3329
3113
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3330
3114
|
0 && (module.exports = {
|