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

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 (140) hide show
  1. package/CHANGELOG.md +331 -5
  2. package/dist/{chunk-RKULVDQO.mjs → chunk-7OURDQZJ.mjs} +9 -2
  3. package/dist/chunk-7OURDQZJ.mjs.map +1 -0
  4. package/dist/{chunk-GDSZGYCE.mjs → chunk-B4EBCYMS.mjs} +4 -4
  5. package/dist/{chunk-TZNQJ3NA.mjs → chunk-DNKXXZPD.mjs} +9 -9
  6. package/dist/{chunk-FFJHOZX6.mjs → chunk-FKJWIQGB.mjs} +9 -9
  7. package/dist/{chunk-OWX6YJZH.mjs → chunk-HIW7RXCD.mjs} +9 -5
  8. package/dist/chunk-HIW7RXCD.mjs.map +1 -0
  9. package/dist/{chunk-KX44MLR6.mjs → chunk-IHFR6PYG.mjs} +1 -1
  10. package/dist/chunk-IHFR6PYG.mjs.map +1 -0
  11. package/dist/{chunk-52RQLNFB.mjs → chunk-JINSXNV4.mjs} +2 -2
  12. package/dist/{chunk-FK3XMHLY.mjs → chunk-KG4USHSZ.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-RLKEYENV.mjs} +25 -255
  20. package/dist/chunk-RLKEYENV.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-ZJCHKHE4.mjs → chunk-SABFRQEH.mjs} +16 -13
  24. package/dist/chunk-SABFRQEH.mjs.map +1 -0
  25. package/dist/chunk-Y4FKRAKJ.mjs +12 -0
  26. package/dist/chunk-Y4FKRAKJ.mjs.map +1 -0
  27. package/dist/components/chat/Chat.d.ts +3 -140
  28. package/dist/components/chat/Chat.js +80 -270
  29. package/dist/components/chat/Chat.js.map +1 -1
  30. package/dist/components/chat/Chat.mjs +13 -15
  31. package/dist/components/chat/Header.mjs +5 -5
  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 +2 -2
  36. package/dist/components/chat/Messages.d.ts +3 -3
  37. package/dist/components/chat/Messages.js +35 -4
  38. package/dist/components/chat/Messages.js.map +1 -1
  39. package/dist/components/chat/Messages.mjs +6 -6
  40. package/dist/components/chat/Modal.d.ts +1 -6
  41. package/dist/components/chat/Modal.js +86 -274
  42. package/dist/components/chat/Modal.js.map +1 -1
  43. package/dist/components/chat/Modal.mjs +20 -20
  44. package/dist/components/chat/Popup.d.ts +1 -6
  45. package/dist/components/chat/Popup.js +86 -274
  46. package/dist/components/chat/Popup.js.map +1 -1
  47. package/dist/components/chat/Popup.mjs +21 -21
  48. package/dist/components/chat/Sidebar.d.ts +1 -6
  49. package/dist/components/chat/Sidebar.js +86 -274
  50. package/dist/components/chat/Sidebar.js.map +1 -1
  51. package/dist/components/chat/Sidebar.mjs +21 -21
  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 +86 -274
  60. package/dist/components/chat/index.js.map +1 -1
  61. package/dist/components/chat/index.mjs +24 -24
  62. package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
  63. package/dist/components/chat/messages/AssistantMessage.mjs +2 -2
  64. package/dist/components/chat/messages/ErrorMessage.mjs +1 -1
  65. package/dist/components/chat/messages/LegacyRenderMessage.js +30 -3
  66. package/dist/components/chat/messages/LegacyRenderMessage.js.map +1 -1
  67. package/dist/components/chat/messages/LegacyRenderMessage.mjs +5 -5
  68. package/dist/components/chat/messages/RenderMessage.d.ts +1 -1
  69. package/dist/components/chat/messages/RenderMessage.js +23 -3
  70. package/dist/components/chat/messages/RenderMessage.js.map +1 -1
  71. package/dist/components/chat/messages/RenderMessage.mjs +4 -4
  72. package/dist/components/chat/messages/UserMessage.js +19 -3
  73. package/dist/components/chat/messages/UserMessage.js.map +1 -1
  74. package/dist/components/chat/messages/UserMessage.mjs +1 -1
  75. package/dist/components/chat/props.d.ts +4 -0
  76. package/dist/components/chat/props.js.map +1 -1
  77. package/dist/components/dev-console/console.mjs +3 -3
  78. package/dist/components/dev-console/index.mjs +5 -5
  79. package/dist/components/index.d.ts +0 -5
  80. package/dist/components/index.js +86 -274
  81. package/dist/components/index.js.map +1 -1
  82. package/dist/components/index.mjs +28 -28
  83. package/dist/hooks/index.d.ts +1 -0
  84. package/dist/hooks/index.js +2 -24
  85. package/dist/hooks/index.js.map +1 -1
  86. package/dist/hooks/index.mjs +1 -1
  87. package/dist/hooks/use-copilot-chat-suggestions.d.ts +4 -26
  88. package/dist/hooks/use-copilot-chat-suggestions.js +2 -24
  89. package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -1
  90. package/dist/hooks/use-copilot-chat-suggestions.mjs +1 -1
  91. package/dist/index.css +1 -1
  92. package/dist/index.css.map +1 -1
  93. package/dist/index.d.ts +0 -5
  94. package/dist/index.js +89 -299
  95. package/dist/index.js.map +1 -1
  96. package/dist/index.mjs +30 -30
  97. package/dist/types/suggestions.d.ts +1 -0
  98. package/dist/types/suggestions.js.map +1 -1
  99. package/dist/v2/index.css +4 -0
  100. package/dist/v2/index.css.map +1 -0
  101. package/dist/v2/index.d.ts +2 -0
  102. package/dist/v2/index.js +2 -0
  103. package/dist/v2/index.js.map +1 -0
  104. package/dist/v2/index.mjs +2 -0
  105. package/dist/v2/index.mjs.map +1 -0
  106. package/package.json +8 -7
  107. package/src/components/chat/Chat.tsx +21 -374
  108. package/src/components/chat/Input.tsx +13 -12
  109. package/src/components/chat/Messages.tsx +8 -4
  110. package/src/components/chat/Suggestion.tsx +2 -2
  111. package/src/components/chat/Suggestions.tsx +6 -2
  112. package/src/components/chat/messages/AssistantMessage.tsx +1 -0
  113. package/src/components/chat/messages/LegacyRenderMessage.tsx +7 -0
  114. package/src/components/chat/messages/RenderMessage.tsx +4 -0
  115. package/src/components/chat/messages/UserMessage.tsx +32 -6
  116. package/src/components/chat/props.ts +4 -0
  117. package/src/css/messages.css +1 -1
  118. package/src/hooks/use-copilot-chat-suggestions.tsx +6 -57
  119. package/src/types/suggestions.ts +1 -0
  120. package/src/v2/index.ts +1 -0
  121. package/src/v2/styles.css +1 -0
  122. package/tsup.config.ts +1 -1
  123. package/dist/chunk-226ZMOE3.mjs +0 -24
  124. package/dist/chunk-226ZMOE3.mjs.map +0 -1
  125. package/dist/chunk-2XARU6EY.mjs.map +0 -1
  126. package/dist/chunk-EYRKZDP5.mjs +0 -32
  127. package/dist/chunk-EYRKZDP5.mjs.map +0 -1
  128. package/dist/chunk-KX44MLR6.mjs.map +0 -1
  129. package/dist/chunk-MJEYL3FK.mjs.map +0 -1
  130. package/dist/chunk-OWX6YJZH.mjs.map +0 -1
  131. package/dist/chunk-RKULVDQO.mjs.map +0 -1
  132. package/dist/chunk-VVL6JFCJ.mjs +0 -16
  133. package/dist/chunk-VVL6JFCJ.mjs.map +0 -1
  134. package/dist/chunk-W26XFBEG.mjs.map +0 -1
  135. package/dist/chunk-ZJCHKHE4.mjs.map +0 -1
  136. /package/dist/{chunk-GDSZGYCE.mjs.map → chunk-B4EBCYMS.mjs.map} +0 -0
  137. /package/dist/{chunk-TZNQJ3NA.mjs.map → chunk-DNKXXZPD.mjs.map} +0 -0
  138. /package/dist/{chunk-FFJHOZX6.mjs.map → chunk-FKJWIQGB.mjs.map} +0 -0
  139. /package/dist/{chunk-52RQLNFB.mjs.map → chunk-JINSXNV4.mjs.map} +0 -0
  140. /package/dist/{chunk-FK3XMHLY.mjs.map → chunk-KG4USHSZ.mjs.map} +0 -0
