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