@copilotkit/react-ui 1.10.7-next.0 → 1.50.0-beta.1

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.
Files changed (129) hide show
  1. package/CHANGELOG.md +0 -9
  2. package/dist/{chunk-VTYBYTE6.mjs → chunk-3JYVJHL5.mjs} +7 -7
  3. package/dist/chunk-3YWFGNSM.mjs +32 -0
  4. package/dist/chunk-3YWFGNSM.mjs.map +1 -0
  5. package/dist/{chunk-YBRHDFVQ.mjs → chunk-CQ2WALZ7.mjs} +2 -2
  6. package/dist/{chunk-OWX6YJZH.mjs → chunk-E6WVAOQA.mjs} +9 -5
  7. package/dist/chunk-E6WVAOQA.mjs.map +1 -0
  8. package/dist/{chunk-WBPBTTQD.mjs → chunk-FFJHOZX6.mjs} +4 -4
  9. package/dist/{chunk-MJEYL3FK.mjs → chunk-G35HUUDA.mjs} +26 -260
  10. package/dist/chunk-G35HUUDA.mjs.map +1 -0
  11. package/dist/{chunk-V6DDX4LH.mjs → chunk-GDSZGYCE.mjs} +2 -2
  12. package/dist/{chunk-ZJCHKHE4.mjs → chunk-HBZW7E5Z.mjs} +13 -10
  13. package/dist/chunk-HBZW7E5Z.mjs.map +1 -0
  14. package/dist/{chunk-KX44MLR6.mjs → chunk-IHFR6PYG.mjs} +1 -1
  15. package/dist/chunk-IHFR6PYG.mjs.map +1 -0
  16. package/dist/{chunk-2XARU6EY.mjs → chunk-MPF6BJUF.mjs} +5 -3
  17. package/dist/chunk-MPF6BJUF.mjs.map +1 -0
  18. package/dist/{chunk-W26XFBEG.mjs → chunk-NGJ32FAP.mjs} +3 -3
  19. package/dist/chunk-NGJ32FAP.mjs.map +1 -0
  20. package/dist/{chunk-RKULVDQO.mjs → chunk-ODEHR7KI.mjs} +9 -2
  21. package/dist/chunk-ODEHR7KI.mjs.map +1 -0
  22. package/dist/chunk-OYRZ4VLU.mjs +12 -0
  23. package/dist/chunk-OYRZ4VLU.mjs.map +1 -0
  24. package/dist/chunk-QB3GUN2N.mjs +31 -0
  25. package/dist/chunk-QB3GUN2N.mjs.map +1 -0
  26. package/dist/{chunk-PIFTVJG3.mjs → chunk-SOB5EIL7.mjs} +2 -2
  27. package/dist/components/chat/Chat.d.ts +3 -98
  28. package/dist/components/chat/Chat.js +79 -275
  29. package/dist/components/chat/Chat.js.map +1 -1
  30. package/dist/components/chat/Chat.mjs +11 -13
  31. package/dist/components/chat/Header.mjs +4 -4
  32. package/dist/components/chat/Input.d.ts +1 -1
  33. package/dist/components/chat/Input.js +11 -8
  34. package/dist/components/chat/Input.js.map +1 -1
  35. package/dist/components/chat/Input.mjs +1 -1
  36. package/dist/components/chat/Messages.d.ts +3 -3
  37. package/dist/components/chat/Messages.js +33 -4
  38. package/dist/components/chat/Messages.js.map +1 -1
  39. package/dist/components/chat/Messages.mjs +5 -5
  40. package/dist/components/chat/Modal.d.ts +1 -6
  41. package/dist/components/chat/Modal.js +85 -279
  42. package/dist/components/chat/Modal.js.map +1 -1
  43. package/dist/components/chat/Modal.mjs +14 -14
  44. package/dist/components/chat/Popup.d.ts +1 -6
  45. package/dist/components/chat/Popup.js +85 -279
  46. package/dist/components/chat/Popup.js.map +1 -1
  47. package/dist/components/chat/Popup.mjs +15 -15
  48. package/dist/components/chat/Sidebar.d.ts +1 -6
  49. package/dist/components/chat/Sidebar.js +85 -279
  50. package/dist/components/chat/Sidebar.js.map +1 -1
  51. package/dist/components/chat/Sidebar.mjs +15 -15
  52. package/dist/components/chat/Suggestion.js.map +1 -1
  53. package/dist/components/chat/Suggestion.mjs +1 -1
  54. package/dist/components/chat/Suggestions.d.ts +1 -1
  55. package/dist/components/chat/Suggestions.js +19 -12
  56. package/dist/components/chat/Suggestions.js.map +1 -1
  57. package/dist/components/chat/Suggestions.mjs +2 -2
  58. package/dist/components/chat/index.d.ts +0 -5
  59. package/dist/components/chat/index.js +85 -279
  60. package/dist/components/chat/index.js.map +1 -1
  61. package/dist/components/chat/index.mjs +16 -16
  62. package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
  63. package/dist/components/chat/messages/AssistantMessage.mjs +1 -1
  64. package/dist/components/chat/messages/LegacyRenderMessage.js +28 -3
  65. package/dist/components/chat/messages/LegacyRenderMessage.js.map +1 -1
  66. package/dist/components/chat/messages/LegacyRenderMessage.mjs +4 -4
  67. package/dist/components/chat/messages/RenderMessage.js +21 -3
  68. package/dist/components/chat/messages/RenderMessage.js.map +1 -1
  69. package/dist/components/chat/messages/RenderMessage.mjs +3 -3
  70. package/dist/components/chat/messages/UserMessage.js +19 -3
  71. package/dist/components/chat/messages/UserMessage.js.map +1 -1
  72. package/dist/components/chat/messages/UserMessage.mjs +1 -1
  73. package/dist/components/chat/props.d.ts +4 -0
  74. package/dist/components/chat/props.js.map +1 -1
  75. package/dist/components/dev-console/console.mjs +3 -3
  76. package/dist/components/dev-console/index.mjs +4 -4
  77. package/dist/components/index.d.ts +0 -5
  78. package/dist/components/index.js +85 -279
  79. package/dist/components/index.js.map +1 -1
  80. package/dist/components/index.mjs +17 -17
  81. package/dist/hooks/index.d.ts +1 -0
  82. package/dist/hooks/index.js +2 -24
  83. package/dist/hooks/index.js.map +1 -1
  84. package/dist/hooks/index.mjs +1 -1
  85. package/dist/hooks/use-copilot-chat-suggestions.d.ts +4 -26
  86. package/dist/hooks/use-copilot-chat-suggestions.js +2 -24
  87. package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -1
  88. package/dist/hooks/use-copilot-chat-suggestions.mjs +1 -1
  89. package/dist/index.css +0 -2
  90. package/dist/index.css.map +1 -1
  91. package/dist/index.d.ts +0 -5
  92. package/dist/index.js +88 -304
  93. package/dist/index.js.map +1 -1
  94. package/dist/index.mjs +18 -18
  95. package/dist/types/suggestions.d.ts +1 -0
  96. package/dist/types/suggestions.js.map +1 -1
  97. package/package.json +8 -7
  98. package/src/components/chat/Chat.tsx +24 -325
  99. package/src/components/chat/Input.tsx +13 -12
  100. package/src/components/chat/Messages.tsx +8 -4
  101. package/src/components/chat/Suggestion.tsx +2 -2
  102. package/src/components/chat/Suggestions.tsx +6 -2
  103. package/src/components/chat/messages/AssistantMessage.tsx +1 -0
  104. package/src/components/chat/messages/LegacyRenderMessage.tsx +7 -0
  105. package/src/components/chat/messages/RenderMessage.tsx +2 -0
  106. package/src/components/chat/messages/UserMessage.tsx +30 -6
  107. package/src/components/chat/props.ts +4 -0
  108. package/src/css/messages.css +0 -2
  109. package/src/hooks/use-copilot-chat-suggestions.tsx +6 -57
  110. package/src/types/suggestions.ts +1 -0
  111. package/tsup.config.ts +1 -1
  112. package/dist/chunk-226ZMOE3.mjs +0 -24
  113. package/dist/chunk-226ZMOE3.mjs.map +0 -1
  114. package/dist/chunk-2XARU6EY.mjs.map +0 -1
  115. package/dist/chunk-EYRKZDP5.mjs +0 -32
  116. package/dist/chunk-EYRKZDP5.mjs.map +0 -1
  117. package/dist/chunk-KX44MLR6.mjs.map +0 -1
  118. package/dist/chunk-MJEYL3FK.mjs.map +0 -1
  119. package/dist/chunk-OWX6YJZH.mjs.map +0 -1
  120. package/dist/chunk-RKULVDQO.mjs.map +0 -1
  121. package/dist/chunk-VVL6JFCJ.mjs +0 -16
  122. package/dist/chunk-VVL6JFCJ.mjs.map +0 -1
  123. package/dist/chunk-W26XFBEG.mjs.map +0 -1
  124. package/dist/chunk-ZJCHKHE4.mjs.map +0 -1
  125. /package/dist/{chunk-VTYBYTE6.mjs.map → chunk-3JYVJHL5.mjs.map} +0 -0
  126. /package/dist/{chunk-YBRHDFVQ.mjs.map → chunk-CQ2WALZ7.mjs.map} +0 -0
  127. /package/dist/{chunk-WBPBTTQD.mjs.map → chunk-FFJHOZX6.mjs.map} +0 -0
  128. /package/dist/{chunk-V6DDX4LH.mjs.map → chunk-GDSZGYCE.mjs.map} +0 -0
  129. /package/dist/{chunk-PIFTVJG3.mjs.map → chunk-SOB5EIL7.mjs.map} +0 -0
