@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
|
@@ -1028,14 +1028,30 @@ var import_react_core5 = require("@copilotkit/react-core");
|
|
|
1028
1028
|
|
|
1029
1029
|
// src/components/chat/messages/UserMessage.tsx
|
|
1030
1030
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1031
|
+
var getTextContent = (content) => {
|
|
1032
|
+
if (typeof content === "undefined") {
|
|
1033
|
+
return void 0;
|
|
1034
|
+
}
|
|
1035
|
+
if (typeof content === "string") {
|
|
1036
|
+
return content;
|
|
1037
|
+
}
|
|
1038
|
+
return content.map((part) => {
|
|
1039
|
+
if (part.type === "text") {
|
|
1040
|
+
return part.text;
|
|
1041
|
+
}
|
|
1042
|
+
return void 0;
|
|
1043
|
+
}).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
|
|
1044
|
+
};
|
|
1031
1045
|
var UserMessage = (props) => {
|
|
1032
1046
|
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1033
|
-
const isImageMessage = message && "image" in message && message.image;
|
|
1047
|
+
const isImageMessage = message && "image" in message && Boolean(message.image);
|
|
1034
1048
|
if (isImageMessage) {
|
|
1035
1049
|
const imageMessage = message;
|
|
1036
|
-
|
|
1050
|
+
const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
|
|
1051
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
|
|
1037
1052
|
}
|
|
1038
|
-
|
|
1053
|
+
const content = getTextContent(message == null ? void 0 : message.content);
|
|
1054
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
|
|
1039
1055
|
};
|
|
1040
1056
|
|
|
1041
1057
|
// src/components/chat/Markdown.tsx
|
|
@@ -1714,6 +1730,7 @@ function RenderMessage(_a) {
|
|
|
1714
1730
|
var _a2;
|
|
1715
1731
|
const {
|
|
1716
1732
|
message,
|
|
1733
|
+
messages,
|
|
1717
1734
|
inProgress,
|
|
1718
1735
|
index,
|
|
1719
1736
|
isCurrentMessage,
|
|
@@ -1744,6 +1761,7 @@ function RenderMessage(_a) {
|
|
|
1744
1761
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1745
1762
|
rawData: message,
|
|
1746
1763
|
message,
|
|
1764
|
+
messages,
|
|
1747
1765
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1748
1766
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1749
1767
|
isCurrentMessage,
|
|
@@ -1765,6 +1783,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1765
1783
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1766
1784
|
var LegacyRenderMessage = ({
|
|
1767
1785
|
message,
|
|
1786
|
+
messages,
|
|
1768
1787
|
inProgress,
|
|
1769
1788
|
index,
|
|
1770
1789
|
isCurrentMessage,
|
|
@@ -1793,6 +1812,7 @@ var LegacyRenderMessage = ({
|
|
|
1793
1812
|
RenderTextMessage,
|
|
1794
1813
|
{
|
|
1795
1814
|
message,
|
|
1815
|
+
messages,
|
|
1796
1816
|
inProgress,
|
|
1797
1817
|
index,
|
|
1798
1818
|
isCurrentMessage,
|
|
@@ -1810,6 +1830,7 @@ var LegacyRenderMessage = ({
|
|
|
1810
1830
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1811
1831
|
RenderActionExecutionMessage,
|
|
1812
1832
|
{
|
|
1833
|
+
messages,
|
|
1813
1834
|
message,
|
|
1814
1835
|
inProgress,
|
|
1815
1836
|
index,
|
|
@@ -1824,6 +1845,7 @@ var LegacyRenderMessage = ({
|
|
|
1824
1845
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1825
1846
|
RenderAgentStateMessage,
|
|
1826
1847
|
{
|
|
1848
|
+
messages,
|
|
1827
1849
|
message,
|
|
1828
1850
|
inProgress,
|
|
1829
1851
|
index,
|
|
@@ -1837,6 +1859,7 @@ var LegacyRenderMessage = ({
|
|
|
1837
1859
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1838
1860
|
RenderResultMessage,
|
|
1839
1861
|
{
|
|
1862
|
+
messages,
|
|
1840
1863
|
message,
|
|
1841
1864
|
inProgress,
|
|
1842
1865
|
index,
|
|
@@ -1850,6 +1873,7 @@ var LegacyRenderMessage = ({
|
|
|
1850
1873
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1851
1874
|
RenderImageMessage,
|
|
1852
1875
|
{
|
|
1876
|
+
messages,
|
|
1853
1877
|
message,
|
|
1854
1878
|
inProgress,
|
|
1855
1879
|
index,
|
|
@@ -1862,6 +1886,7 @@ var LegacyRenderMessage = ({
|
|
|
1862
1886
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1863
1887
|
RenderMessage,
|
|
1864
1888
|
{
|
|
1889
|
+
messages,
|
|
1865
1890
|
message,
|
|
1866
1891
|
inProgress,
|
|
1867
1892
|
index,
|
|
@@ -1902,7 +1927,8 @@ var Messages = ({
|
|
|
1902
1927
|
RenderResultMessage,
|
|
1903
1928
|
RenderImageMessage
|
|
1904
1929
|
}) => {
|
|
1905
|
-
|
|
1930
|
+
var _a;
|
|
1931
|
+
const { labels, icons } = useChatContext();
|
|
1906
1932
|
const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
|
|
1907
1933
|
const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1908
1934
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1932,6 +1958,7 @@ var Messages = ({
|
|
|
1932
1958
|
]
|
|
1933
1959
|
);
|
|
1934
1960
|
const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
|
|
1961
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
1935
1962
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1936
1963
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1937
1964
|
messages.map((message, index) => {
|
|
@@ -1940,6 +1967,7 @@ var Messages = ({
|
|
|
1940
1967
|
MessageRenderer,
|
|
1941
1968
|
{
|
|
1942
1969
|
message,
|
|
1970
|
+
messages,
|
|
1943
1971
|
inProgress,
|
|
1944
1972
|
index,
|
|
1945
1973
|
isCurrentMessage,
|
|
@@ -1956,6 +1984,7 @@ var Messages = ({
|
|
|
1956
1984
|
index
|
|
1957
1985
|
);
|
|
1958
1986
|
}),
|
|
1987
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
|
|
1959
1988
|
interrupt,
|
|
1960
1989
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1961
1990
|
] }),
|
|
@@ -2249,12 +2278,12 @@ var MAX_NEWLINES = 6;
|
|
|
2249
2278
|
var Input = ({
|
|
2250
2279
|
inProgress,
|
|
2251
2280
|
onSend,
|
|
2252
|
-
|
|
2281
|
+
chatReady = true,
|
|
2253
2282
|
onStop,
|
|
2254
2283
|
onUpload,
|
|
2255
2284
|
hideStopButton = false
|
|
2256
2285
|
}) => {
|
|
2257
|
-
var _a
|
|
2286
|
+
var _a;
|
|
2258
2287
|
const context = useChatContext();
|
|
2259
2288
|
const copilotContext = (0, import_react_core7.useCopilotContext)();
|
|
2260
2289
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -2284,14 +2313,16 @@ var Input = ({
|
|
|
2284
2313
|
inProgress
|
|
2285
2314
|
});
|
|
2286
2315
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
2287
|
-
const buttonIcon
|
|
2316
|
+
const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
|
|
2317
|
+
if (!chatReady)
|
|
2318
|
+
return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
|
|
2319
|
+
return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
|
|
2320
|
+
}, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
|
|
2288
2321
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
2322
|
+
const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
|
|
2289
2323
|
const canSend = (0, import_react14.useMemo)(() => {
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
2293
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
2294
|
-
}, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
|
|
2324
|
+
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
|
|
2325
|
+
}, [interrupt, isInProgress, text, pushToTalkState]);
|
|
2295
2326
|
const canStop = (0, import_react14.useMemo)(() => {
|
|
2296
2327
|
return isInProgress && !hideStopButton;
|
|
2297
2328
|
}, [isInProgress, hideStopButton]);
|
|
@@ -2338,6 +2369,7 @@ var Input = ({
|
|
|
2338
2369
|
"data-copilotkit-in-progress": inProgress,
|
|
2339
2370
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
2340
2371
|
className: "copilotKitInputControlButton",
|
|
2372
|
+
"aria-label": buttonAlt,
|
|
2341
2373
|
children: buttonIcon
|
|
2342
2374
|
}
|
|
2343
2375
|
)
|
|
@@ -2351,8 +2383,6 @@ var Input = ({
|
|
|
2351
2383
|
var import_react15 = __toESM(require("react"));
|
|
2352
2384
|
var import_react_core9 = require("@copilotkit/react-core");
|
|
2353
2385
|
var import_shared3 = require("@copilotkit/shared");
|
|
2354
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2355
|
-
var import_react_core10 = require("@copilotkit/react-core");
|
|
2356
2386
|
|
|
2357
2387
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2358
2388
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
@@ -2456,18 +2486,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
2456
2486
|
|
|
2457
2487
|
// src/components/chat/Suggestions.tsx
|
|
2458
2488
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2459
|
-
function Suggestions({
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2489
|
+
function Suggestions({
|
|
2490
|
+
suggestions,
|
|
2491
|
+
onSuggestionClick,
|
|
2492
|
+
isLoading
|
|
2493
|
+
}) {
|
|
2494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
|
|
2495
|
+
var _a, _b;
|
|
2496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2497
|
+
Suggestion,
|
|
2498
|
+
{
|
|
2499
|
+
title: suggestion.title,
|
|
2500
|
+
message: suggestion.message,
|
|
2501
|
+
partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
|
|
2502
|
+
className: suggestion.className,
|
|
2503
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
2504
|
+
},
|
|
2505
|
+
index
|
|
2506
|
+
);
|
|
2507
|
+
}) });
|
|
2471
2508
|
}
|
|
2472
2509
|
|
|
2473
2510
|
// src/components/chat/Chat.tsx
|
|
@@ -2667,16 +2704,12 @@ function CopilotChat({
|
|
|
2667
2704
|
sendMessage,
|
|
2668
2705
|
stopGeneration,
|
|
2669
2706
|
reloadMessages,
|
|
2670
|
-
suggestions: currentSuggestions
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
onSubmitMessage,
|
|
2677
|
-
onStopGeneration,
|
|
2678
|
-
onReloadMessages
|
|
2679
|
-
);
|
|
2707
|
+
suggestions: currentSuggestions,
|
|
2708
|
+
isLoadingSuggestions,
|
|
2709
|
+
agent
|
|
2710
|
+
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2711
|
+
suggestions
|
|
2712
|
+
});
|
|
2680
2713
|
const prevIsLoading = (0, import_react15.useRef)(isLoading);
|
|
2681
2714
|
(0, import_react15.useEffect)(() => {
|
|
2682
2715
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2695,7 +2728,11 @@ function CopilotChat({
|
|
|
2695
2728
|
fileInputRef.current.value = "";
|
|
2696
2729
|
}
|
|
2697
2730
|
triggerObservabilityHook("onMessageSent", text);
|
|
2698
|
-
return sendMessage(
|
|
2731
|
+
return sendMessage({
|
|
2732
|
+
id: (0, import_shared3.randomUUID)(),
|
|
2733
|
+
content: text,
|
|
2734
|
+
role: "user"
|
|
2735
|
+
});
|
|
2699
2736
|
};
|
|
2700
2737
|
const chatContext = import_react15.default.useContext(ChatContext);
|
|
2701
2738
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2798,7 +2835,8 @@ function CopilotChat({
|
|
|
2798
2835
|
RenderSuggestionsList,
|
|
2799
2836
|
{
|
|
2800
2837
|
onSuggestionClick: handleSendMessage,
|
|
2801
|
-
suggestions: currentSuggestions
|
|
2838
|
+
suggestions: currentSuggestions,
|
|
2839
|
+
isLoading: isLoadingSuggestions
|
|
2802
2840
|
}
|
|
2803
2841
|
)
|
|
2804
2842
|
}
|
|
@@ -2821,6 +2859,7 @@ function CopilotChat({
|
|
|
2821
2859
|
Input2,
|
|
2822
2860
|
{
|
|
2823
2861
|
inProgress: isLoading,
|
|
2862
|
+
chatReady: Boolean(agent),
|
|
2824
2863
|
onSend: handleSendMessage,
|
|
2825
2864
|
isVisible,
|
|
2826
2865
|
onStop: stopGeneration,
|
|
@@ -2846,243 +2885,10 @@ function WrappedCopilotChat({
|
|
|
2846
2885
|
}
|
|
2847
2886
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
|
|
2848
2887
|
}
|
|
2849
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2850
|
-
var _a;
|
|
2851
|
-
const {
|
|
2852
|
-
messages,
|
|
2853
|
-
sendMessage,
|
|
2854
|
-
setMessages,
|
|
2855
|
-
reloadMessages: defaultReloadMessages,
|
|
2856
|
-
stopGeneration: defaultStopGeneration,
|
|
2857
|
-
runChatCompletion,
|
|
2858
|
-
isLoading,
|
|
2859
|
-
suggestions,
|
|
2860
|
-
setSuggestions,
|
|
2861
|
-
generateSuggestions,
|
|
2862
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2863
|
-
isLoadingSuggestions
|
|
2864
|
-
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2865
|
-
makeSystemMessage,
|
|
2866
|
-
disableSystemMessage
|
|
2867
|
-
});
|
|
2868
|
-
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2869
|
-
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2870
|
-
const { actions } = generalContext;
|
|
2871
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
|
|
2872
|
-
const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
|
|
2873
|
-
(0, import_react15.useEffect)(() => {
|
|
2874
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2875
|
-
setSuggestions(chatSuggestions);
|
|
2876
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2877
|
-
}
|
|
2878
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2879
|
-
const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
|
|
2880
|
-
(context) => __async(void 0, null, function* () {
|
|
2881
|
-
try {
|
|
2882
|
-
yield generateSuggestions();
|
|
2883
|
-
} catch (error) {
|
|
2884
|
-
console.error("Failed to generate suggestions:", error);
|
|
2885
|
-
setSuggestionsFailed(true);
|
|
2886
|
-
}
|
|
2887
|
-
}),
|
|
2888
|
-
[generateSuggestions]
|
|
2889
|
-
);
|
|
2890
|
-
(0, import_react15.useEffect)(() => {
|
|
2891
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2892
|
-
return;
|
|
2893
|
-
}
|
|
2894
|
-
if (isLoading) {
|
|
2895
|
-
return;
|
|
2896
|
-
}
|
|
2897
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2898
|
-
return;
|
|
2899
|
-
}
|
|
2900
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2901
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2902
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2903
|
-
return;
|
|
2904
|
-
}
|
|
2905
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2906
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2907
|
-
return;
|
|
2908
|
-
}
|
|
2909
|
-
}, [
|
|
2910
|
-
chatSuggestions,
|
|
2911
|
-
isLoadingSuggestions,
|
|
2912
|
-
suggestionsFailed,
|
|
2913
|
-
messages.length,
|
|
2914
|
-
isLoading,
|
|
2915
|
-
suggestions.length,
|
|
2916
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2917
|
-
// Use stable string instead of object reference
|
|
2918
|
-
generateSuggestionsWithErrorHandling
|
|
2919
|
-
]);
|
|
2920
|
-
(0, import_react15.useEffect)(() => {
|
|
2921
|
-
if (chatSuggestions !== "auto") {
|
|
2922
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2923
|
-
setSuggestionsFailed(false);
|
|
2924
|
-
}
|
|
2925
|
-
}, [chatSuggestions]);
|
|
2926
|
-
const stableContext = (0, import_react15.useMemo)(
|
|
2927
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2928
|
-
[
|
|
2929
|
-
// Only include stable dependencies
|
|
2930
|
-
generalContext.actions,
|
|
2931
|
-
messagesContext.messages.length,
|
|
2932
|
-
generalContext.isLoading
|
|
2933
|
-
]
|
|
2934
|
-
);
|
|
2935
|
-
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2936
|
-
resetSuggestionsFromHook();
|
|
2937
|
-
setSuggestionsFailed(false);
|
|
2938
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2939
|
-
}, [resetSuggestionsFromHook]);
|
|
2940
|
-
(0, import_react15.useEffect)(() => {
|
|
2941
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2942
|
-
}, [onInProgress, isLoading]);
|
|
2943
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2944
|
-
const images = imagesToUse || [];
|
|
2945
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2946
|
-
setSuggestions([]);
|
|
2947
|
-
}
|
|
2948
|
-
let firstMessage = null;
|
|
2949
|
-
if (messageContent.trim().length > 0) {
|
|
2950
|
-
const textMessage = {
|
|
2951
|
-
id: (0, import_shared4.randomId)(),
|
|
2952
|
-
role: "user",
|
|
2953
|
-
content: messageContent
|
|
2954
|
-
};
|
|
2955
|
-
if (onSubmitMessage) {
|
|
2956
|
-
try {
|
|
2957
|
-
yield onSubmitMessage(messageContent);
|
|
2958
|
-
} catch (error) {
|
|
2959
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2960
|
-
}
|
|
2961
|
-
}
|
|
2962
|
-
yield sendMessage(textMessage, {
|
|
2963
|
-
followUp: images.length === 0,
|
|
2964
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2965
|
-
});
|
|
2966
|
-
if (!firstMessage) {
|
|
2967
|
-
firstMessage = textMessage;
|
|
2968
|
-
}
|
|
2969
|
-
}
|
|
2970
|
-
if (images.length > 0) {
|
|
2971
|
-
for (let i = 0; i < images.length; i++) {
|
|
2972
|
-
const imageMessage = {
|
|
2973
|
-
id: (0, import_shared4.randomId)(),
|
|
2974
|
-
role: "user",
|
|
2975
|
-
image: {
|
|
2976
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2977
|
-
bytes: images[i].bytes
|
|
2978
|
-
}
|
|
2979
|
-
};
|
|
2980
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2981
|
-
if (!firstMessage) {
|
|
2982
|
-
firstMessage = imageMessage;
|
|
2983
|
-
}
|
|
2984
|
-
}
|
|
2985
|
-
}
|
|
2986
|
-
if (!firstMessage) {
|
|
2987
|
-
return { role: "user", content: "", id: (0, import_shared4.randomId)() };
|
|
2988
|
-
}
|
|
2989
|
-
return firstMessage;
|
|
2990
|
-
});
|
|
2991
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
2992
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2993
|
-
if (generalContext.agentSession) {
|
|
2994
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
2995
|
-
nodeName: void 0,
|
|
2996
|
-
threadId: void 0
|
|
2997
|
-
}));
|
|
2998
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2999
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3000
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
3001
|
-
threadId: void 0,
|
|
3002
|
-
nodeName: void 0,
|
|
3003
|
-
runId: void 0
|
|
3004
|
-
})
|
|
3005
|
-
});
|
|
3006
|
-
});
|
|
3007
|
-
}
|
|
3008
|
-
});
|
|
3009
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
3010
|
-
if (generalContext.agentSession) {
|
|
3011
|
-
yield (0, import_react_core10.runAgent)(
|
|
3012
|
-
generalContext.agentSession.agentName,
|
|
3013
|
-
stableContext,
|
|
3014
|
-
messagesContext.messages,
|
|
3015
|
-
sendMessage,
|
|
3016
|
-
runChatCompletion
|
|
3017
|
-
);
|
|
3018
|
-
}
|
|
3019
|
-
});
|
|
3020
|
-
const stopCurrentAgent = () => {
|
|
3021
|
-
if (generalContext.agentSession) {
|
|
3022
|
-
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3023
|
-
}
|
|
3024
|
-
};
|
|
3025
|
-
const setCurrentAgentState = (state) => {
|
|
3026
|
-
if (generalContext.agentSession) {
|
|
3027
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3028
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3029
|
-
[generalContext.agentSession.agentName]: {
|
|
3030
|
-
state
|
|
3031
|
-
}
|
|
3032
|
-
});
|
|
3033
|
-
});
|
|
3034
|
-
}
|
|
3035
|
-
};
|
|
3036
|
-
function stopGeneration() {
|
|
3037
|
-
setSuggestions([]);
|
|
3038
|
-
if (onStopGeneration) {
|
|
3039
|
-
onStopGeneration({
|
|
3040
|
-
messages,
|
|
3041
|
-
setMessages,
|
|
3042
|
-
stopGeneration: defaultStopGeneration,
|
|
3043
|
-
currentAgentName,
|
|
3044
|
-
restartCurrentAgent,
|
|
3045
|
-
stopCurrentAgent,
|
|
3046
|
-
runCurrentAgent,
|
|
3047
|
-
setCurrentAgentState
|
|
3048
|
-
});
|
|
3049
|
-
} else {
|
|
3050
|
-
defaultStopGeneration();
|
|
3051
|
-
}
|
|
3052
|
-
}
|
|
3053
|
-
function reloadMessages(messageId) {
|
|
3054
|
-
if (onReloadMessages) {
|
|
3055
|
-
onReloadMessages({
|
|
3056
|
-
messages,
|
|
3057
|
-
setMessages,
|
|
3058
|
-
stopGeneration: defaultStopGeneration,
|
|
3059
|
-
currentAgentName,
|
|
3060
|
-
restartCurrentAgent,
|
|
3061
|
-
stopCurrentAgent,
|
|
3062
|
-
runCurrentAgent,
|
|
3063
|
-
setCurrentAgentState,
|
|
3064
|
-
messageId
|
|
3065
|
-
});
|
|
3066
|
-
} else {
|
|
3067
|
-
defaultReloadMessages(messageId);
|
|
3068
|
-
}
|
|
3069
|
-
}
|
|
3070
|
-
return {
|
|
3071
|
-
messages,
|
|
3072
|
-
isLoading,
|
|
3073
|
-
suggestions,
|
|
3074
|
-
sendMessage: safelySendMessage,
|
|
3075
|
-
stopGeneration,
|
|
3076
|
-
reloadMessages,
|
|
3077
|
-
resetSuggestions,
|
|
3078
|
-
context: stableContext,
|
|
3079
|
-
actions
|
|
3080
|
-
};
|
|
3081
|
-
};
|
|
3082
2888
|
|
|
3083
2889
|
// src/components/chat/Modal.tsx
|
|
3084
|
-
var
|
|
3085
|
-
var
|
|
2890
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2891
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
3086
2892
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3087
2893
|
var CopilotModalInner = (_a) => {
|
|
3088
2894
|
var _b = _a, {
|
|
@@ -3108,7 +2914,7 @@ var CopilotModalInner = (_a) => {
|
|
|
3108
2914
|
"Button",
|
|
3109
2915
|
"Header"
|
|
3110
2916
|
]);
|
|
3111
|
-
const { copilotApiConfig, setBannerError } = (0,
|
|
2917
|
+
const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
|
|
3112
2918
|
const { publicApiKey } = copilotApiConfig;
|
|
3113
2919
|
const triggerObservabilityHook = (0, import_react16.useCallback)(
|
|
3114
2920
|
(hookName, ...args) => {
|
|
@@ -3117,14 +2923,14 @@ var CopilotModalInner = (_a) => {
|
|
|
3117
2923
|
}
|
|
3118
2924
|
if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
|
|
3119
2925
|
setBannerError(
|
|
3120
|
-
new
|
|
2926
|
+
new import_shared4.CopilotKitError({
|
|
3121
2927
|
message: "observabilityHooks requires a publicApiKey to function.",
|
|
3122
|
-
code:
|
|
3123
|
-
severity:
|
|
3124
|
-
visibility:
|
|
2928
|
+
code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
2929
|
+
severity: import_shared4.Severity.CRITICAL,
|
|
2930
|
+
visibility: import_shared4.ErrorVisibility.BANNER
|
|
3125
2931
|
})
|
|
3126
2932
|
);
|
|
3127
|
-
|
|
2933
|
+
import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
|
|
3128
2934
|
}
|
|
3129
2935
|
},
|
|
3130
2936
|
[publicApiKey, observabilityHooks, setBannerError]
|