@@ -1028,14 +1028,30 @@ var import_react_core5 = require("@copilotkit/react-core");
1028
1028
 
1029
1029
  // src/components/chat/messages/UserMessage.tsx
1030
1030
  var import_jsx_runtime10 = require("react/jsx-runtime");
1031
+ var getTextContent = (content) => {
1032
+ if (typeof content === "undefined") {
1033
+ return void 0;
1034
+ }
1035
+ if (typeof content === "string") {
1036
+ return content;
1037
+ }
1038
+ return content.map((part) => {
1039
+ if (part.type === "text") {
1040
+ return part.text;
1041
+ }
1042
+ return void 0;
1043
+ }).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
1044
+ };
1031
1045
  var UserMessage = (props) => {
1032
1046
  const { message, ImageRenderer: ImageRenderer2 } = props;
1033
- const isImageMessage = message && "image" in message && message.image;
1047
+ const isImageMessage = message && "image" in message && Boolean(message.image);
1034
1048
  if (isImageMessage) {
1035
1049
  const imageMessage = message;
1036
- 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 }) });
1050
+ const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
1051
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
1037
1052
  }
1038
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message == null ? void 0 : message.content });
1053
+ const content = getTextContent(message == null ? void 0 : message.content);
1054
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
1039
1055
  };