@@ -1,30 +1,30 @@
1
1
  import {
2
2
  CopilotPopup
3
- } from "../../chunk-YBRHDFVQ.mjs";
4
- import "../../chunk-VTYBYTE6.mjs";
3
+ } from "../../chunk-CQ2WALZ7.mjs";
4
+ import "../../chunk-3JYVJHL5.mjs";
5
5
  import "../../chunk-C3GSYRC3.mjs";
6
- import "../../chunk-V6DDX4LH.mjs";
6
+ import "../../chunk-GDSZGYCE.mjs";
7
7
  import "../../chunk-V7W6IM2V.mjs";
8
- import "../../chunk-WBPBTTQD.mjs";
8
+ import "../../chunk-FFJHOZX6.mjs";
9
+ import "../../chunk-Q5V6S67N.mjs";
10
+ import "../../chunk-JY2CSDKN.mjs";
9
11
  import "../../chunk-KXE2JCUH.mjs";
10
12
  import "../../chunk-NRA3CFEE.mjs";
11
13
  import "../../chunk-BH6PCAAL.mjs";
12
- import "../../chunk-Q5V6S67N.mjs";
13
- import "../../chunk-JY2CSDKN.mjs";
14
14
  import "../../chunk-UFN2VWSR.mjs";
15
- import "../../chunk-MJEYL3FK.mjs";
16
- import "../../chunk-226ZMOE3.mjs";
17
- import "../../chunk-W26XFBEG.mjs";
15
+ import "../../chunk-G35HUUDA.mjs";
16
+ import "../../chunk-QB3GUN2N.mjs";
17
+ import "../../chunk-NGJ32FAP.mjs";
18
18
  import "../../chunk-PLHTVHUW.mjs";
