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