@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
@@ -1041,14 +1041,30 @@ var import_react_core5 = require("@copilotkit/react-core");
1041
1041
 
1042
1042
  // src/components/chat/messages/UserMessage.tsx
1043
1043
  var import_jsx_runtime10 = require("react/jsx-runtime");
1044
+ var getTextContent = (content) => {
1045
+ if (typeof content === "undefined") {
1046
+ return void 0;
1047
+ }
1048
+ if (typeof content === "string") {
1049
+ return content;
1050
+ }
1051
+ return content.map((part) => {
1052
+ if (part.type === "text") {
1053
+ return part.text;
1054
+ }
1055
+ return void 0;
1056
+ }).filter((value) => typeof value === "string" && value.length > 0).join(" ").trim() || void 0;
1057
+ };
1044
1058
  var UserMessage = (props) => {
1045
1059
  const { message, ImageRenderer: ImageRenderer2 } = props;
1046
- const isImageMessage = message && "image" in message && message.image;
1060
+ const isImageMessage = message && "image" in message && Boolean(message.image);
1047
1061
  if (isImageMessage) {
1048
1062
  const imageMessage = message;
1049
- 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 }) });
1063
+ const content2 = getTextContent(imageMessage == null ? void 0 : imageMessage.content);
1064
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ImageRenderer2, { image: imageMessage.image, content: content2 }) });
1050
1065
  }
1051
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message == null ? void 0 : message.content });
1066
+ const content = getTextContent(message == null ? void 0 : message.content);
1067
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: content });
1052
1068
  };
1053
1069
 
1054
1070
  // src/components/chat/Markdown.tsx
@@ -1727,6 +1743,7 @@ function RenderMessage(_a) {
1727
1743
  var _a2;
1728
1744
  const {
1729
1745
  message,
1746
+ messages,
1730
1747
  inProgress,
1731
1748
  index,
1732
1749
  isCurrentMessage,
@@ -1757,6 +1774,7 @@ function RenderMessage(_a) {
1757
1774
  subComponent: (_a2 = message.generativeUI) == null ? void 0 : _a2.call(message),
1758
1775
  rawData: message,
1759
1776
  message,
1777
+ messages,
1760
1778
  isLoading: inProgress && isCurrentMessage && !message.content,
1761
1779
  isGenerating: inProgress && isCurrentMessage && !!message.content,
1762
1780
  isCurrentMessage,
@@ -1770,6 +1788,8 @@ function RenderMessage(_a) {
1770
1788
  },
1771
1789
  index
1772
1790
  );
1791
+ default:
1792
+ return null;
1773
1793
  }
1774
1794
  }
1775
1795
 
@@ -1778,6 +1798,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
1778
1798
  var import_jsx_runtime16 = require("react/jsx-runtime");
