@copilotkit/react-ui 1.10.6 → 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/dist/{chunk-H5Y4W7DM.mjs → chunk-3JYVJHL5.mjs} +6 -6
- package/dist/chunk-3YWFGNSM.mjs +32 -0
- package/dist/chunk-3YWFGNSM.mjs.map +1 -0
- package/dist/{chunk-BAD2NFZ7.mjs → chunk-CQ2WALZ7.mjs} +2 -2
- package/dist/{chunk-W7ONZTSW.mjs → chunk-E6WVAOQA.mjs} +11 -5
- package/dist/chunk-E6WVAOQA.mjs.map +1 -0
- package/dist/{chunk-ME2WM7IP.mjs → chunk-G35HUUDA.mjs} +36 -260
- package/dist/chunk-G35HUUDA.mjs.map +1 -0
- package/dist/{chunk-EZQA3UPQ.mjs → chunk-HBZW7E5Z.mjs} +16 -13
- package/dist/chunk-HBZW7E5Z.mjs.map +1 -0
- package/dist/{chunk-3QYTKBWC.mjs → chunk-IHFR6PYG.mjs} +8 -5
- package/dist/chunk-IHFR6PYG.mjs.map +1 -0
- package/dist/{chunk-5XLGXUQI.mjs → chunk-MPF6BJUF.mjs} +7 -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-2LIO4Z3E.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-7RDGZ5JL.mjs → chunk-SOB5EIL7.mjs} +2 -2
- package/dist/components/chat/Chat.d.ts +3 -98
- package/dist/components/chat/Chat.js +100 -279
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +12 -14
- 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 +2 -2
- package/dist/components/chat/Messages.d.ts +4 -4
- package/dist/components/chat/Messages.js +44 -8
- 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 +106 -283
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +11 -11
- package/dist/components/chat/Popup.d.ts +1 -6
- package/dist/components/chat/Popup.js +106 -283
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +12 -12
- package/dist/components/chat/Sidebar.d.ts +1 -6
- package/dist/components/chat/Sidebar.js +106 -283
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +12 -12
- 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 +106 -283
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +13 -13
- package/dist/components/chat/messages/AssistantMessage.js +7 -4
- 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 +37 -7
- 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 +30 -7
- 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 +16 -0
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/index.d.ts +0 -5
- package/dist/components/index.js +106 -283
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +13 -13
- 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 +8 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +109 -308
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -14
- 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 +40 -325
- package/src/components/chat/Input.tsx +13 -12
- package/src/components/chat/Messages.tsx +10 -4
- package/src/components/chat/Suggestion.tsx +2 -2
- package/src/components/chat/Suggestions.tsx +6 -2
- package/src/components/chat/messages/AssistantMessage.tsx +14 -4
- package/src/components/chat/messages/LegacyRenderMessage.tsx +7 -0
- package/src/components/chat/messages/RenderMessage.tsx +4 -0
- package/src/components/chat/messages/UserMessage.tsx +30 -6
- package/src/components/chat/props.ts +19 -0
- package/src/css/messages.css +10 -1
- 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-2LIO4Z3E.mjs.map +0 -1
- package/dist/chunk-3QYTKBWC.mjs.map +0 -1
- package/dist/chunk-5XLGXUQI.mjs.map +0 -1
- package/dist/chunk-EYRKZDP5.mjs +0 -32
- package/dist/chunk-EYRKZDP5.mjs.map +0 -1
- package/dist/chunk-EZQA3UPQ.mjs.map +0 -1
- package/dist/chunk-ME2WM7IP.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-W7ONZTSW.mjs.map +0 -1
- /package/dist/{chunk-H5Y4W7DM.mjs.map → chunk-3JYVJHL5.mjs.map} +0 -0
- /package/dist/{chunk-BAD2NFZ7.mjs.map → chunk-CQ2WALZ7.mjs.map} +0 -0
- /package/dist/{chunk-7RDGZ5JL.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
|
|
@@ -1578,6 +1594,7 @@ var AssistantMessage = (props) => {
|
|
|
1578
1594
|
onThumbsUp,
|
|
1579
1595
|
onThumbsDown,
|
|
1580
1596
|
isCurrentMessage,
|
|
1597
|
+
feedback,
|
|
1581
1598
|
markdownTagRenderers
|
|
1582
1599
|
} = props;
|
|
1583
1600
|
const [copied, setCopied] = (0, import_react8.useState)(false);
|
|
@@ -1599,12 +1616,14 @@ var AssistantMessage = (props) => {
|
|
|
1599
1616
|
onRegenerate();
|
|
1600
1617
|
};
|
|
1601
1618
|
const handleThumbsUp = () => {
|
|
1602
|
-
if (onThumbsUp && message)
|
|
1619
|
+
if (onThumbsUp && message) {
|
|
1603
1620
|
onThumbsUp(message);
|
|
1621
|
+
}
|
|
1604
1622
|
};
|
|
1605
1623
|
const handleThumbsDown = () => {
|
|
1606
|
-
if (onThumbsDown && message)
|
|
1624
|
+
if (onThumbsDown && message) {
|
|
1607
1625
|
onThumbsDown(message);
|
|
1626
|
+
}
|
|
1608
1627
|
};
|
|
1609
1628
|
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: icons.activityIcon });
|
|
1610
1629
|
const content = (message == null ? void 0 : message.content) || "";
|
|
@@ -1640,7 +1659,7 @@ var AssistantMessage = (props) => {
|
|
|
1640
1659
|
onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1641
1660
|
"button",
|
|
1642
1661
|
{
|
|
1643
|
-
className:
|
|
1662
|
+
className: `copilotKitMessageControlButton ${feedback === "thumbsUp" ? "active" : ""}`,
|
|
1644
1663
|
onClick: handleThumbsUp,
|
|
1645
1664
|
"aria-label": labels.thumbsUp,
|
|
1646
1665
|
title: labels.thumbsUp,
|
|
@@ -1650,7 +1669,7 @@ var AssistantMessage = (props) => {
|
|
|
1650
1669
|
onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1651
1670
|
"button",
|
|
1652
1671
|
{
|
|
1653
|
-
className:
|
|
1672
|
+
className: `copilotKitMessageControlButton ${feedback === "thumbsDown" ? "active" : ""}`,
|
|
1654
1673
|
onClick: handleThumbsDown,
|
|
1655
1674
|
"aria-label": labels.thumbsDown,
|
|
1656
1675
|
title: labels.thumbsDown,
|
|
@@ -1711,6 +1730,7 @@ function RenderMessage(_a) {
|
|
|
1711
1730
|
var _a2;
|
|
1712
1731
|
const {
|
|
1713
1732
|
message,
|
|
1733
|
+
messages,
|
|
1714
1734
|
inProgress,
|
|
1715
1735
|
index,
|
|
1716
1736
|
isCurrentMessage,
|
|
@@ -1718,6 +1738,7 @@ function RenderMessage(_a) {
|
|
|
1718
1738
|
onCopy,
|
|
1719
1739
|
onThumbsUp,
|
|
1720
1740
|
onThumbsDown,
|
|
1741
|
+
messageFeedback,
|
|
1721
1742
|
markdownTagRenderers
|
|
1722
1743
|
} = props;
|
|
1723
1744
|
switch (message.role) {
|
|
@@ -1740,6 +1761,7 @@ function RenderMessage(_a) {
|
|
|
1740
1761
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1741
1762
|
rawData: message,
|
|
1742
1763
|
message,
|
|
1764
|
+
messages,
|
|
1743
1765
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1744
1766
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1745
1767
|
isCurrentMessage,
|
|
@@ -1747,6 +1769,7 @@ function RenderMessage(_a) {
|
|
|
1747
1769
|
onCopy,
|
|
1748
1770
|
onThumbsUp,
|
|
1749
1771
|
onThumbsDown,
|
|
1772
|
+
feedback: (messageFeedback == null ? void 0 : messageFeedback[message.id]) || null,
|
|
1750
1773
|
markdownTagRenderers,
|
|
1751
1774
|
ImageRenderer: ImageRenderer2
|
|
1752
1775
|
},
|
|
@@ -1760,6 +1783,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1760
1783
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1761
1784
|
var LegacyRenderMessage = ({
|
|
1762
1785
|
message,
|
|
1786
|
+
messages,
|
|
1763
1787
|
inProgress,
|
|
1764
1788
|
index,
|
|
1765
1789
|
isCurrentMessage,
|
|
@@ -1788,6 +1812,7 @@ var LegacyRenderMessage = ({
|
|
|
1788
1812
|
RenderTextMessage,
|
|
1789
1813
|
{
|
|
1790
1814
|
message,
|
|
1815
|
+
messages,
|
|
1791
1816
|
inProgress,
|
|
1792
1817
|
index,
|
|
1793
1818
|
isCurrentMessage,
|
|
@@ -1805,6 +1830,7 @@ var LegacyRenderMessage = ({
|
|
|
1805
1830
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1806
1831
|
RenderActionExecutionMessage,
|
|
1807
1832
|
{
|
|
1833
|
+
messages,
|
|
1808
1834
|
message,
|
|
1809
1835
|
inProgress,
|
|
1810
1836
|
index,
|
|
@@ -1819,6 +1845,7 @@ var LegacyRenderMessage = ({
|
|
|
1819
1845
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1820
1846
|
RenderAgentStateMessage,
|
|
1821
1847
|
{
|
|
1848
|
+
messages,
|
|
1822
1849
|
message,
|
|
1823
1850
|
inProgress,
|
|
1824
1851
|
index,
|
|
@@ -1832,6 +1859,7 @@ var LegacyRenderMessage = ({
|
|
|
1832
1859
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1833
1860
|
RenderResultMessage,
|
|
1834
1861
|
{
|
|
1862
|
+
messages,
|
|
1835
1863
|
message,
|
|
1836
1864
|
inProgress,
|
|
1837
1865
|
index,
|
|
@@ -1845,6 +1873,7 @@ var LegacyRenderMessage = ({
|
|
|
1845
1873
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1846
1874
|
RenderImageMessage,
|
|
1847
1875
|
{
|
|
1876
|
+
messages,
|
|
1848
1877
|
message,
|
|
1849
1878
|
inProgress,
|
|
1850
1879
|
index,
|
|
@@ -1857,6 +1886,7 @@ var LegacyRenderMessage = ({
|
|
|
1857
1886
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1858
1887
|
RenderMessage,
|
|
1859
1888
|
{
|
|
1889
|
+
messages,
|
|
1860
1890
|
message,
|
|
1861
1891
|
inProgress,
|
|
1862
1892
|
index,
|
|
@@ -1887,6 +1917,7 @@ var Messages = ({
|
|
|
1887
1917
|
onCopy,
|
|
1888
1918
|
onThumbsUp,
|
|
1889
1919
|
onThumbsDown,
|
|
1920
|
+
messageFeedback,
|
|
1890
1921
|
markdownTagRenderers,
|
|
1891
1922
|
chatError,
|
|
1892
1923
|
// Legacy props
|
|
@@ -1896,7 +1927,8 @@ var Messages = ({
|
|
|
1896
1927
|
RenderResultMessage,
|
|
1897
1928
|
RenderImageMessage
|
|
1898
1929
|
}) => {
|
|
1899
|
-
|
|
1930
|
+
var _a;
|
|
1931
|
+
const { labels, icons } = useChatContext();
|
|
1900
1932
|
const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
|
|
1901
1933
|
const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1902
1934
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1926,6 +1958,7 @@ var Messages = ({
|
|
|
1926
1958
|
]
|
|
1927
1959
|
);
|
|
1928
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 });
|
|
1929
1962
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1930
1963
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1931
1964
|
messages.map((message, index) => {
|
|
@@ -1934,6 +1967,7 @@ var Messages = ({
|
|
|
1934
1967
|
MessageRenderer,
|
|
1935
1968
|
{
|
|
1936
1969
|
message,
|
|
1970
|
+
messages,
|
|
1937
1971
|
inProgress,
|
|
1938
1972
|
index,
|
|
1939
1973
|
isCurrentMessage,
|
|
@@ -1944,11 +1978,13 @@ var Messages = ({
|
|
|
1944
1978
|
onCopy,
|
|
1945
1979
|
onThumbsUp,
|
|
1946
1980
|
onThumbsDown,
|
|
1981
|
+
messageFeedback,
|
|
1947
1982
|
markdownTagRenderers
|
|
1948
1983
|
},
|
|
1949
1984
|
index
|
|
1950
1985
|
);
|
|
1951
1986
|
}),
|
|
1987
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
|
|
1952
1988
|
interrupt,
|
|
1953
1989
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1954
1990
|
] }),
|
|
@@ -2242,12 +2278,12 @@ var MAX_NEWLINES = 6;
|
|
|
2242
2278
|
var Input = ({
|
|
2243
2279
|
inProgress,
|
|
2244
2280
|
onSend,
|
|
2245
|
-
|
|
2281
|
+
chatReady = true,
|
|
2246
2282
|
onStop,
|
|
2247
2283
|
onUpload,
|
|
2248
2284
|
hideStopButton = false
|
|
2249
2285
|
}) => {
|
|
2250
|
-
var _a
|
|
2286
|
+
var _a;
|
|
2251
2287
|
const context = useChatContext();
|
|
2252
2288
|
const copilotContext = (0, import_react_core7.useCopilotContext)();
|
|
2253
2289
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -2277,14 +2313,16 @@ var Input = ({
|
|
|
2277
2313
|
inProgress
|
|
2278
2314
|
});
|
|
2279
2315
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
2280
|
-
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]);
|
|
2281
2321
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
2322
|
+
const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
|
|
2282
2323
|
const canSend = (0, import_react14.useMemo)(() => {
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
2286
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
2287
|
-
}, [(_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]);
|
|
2288
2326
|
const canStop = (0, import_react14.useMemo)(() => {
|
|
2289
2327
|
return isInProgress && !hideStopButton;
|
|
2290
2328
|
}, [isInProgress, hideStopButton]);
|
|
@@ -2331,6 +2369,7 @@ var Input = ({
|
|
|
2331
2369
|
"data-copilotkit-in-progress": inProgress,
|
|
2332
2370
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
2333
2371
|
className: "copilotKitInputControlButton",
|
|
2372
|
+
"aria-label": buttonAlt,
|
|
2334
2373
|
children: buttonIcon
|
|
2335
2374
|
}
|
|
2336
2375
|
)
|
|
@@ -2344,8 +2383,6 @@ var Input = ({
|
|
|
2344
2383
|
var import_react15 = __toESM(require("react"));
|
|
2345
2384
|
var import_react_core9 = require("@copilotkit/react-core");
|
|
2346
2385
|
var import_shared3 = require("@copilotkit/shared");
|
|
2347
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2348
|
-
var import_react_core10 = require("@copilotkit/react-core");
|
|
2349
2386
|
|
|
2350
2387
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2351
2388
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
@@ -2449,18 +2486,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
2449
2486
|
|
|
2450
2487
|
// src/components/chat/Suggestions.tsx
|
|
2451
2488
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2452
|
-
function Suggestions({
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
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
|
+
}) });
|
|
2464
2508
|
}
|
|
2465
2509
|
|
|
2466
2510
|
// src/components/chat/Chat.tsx
|
|
@@ -2514,6 +2558,9 @@ function CopilotChat({
|
|
|
2514
2558
|
const { publicApiKey, chatApiEndpoint } = copilotApiConfig;
|
|
2515
2559
|
const [selectedImages, setSelectedImages] = (0, import_react15.useState)([]);
|
|
2516
2560
|
const [chatError, setChatError] = (0, import_react15.useState)(null);
|
|
2561
|
+
const [messageFeedback, setMessageFeedback] = (0, import_react15.useState)(
|
|
2562
|
+
{}
|
|
2563
|
+
);
|
|
2517
2564
|
const fileInputRef = (0, import_react15.useRef)(null);
|
|
2518
2565
|
const triggerObservabilityHook = (0, import_react15.useCallback)(
|
|
2519
2566
|
(hookName, ...args) => {
|
|
@@ -2657,16 +2704,12 @@ function CopilotChat({
|
|
|
2657
2704
|
sendMessage,
|
|
2658
2705
|
stopGeneration,
|
|
2659
2706
|
reloadMessages,
|
|
2660
|
-
suggestions: currentSuggestions
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
onSubmitMessage,
|
|
2667
|
-
onStopGeneration,
|
|
2668
|
-
onReloadMessages
|
|
2669
|
-
);
|
|
2707
|
+
suggestions: currentSuggestions,
|
|
2708
|
+
isLoadingSuggestions,
|
|
2709
|
+
agent
|
|
2710
|
+
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2711
|
+
suggestions
|
|
2712
|
+
});
|
|
2670
2713
|
const prevIsLoading = (0, import_react15.useRef)(isLoading);
|
|
2671
2714
|
(0, import_react15.useEffect)(() => {
|
|
2672
2715
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2685,7 +2728,11 @@ function CopilotChat({
|
|
|
2685
2728
|
fileInputRef.current.value = "";
|
|
2686
2729
|
}
|
|
2687
2730
|
triggerObservabilityHook("onMessageSent", text);
|
|
2688
|
-
return sendMessage(
|
|
2731
|
+
return sendMessage({
|
|
2732
|
+
id: (0, import_shared3.randomUUID)(),
|
|
2733
|
+
content: text,
|
|
2734
|
+
role: "user"
|
|
2735
|
+
});
|
|
2689
2736
|
};
|
|
2690
2737
|
const chatContext = import_react15.default.useContext(ChatContext);
|
|
2691
2738
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2741,12 +2788,18 @@ function CopilotChat({
|
|
|
2741
2788
|
if (onThumbsUp) {
|
|
2742
2789
|
onThumbsUp(message);
|
|
2743
2790
|
}
|
|
2791
|
+
setMessageFeedback((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2792
|
+
[message.id]: "thumbsUp"
|
|
2793
|
+
}));
|
|
2744
2794
|
triggerObservabilityHook("onFeedbackGiven", message.id, "thumbsUp");
|
|
2745
2795
|
};
|
|
2746
2796
|
const handleThumbsDown = (message) => {
|
|
2747
2797
|
if (onThumbsDown) {
|
|
2748
2798
|
onThumbsDown(message);
|
|
2749
2799
|
}
|
|
2800
|
+
setMessageFeedback((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2801
|
+
[message.id]: "thumbsDown"
|
|
2802
|
+
}));
|
|
2750
2803
|
triggerObservabilityHook("onFeedbackGiven", message.id, "thumbsDown");
|
|
2751
2804
|
};
|
|
2752
2805
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
@@ -2768,6 +2821,7 @@ function CopilotChat({
|
|
|
2768
2821
|
onCopy: handleCopy,
|
|
2769
2822
|
onThumbsUp: handleThumbsUp,
|
|
2770
2823
|
onThumbsDown: handleThumbsDown,
|
|
2824
|
+
messageFeedback,
|
|
2771
2825
|
markdownTagRenderers,
|
|
2772
2826
|
ImageRenderer: ImageRenderer2,
|
|
2773
2827
|
ErrorMessage,
|
|
@@ -2781,7 +2835,8 @@ function CopilotChat({
|
|
|
2781
2835
|
RenderSuggestionsList,
|
|
2782
2836
|
{
|
|
2783
2837
|
onSuggestionClick: handleSendMessage,
|
|
2784
|
-
suggestions: currentSuggestions
|
|
2838
|
+
suggestions: currentSuggestions,
|
|
2839
|
+
isLoading: isLoadingSuggestions
|
|
2785
2840
|
}
|
|
2786
2841
|
)
|
|
2787
2842
|
}
|
|
@@ -2804,6 +2859,7 @@ function CopilotChat({
|
|
|
2804
2859
|
Input2,
|
|
2805
2860
|
{
|
|
2806
2861
|
inProgress: isLoading,
|
|
2862
|
+
chatReady: Boolean(agent),
|
|
2807
2863
|
onSend: handleSendMessage,
|
|
2808
2864
|
isVisible,
|
|
2809
2865
|
onStop: stopGeneration,
|
|
@@ -2829,243 +2885,10 @@ function WrappedCopilotChat({
|
|
|
2829
2885
|
}
|
|
2830
2886
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
|
|
2831
2887
|
}
|
|
2832
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2833
|
-
var _a;
|
|
2834
|
-
const {
|
|
2835
|
-
messages,
|
|
2836
|
-
sendMessage,
|
|
2837
|
-
setMessages,
|
|
2838
|
-
reloadMessages: defaultReloadMessages,
|
|
2839
|
-
stopGeneration: defaultStopGeneration,
|
|
2840
|
-
runChatCompletion,
|
|
2841
|
-
isLoading,
|
|
2842
|
-
suggestions,
|
|
2843
|
-
setSuggestions,
|
|
2844
|
-
generateSuggestions,
|
|
2845
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2846
|
-
isLoadingSuggestions
|
|
2847
|
-
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2848
|
-
makeSystemMessage,
|
|
2849
|
-
disableSystemMessage
|
|
2850
|
-
});
|
|
2851
|
-
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2852
|
-
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2853
|
-
const { actions } = generalContext;
|
|
2854
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
|
|
2855
|
-
const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
|
|
2856
|
-
(0, import_react15.useEffect)(() => {
|
|
2857
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2858
|
-
setSuggestions(chatSuggestions);
|
|
2859
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2860
|
-
}
|
|
2861
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2862
|
-
const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
|
|
2863
|
-
(context) => __async(void 0, null, function* () {
|
|
2864
|
-
try {
|
|
2865
|
-
yield generateSuggestions();
|
|
2866
|
-
} catch (error) {
|
|
2867
|
-
console.error("Failed to generate suggestions:", error);
|
|
2868
|
-
setSuggestionsFailed(true);
|
|
2869
|
-
}
|
|
2870
|
-
}),
|
|
2871
|
-
[generateSuggestions]
|
|
2872
|
-
);
|
|
2873
|
-
(0, import_react15.useEffect)(() => {
|
|
2874
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2875
|
-
return;
|
|
2876
|
-
}
|
|
2877
|
-
if (isLoading) {
|
|
2878
|
-
return;
|
|
2879
|
-
}
|
|
2880
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2881
|
-
return;
|
|
2882
|
-
}
|
|
2883
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2884
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2885
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2886
|
-
return;
|
|
2887
|
-
}
|
|
2888
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2889
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2890
|
-
return;
|
|
2891
|
-
}
|
|
2892
|
-
}, [
|
|
2893
|
-
chatSuggestions,
|
|
2894
|
-
isLoadingSuggestions,
|
|
2895
|
-
suggestionsFailed,
|
|
2896
|
-
messages.length,
|
|
2897
|
-
isLoading,
|
|
2898
|
-
suggestions.length,
|
|
2899
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2900
|
-
// Use stable string instead of object reference
|
|
2901
|
-
generateSuggestionsWithErrorHandling
|
|
2902
|
-
]);
|
|
2903
|
-
(0, import_react15.useEffect)(() => {
|
|
2904
|
-
if (chatSuggestions !== "auto") {
|
|
2905
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2906
|
-
setSuggestionsFailed(false);
|
|
2907
|
-
}
|
|
2908
|
-
}, [chatSuggestions]);
|
|
2909
|
-
const stableContext = (0, import_react15.useMemo)(
|
|
2910
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2911
|
-
[
|
|
2912
|
-
// Only include stable dependencies
|
|
2913
|
-
generalContext.actions,
|
|
2914
|
-
messagesContext.messages.length,
|
|
2915
|
-
generalContext.isLoading
|
|
2916
|
-
]
|
|
2917
|
-
);
|
|
2918
|
-
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2919
|
-
resetSuggestionsFromHook();
|
|
2920
|
-
setSuggestionsFailed(false);
|
|
2921
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2922
|
-
}, [resetSuggestionsFromHook]);
|
|
2923
|
-
(0, import_react15.useEffect)(() => {
|
|
2924
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2925
|
-
}, [onInProgress, isLoading]);
|
|
2926
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2927
|
-
const images = imagesToUse || [];
|
|
2928
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2929
|
-
setSuggestions([]);
|
|
2930
|
-
}
|
|
2931
|
-
let firstMessage = null;
|
|
2932
|
-
if (messageContent.trim().length > 0) {
|
|
2933
|
-
const textMessage = {
|
|
2934
|
-
id: (0, import_shared4.randomId)(),
|
|
2935
|
-
role: "user",
|
|
2936
|
-
content: messageContent
|
|
2937
|
-
};
|
|
2938
|
-
if (onSubmitMessage) {
|
|
2939
|
-
try {
|
|
2940
|
-
yield onSubmitMessage(messageContent);
|
|
2941
|
-
} catch (error) {
|
|
2942
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2943
|
-
}
|
|
2944
|
-
}
|
|
2945
|
-
yield sendMessage(textMessage, {
|
|
2946
|
-
followUp: images.length === 0,
|
|
2947
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2948
|
-
});
|
|
2949
|
-
if (!firstMessage) {
|
|
2950
|
-
firstMessage = textMessage;
|
|
2951
|
-
}
|
|
2952
|
-
}
|
|
2953
|
-
if (images.length > 0) {
|
|
2954
|
-
for (let i = 0; i < images.length; i++) {
|
|
2955
|
-
const imageMessage = {
|
|
2956
|
-
id: (0, import_shared4.randomId)(),
|
|
2957
|
-
role: "user",
|
|
2958
|
-
image: {
|
|
2959
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2960
|
-
bytes: images[i].bytes
|
|
2961
|
-
}
|
|
2962
|
-
};
|
|
2963
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2964
|
-
if (!firstMessage) {
|
|
2965
|
-
firstMessage = imageMessage;
|
|
2966
|
-
}
|
|
2967
|
-
}
|
|
2968
|
-
}
|
|
2969
|
-
if (!firstMessage) {
|
|
2970
|
-
return { role: "user", content: "", id: (0, import_shared4.randomId)() };
|
|
2971
|
-
}
|
|
2972
|
-
return firstMessage;
|
|
2973
|
-
});
|
|
2974
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
2975
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2976
|
-
if (generalContext.agentSession) {
|
|
2977
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
2978
|
-
nodeName: void 0,
|
|
2979
|
-
threadId: void 0
|
|
2980
|
-
}));
|
|
2981
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2982
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
2983
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
2984
|
-
threadId: void 0,
|
|
2985
|
-
nodeName: void 0,
|
|
2986
|
-
runId: void 0
|
|
2987
|
-
})
|
|
2988
|
-
});
|
|
2989
|
-
});
|
|
2990
|
-
}
|
|
2991
|
-
});
|
|
2992
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2993
|
-
if (generalContext.agentSession) {
|
|
2994
|
-
yield (0, import_react_core10.runAgent)(
|
|
2995
|
-
generalContext.agentSession.agentName,
|
|
2996
|
-
stableContext,
|
|
2997
|
-
messagesContext.messages,
|
|
2998
|
-
sendMessage,
|
|
2999
|
-
runChatCompletion
|
|
3000
|
-
);
|
|
3001
|
-
}
|
|
3002
|
-
});
|
|
3003
|
-
const stopCurrentAgent = () => {
|
|
3004
|
-
if (generalContext.agentSession) {
|
|
3005
|
-
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3006
|
-
}
|
|
3007
|
-
};
|
|
3008
|
-
const setCurrentAgentState = (state) => {
|
|
3009
|
-
if (generalContext.agentSession) {
|
|
3010
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3011
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3012
|
-
[generalContext.agentSession.agentName]: {
|
|
3013
|
-
state
|
|
3014
|
-
}
|
|
3015
|
-
});
|
|
3016
|
-
});
|
|
3017
|
-
}
|
|
3018
|
-
};
|
|
3019
|
-
function stopGeneration() {
|
|
3020
|
-
setSuggestions([]);
|
|
3021
|
-
if (onStopGeneration) {
|
|
3022
|
-
onStopGeneration({
|
|
3023
|
-
messages,
|
|
3024
|
-
setMessages,
|
|
3025
|
-
stopGeneration: defaultStopGeneration,
|
|
3026
|
-
currentAgentName,
|
|
3027
|
-
restartCurrentAgent,
|
|
3028
|
-
stopCurrentAgent,
|
|
3029
|
-
runCurrentAgent,
|
|
3030
|
-
setCurrentAgentState
|
|
3031
|
-
});
|
|
3032
|
-
} else {
|
|
3033
|
-
defaultStopGeneration();
|
|
3034
|
-
}
|
|
3035
|
-
}
|
|
3036
|
-
function reloadMessages(messageId) {
|
|
3037
|
-
if (onReloadMessages) {
|
|
3038
|
-
onReloadMessages({
|
|
3039
|
-
messages,
|
|
3040
|
-
setMessages,
|
|
3041
|
-
stopGeneration: defaultStopGeneration,
|
|
3042
|
-
currentAgentName,
|
|
3043
|
-
restartCurrentAgent,
|
|
3044
|
-
stopCurrentAgent,
|
|
3045
|
-
runCurrentAgent,
|
|
3046
|
-
setCurrentAgentState,
|
|
3047
|
-
messageId
|
|
3048
|
-
});
|
|
3049
|
-
} else {
|
|
3050
|
-
defaultReloadMessages(messageId);
|
|
3051
|
-
}
|
|
3052
|
-
}
|
|
3053
|
-
return {
|
|
3054
|
-
messages,
|
|
3055
|
-
isLoading,
|
|
3056
|
-
suggestions,
|
|
3057
|
-
sendMessage: safelySendMessage,
|
|
3058
|
-
stopGeneration,
|
|
3059
|
-
reloadMessages,
|
|
3060
|
-
resetSuggestions,
|
|
3061
|
-
context: stableContext,
|
|
3062
|
-
actions
|
|
3063
|
-
};
|
|
3064
|
-
};
|
|
3065
2888
|
|
|
3066
2889
|
// src/components/chat/Modal.tsx
|
|
3067
|
-
var
|
|
3068
|
-
var
|
|
2890
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2891
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
3069
2892
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3070
2893
|
var CopilotModalInner = (_a) => {
|
|
3071
2894
|
var _b = _a, {
|
|
@@ -3091,7 +2914,7 @@ var CopilotModalInner = (_a) => {
|
|
|
3091
2914
|
"Button",
|
|
3092
2915
|
"Header"
|
|
3093
2916
|
]);
|
|
3094
|
-
const { copilotApiConfig, setBannerError } = (0,
|
|
2917
|
+
const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
|
|
3095
2918
|
const { publicApiKey } = copilotApiConfig;
|
|
3096
2919
|
const triggerObservabilityHook = (0, import_react16.useCallback)(
|
|
3097
2920
|
(hookName, ...args) => {
|
|
@@ -3100,14 +2923,14 @@ var CopilotModalInner = (_a) => {
|
|
|
3100
2923
|
}
|
|
3101
2924
|
if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
|
|
3102
2925
|
setBannerError(
|
|
3103
|
-
new
|
|
2926
|
+
new import_shared4.CopilotKitError({
|
|
3104
2927
|
message: "observabilityHooks requires a publicApiKey to function.",
|
|
3105
|
-
code:
|
|
3106
|
-
severity:
|
|
3107
|
-
visibility:
|
|
2928
|
+
code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
2929
|
+
severity: import_shared4.Severity.CRITICAL,
|
|
2930
|
+
visibility: import_shared4.ErrorVisibility.BANNER
|
|
3108
2931
|
})
|
|
3109
2932
|
);
|
|
3110
|
-
|
|
2933
|
+
import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
|
|
3111
2934
|
}
|
|
3112
2935
|
},
|
|
3113
2936
|
[publicApiKey, observabilityHooks, setBannerError]
|