19
- import "../../chunk-ZJCHKHE4.mjs";
19
+ import "../../chunk-HBZW7E5Z.mjs";
20
20
  import "../../chunk-ELGRNEAO.mjs";
21
21
  import "../../chunk-QIOJXTIQ.mjs";
22
- import "../../chunk-OWX6YJZH.mjs";
23
- import "../../chunk-RKULVDQO.mjs";
24
- import "../../chunk-2XARU6EY.mjs";
25
- import "../../chunk-KX44MLR6.mjs";
22
+ import "../../chunk-E6WVAOQA.mjs";
23
+ import "../../chunk-ODEHR7KI.mjs";
24
+ import "../../chunk-MPF6BJUF.mjs";
25
+ import "../../chunk-IHFR6PYG.mjs";
26
26
  import "../../chunk-DBKRAOH7.mjs";
27
- import "../../chunk-VVL6JFCJ.mjs";
27
+ import "../../chunk-3YWFGNSM.mjs";
28
28
  import "../../chunk-JZ3RFQQ6.mjs";
29
29
  import "../../chunk-IEMQ2SQW.mjs";
30
30
  import "../../chunk-IK2BPURM.mjs";
@@ -5,13 +5,8 @@ import './props.js';
5
5
  import '@copilotkit/shared';
6
6
  import '../../types/suggestions.js';
7
7
  import './Chat.js';