1779
1799
  var LegacyRenderMessage = ({
1780
1800
  message,
1801
+ messages,
1781
1802
  inProgress,
1782
1803
  index,
1783
1804
  isCurrentMessage,
@@ -1806,6 +1827,7 @@ var LegacyRenderMessage = ({
1806
1827
  RenderTextMessage,
1807
1828
  {
1808
1829
  message,
1830
+ messages,
1809
1831
  inProgress,
1810
1832
  index,
1811
1833
  isCurrentMessage,
@@ -1823,6 +1845,7 @@ var LegacyRenderMessage = ({
1823
1845
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1824
1846
  RenderActionExecutionMessage,
1825
1847
  {
1848
+ messages,
1826
1849
  message,
1827
1850
  inProgress,
1828
1851
  index,
@@ -1837,6 +1860,7 @@ var LegacyRenderMessage = ({
1837
1860
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1838
1861
  RenderAgentStateMessage,
1839
1862
  {
1863
+ messages,
1840
1864
  message,
1841
1865
  inProgress,
1842
1866
  index,
@@ -1850,6 +1874,7 @@ var LegacyRenderMessage = ({
1850
1874
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1851
1875
  RenderResultMessage,
1852
1876
  {
1877
+ messages,
1853
1878
  message,
1854
1879
  inProgress,
1855
1880
  index,
@@ -1863,6 +1888,7 @@ var LegacyRenderMessage = ({
1863
1888
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1864
1889
  RenderImageMessage,
1865
1890
  {
1891
+ messages,
1866
1892
  message,
1867
1893
  inProgress,
1868
1894
  index,
@@ -1875,6 +1901,7 @@ var LegacyRenderMessage = ({
1875
1901
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1876
1902
  RenderMessage,
1877
1903
  {
1904
+ messages,
1878
1905
  message,
1879
1906
  inProgress,
1880
1907
  index,
@@ -1915,7 +1942,8 @@ var Messages = ({
1915
1942
  RenderResultMessage,
1916
1943
  RenderImageMessage
1917
1944
  }) => {
1918
- const { labels } = useChatContext();
1945
+ var _a;
1946
+ const { labels, icons } = useChatContext();
1919
1947
  const { messages: visibleMessages, interrupt } = (0, import_react_core5.useCopilotChatInternal)();
1920
1948
  const initialMessages = (0, import_react10.useMemo)(() => makeInitialMessages(labels.initial), [labels.initial]);
1921
1949
  const messages = [...initialMessages, ...visibleMessages];
@@ -1945,6 +1973,7 @@ var Messages = ({
1945
1973
  ]
1946
1974
  );
1947
1975
  const MessageRenderer = hasLegacyProps ? (props) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LegacyRenderMessage, __spreadProps(__spreadValues({}, props), { legacyProps })) : RenderMessage2;
1976
+ const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: icons.activityIcon });
1948
1977
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
1949
1978
  /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitMessagesContainer", children: [
1950
1979
  messages.map((message, index) => {
@@ -1953,6 +1982,7 @@ var Messages = ({
1953
1982
  MessageRenderer,
1954
1983
  {
1955
1984
  message,
1985
+ messages,
1956
1986
  inProgress,
1957
1987
  index,
1958
1988
  isCurrentMessage,
@@ -1969,6 +1999,7 @@ var Messages = ({
1969
1999
  index
1970
2000
  );
1971
2001
  }),
2002
+ ((_a = messages[messages.length - 1]) == null ? void 0 : _a.role) === "user" && inProgress && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LoadingIcon, {}),
1972
2003
  interrupt,
1973
2004
  chatError && ErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ErrorMessage, { error: chatError, isCurrentMessage: true })
1974
2005
  ] }),
@@ -2262,12 +2293,12 @@ var MAX_NEWLINES = 6;
2262
2293
  var Input = ({
2263
2294
  inProgress,
2264
2295
  onSend,
2265
- isVisible = false,
2296
+ chatReady = false,
2266
2297
  onStop,
2267
2298
  onUpload,
2268
2299
  hideStopButton = false
2269
2300
  }) => {
2270
- var _a, _b;
2301
+ var _a;
2271
2302
  const context = useChatContext();
2272
2303
  const copilotContext = (0, import_react_core7.useCopilotContext)();
2273
2304
  const showPoweredBy = !((_a = copilotContext.copilotApiConfig) == null ? void 0 : _a.publicApiKey);
@@ -2297,14 +2328,16 @@ var Input = ({
2297
2328
  inProgress
2298
2329
  });
2299
2330
  const isInProgress = inProgress || pushToTalkState === "transcribing";
2300
- const buttonIcon = isInProgress && !hideStopButton ? context.icons.stopIcon : context.icons.sendIcon;
2331
+ const { buttonIcon, buttonAlt } = (0, import_react14.useMemo)(() => {
2332
+ if (!chatReady)
2333
+ return { buttonIcon: context.icons.spinnerIcon, buttonAlt: "Loading" };
2334
+ return isInProgress && !hideStopButton && chatReady ? { buttonIcon: context.icons.stopIcon, buttonAlt: "Stop" } : { buttonIcon: context.icons.sendIcon, buttonAlt: "Send" };
2335
+ }, [isInProgress, chatReady, hideStopButton, context.icons.stopIcon, context.icons.sendIcon]);
2301
2336
  const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
2337
+ const { interrupt } = (0, import_react_core7.useCopilotChatInternal)();
2302
2338
  const canSend = (0, import_react14.useMemo)(() => {
2303
- var _a2;
2304
- const interruptEvent = (_a2 = copilotContext.langGraphInterruptAction) == null ? void 0 : _a2.event;
2305
- const interruptInProgress = (interruptEvent == null ? void 0 : interruptEvent.name) === "LangGraphInterruptEvent" && !(interruptEvent == null ? void 0 : interruptEvent.response);
2306
- return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interruptInProgress;
2307
- }, [(_b = copilotContext.langGraphInterruptAction) == null ? void 0 : _b.event, isInProgress, text, pushToTalkState]);
2339
+ return !isInProgress && text.trim().length > 0 && pushToTalkState === "idle" && !interrupt;
2340
+ }, [interrupt, isInProgress, text, pushToTalkState]);
2308
2341
  const canStop = (0, import_react14.useMemo)(() => {
2309
2342
  return isInProgress && !hideStopButton;
2310
2343
  }, [isInProgress, hideStopButton]);
@@ -2351,6 +2384,7 @@ var Input = ({
2351
2384
  "data-copilotkit-in-progress": inProgress,
2352
2385
  "data-test-id": inProgress ? "copilot-chat-request-in-progress" : "copilot-chat-ready",
2353
2386
  className: "copilotKitInputControlButton",
2387
+ "aria-label": buttonAlt,
2354
2388
  children: buttonIcon
2355
2389
  }
2356
2390
  )
@@ -2364,8 +2398,6 @@ var Input = ({
2364
2398
  var import_react15 = __toESM(require("react"));
2365
2399
  var import_react_core9 = require("@copilotkit/react-core");
2366
2400
  var import_shared3 = require("@copilotkit/shared");
2367
- var import_shared4 = require("@copilotkit/shared");
2368
- var import_react_core10 = require("@copilotkit/react-core");
2369
2401
 
2370
2402
  // src/components/chat/ImageUploadQueue.tsx
2371
2403
  var import_jsx_runtime21 = require("react/jsx-runtime");
@@ -2469,18 +2501,25 @@ function Suggestion({ title, onClick, partial, className }) {
2469
2501
 
2470
2502
  // src/components/chat/Suggestions.tsx
2471
2503
  var import_jsx_runtime23 = require("react/jsx-runtime");
2472
- function Suggestions({ suggestions, onSuggestionClick }) {
2473
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2474
- Suggestion,
2475
- {
2476
- title: suggestion.title,
2477
- message: suggestion.message,
2478
- partial: suggestion.partial,
2479
- className: suggestion.className,
2480
- onClick: () => onSuggestionClick(suggestion.message)
2481
- },
2482
- index
2483
- )) });
2504
+ function Suggestions({
2505
+ suggestions,
2506
+ onSuggestionClick,
2507
+ isLoading
2508
+ }) {
2509
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => {
2510
+ var _a, _b;
2511
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2512
+ Suggestion,
2513
+ {
2514
+ title: suggestion.title,
2515
+ message: suggestion.message,
2516
+ partial: (_b = (_a = suggestion.isLoading) != null ? _a : suggestion.partial) != null ? _b : isLoading,
2517
+ className: suggestion.className,
2518
+ onClick: () => onSuggestionClick(suggestion.message)
2519
+ },
2520
+ index
2521
+ );
2522
+ }) });
2484
2523
  }
2485
2524
 
2486
2525
  // src/components/chat/Chat.tsx
@@ -2680,16 +2719,16 @@ function CopilotChat({
2680
2719
  sendMessage,
2681
2720
  stopGeneration,
2682
2721
  reloadMessages,
2683
- suggestions: currentSuggestions
2684
- } = useCopilotChatLogic(
2722
+ suggestions: currentSuggestions,
2723
+ isLoadingSuggestions,
2724
+ agent
2725
+ } = (0, import_react_core9.useCopilotChatInternal)({
2685
2726
  suggestions,
2686
- makeSystemMessage,
2687
- disableSystemMessage,
2688
2727
  onInProgress,
2689
2728
  onSubmitMessage,
2690
2729
  onStopGeneration,
2691
2730
  onReloadMessages
2692
- );
2731
+ });
2693
2732
  const prevIsLoading = (0, import_react15.useRef)(isLoading);
2694
2733
  (0, import_react15.useEffect)(() => {
2695
2734
  if (prevIsLoading.current !== isLoading) {
@@ -2708,7 +2747,11 @@ function CopilotChat({
2708
2747
  fileInputRef.current.value = "";
2709
2748
  }
2710
2749
  triggerObservabilityHook("onMessageSent", text);
2711
- return sendMessage(text, images);
2750
+ return sendMessage({
2751
+ id: (0, import_shared3.randomUUID)(),
2752
+ content: text,
2753
+ role: "user"
2754
+ });
2712
2755
  };
2713
2756
  const chatContext = import_react15.default.useContext(ChatContext);
2714
2757
  const isVisible = chatContext ? chatContext.open : true;
@@ -2811,7 +2854,8 @@ function CopilotChat({
2811
2854
  RenderSuggestionsList,
2812
2855
  {
2813
2856
  onSuggestionClick: handleSendMessage,
2814
- suggestions: currentSuggestions
2857
+ suggestions: currentSuggestions,
2858
+ isLoading: isLoadingSuggestions
2815
2859
  }
2816
2860
  )
2817
2861
  }
@@ -2834,6 +2878,7 @@ function CopilotChat({
2834
2878
  Input2,
2835
2879
  {
2836
2880
  inProgress: isLoading,
2881
+ chatReady: Boolean(agent),
2837
2882
  onSend: handleSendMessage,
2838
2883
  isVisible,
2839
2884
  onStop: stopGeneration,
@@ -2859,243 +2904,10 @@ function WrappedCopilotChat({
2859
2904
  }
2860
2905
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children });
2861
2906
  }
2862
- var useCopilotChatLogic = (chatSuggestions, makeSystemMessage, disableSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
2863
- var _a;
2864
- const {
2865
- messages,
2866
- sendMessage,
2867
- setMessages,
2868
- reloadMessages: defaultReloadMessages,
2869
- stopGeneration: defaultStopGeneration,
2870
- runChatCompletion,
2871
- isLoading,
2872
- suggestions,
2873
- setSuggestions,
2874
- generateSuggestions,
2875
- resetSuggestions: resetSuggestionsFromHook,
2876
- isLoadingSuggestions
2877
- } = (0, import_react_core9.useCopilotChatInternal)({
2878
- makeSystemMessage,
2879
- disableSystemMessage
2880
- });
2881
- const generalContext = (0, import_react_core9.useCopilotContext)();
2882
- const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
2883
- const { actions } = generalContext;
2884
- const [suggestionsFailed, setSuggestionsFailed] = (0, import_react15.useState)(false);
2885
- const hasGeneratedInitialSuggestions = (0, import_react15.useRef)(false);
2886
- (0, import_react15.useEffect)(() => {
2887
- if (Array.isArray(chatSuggestions)) {
2888
- setSuggestions(chatSuggestions);
2889
- hasGeneratedInitialSuggestions.current = true;
2890
- }
2891
- }, [JSON.stringify(chatSuggestions), setSuggestions]);
2892
- const generateSuggestionsWithErrorHandling = (0, import_react15.useCallback)(
2893
- (context) => __async(void 0, null, function* () {
2894
- try {
2895
- yield generateSuggestions();
2896
- } catch (error) {
2897
- console.error("Failed to generate suggestions:", error);
2898
- setSuggestionsFailed(true);
2899
- }
2900
- }),
2901
- [generateSuggestions]
2902
- );
2903
- (0, import_react15.useEffect)(() => {
2904
- if (chatSuggestions !== "auto" || isLoadingSuggestions || suggestionsFailed) {
2905
- return;
2906
- }
2907
- if (isLoading) {
2908
- return;
2909
- }
2910
- if (Object.keys(generalContext.chatSuggestionConfiguration).length === 0) {
2911
- return;
2912
- }
2913
- if (messages.length === 0 && !hasGeneratedInitialSuggestions.current) {
2914
- hasGeneratedInitialSuggestions.current = true;
2915
- generateSuggestionsWithErrorHandling("initial");
2916
- return;
2917
- }
2918
- if (messages.length > 0 && suggestions.length === 0) {
2919
- generateSuggestionsWithErrorHandling("post-message");
2920
- return;
2921
- }
2922
- }, [
2923
- chatSuggestions,
2924
- isLoadingSuggestions,
2925
- suggestionsFailed,
2926
- messages.length,
2927
- isLoading,
2928
- suggestions.length,
2929
- Object.keys(generalContext.chatSuggestionConfiguration).join(","),
2930
- // Use stable string instead of object reference
2931
- generateSuggestionsWithErrorHandling
2932
- ]);
2933
- (0, import_react15.useEffect)(() => {
2934
- if (chatSuggestions !== "auto") {
2935
- hasGeneratedInitialSuggestions.current = false;
2936
- setSuggestionsFailed(false);
2937
- }
2938
- }, [chatSuggestions]);
2939
- const stableContext = (0, import_react15.useMemo)(
2940
- () => __spreadValues(__spreadValues({}, generalContext), messagesContext),
2941
- [
2942
- // Only include stable dependencies
2943
- generalContext.actions,
2944
- messagesContext.messages.length,
2945
- generalContext.isLoading
2946
- ]
2947
- );
2948
- const resetSuggestions = (0, import_react15.useCallback)(() => {
2949
- resetSuggestionsFromHook();
2950
- setSuggestionsFailed(false);
2951
- hasGeneratedInitialSuggestions.current = false;
2952
- }, [resetSuggestionsFromHook]);
2953
- (0, import_react15.useEffect)(() => {
2954
- onInProgress == null ? void 0 : onInProgress(isLoading);
2955
- }, [onInProgress, isLoading]);
2956
- const safelySendMessage = (messageContent, imagesToUse) => __async(void 0, null, function* () {
2957
- const images = imagesToUse || [];
2958
- if (chatSuggestions === "auto" || chatSuggestions === "manual") {
2959
- setSuggestions([]);
2960
- }
2961
- let firstMessage = null;
2962
- if (messageContent.trim().length > 0) {
2963
- const textMessage = {
2964
- id: (0, import_shared4.randomId)(),
2965
- role: "user",
2966
- content: messageContent
2967
- };
2968
- if (onSubmitMessage) {
2969
- try {
2970
- yield onSubmitMessage(messageContent);
2971
- } catch (error) {
2972
- console.error("Error in onSubmitMessage:", error);
2973
- }
2974
- }
2975
- yield sendMessage(textMessage, {
2976
- followUp: images.length === 0,
2977
- clearSuggestions: chatSuggestions === "auto" || chatSuggestions === "manual"
2978
- });
2979
- if (!firstMessage) {
2980
- firstMessage = textMessage;
2981
- }
2982
- }
2983
- if (images.length > 0) {
2984
- for (let i = 0; i < images.length; i++) {
2985
- const imageMessage = {
2986
- id: (0, import_shared4.randomId)(),
2987
- role: "user",
2988
- image: {
2989
- format: images[i].contentType.replace("image/", ""),
2990
- bytes: images[i].bytes
2991
- }
2992
- };
2993
- yield sendMessage(imageMessage, { followUp: i === images.length - 1 });
2994
- if (!firstMessage) {
2995
- firstMessage = imageMessage;
2996
- }
2997
- }
2998
- }
2999
- if (!firstMessage) {
3000
- return { role: "user", content: "", id: (0, import_shared4.randomId)() };
3001
- }
3002
- return firstMessage;
3003
- });
3004
- const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
3005
- const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
3006
- if (generalContext.agentSession) {
3007
- generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
3008
- nodeName: void 0,
3009
- threadId: void 0
3010
- }));
3011
- generalContext.setCoagentStates((prevAgentStates) => {
3012
- return __spreadProps(__spreadValues({}, prevAgentStates), {
3013
- [generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
3014
- threadId: void 0,
3015
- nodeName: void 0,
3016
- runId: void 0
3017
- })
3018
- });
3019
- });
3020
- }
3021
- });
3022
- const runCurrentAgent = (hint) => __async(void 0, null, function* () {
3023
- if (generalContext.agentSession) {
3024
- yield (0, import_react_core10.runAgent)(
3025
- generalContext.agentSession.agentName,
3026
- stableContext,
3027
- messagesContext.messages,
3028
- sendMessage,
3029
- runChatCompletion
3030
- );
3031
- }
3032
- });
3033
- const stopCurrentAgent = () => {
3034
- if (generalContext.agentSession) {
3035
- (0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, stableContext);
3036
- }
3037
- };
3038
- const setCurrentAgentState = (state) => {
3039
- if (generalContext.agentSession) {
3040
- generalContext.setCoagentStates((prevAgentStates) => {
3041
- return __spreadProps(__spreadValues({}, prevAgentStates), {
3042
- [generalContext.agentSession.agentName]: {
3043
- state
3044
- }
3045
- });
3046
- });
3047
- }
3048
- };
3049
- function stopGeneration() {
3050
- setSuggestions([]);
3051
- if (onStopGeneration) {
3052
- onStopGeneration({
3053
- messages,
3054
- setMessages,
3055
- stopGeneration: defaultStopGeneration,
3056
- currentAgentName,
3057
- restartCurrentAgent,
3058
- stopCurrentAgent,
3059
- runCurrentAgent,
3060
- setCurrentAgentState
3061
- });
3062
- } else {
3063
- defaultStopGeneration();
3064
- }
3065
- }
3066
- function reloadMessages(messageId) {
3067
- if (onReloadMessages) {
3068
- onReloadMessages({
3069
- messages,
3070
- setMessages,
3071
- stopGeneration: defaultStopGeneration,
3072
- currentAgentName,
3073
- restartCurrentAgent,
3074
- stopCurrentAgent,
3075
- runCurrentAgent,
3076
- setCurrentAgentState,
3077
- messageId
3078
- });
3079
- } else {
3080
- defaultReloadMessages(messageId);
3081
- }
3082
- }
3083
- return {
3084
- messages,
3085
- isLoading,
3086
- suggestions,
3087
- sendMessage: safelySendMessage,
3088
- stopGeneration,
3089
- reloadMessages,
3090
- resetSuggestions,
3091
- context: stableContext,
3092
- actions
3093
- };
3094
- };
3095
2907
 
3096
2908
  // src/components/chat/Modal.tsx
3097
- var import_react_core11 = require("@copilotkit/react-core");
3098
- var import_shared5 = require("@copilotkit/shared");
2909
+ var import_react_core10 = require("@copilotkit/react-core");
2910
+ var import_shared4 = require("@copilotkit/shared");
3099
2911
  var import_jsx_runtime25 = require("react/jsx-runtime");
3100
2912
  var CopilotModalInner = (_a) => {
3101
2913
  var _b = _a, {
@@ -3121,7 +2933,7 @@ var CopilotModalInner = (_a) => {
3121
2933
  "Button",
3122
2934
  "Header"
3123
2935
  ]);
3124
- const { copilotApiConfig, setBannerError } = (0, import_react_core11.useCopilotContext)();
2936
+ const { copilotApiConfig, setBannerError } = (0, import_react_core10.useCopilotContext)();
3125
2937
  const { publicApiKey } = copilotApiConfig;
3126
2938
  const triggerObservabilityHook = (0, import_react16.useCallback)(
3127
2939
  (hookName, ...args) => {
@@ -3130,14 +2942,14 @@ var CopilotModalInner = (_a) => {
3130
2942
  }
3131
2943
  if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) {
3132
2944
  setBannerError(
3133
- new import_shared5.CopilotKitError({
2945
+ new import_shared4.CopilotKitError({
3134
2946
  message: "observabilityHooks requires a publicApiKey to function.",
3135
- code: import_shared5.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
3136
- severity: import_shared5.Severity.CRITICAL,
3137
- visibility: import_shared5.ErrorVisibility.BANNER
2947
+ code: import_shared4.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
2948
+ severity: import_shared4.Severity.CRITICAL,
2949
+ visibility: import_shared4.ErrorVisibility.BANNER
3138
2950
  })
3139
2951
  );
3140
- import_shared5.styledConsole.publicApiKeyRequired("observabilityHooks");
2952
+ import_shared4.styledConsole.publicApiKeyRequired("observabilityHooks");
3141
2953
  }
3142
2954
  },
3143
2955
  [publicApiKey, observabilityHooks, setBannerError]