@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
|
@@ -1030,14 +1030,30 @@ var import_react_core5 = require("@copilotkit/react-core");
|
|
|
1030
1030
|
|
|
1031
1031
|
// src/components/chat/messages/UserMessage.tsx
|
|
1032
1032
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1033
|
+
var getTextContent = (content) => {
|
|
1034
|
+
if (typeof content === "undefined") {
|
|
1035
|
+
return void 0;
|
|
1036
|
+
}
|
|
1037
|
+
if (typeof content === "string") {
|
|
1038
|
+
return content;
|
|
1039
|
+
}
|
|
1040
|
+
return content.map((part) => {
|
|
1041
|
+
if (part.type === "text") {
|
|
1042
|
+
return part.text;
|
|
1043
|
+
}
|
|
1044
|
+
return void 0;
|
|
1045
|
+
}).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
|
|
1046
|
+
};
|
|
1033
1047
|
var UserMessage = (props) => {
|
|
1034
1048
|
const { message, ImageRenderer: ImageRenderer2 } = props;
|
|
1035
|
-
const isImageMessage = message && "image" in message && message.image;
|
|
1049
|
+
const isImageMessage = message && "image" in message && Boolean(message.image);
|
|
1036
1050
|
if (isImageMessage) {
|
|
1037
1051
|
const imageMessage = message;
|
|
1038
|
-
|
|
1052
|
+
const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
|
|
1053
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
|
|
1039
1054
|
}
|
|
1040
|
-
|
|
1055
|
+
const content = getTextContent(message == null ? void 0 : message.content);
|
|
1056
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
|
|
1041
1057
|
};
|
|
1042
1058
|
|
|
1043
1059
|
// src/components/chat/Markdown.tsx
|
|
@@ -1580,6 +1596,7 @@ var AssistantMessage = (props) => {
|
|
|
1580
1596
|
onThumbsUp,
|
|
1581
1597
|
onThumbsDown,
|
|
1582
1598
|
isCurrentMessage,
|
|
1599
|
+
feedback,
|
|
1583
1600
|
markdownTagRenderers
|
|
1584
1601
|
} = props;
|
|
1585
1602
|
const [copied, setCopied] = (0, import_react8.useState)(false);
|
|
@@ -1601,12 +1618,14 @@ var AssistantMessage = (props) => {
|
|
|
1601
1618
|
onRegenerate();
|
|
1602
1619
|
};
|
|
1603
1620
|
const handleThumbsUp = () => {
|
|
1604
|
-
if (onThumbsUp && message)
|
|
1621
|
+
if (onThumbsUp && message) {
|
|
1605
1622
|
onThumbsUp(message);
|
|
1623
|
+
}
|
|
1606
1624
|
};
|
|
1607
1625
|
const handleThumbsDown = () => {
|
|
1608
|
-
if (onThumbsDown && message)
|
|
1626
|
+
if (onThumbsDown && message) {
|
|
1609
1627
|
onThumbsDown(message);
|
|
1628
|
+
}
|
|
1610
1629
|
};
|
|
1611
1630
|
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: icons.activityIcon });
|
|
1612
1631
|
const content = (message == null ? void 0 : message.content) || "";
|
|
@@ -1642,7 +1661,7 @@ var AssistantMessage = (props) => {
|
|
|
1642
1661
|
onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1643
1662
|
"button",
|
|
1644
1663
|
{
|
|
1645
|
-
className:
|
|
1664
|
+
className: `copilotKitMessageControlButton ${feedback === "thumbsUp" ? "active" : ""}`,
|
|
1646
1665
|
onClick: handleThumbsUp,
|
|
1647
1666
|
"aria-label": labels.thumbsUp,
|
|
1648
1667
|
title: labels.thumbsUp,
|
|
@@ -1652,7 +1671,7 @@ var AssistantMessage = (props) => {
|
|
|
1652
1671
|
onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1653
1672
|
"button",
|
|
1654
1673
|
{
|
|
1655
|
-
className:
|
|
1674
|
+
className: `copilotKitMessageControlButton ${feedback === "thumbsDown" ? "active" : ""}`,
|
|
1656
1675
|
onClick: handleThumbsDown,
|
|
1657
1676
|
"aria-label": labels.thumbsDown,
|
|
1658
1677
|
title: labels.thumbsDown,
|
|
@@ -1713,6 +1732,7 @@ function RenderMessage(_a) {
|
|
|
1713
1732
|
var _a2;
|
|
1714
1733
|
const {
|
|
1715
1734
|
message,
|
|
1735
|
+
messages,
|
|
1716
1736
|
inProgress,
|
|
1717
1737
|
index,
|
|
1718
1738
|
isCurrentMessage,
|
|
@@ -1720,6 +1740,7 @@ function RenderMessage(_a) {
|
|
|
1720
1740
|
onCopy,
|
|
1721
1741
|
onThumbsUp,
|
|
1722
1742
|
onThumbsDown,
|
|
1743
|
+
messageFeedback,
|
|
1723
1744
|
markdownTagRenderers
|
|
1724
1745
|
} = props;
|
|
1725
1746
|
switch (message.role) {
|
|
@@ -1742,6 +1763,7 @@ function RenderMessage(_a) {
|
|
|
1742
1763
|
subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
|
|
1743
1764
|
rawData: message,
|
|
1744
1765
|
message,
|
|
1766
|
+
messages,
|
|
1745
1767
|
isLoading: inProgress && isCurrentMessage && !message.content,
|
|
1746
1768
|
isGenerating: inProgress && isCurrentMessage && !!message.content,
|
|
1747
1769
|
isCurrentMessage,
|
|
@@ -1749,6 +1771,7 @@ function RenderMessage(_a) {
|
|
|
1749
1771
|
onCopy,
|
|
1750
1772
|
onThumbsUp,
|
|
1751
1773
|
onThumbsDown,
|
|
1774
|
+
feedback: (messageFeedback == null ? void 0 : messageFeedback[message.id]) || null,
|
|
1752
1775
|
markdownTagRenderers,
|
|
1753
1776
|
ImageRenderer: ImageRenderer2
|
|
1754
1777
|
},
|
|
@@ -1762,6 +1785,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
1762
1785
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1763
1786
|
var LegacyRenderMessage = ({
|
|
1764
1787
|
message,
|
|
1788
|
+
messages,
|
|
1765
1789
|
inProgress,
|
|
1766
1790
|
index,
|
|
1767
1791
|
isCurrentMessage,
|
|
@@ -1790,6 +1814,7 @@ var LegacyRenderMessage = ({
|
|
|
1790
1814
|
RenderTextMessage,
|
|
1791
1815
|
{
|
|
1792
1816
|
message,
|
|
1817
|
+
messages,
|
|
1793
1818
|
inProgress,
|
|
1794
1819
|
index,
|
|
1795
1820
|
isCurrentMessage,
|
|
@@ -1807,6 +1832,7 @@ var LegacyRenderMessage = ({
|
|
|
1807
1832
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1808
1833
|
RenderActionExecutionMessage,
|
|
1809
1834
|
{
|
|
1835
|
+
messages,
|
|
1810
1836
|
message,
|
|
1811
1837
|
inProgress,
|
|
1812
1838
|
index,
|
|
@@ -1821,6 +1847,7 @@ var LegacyRenderMessage = ({
|
|
|
1821
1847
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1822
1848
|
RenderAgentStateMessage,
|
|
1823
1849
|
{
|
|
1850
|
+
messages,
|
|
1824
1851
|
message,
|
|
1825
1852
|
inProgress,
|
|
1826
1853
|
index,
|
|
@@ -1834,6 +1861,7 @@ var LegacyRenderMessage = ({
|
|
|
1834
1861
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1835
1862
|
RenderResultMessage,
|
|
1836
1863
|
{
|
|
1864
|
+
messages,
|
|
1837
1865
|
message,
|
|
1838
1866
|
inProgress,
|
|
1839
1867
|
index,
|
|
@@ -1847,6 +1875,7 @@ var LegacyRenderMessage = ({
|
|
|
1847
1875
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1848
1876
|
RenderImageMessage,
|
|
1849
1877
|
{
|
|
1878
|
+
messages,
|
|
1850
1879
|
message,
|
|
1851
1880
|
inProgress,
|
|
1852
1881
|
index,
|
|
@@ -1859,6 +1888,7 @@ var LegacyRenderMessage = ({
|
|
|
1859
1888
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1860
1889
|
RenderMessage,
|
|
1861
1890
|
{
|
|
1891
|
+
messages,
|
|
1862
1892
|
message,
|
|
1863
1893
|
inProgress,
|
|
1864
1894
|
index,
|
|
@@ -1889,6 +1919,7 @@ var Messages = ({
|
|
|
1889
1919
|
onCopy,
|
|
1890
1920
|
onThumbsUp,
|
|
1891
1921
|
onThumbsDown,
|
|
1922
|
+
messageFeedback,
|
|
1892
1923
|
markdownTagRenderers,
|
|
1893
1924
|
chatError,
|
|
1894
1925
|
// Legacy props
|
|
@@ -1898,7 +1929,8 @@ var Messages = ({
|
|
|
1898
1929
|
RenderResultMessage,
|
|
1899
1930
|
RenderImageMessage
|
|
1900
1931
|
}) => {
|
|
1901
|
-
|
|
1932
|
+
var _a;
|
|
1933
|
+
const { labels, icons } = useChatContext();
|
|
1902
1934
|
const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
|
|
1903
1935
|
const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
1904
1936
|
const messages = [...initialMessages, ...visibleMessages];
|
|
@@ -1928,6 +1960,7 @@ var Messages = ({
|
|
|
1928
1960
|
]
|
|
1929
1961
|
);
|
|
1930
1962
|
const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
|
|
1963
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
|
|
1931
1964
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
1932
1965
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
|
|
1933
1966
|
messages.map((message, index) => {
|
|
@@ -1936,6 +1969,7 @@ var Messages = ({
|
|
|
1936
1969
|
MessageRenderer,
|
|
1937
1970
|
{
|
|
1938
1971
|
message,
|
|
1972
|
+
messages,
|
|
1939
1973
|
inProgress,
|
|
1940
1974
|
index,
|
|
1941
1975
|
isCurrentMessage,
|
|
@@ -1946,11 +1980,13 @@ var Messages = ({
|
|
|
1946
1980
|
onCopy,
|
|
1947
1981
|
onThumbsUp,
|
|
1948
1982
|
onThumbsDown,
|
|
1983
|
+
messageFeedback,
|
|
1949
1984
|
markdownTagRenderers
|
|
1950
1985
|
},
|
|
1951
1986
|
index
|
|
1952
1987
|
);
|
|
1953
1988
|
}),
|
|
1989
|
+
((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
|
|
1954
1990
|
interrupt,
|
|
1955
1991
|
chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
|
|
1956
1992
|
] }),
|
|
@@ -2244,12 +2280,12 @@ var MAX_NEWLINES = 6;
|
|
|
2244
2280
|
var Input = ({
|
|
2245
2281
|
inProgress,
|
|
2246
2282
|
onSend,
|
|
2247
|
-
|
|
2283
|
+
chatReady = true,
|
|
2248
2284
|
onStop,
|
|
2249
2285
|
onUpload,
|
|
2250
2286
|
hideStopButton = false
|
|
2251
2287
|
}) => {
|
|
2252
|
-
var _a
|
|
2288
|
+
var _a;
|
|
2253
2289
|
const context = useChatContext();
|
|
2254
2290
|
const copilotContext = (0, import_react_core7.useCopilotContext)();
|
|
2255
2291
|
const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
|
|
@@ -2279,14 +2315,16 @@ var Input = ({
|
|
|
2279
2315
|
inProgress
|
|
2280
2316
|
});
|
|
2281
2317
|
const isInProgress = inProgress || pushToTalkState === "transcribing";
|
|
2282
|
-
const buttonIcon
|
|
2318
|
+
const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
|
|
2319
|
+
if (!chatReady)
|
|
2320
|
+
return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
|
|
2321
|
+
return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
|
|
2322
|
+
}, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
|
|
2283
2323
|
const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
|
|
2324
|
+
const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
|
|
2284
2325
|
const canSend = (0, import_react14.useMemo)(() => {
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
|
|
2288
|
-
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
|
|
2289
|
-
}, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
|
|
2326
|
+
return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
|
|
2327
|
+
}, [interrupt, isInProgress, text, pushToTalkState]);
|
|
2290
2328
|
const canStop = (0, import_react14.useMemo)(() => {
|
|
2291
2329
|
return isInProgress && !hideStopButton;
|
|
2292
2330
|
}, [isInProgress, hideStopButton]);
|
|
@@ -2333,6 +2371,7 @@ var Input = ({
|
|
|
2333
2371
|
"data-copilotkit-in-progress": inProgress,
|
|
2334
2372
|
"data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
|
|
2335
2373
|
className: "copilotKitInputControlButton",
|
|
2374
|
+
"aria-label": buttonAlt,
|
|
2336
2375
|
children: buttonIcon
|
|
2337
2376
|
}
|
|
2338
2377
|
)
|
|
@@ -2346,8 +2385,6 @@ var Input = ({
|
|
|
2346
2385
|
var import_react15 = __toESM(require("react"));
|
|
2347
2386
|
var import_react_core9 = require("@copilotkit/react-core");
|
|
2348
2387
|
var import_shared3 = require("@copilotkit/shared");
|
|
2349
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
2350
|
-
var import_react_core10 = require("@copilotkit/react-core");
|
|
2351
2388
|
|
|
2352
2389
|
// src/components/chat/ImageUploadQueue.tsx
|
|
2353
2390
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
@@ -2451,18 +2488,25 @@ function Suggestion({ title, onClick, partial, className }) {
|
|
|
2451
2488
|
|
|
2452
2489
|
// src/components/chat/Suggestions.tsx
|
|
2453
2490
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2454
|
-
function Suggestions({
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2491
|
+
function Suggestions({
|
|
2492
|
+
suggestions,
|
|
2493
|
+
onSuggestionClick,
|
|
2494
|
+
isLoading
|
|
2495
|
+
}) {
|
|
2496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
|
|
2497
|
+
var _a, _b;
|
|
2498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2499
|
+
Suggestion,
|
|
2500
|
+
{
|
|
2501
|
+
title: suggestion.title,
|
|
2502
|
+
message: suggestion.message,
|
|
2503
|
+
partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
|
|
2504
|
+
className: suggestion.className,
|
|
2505
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
2506
|
+
},
|
|
2507
|
+
index
|
|
2508
|
+
);
|
|
2509
|
+
}) });
|
|
2466
2510
|
}
|
|
2467
2511
|
|
|
2468
2512
|
// src/components/chat/Chat.tsx
|
|
@@ -2516,6 +2560,9 @@ function CopilotChat({
|
|
|
2516
2560
|
const { publicApiKey, chatApiEndpoint } = copilotApiConfig;
|
|
2517
2561
|
const [selectedImages, setSelectedImages] = (0, import_react15.useState)([]);
|
|
2518
2562
|
const [chatError, setChatError] = (0, import_react15.useState)(null);
|
|
2563
|
+
const [messageFeedback, setMessageFeedback] = (0, import_react15.useState)(
|
|
2564
|
+
{}
|
|
2565
|
+
);
|
|
2519
2566
|
const fileInputRef = (0, import_react15.useRef)(null);
|
|
2520
2567
|
const triggerObservabilityHook = (0, import_react15.useCallback)(
|
|
2521
2568
|
(hookName, ...args) => {
|
|
@@ -2659,16 +2706,12 @@ function CopilotChat({
|
|
|
2659
2706
|
sendMessage,
|
|
2660
2707
|
stopGeneration,
|
|
2661
2708
|
reloadMessages,
|
|
2662
|
-
suggestions: currentSuggestions
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
onSubmitMessage,
|
|
2669
|
-
onStopGeneration,
|
|
2670
|
-
onReloadMessages
|
|
2671
|
-
);
|
|
2709
|
+
suggestions: currentSuggestions,
|
|
2710
|
+
isLoadingSuggestions,
|
|
2711
|
+
agent
|
|
2712
|
+
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2713
|
+
suggestions
|
|
2714
|
+
});
|
|
2672
2715
|
const prevIsLoading = (0, import_react15.useRef)(isLoading);
|
|
2673
2716
|
(0, import_react15.useEffect)(() => {
|
|
2674
2717
|
if (prevIsLoading.current !== isLoading) {
|
|
@@ -2687,7 +2730,11 @@ function CopilotChat({
|
|
|
2687
2730
|
fileInputRef.current.value = "";
|
|
2688
2731
|
}
|
|
2689
2732
|
triggerObservabilityHook("onMessageSent", text);
|
|
2690
|
-
return sendMessage(
|
|
2733
|
+
return sendMessage({
|
|
2734
|
+
id: (0, import_shared3.randomUUID)(),
|
|
2735
|
+
content: text,
|
|
2736
|
+
role: "user"
|
|
2737
|
+
});
|
|
2691
2738
|
};
|
|
2692
2739
|
const chatContext = import_react15.default.useContext(ChatContext);
|
|
2693
2740
|
const isVisible = chatContext ? chatContext.open : true;
|
|
@@ -2743,12 +2790,18 @@ function CopilotChat({
|
|
|
2743
2790
|
if (onThumbsUp) {
|
|
2744
2791
|
onThumbsUp(message);
|
|
2745
2792
|
}
|
|
2793
|
+
setMessageFeedback((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2794
|
+
[message.id]: "thumbsUp"
|
|
2795
|
+
}));
|
|
2746
2796
|
triggerObservabilityHook("onFeedbackGiven", message.id, "thumbsUp");
|
|
2747
2797
|
};
|
|
2748
2798
|
const handleThumbsDown = (message) => {
|
|
2749
2799
|
if (onThumbsDown) {
|
|
2750
2800
|
onThumbsDown(message);
|
|
2751
2801
|
}
|
|
2802
|
+
setMessageFeedback((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2803
|
+
[message.id]: "thumbsDown"
|
|
2804
|
+
}));
|
|
2752
2805
|
triggerObservabilityHook("onFeedbackGiven", message.id, "thumbsDown");
|
|
2753
2806
|
};
|
|
2754
2807
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
@@ -2770,6 +2823,7 @@ function CopilotChat({
|
|
|
2770
2823
|
onCopy: handleCopy,
|
|
2771
2824
|
onThumbsUp: handleThumbsUp,
|
|
2772
2825
|
onThumbsDown: handleThumbsDown,
|
|
2826
|
+
messageFeedback,
|
|
2773
2827
|
markdownTagRenderers,
|
|
2774
2828
|
ImageRenderer: ImageRenderer2,
|
|
2775
2829
|
ErrorMessage,
|
|
@@ -2783,7 +2837,8 @@ function CopilotChat({
|
|
|
2783
2837
|
RenderSuggestionsList,
|
|
2784
2838
|
{
|
|
2785
2839
|
onSuggestionClick: handleSendMessage,
|
|
2786
|
-
suggestions: currentSuggestions
|
|
2840
|
+
suggestions: currentSuggestions,
|
|
2841
|
+
isLoading: isLoadingSuggestions
|
|
2787
2842
|
}
|
|
2788
2843
|
)
|
|
2789
2844
|
}
|
|
@@ -2806,6 +2861,7 @@ function CopilotChat({
|
|
|
2806
2861
|
Input2,
|
|
2807
2862
|
{
|
|
2808
2863
|
inProgress: isLoading,
|
|
2864
|
+
chatReady: Boolean(agent),
|
|
2809
2865
|
onSend: handleSendMessage,
|
|
2810
2866
|
isVisible,
|
|
2811
2867
|
onStop: stopGeneration,
|
|
@@ -2831,243 +2887,10 @@ function WrappedCopilotChat({
|
|
|
2831
2887
|
}
|
|
2832
2888
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
|
|
2833
2889
|
}
|
|
2834
|
-
var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2835
|
-
var _a;
|
|
2836
|
-
const {
|
|
2837
|
-
messages,
|
|
2838
|
-
sendMessage,
|
|
2839
|
-
setMessages,
|
|
2840
|
-
reloadMessages: defaultReloadMessages,
|
|
2841
|
-
stopGeneration: defaultStopGeneration,
|
|
2842
|
-
runChatCompletion,
|
|
2843
|
-
isLoading,
|
|
2844
|
-
suggestions,
|
|
2845
|
-
setSuggestions,
|
|
2846
|
-
generateSuggestions,
|
|
2847
|
-
resetSuggestions: resetSuggestionsFromHook,
|
|
2848
|
-
isLoadingSuggestions
|
|
2849
|
-
} = (0, import_react_core9.useCopilotChatInternal)({
|
|
2850
|
-
makeSystemMessage,
|
|
2851
|
-
disableSystemMessage
|
|
2852
|
-
});
|
|
2853
|
-
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2854
|
-
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2855
|
-
const { actions } = generalContext;
|
|
2856
|
-
const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
|
|
2857
|
-
const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
|
|
2858
|
-
(0, import_react15.useEffect)(() => {
|
|
2859
|
-
if (Array.isArray(chatSuggestions)) {
|
|
2860
|
-
setSuggestions(chatSuggestions);
|
|
2861
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2862
|
-
}
|
|
2863
|
-
}, [JSON.stringify(chatSuggestions), setSuggestions]);
|
|
2864
|
-
const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
|
|
2865
|
-
(context) => __async(void 0, null, function* () {
|
|
2866
|
-
try {
|
|
2867
|
-
yield generateSuggestions();
|
|
2868
|
-
} catch (error) {
|
|
2869
|
-
console.error("Failed to generate suggestions:", error);
|
|
2870
|
-
setSuggestionsFailed(true);
|
|
2871
|
-
}
|
|
2872
|
-
}),
|
|
2873
|
-
[generateSuggestions]
|
|
2874
|
-
);
|
|
2875
|
-
(0, import_react15.useEffect)(() => {
|
|
2876
|
-
if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
|
|
2877
|
-
return;
|
|
2878
|
-
}
|
|
2879
|
-
if (isLoading) {
|
|
2880
|
-
return;
|
|
2881
|
-
}
|
|
2882
|
-
if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
|
|
2883
|
-
return;
|
|
2884
|
-
}
|
|
2885
|
-
if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
|
|
2886
|
-
hasGeneratedInitialSuggestions.current = true;
|
|
2887
|
-
generateSuggestionsWithErrorHandling("initial");
|
|
2888
|
-
return;
|
|
2889
|
-
}
|
|
2890
|
-
if (messages.length > 0 && suggestions.length === 0) {
|
|
2891
|
-
generateSuggestionsWithErrorHandling("post-message");
|
|
2892
|
-
return;
|
|
2893
|
-
}
|
|
2894
|
-
}, [
|
|
2895
|
-
chatSuggestions,
|
|
2896
|
-
isLoadingSuggestions,
|
|
2897
|
-
suggestionsFailed,
|
|
2898
|
-
messages.length,
|
|
2899
|
-
isLoading,
|
|
2900
|
-
suggestions.length,
|
|
2901
|
-
Object.keys(generalContext.chatSuggestionConfiguration).join(","),
|
|
2902
|
-
// Use stable string instead of object reference
|
|
2903
|
-
generateSuggestionsWithErrorHandling
|
|
2904
|
-
]);
|
|
2905
|
-
(0, import_react15.useEffect)(() => {
|
|
2906
|
-
if (chatSuggestions !== "auto") {
|
|
2907
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2908
|
-
setSuggestionsFailed(false);
|
|
2909
|
-
}
|
|
2910
|
-
}, [chatSuggestions]);
|
|
2911
|
-
const stableContext = (0, import_react15.useMemo)(
|
|
2912
|
-
() => __spreadValues(__spreadValues({}, generalContext), messagesContext),
|
|
2913
|
-
[
|
|
2914
|
-
// Only include stable dependencies
|
|
2915
|
-
generalContext.actions,
|
|
2916
|
-
messagesContext.messages.length,
|
|
2917
|
-
generalContext.isLoading
|
|
2918
|
-
]
|
|
2919
|
-
);
|
|
2920
|
-
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2921
|
-
resetSuggestionsFromHook();
|
|
2922
|
-
setSuggestionsFailed(false);
|
|
2923
|
-
hasGeneratedInitialSuggestions.current = false;
|
|
2924
|
-
}, [resetSuggestionsFromHook]);
|
|
2925
|
-
(0, import_react15.useEffect)(() => {
|
|
2926
|
-
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
2927
|
-
}, [onInProgress, isLoading]);
|
|
2928
|
-
const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
|
|
2929
|
-
const images = imagesToUse || [];
|
|
2930
|
-
if (chatSuggestions === "auto" || chatSuggestions === "manual") {
|
|
2931
|
-
setSuggestions([]);
|
|
2932
|
-
}
|
|
2933
|
-
let firstMessage = null;
|
|
2934
|
-
if (messageContent.trim().length > 0) {
|
|
2935
|
-
const textMessage = {
|
|
2936
|
-
id: (0, import_shared4.randomId)(),
|
|
2937
|
-
role: "user",
|
|
2938
|
-
content: messageContent
|
|
2939
|
-
};
|
|
2940
|
-
if (onSubmitMessage) {
|
|
2941
|
-
try {
|
|
2942
|
-
yield onSubmitMessage(messageContent);
|
|
2943
|
-
} catch (error) {
|
|
2944
|
-
console.error("Error in onSubmitMessage:", error);
|
|
2945
|
-
}
|
|
2946
|
-
}
|
|
2947
|
-
yield sendMessage(textMessage, {
|
|
2948
|
-
followUp: images.length === 0,
|
|
2949
|
-
clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
|
|
2950
|
-
});
|
|
2951
|
-
if (!firstMessage) {
|
|
2952
|
-
firstMessage = textMessage;
|
|
2953
|
-
}
|
|
2954
|
-
}
|
|
2955
|
-
if (images.length > 0) {
|
|
2956
|
-
for (let i = 0; i < images.length; i++) {
|
|
2957
|
-
const imageMessage = {
|
|
2958
|
-
id: (0, import_shared4.randomId)(),
|
|
2959
|
-
role: "user",
|
|
2960
|
-
image: {
|
|
2961
|
-
format: images[i].contentType.replace("image/", ""),
|
|
2962
|
-
bytes: images[i].bytes
|
|
2963
|
-
}
|
|
2964
|
-
};
|
|
2965
|
-
yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
|
|
2966
|
-
if (!firstMessage) {
|
|
2967
|
-
firstMessage = imageMessage;
|
|
2968
|
-
}
|
|
2969
|
-
}
|
|
2970
|
-
}
|
|
2971
|
-
if (!firstMessage) {
|
|
2972
|
-
return { role: "user", content: "", id: (0, import_shared4.randomId)() };
|
|
2973
|
-
}
|
|
2974
|
-
return firstMessage;
|
|
2975
|
-
});
|
|
2976
|
-
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
2977
|
-
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2978
|
-
if (generalContext.agentSession) {
|
|
2979
|
-
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
2980
|
-
nodeName: void 0,
|
|
2981
|
-
threadId: void 0
|
|
2982
|
-
}));
|
|
2983
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2984
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
2985
|
-
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
2986
|
-
threadId: void 0,
|
|
2987
|
-
nodeName: void 0,
|
|
2988
|
-
runId: void 0
|
|
2989
|
-
})
|
|
2990
|
-
});
|
|
2991
|
-
});
|
|
2992
|
-
}
|
|
2993
|
-
});
|
|
2994
|
-
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2995
|
-
if (generalContext.agentSession) {
|
|
2996
|
-
yield (0, import_react_core10.runAgent)(
|
|
2997
|
-
generalContext.agentSession.agentName,
|
|
2998
|
-
stableContext,
|
|
2999
|
-
messagesContext.messages,
|
|
3000
|
-
sendMessage,
|
|
3001
|
-
runChatCompletion
|
|
3002
|
-
);
|
|
3003
|
-
}
|
|
3004
|
-
});
|
|
3005
|
-
const stopCurrentAgent = () => {
|
|
3006
|
-
if (generalContext.agentSession) {
|
|
3007
|
-
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
|
|
3008
|
-
}
|
|
3009
|
-
};
|
|
3010
|
-
const setCurrentAgentState = (state) => {
|
|
3011
|
-
if (generalContext.agentSession) {
|
|
3012
|
-
generalContext.setCoagentStates((prevAgentStates) => {
|
|
3013
|
-
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
3014
|
-
[generalContext.agentSession.agentName]: {
|
|
3015
|
-
state
|
|
3016
|
-
}
|
|
3017
|
-
});
|
|
3018
|
-
});
|
|
3019
|
-
}
|
|
3020
|
-
};
|
|
3021
|
-
function stopGeneration() {
|
|
3022
|
-
setSuggestions([]);
|
|
3023
|
-
if (onStopGeneration) {
|
|
3024
|
-
onStopGeneration({
|
|
3025
|
-
messages,
|
|
3026
|
-
setMessages,
|
|
3027
|
-
stopGeneration: defaultStopGeneration,
|
|
3028
|
-
currentAgentName,
|
|
3029
|
-
restartCurrentAgent,
|
|
3030
|
-
stopCurrentAgent,
|
|
3031
|
-
runCurrentAgent,
|
|
3032
|
-
setCurrentAgentState
|
|
3033
|
-
});
|
|
3034
|
-
} else {
|
|
3035
|
-
defaultStopGeneration();
|
|
3036
|
-
}
|
|
3037
|
-
}
|
|
3038
|
-
function reloadMessages(messageId) {
|
|
3039
|
-
if (onReloadMessages) {
|
|
3040
|
-
onReloadMessages({
|
|
3041
|
-
messages,
|
|
3042
|
-
setMessages,
|
|
3043
|
-
stopGeneration: defaultStopGeneration,
|
|
3044
|
-
currentAgentName,
|
|
3045
|
-
restartCurrentAgent,
|
|
3046
|
-
stopCurrentAgent,
|
|
3047
|
-
runCurrentAgent,
|
|
3048
|
-
setCurrentAgentState,
|
|
3049
|
-
messageId
|
|
3050
|
-
});
|
|
3051
|
-
} else {
|
|
3052
|
-
defaultReloadMessages(messageId);
|
|
3053
|
-
}
|
|
3054
|
-
}
|
|
3055
|
-
return {
|
|
3056
|
-
messages,
|
|
3057
|
-
isLoading,
|
|
3058
|
-
suggestions,
|
|
3059
|
-
sendMessage: safelySendMessage,
|
|
3060
|
-
stopGeneration,
|
|
3061
|
-
reloadMessages,
|
|
3062
|
-
resetSuggestions,
|
|
3063
|
-
context: stableContext,
|
|
3064
|
-
actions
|
|
3065
|
-
};
|
|
3066
|
-
};
|
|
3067
2890
|
|
|
3068
2891
|
// src/components/chat/Modal.tsx
|
|
3069
|
-
var
|
|
3070
|
-
var
|
|
2892
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2893
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
3071
2894
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3072
2895
|
var CopilotModalInner = (_a) => {
|
|
3073
2896
|
var _b = _a, {
|
|
@@ -3093,7 +2916,7 @@ var CopilotModalInner = (_a) => {
|
|
|
3093
2916
|
"Button",
|
|
3094
2917
|
"Header"
|
|
3095
2918
|
]);
|
|
3096
|
-
const { copilotApiConfig, setBannerError } = (0,
|
|
2919
|
+
const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
|
|
3097
2920
|
const { publicApiKey } = copilotApiConfig;
|
|
3098
2921
|
const triggerObservabilityHook = (0, import_react16.useCallback)(
|
|
3099
2922
|
(hookName, ...args) => {
|
|
@@ -3102,14 +2925,14 @@ var CopilotModalInner = (_a) => {
|
|
|
3102
2925
|
}
|
|
3103
2926
|
if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
|
|
3104
2927
|
setBannerError(
|
|
3105
|
-
new
|
|
2928
|
+
new import_shared4.CopilotKitError({
|
|
3106
2929
|
message: "observabilityHooks requires a publicApiKey to function.",
|
|
3107
|
-
code:
|
|
3108
|
-
severity:
|
|
3109
|
-
visibility:
|
|
2930
|
+
code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
2931
|
+
severity: import_shared4.Severity.CRITICAL,
|
|
2932
|
+
visibility: import_shared4.ErrorVisibility.BANNER
|
|
3110
2933
|
})
|
|
3111
2934
|
);
|
|
3112
|
-
|
|
2935
|
+
import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
|
|
3113
2936
|
}
|
|
3114
2937
|
},
|
|
3115
2938
|
[publicApiKey, observabilityHooks, setBannerError]
|