@copilotkit/react-ui 0.0.0-fix-debug-infosys-20251107162427 → 0.0.0-fix-restore-handle-method-node-http-20251222114321

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