8
- import '@copilotkit/react-core/dist/types/coagent-state';
9
- import '@copilotkit/react-core/dist/hooks/use-tree';
10
- import '@copilotkit/react-core/dist/copilot-context-cf9de848';
11
- import '@copilotkit/react-core/dist/types/coagent-action';
12
- import '@copilotkit/react-core';
13
- import '@copilotkit/runtime-client-gql';
14
8
  import './ChatContext.js';
9
+ import '@copilotkit/react-core';
15
10
 
16
11
  declare function CopilotSidebar(props: CopilotModalProps): react_jsx_runtime.JSX.Element;
17
12
 
@@ -1031,14 +1031,30 @@ var import_react_core5 = require("@copilotkit/react-core");
1031
1031
 
1032
1032
  // src/components/chat/messages/UserMessage.tsx
1033
1033
  var import_jsx_runtime10 = require("react/jsx-runtime");
1034
+ var getTextContent = (content) => {
1035
+ if (typeof content === "undefined") {
1036
+ return void 0;
1037
+ }
1038
+ if (typeof content === "string") {
1039
+ return content;
1040
+ }
1041
+ return content.map((part) => {
1042
+ if (part.type === "text") {
1043
+ return part.text;
1044
+ }
1045
+ return void 0;
1046
+ }).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
1047
+ };
1034
1048
  var UserMessage = (props) => {
1035
1049
  const { message, ImageRenderer: ImageRenderer2 } = props;
1036
- const isImageMessage = message && "image" in message && message.image;
1050
+ const isImageMessage = message && "image" in message && Boolean(message.image);
1037
1051
  if (isImageMessage) {
1038
1052
  const imageMessage = message;
1039
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: imageMessage.content }) });
1053
+ const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
1054
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
1040
1055
  }
1041
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message == null ? void 0 : message.content });
1056
+ const content = getTextContent(message == null ? void 0 : message.content);
1057
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
1042
1058
  };
1043
1059
 
1044
1060
  // src/components/chat/Markdown.tsx