1040
1056
 
1041
1057
  // src/components/chat/Markdown.tsx
@@ -1714,6 +1730,7 @@ function RenderMessage(_a) {
1714
1730
  var _a2;
1715
1731
  const {
1716
1732
  message,
1733
+ messages,
1717
1734
  inProgress,
1718
1735
  index,
1719
1736
  isCurrentMessage,
@@ -1744,6 +1761,7 @@ function RenderMessage(_a) {
1744
1761
  subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
1745
1762
  rawData: message,
1746
1763
  message,
1764
+ messages,
1747
1765
  isLoading: inProgress && isCurrentMessage && !message.content,
1748
1766
  isGenerating: inProgress && isCurrentMessage && !!message.content,
1749
1767
  isCurrentMessage,
@@ -1757,6 +1775,8 @@ function RenderMessage(_a) {
1757
1775
  },
1758
1776
  index
1759
1777
  );
1778
+ default:
1779
+ return null;
1760
1780
  }
1761
1781
  }
1762
1782
 
@@ -1765,6 +1785,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
1765
1785
  var import_jsx_runtime16 = require("react/jsx-runtime");
1766
1786
  var LegacyRenderMessage = ({
1767
1787
  message,
1788
+ messages,
1768
1789
  inProgress,
1769
1790
  index,
1770
1791
  isCurrentMessage,
@@ -1793,6 +1814,7 @@ var LegacyRenderMessage = ({
1793
1814
  RenderTextMessage,
1794
1815
  {
1795
1816
  message,
1817
+ messages,
1796
1818
  inProgress,
1797
1819
  index,
1798
1820
  isCurrentMessage,
@@ -1810,6 +1832,7 @@ var LegacyRenderMessage = ({
1810
1832
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1811
1833
  RenderActionExecutionMessage,
1812
1834
  {
1835
+ messages,
1813
1836
  message,
1814
1837
  inProgress,
1815
1838
  index,
@@ -1824,6 +1847,7 @@ var LegacyRenderMessage = ({
1824
1847
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1825
1848
  RenderAgentStateMessage,
1826
1849
  {
1850
+ messages,
1827
1851
  message,
1828
1852
  inProgress,
1829
1853
  index,
@@ -1837,6 +1861,7 @@ var LegacyRenderMessage = ({
1837
1861
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1838
1862
  RenderResultMessage,
1839
1863
  {
1864
+ messages,
1840
1865
  message,
1841
1866
  inProgress,
1842
1867
  index,
@@ -1850,6 +1875,7 @@ var LegacyRenderMessage = ({
1850
1875
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1851
1876
  RenderImageMessage,
1852
1877
  {
1878
+ messages,
1853
1879
  message,
1854
1880
  inProgress,
1855
1881
  index,
@@ -1862,6 +1888,7 @@ var LegacyRenderMessage = ({
1862
1888
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1863
1889
  RenderMessage,
1864
1890
  {
1891
+ messages,
1865
1892
  message,
1866
1893
  inProgress,
1867
1894
  index,
@@ -1902,7 +1929,8 @@ var Messages = ({
1902
1929
  RenderResultMessage,
1903
1930
  RenderImageMessage
1904
1931
  }) => {
1905
- const { labels } = useChatContext();
1932
+ var _a;
1933
+ const { labels, icons } = useChatContext();
1906
1934
  const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
1907
1935
  const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
1908
1936
  const messages = [...initialMessages, ...visibleMessages];
@@ -1932,6 +1960,7 @@ var Messages = ({
1932
1960
  ]
1933
1961
  );
1934
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 });
1935
1964
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
1936
1965
  /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
1937
1966
  messages.map((message, index) => {
@@ -1940,6 +1969,7 @@ var Messages = ({
1940
1969
  MessageRenderer,
1941
1970
  {
1942
1971
  message,
1972
+ messages,
1943
1973
  inProgress,
1944
1974
  index,
1945
1975
  isCurrentMessage,
@@ -1956,6 +1986,7 @@ var Messages = ({
1956
1986
  index
1957
1987
  );
1958
1988
  }),
1989
+ ((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
1959
1990
  interrupt,
1960
1991
  chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
1961
1992
  ] }),
@@ -2249,12 +2280,12 @@ var MAX_NEWLINES = 6;
2249
2280
  var Input = ({
2250
2281
  inProgress,
2251
2282
  onSend,
2252
- isVisible = false,
2283
+ chatReady = false,
2253
2284
  onStop,
2254
2285
  onUpload,
2255
2286
  hideStopButton = false
2256
2287
  }) => {
2257
- var _a, _b;
2288
+ var _a;
2258
2289
  const context = useChatContext();
2259
2290
  const copilotContext = (0, import_react_core7.useCopilotContext)();
2260
2291
  const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
@@ -2284,14 +2315,16 @@ var Input = ({
2284
2315
  inProgress
2285
2316
  });
2286
2317
  const isInProgress = inProgress || pushToTalkState === "transcribing";
2287
- const buttonIcon = isInProgress && !hideStopButton ? context.icons.stopIcon : context.icons.sendIcon;
2318
+ const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
2319
+ if (!chatReady)
2320
+ return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
2321
+ return isInProgress && !hideStopButton && chatReady ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
2322
+ }, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
2288
2323
  const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
2324
+ const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
2289
2325
  const canSend = (0, import_react14.useMemo)(() => {
2290
- var _a2;
2291
- const interruptEvent = (_a2 = copilotContext.langGraphInterruptAction) == null ? void 0 : _a2.event;
2292
- const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
2293
- return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
2294
- }, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
2326
+ return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
2327
+ }, [interrupt, isInProgress, text, pushToTalkState]);
2295
2328
  const canStop = (0, import_react14.useMemo)(() => {
2296
2329
  return isInProgress && !hideStopButton;
2297
2330
  }, [isInProgress, hideStopButton]);
@@ -2338,6 +2371,7 @@ var Input = ({
2338
2371
  "data-copilotkit-in-progress": inProgress,
2339
2372
  "data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
2340
2373
  className: "copilotKitInputControlButton",
2374
+ "aria-label": buttonAlt,
2341
2375
  children: buttonIcon
2342
2376
  }
2343
2377
  )
@@ -2351,8 +2385,6 @@ var Input = ({
2351
2385
  var import_react15 = __toESM(require("react"));
2352
2386
  var import_react_core9 = require("@copilotkit/react-core");
2353
2387
  var import_shared3 = require("@copilotkit/shared");
2354
- var import_shared4 = require("@copilotkit/shared");
2355
- var import_react_core10 = require("@copilotkit/react-core");
2356
2388
 
2357
2389
  // src/components/chat/ImageUploadQueue.tsx
2358
2390
  var import_jsx_runtime21 = require("react/jsx-runtime");
@@ -2456,18 +2488,25 @@ function Suggestion({ title, onClick, partial, className }) {
2456
2488
 
2457
2489
  // src/components/chat/Suggestions.tsx
2458
2490
  var import_jsx_runtime23 = require("react/jsx-runtime");
2459
- function Suggestions({ suggestions, onSuggestionClick }) {
2460
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2461
- Suggestion,
2462
- {
2463
- title: suggestion.title,
2464
- message: suggestion.message,
2465
- partial: suggestion.partial,
2466
- className: suggestion.className,
2467
- onClick: () => onSuggestionClick(suggestion.message)
2468
- },
2469
- index
2470
- )) });
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
+ }) });
2471
2510
  }
2472
2511
 
2473
2512
  // src/components/chat/Chat.tsx
@@ -2667,16 +2706,16 @@ function CopilotChat({
2667
2706
  sendMessage,
2668
2707
  stopGeneration,
2669
2708
  reloadMessages,
2670
- suggestions: currentSuggestions
2671
- } = useCopilotChatLogic(
2709
+ suggestions: currentSuggestions,
2710
+ isLoadingSuggestions,
2711
+ agent
2712
+ } = (0, import_react_core9.useCopilotChatInternal)({
2672
2713
  suggestions,
2673
- makeSystemMessage,
2674
- disableSystemMessage,
2675
2714
  onInProgress,
2676
2715
  onSubmitMessage,
2677
2716
  onStopGeneration,
2678
2717
  onReloadMessages
2679
- );
2718
+ });
2680
2719
  const prevIsLoading = (0, import_react15.useRef)(isLoading);
2681
2720
  (0, import_react15.useEffect)(() => {
2682
2721
  if (prevIsLoading.current !== isLoading) {
@@ -2695,7 +2734,11 @@ function CopilotChat({
2695
2734
  fileInputRef.current.value = "";
2696
2735
  }
2697
2736
  triggerObservabilityHook("onMessageSent", text);
2698
- return sendMessage(text, images);
2737
+ return sendMessage({
2738
+ id: (0, import_shared3.randomUUID)(),
2739
+ content: text,
2740
+ role: "user"
2741
+ });
2699
2742
  };
2700
2743
  const chatContext = import_react15.default.useContext(ChatContext);
2701
2744
  const isVisible = chatContext ? chatContext.open : true;
@@ -2798,7 +2841,8 @@ function CopilotChat({
2798
2841
  RenderSuggestionsList,
2799
2842
  {
2800
2843
  onSuggestionClick: handleSendMessage,
2801
- suggestions: currentSuggestions
2844
+ suggestions: currentSuggestions,
2845
+ isLoading: isLoadingSuggestions
2802
2846
  }
2803
2847
  )
2804
2848
  }
@@ -2821,6 +2865,7 @@ function CopilotChat({
2821
2865
  Input2,
2822
2866
  {
2823
2867
  inProgress: isLoading,
2868
+ chatReady: Boolean(agent),
2824
2869
  onSend: handleSendMessage,
2825
2870
  isVisible,
2826
2871
  onStop: stopGeneration,
@@ -2846,243 +2891,10 @@ function WrappedCopilotChat({
2846
2891
  }
2847
2892
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
2848
2893
  }
2849
- var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
2850
- var _a;
2851
- const {
2852
- messages,
2853
- sendMessage,
2854
- setMessages,
2855
- reloadMessages: defaultReloadMessages,
2856
- stopGeneration: defaultStopGeneration,
2857
- runChatCompletion,
2858
- isLoading,
2859
- suggestions,
2860
- setSuggestions,
2861
- generateSuggestions,
2862
- resetSuggestions: resetSuggestionsFromHook,
2863
- isLoadingSuggestions
2864
- } = (0, import_react_core9.useCopilotChatInternal)({
2865
- makeSystemMessage,
2866
- disableSystemMessage
2867
- });
2868
- const generalContext = (0, import_react_core9.useCopilotContext)();
2869
- const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
2870
- const { actions } = generalContext;
2871
- const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
2872
- const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
2873
- (0, import_react15.useEffect)(() => {
2874
- if (Array.isArray(chatSuggestions)) {
2875
- setSuggestions(chatSuggestions);
2876
- hasGeneratedInitialSuggestions.current = true;
2877
- }
2878
- }, [JSON.stringify(chatSuggestions), setSuggestions]);
2879
- const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
2880
- (context) => __async(void 0, null, function* () {
2881
- try {
2882
- yield generateSuggestions();
2883
- } catch (error) {
2884
- console.error("Failed to generate suggestions:", error);
2885
- setSuggestionsFailed(true);
2886
- }
2887
- }),
2888
- [generateSuggestions]
2889
- );
2890
- (0, import_react15.useEffect)(() => {
2891
- if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
2892
- return;
2893
- }
2894
- if (isLoading) {
2895
- return;
2896
- }
2897
- if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
2898
- return;
2899
- }
2900
- if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
2901
- hasGeneratedInitialSuggestions.current = true;
2902
- generateSuggestionsWithErrorHandling("initial");
2903
- return;
2904
- }
2905
- if (messages.length > 0 && suggestions.length === 0) {
2906
- generateSuggestionsWithErrorHandling("post-message");
2907
- return;
2908
- }
2909
- }, [
2910
- chatSuggestions,
2911
- isLoadingSuggestions,
2912
- suggestionsFailed,
2913
- messages.length,
2914
- isLoading,
2915
- suggestions.length,
2916
- Object.keys(generalContext.chatSuggestionConfiguration).join(","),
2917
- // Use stable string instead of object reference
2918
- generateSuggestionsWithErrorHandling
2919
- ]);
2920
- (0, import_react15.useEffect)(() => {
2921
- if (chatSuggestions !== "auto") {
2922
- hasGeneratedInitialSuggestions.current = false;
2923
- setSuggestionsFailed(false);
2924
- }
2925
- }, [chatSuggestions]);
2926
- const stableContext = (0, import_react15.useMemo)(
2927
- () => __spreadValues(__spreadValues({}, generalContext), messagesContext),
2928
- [
2929
- // Only include stable dependencies
2930
- generalContext.actions,
2931
- messagesContext.messages.length,
2932
- generalContext.isLoading
2933
- ]
2934
- );
2935
- const resetSuggestions = (0, import_react15.useCallback)(() => {
2936
- resetSuggestionsFromHook();
2937
- setSuggestionsFailed(false);
2938
- hasGeneratedInitialSuggestions.current = false;
2939
- }, [resetSuggestionsFromHook]);
2940
- (0, import_react15.useEffect)(() => {
2941
- onInProgress == null ? void 0 : onInProgress(isLoading);
2942
- }, [onInProgress, isLoading]);
2943
- const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
2944
- const images = imagesToUse || [];
2945
- if (chatSuggestions === "auto" || chatSuggestions === "manual") {
2946
- setSuggestions([]);
2947
- }
2948
- let firstMessage = null;
2949
- if (messageContent.trim().length > 0) {
2950
- const textMessage = {
2951
- id: (0, import_shared4.randomId)(),
2952
- role: "user",
2953
- content: messageContent
2954
- };
2955
- if (onSubmitMessage) {
2956
- try {
2957
- yield onSubmitMessage(messageContent);
2958
- } catch (error) {
2959
- console.error("Error in onSubmitMessage:", error);
2960
- }
2961
- }
2962
- yield sendMessage(textMessage, {
2963
- followUp: images.length === 0,
2964
- clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
2965
- });
2966
- if (!firstMessage) {
2967
- firstMessage = textMessage;
2968
- }
2969
- }
2970
- if (images.length > 0) {
2971
- for (let i = 0; i < images.length; i++) {
2972
- const imageMessage = {
2973
- id: (0, import_shared4.randomId)(),
2974
- role: "user",
2975
- image: {
2976
- format: images[i].contentType.replace("image/", ""),
2977
- bytes: images[i].bytes
2978
- }
2979
- };
2980
- yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
2981
- if (!firstMessage) {
2982
- firstMessage = imageMessage;
2983
- }
2984
- }
2985
- }
2986
- if (!firstMessage) {
2987
- return { role: "user", content: "", id: (0, import_shared4.randomId)() };
2988
- }
2989
- return firstMessage;
2990
- });
2991
- const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
2992
- const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
2993
- if (generalContext.agentSession) {
2994
- generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
2995
- nodeName: void 0,
2996
- threadId: void 0
2997
- }));
2998
- generalContext.setCoagentStates((prevAgentStates) => {
2999
- return __spreadProps(__spreadValues({}, prevAgentStates), {
3000
- [generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
3001
- threadId: void 0,
3002
- nodeName: void 0,
3003
- runId: void 0
3004
- })
3005
- });
3006
- });
3007
- }
3008
- });
3009
- const runCurrentAgent = (hint) => __async(void 0, null, function* () {
3010
- if (generalContext.agentSession) {
3011
- yield (0, import_react_core10.runAgent)(
3012
- generalContext.agentSession.agentName,
3013
- stableContext,
3014
- messagesContext.messages,
3015
- sendMessage,
3016
- runChatCompletion
3017
- );
3018
- }
3019
- });
3020
- const stopCurrentAgent = () => {
3021
- if (generalContext.agentSession) {
3022
- (0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
3023
- }
3024
- };
3025
- const setCurrentAgentState = (state) => {
3026
- if (generalContext.agentSession) {
3027
- generalContext.setCoagentStates((prevAgentStates) => {
3028
- return __spreadProps(__spreadValues({}, prevAgentStates), {
3029
- [generalContext.agentSession.agentName]: {
3030
- state
3031
- }
3032
- });
3033
- });
3034
- }
3035
- };
3036
- function stopGeneration() {
3037
- setSuggestions([]);
3038
- if (onStopGeneration) {
3039
- onStopGeneration({
3040
- messages,
3041
- setMessages,
3042
- stopGeneration: defaultStopGeneration,
3043
- currentAgentName,
3044
- restartCurrentAgent,
3045
- stopCurrentAgent,
3046
- runCurrentAgent,
3047
- setCurrentAgentState
3048
- });
3049
- } else {
3050
- defaultStopGeneration();
3051
- }
3052
- }
3053
- function reloadMessages(messageId) {
3054
- if (onReloadMessages) {
3055
- onReloadMessages({
3056
- messages,
3057
- setMessages,
3058
- stopGeneration: defaultStopGeneration,
3059
- currentAgentName,
3060
- restartCurrentAgent,
3061
- stopCurrentAgent,
3062
- runCurrentAgent,
3063
- setCurrentAgentState,
3064
- messageId
3065
- });
3066
- } else {
3067
- defaultReloadMessages(messageId);
3068
- }
3069
- }
3070
- return {
3071
- messages,
3072
- isLoading,
3073
- suggestions,
3074
- sendMessage: safelySendMessage,
3075
- stopGeneration,
3076
- reloadMessages,
3077
- resetSuggestions,
3078
- context: stableContext,
3079
- actions
3080
- };
3081
- };
3082
2894
 
3083
2895
  // src/components/chat/Modal.tsx
3084
- var import_react_core11 = require("@copilotkit/react-core");
3085
- var import_shared5 = require("@copilotkit/shared");
2896
+ var import_react_core10 = require("@copilotkit/react-core");
2897
+ var import_shared4 = require("@copilotkit/shared");
3086
2898
  var import_jsx_runtime25 = require("react/jsx-runtime");
3087
2899
  var CopilotModalInner = (_a) => {
3088
2900
  var _b = _a, {
@@ -3108,7 +2920,7 @@ var CopilotModalInner = (_a) => {
3108
2920
  "Button",
3109
2921
  "Header"
3110
2922
  ]);
3111
- const { copilotApiConfig, setBannerError } = (0, import_react_core11.useCopilotContext)();
2923
+ const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
3112
2924
  const { publicApiKey } = copilotApiConfig;
3113
2925
  const triggerObservabilityHook = (0, import_react16.useCallback)(
3114
2926
  (hookName, ...args) => {
@@ -3117,14 +2929,14 @@ var CopilotModalInner = (_a) => {
3117
2929
  }
3118
2930
  if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
3119
2931
  setBannerError(
3120
- new import_shared5.CopilotKitError({
2932
+ new import_shared4.CopilotKitError({
3121
2933
  message: "observabilityHooks requires a publicApiKey to function.",
3122
- code: import_shared5.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
3123
- severity: import_shared5.Severity.CRITICAL,
3124
- visibility: import_shared5.ErrorVisibility.BANNER
2934
+ code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
2935
+ severity: import_shared4.Severity.CRITICAL,
2936
+ visibility: import_shared4.ErrorVisibility.BANNER
3125
2937
  })
3126
2938
  );
3127
- import_shared5.styledConsole.publicApiKeyRequired("observabilityHooks");
2939
+ import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
3128
2940
  }
3129
2941
  },
3130
2942
  [publicApiKey, observabilityHooks, setBannerError]