@@ -1717,6 +1733,7 @@ function RenderMessage(_a) {
1717
1733
  var _a2;
1718
1734
  const {
1719
1735
  message,
1736
+ messages,
1720
1737
  inProgress,
1721
1738
  index,
1722
1739
  isCurrentMessage,
@@ -1747,6 +1764,7 @@ function RenderMessage(_a) {
1747
1764
  subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
1748
1765
  rawData: message,
1749
1766
  message,
1767
+ messages,
1750
1768
  isLoading: inProgress && isCurrentMessage && !message.content,
1751
1769
  isGenerating: inProgress && isCurrentMessage && !!message.content,
1752
1770
  isCurrentMessage,
@@ -1768,6 +1786,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
1768
1786
  var import_jsx_runtime16 = require("react/jsx-runtime");
1769
1787
  var LegacyRenderMessage = ({
1770
1788
  message,
1789
+ messages,
1771
1790
  inProgress,
1772
1791
  index,
1773
1792
  isCurrentMessage,
@@ -1796,6 +1815,7 @@ var LegacyRenderMessage = ({
1796
1815
  RenderTextMessage,
1797
1816
  {
1798
1817
  message,
1818
+ messages,
1799
1819
  inProgress,
1800
1820
  index,
1801
1821
  isCurrentMessage,
@@ -1813,6 +1833,7 @@ var LegacyRenderMessage = ({
1813
1833
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1814
1834
  RenderActionExecutionMessage,
1815
1835
  {
1836
+ messages,
1816
1837
  message,
1817
1838
  inProgress,
1818
1839
  index,
@@ -1827,6 +1848,7 @@ var LegacyRenderMessage = ({
1827
1848
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1828
1849
  RenderAgentStateMessage,
1829
1850
  {
1851
+ messages,
1830
1852
  message,
1831
1853
  inProgress,
1832
1854
  index,
@@ -1840,6 +1862,7 @@ var LegacyRenderMessage = ({
1840
1862
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1841
1863
  RenderResultMessage,
1842
1864
  {
1865
+ messages,
1843
1866
  message,
1844
1867
  inProgress,
1845
1868
  index,
@@ -1853,6 +1876,7 @@ var LegacyRenderMessage = ({
1853
1876
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1854
1877
  RenderImageMessage,
1855
1878
  {
1879
+ messages,
1856
1880
  message,
1857
1881
  inProgress,
1858
1882
  index,
@@ -1865,6 +1889,7 @@ var LegacyRenderMessage = ({
1865
1889
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1866
1890
  RenderMessage,
1867
1891
  {
1892
+ messages,
1868
1893
  message,
1869
1894
  inProgress,
1870
1895
  index,
@@ -1905,7 +1930,8 @@ var Messages = ({
1905
1930
  RenderResultMessage,
1906
1931
  RenderImageMessage
1907
1932
  }) => {
1908
- const { labels } = useChatContext();
1933
+ var _a;
1934
+ const { labels, icons } = useChatContext();
1909
1935
  const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
1910
1936
  const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
1911
1937
  const messages = [...initialMessages, ...visibleMessages];
@@ -1935,6 +1961,7 @@ var Messages = ({
1935
1961
  ]
1936
1962
  );
1937
1963
  const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
1964
+ const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
1938
1965
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
1939
1966
  /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
1940
1967
  messages.map((message, index) => {
@@ -1943,6 +1970,7 @@ var Messages = ({
1943
1970
  MessageRenderer,
1944
1971
  {
1945
1972
  message,
1973
+ messages,
1946
1974
  inProgress,
1947
1975
  index,
1948
1976
  isCurrentMessage,
@@ -1959,6 +1987,7 @@ var Messages = ({
1959
1987
  index
1960
1988
  );
1961
1989
  }),
1990
+ ((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
1962
1991
  interrupt,
1963
1992
  chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
1964
1993
  ] }),
@@ -2252,12 +2281,12 @@ var MAX_NEWLINES = 6;
2252
2281
  var Input = ({
2253
2282
  inProgress,
2254
2283
  onSend,
2255
- isVisible = false,
2284
+ chatReady = true,
2256
2285
  onStop,
2257
2286
  onUpload,
2258
2287
  hideStopButton = false
2259
2288
  }) => {
2260
- var _a, _b;
2289
+ var _a;
2261
2290
  const context = useChatContext();
2262
2291
  const copilotContext = (0, import_react_core7.useCopilotContext)();
2263
2292
  const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
@@ -2287,14 +2316,16 @@ var Input = ({
2287
2316
  inProgress
2288
2317
  });
2289
2318
  const isInProgress = inProgress || pushToTalkState === "transcribing";
2290
- const buttonIcon = isInProgress && !hideStopButton ? context.icons.stopIcon : context.icons.sendIcon;
2319
+ const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
2320
+ if (!chatReady)
2321
+ return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
2322
+ return isInProgress && !hideStopButton ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
2323
+ }, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
2291
2324
  const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
2325
+ const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
2292
2326
  const canSend = (0, import_react14.useMemo)(() => {
2293
- var _a2;
2294
- const interruptEvent = (_a2 = copilotContext.langGraphInterruptAction) == null ? void 0 : _a2.event;
2295
- const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
2296
- return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
2297
- }, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
2327
+ return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
2328
+ }, [interrupt, isInProgress, text, pushToTalkState]);
2298
2329
  const canStop = (0, import_react14.useMemo)(() => {
2299
2330
  return isInProgress && !hideStopButton;
2300
2331
  }, [isInProgress, hideStopButton]);
@@ -2341,6 +2372,7 @@ var Input = ({
2341
2372
  "data-copilotkit-in-progress": inProgress,
2342
2373
  "data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
2343
2374
  className: "copilotKitInputControlButton",
2375
+ "aria-label": buttonAlt,
2344
2376
  children: buttonIcon
2345
2377
  }
2346
2378
  )
@@ -2354,8 +2386,6 @@ var Input = ({
2354
2386
  var import_react15 = __toESM(require("react"));
2355
2387
  var import_react_core9 = require("@copilotkit/react-core");
2356
2388
  var import_shared3 = require("@copilotkit/shared");
2357
- var import_shared4 = require("@copilotkit/shared");
2358
- var import_react_core10 = require("@copilotkit/react-core");
2359
2389
 
2360
2390
  // src/components/chat/ImageUploadQueue.tsx
2361
2391
  var import_jsx_runtime21 = require("react/jsx-runtime");
@@ -2459,18 +2489,25 @@ function Suggestion({ title, onClick, partial, className }) {
2459
2489
 
2460
2490
  // src/components/chat/Suggestions.tsx
2461
2491
  var import_jsx_runtime23 = require("react/jsx-runtime");
2462
- function Suggestions({ suggestions, onSuggestionClick }) {
2463
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2464
- Suggestion,
2465
- {
2466
- title: suggestion.title,
2467
- message: suggestion.message,
2468
- partial: suggestion.partial,
2469
- className: suggestion.className,
2470
- onClick: () => onSuggestionClick(suggestion.message)
2471
- },
2472
- index
2473
- )) });
2492
+ function Suggestions({
2493
+ suggestions,
2494
+ onSuggestionClick,
2495
+ isLoading
2496
+ }) {
2497
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
2498
+ var _a, _b;
2499
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2500
+ Suggestion,
2501
+ {
2502
+ title: suggestion.title,
2503
+ message: suggestion.message,
2504
+ partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
2505
+ className: suggestion.className,
2506
+ onClick: () => onSuggestionClick(suggestion.message)
2507
+ },
2508
+ index
2509
+ );
2510
+ }) });
2474
2511
  }
2475
2512
 
2476
2513
  // src/components/chat/Chat.tsx
@@ -2670,16 +2707,12 @@ function CopilotChat({
2670
2707
  sendMessage,
2671
2708
  stopGeneration,
2672
2709
  reloadMessages,
2673
- suggestions: currentSuggestions
2674
- } = useCopilotChatLogic(
2675
- suggestions,
2676
- makeSystemMessage,
2677
- disableSystemMessage,
2678
- onInProgress,
2679
- onSubmitMessage,
2680
- onStopGeneration,
2681
- onReloadMessages
2682
- );
2710
+ suggestions: currentSuggestions,
2711
+ isLoadingSuggestions,
2712
+ agent
2713
+ } = (0, import_react_core9.useCopilotChatInternal)({
2714
+ suggestions
2715
+ });
2683
2716
  const prevIsLoading = (0, import_react15.useRef)(isLoading);
2684
2717
  (0, import_react15.useEffect)(() => {
2685
2718
  if (prevIsLoading.current !== isLoading) {
@@ -2698,7 +2731,11 @@ function CopilotChat({
2698
2731
  fileInputRef.current.value = "";
2699
2732
  }
2700
2733
  triggerObservabilityHook("onMessageSent", text);
2701
- return sendMessage(text, images);
2734
+ return sendMessage({
2735
+ id: (0, import_shared3.randomUUID)(),
2736
+ content: text,
2737
+ role: "user"
2738
+ });
2702
2739
  };
2703
2740
  const chatContext = import_react15.default.useContext(ChatContext);
2704
2741
  const isVisible = chatContext ? chatContext.open : true;
@@ -2801,7 +2838,8 @@ function CopilotChat({
2801
2838
  RenderSuggestionsList,
2802
2839
  {
2803
2840
  onSuggestionClick: handleSendMessage,
2804
- suggestions: currentSuggestions
2841
+ suggestions: currentSuggestions,
2842
+ isLoading: isLoadingSuggestions
2805
2843
  }
2806
2844
  )
2807
2845
  }
@@ -2824,6 +2862,7 @@ function CopilotChat({
2824
2862
  Input2,
2825
2863
  {
2826
2864
  inProgress: isLoading,
2865
+ chatReady: Boolean(agent),
2827
2866
  onSend: handleSendMessage,
2828
2867
  isVisible,
2829
2868
  onStop: stopGeneration,
@@ -2849,243 +2888,10 @@ function WrappedCopilotChat({
2849
2888
  }
2850
2889
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
2851
2890
  }
2852
- var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
2853
- var _a;
2854
- const {
2855
- messages,
2856
- sendMessage,
2857
- setMessages,
2858
- reloadMessages: defaultReloadMessages,
2859
- stopGeneration: defaultStopGeneration,
2860
- runChatCompletion,
2861
- isLoading,
2862
- suggestions,
2863
- setSuggestions,
2864
- generateSuggestions,
2865
- resetSuggestions: resetSuggestionsFromHook,
2866
- isLoadingSuggestions
2867
- } = (0, import_react_core9.useCopilotChatInternal)({
2868
- makeSystemMessage,
2869
- disableSystemMessage
2870
- });
2871
- const generalContext = (0, import_react_core9.useCopilotContext)();
2872
- const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
2873
- const { actions } = generalContext;
2874
- const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
2875
- const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
2876
- (0, import_react15.useEffect)(() => {
2877
- if (Array.isArray(chatSuggestions)) {
2878
- setSuggestions(chatSuggestions);
2879
- hasGeneratedInitialSuggestions.current = true;
2880
- }
2881
- }, [JSON.stringify(chatSuggestions), setSuggestions]);
2882
- const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
2883
- (context) => __async(void 0, null, function* () {
2884
- try {
2885
- yield generateSuggestions();
2886
- } catch (error) {
2887
- console.error("Failed to generate suggestions:", error);
2888
- setSuggestionsFailed(true);
2889
- }
2890
- }),
2891
- [generateSuggestions]
2892
- );
2893
- (0, import_react15.useEffect)(() => {
2894
- if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
2895
- return;
2896
- }
2897
- if (isLoading) {
2898
- return;
2899
- }
2900
- if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
2901
- return;
2902
- }
2903
- if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
2904
- hasGeneratedInitialSuggestions.current = true;
2905
- generateSuggestionsWithErrorHandling("initial");
2906
- return;
2907
- }
2908
- if (messages.length > 0 && suggestions.length === 0) {
2909
- generateSuggestionsWithErrorHandling("post-message");
2910
- return;
2911
- }
2912
- }, [
2913
- chatSuggestions,
2914
- isLoadingSuggestions,
2915
- suggestionsFailed,
2916
- messages.length,
2917
- isLoading,
2918
- suggestions.length,
2919
- Object.keys(generalContext.chatSuggestionConfiguration).join(","),
2920
- // Use stable string instead of object reference
2921
- generateSuggestionsWithErrorHandling
2922
- ]);
2923
- (0, import_react15.useEffect)(() => {
2924
- if (chatSuggestions !== "auto") {
2925
- hasGeneratedInitialSuggestions.current = false;
2926
- setSuggestionsFailed(false);
2927
- }
2928
- }, [chatSuggestions]);
2929
- const stableContext = (0, import_react15.useMemo)(
2930
- () => __spreadValues(__spreadValues({}, generalContext), messagesContext),
2931
- [
2932
- // Only include stable dependencies
2933
- generalContext.actions,
2934
- messagesContext.messages.length,
2935
- generalContext.isLoading
2936
- ]
2937
- );
2938
- const resetSuggestions = (0, import_react15.useCallback)(() => {
2939
- resetSuggestionsFromHook();
2940
- setSuggestionsFailed(false);
2941
- hasGeneratedInitialSuggestions.current = false;
2942
- }, [resetSuggestionsFromHook]);
2943
- (0, import_react15.useEffect)(() => {
2944
- onInProgress == null ? void 0 : onInProgress(isLoading);
2945
- }, [onInProgress, isLoading]);
2946
- const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
2947
- const images = imagesToUse || [];
2948
- if (chatSuggestions === "auto" || chatSuggestions === "manual") {
2949
- setSuggestions([]);
2950
- }
2951
- let firstMessage = null;
2952
- if (messageContent.trim().length > 0) {
2953
- const textMessage = {
2954
- id: (0, import_shared4.randomId)(),
2955
- role: "user",
2956
- content: messageContent
2957
- };
2958
- if (onSubmitMessage) {
2959
- try {
2960
- yield onSubmitMessage(messageContent);
2961
- } catch (error) {
2962
- console.error("Error in onSubmitMessage:", error);
2963
- }
2964
- }
2965
- yield sendMessage(textMessage, {
2966
- followUp: images.length === 0,
2967
- clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
2968
- });
2969
- if (!firstMessage) {
2970
- firstMessage = textMessage;
2971
- }
2972
- }
2973
- if (images.length > 0) {
2974
- for (let i = 0; i < images.length; i++) {
2975
- const imageMessage = {
2976
- id: (0, import_shared4.randomId)(),
2977
- role: "user",
2978
- image: {
2979
- format: images[i].contentType.replace("image/", ""),
2980
- bytes: images[i].bytes
2981
- }
2982
- };
2983
- yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
2984
- if (!firstMessage) {
2985
- firstMessage = imageMessage;
2986
- }
2987
- }
2988
- }
2989
- if (!firstMessage) {
2990
- return { role: "user", content: "", id: (0, import_shared4.randomId)() };
2991
- }
2992
- return firstMessage;
2993
- });
2994
- const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
2995
- const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
2996
- if (generalContext.agentSession) {
2997
- generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
2998
- nodeName: void 0,
2999
- threadId: void 0
3000
- }));
3001
- generalContext.setCoagentStates((prevAgentStates) => {
3002
- return __spreadProps(__spreadValues({}, prevAgentStates), {
3003
- [generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
3004
- threadId: void 0,
3005
- nodeName: void 0,
3006
- runId: void 0
3007
- })
3008
- });
3009
- });
3010
- }
3011
- });
3012
- const runCurrentAgent = (hint) => __async(void 0, null, function* () {
3013
- if (generalContext.agentSession) {
3014
- yield (0, import_react_core10.runAgent)(
3015
- generalContext.agentSession.agentName,
3016
- stableContext,
3017
- messagesContext.messages,
3018
- sendMessage,
3019
- runChatCompletion
3020
- );
3021
- }
3022
- });
3023
- const stopCurrentAgent = () => {
3024
- if (generalContext.agentSession) {
3025
- (0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
3026
- }
3027
- };
3028
- const setCurrentAgentState = (state) => {
3029
- if (generalContext.agentSession) {
3030
- generalContext.setCoagentStates((prevAgentStates) => {
3031
- return __spreadProps(__spreadValues({}, prevAgentStates), {
3032
- [generalContext.agentSession.agentName]: {
3033
- state
3034
- }
3035
- });
3036
- });
3037
- }
3038
- };
3039
- function stopGeneration() {
3040
- setSuggestions([]);
3041
- if (onStopGeneration) {
3042
- onStopGeneration({
3043
- messages,
3044
- setMessages,
3045
- stopGeneration: defaultStopGeneration,
3046
- currentAgentName,
3047
- restartCurrentAgent,
3048
- stopCurrentAgent,
3049
- runCurrentAgent,
3050
- setCurrentAgentState
3051
- });
3052
- } else {
3053
- defaultStopGeneration();
3054
- }
3055
- }
3056
- function reloadMessages(messageId) {
3057
- if (onReloadMessages) {
3058
- onReloadMessages({
3059
- messages,
3060
- setMessages,
3061
- stopGeneration: defaultStopGeneration,
3062
- currentAgentName,
3063
- restartCurrentAgent,
3064
- stopCurrentAgent,
3065
- runCurrentAgent,
3066
- setCurrentAgentState,
3067
- messageId
3068
- });
3069
- } else {
3070
- defaultReloadMessages(messageId);
3071
- }
3072
- }
3073
- return {
3074
- messages,
3075
- isLoading,
3076
- suggestions,
3077
- sendMessage: safelySendMessage,
3078
- stopGeneration,
3079
- reloadMessages,
3080
- resetSuggestions,
3081
- context: stableContext,
3082
- actions
3083
- };
3084
- };
3085
2891
 
3086
2892
  // src/components/chat/Modal.tsx
3087
- var import_react_core11 = require("@copilotkit/react-core");
3088
- var import_shared5 = require("@copilotkit/shared");
2893
+ var import_react_core10 = require("@copilotkit/react-core");
2894
+ var import_shared4 = require("@copilotkit/shared");
3089
2895
  var import_jsx_runtime25 = require("react/jsx-runtime");
3090
2896
  var CopilotModalInner = (_a) => {
3091
2897
  var _b = _a, {
@@ -3111,7 +2917,7 @@ var CopilotModalInner = (_a) => {
3111
2917
  "Button",
3112
2918
  "Header"
3113
2919
  ]);
3114
- const { copilotApiConfig, setBannerError } = (0, import_react_core11.useCopilotContext)();
2920
+ const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
3115
2921
  const { publicApiKey } = copilotApiConfig;
3116
2922
  const triggerObservabilityHook = (0, import_react16.useCallback)(
3117
2923
  (hookName, ...args) => {
@@ -3120,14 +2926,14 @@ var CopilotModalInner = (_a) => {
3120
2926
  }
3121
2927
  if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
3122
2928
  setBannerError(
3123
- new import_shared5.CopilotKitError({
2929
+ new import_shared4.CopilotKitError({
3124
2930
  message: "observabilityHooks requires a publicApiKey to function.",
3125
- code: import_shared5.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
3126
- severity: import_shared5.Severity.CRITICAL,
3127
- visibility: import_shared5.ErrorVisibility.BANNER
2931
+ code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
2932
+ severity: import_shared4.Severity.CRITICAL,
2933
+ visibility: import_shared4.ErrorVisibility.BANNER
3128
2934
  })
3129
2935
  );
3130
- import_shared5.styledConsole.publicApiKeyRequired("observabilityHooks");
2936
+ import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
3131
2937
  }
3132
2938
  },
3133
2939
  [publicApiKey, observabilityHooks, setBannerError]