@copilotkit/react-ui 0.37.0 → 0.38.0-beta.0

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 (85) hide show
  1. package/.turbo/turbo-build.log +72 -77
  2. package/CHANGELOG.md +13 -0
  3. package/dist/{chunk-IEV5SYHX.mjs → chunk-5B6K3N4M.mjs} +7 -7
  4. package/dist/{chunk-GKZ5DRPT.mjs → chunk-B5UDC4YJ.mjs} +2 -2
  5. package/dist/chunk-DYXI54LF.mjs +126 -0
  6. package/dist/chunk-DYXI54LF.mjs.map +1 -0
  7. package/dist/{chunk-F4KCDLRJ.mjs → chunk-GICTFOCR.mjs} +11 -11
  8. package/dist/chunk-GICTFOCR.mjs.map +1 -0
  9. package/dist/{chunk-MSSOYSBR.mjs → chunk-U3TLLYFC.mjs} +2 -2
  10. package/dist/{chunk-4MKP23AD.mjs → chunk-U566UC72.mjs} +9 -2
  11. package/dist/chunk-U566UC72.mjs.map +1 -0
  12. package/dist/{chunk-LZHY5L7A.mjs → chunk-U6J5DGOE.mjs} +2 -2
  13. package/dist/{chunk-ANO23V2M.mjs → chunk-VOBX4JOA.mjs} +5 -2
  14. package/dist/chunk-VOBX4JOA.mjs.map +1 -0
  15. package/dist/components/chat/Button.d.ts +1 -1
  16. package/dist/components/chat/Chat.d.ts +1 -1
  17. package/dist/components/chat/Chat.js +73 -65
  18. package/dist/components/chat/Chat.js.map +1 -1
  19. package/dist/components/chat/Chat.mjs +7 -7
  20. package/dist/components/chat/Header.d.ts +1 -1
  21. package/dist/components/chat/Input.d.ts +1 -1
  22. package/dist/components/chat/Input.js +4 -1
  23. package/dist/components/chat/Input.js.map +1 -1
  24. package/dist/components/chat/Input.mjs +2 -2
  25. package/dist/components/chat/Messages.d.ts +1 -1
  26. package/dist/components/chat/Messages.js +55 -59
  27. package/dist/components/chat/Messages.js.map +1 -1
  28. package/dist/components/chat/Messages.mjs +2 -2
  29. package/dist/components/chat/Modal.d.ts +1 -1
  30. package/dist/components/chat/Modal.js +73 -65
  31. package/dist/components/chat/Modal.js.map +1 -1
  32. package/dist/components/chat/Modal.mjs +8 -8
  33. package/dist/components/chat/Popup.d.ts +1 -1
  34. package/dist/components/chat/Popup.js +73 -65
  35. package/dist/components/chat/Popup.js.map +1 -1
  36. package/dist/components/chat/Popup.mjs +9 -9
  37. package/dist/components/chat/Response.d.ts +1 -1
  38. package/dist/components/chat/Sidebar.d.ts +1 -1
  39. package/dist/components/chat/Sidebar.js +73 -65
  40. package/dist/components/chat/Sidebar.js.map +1 -1
  41. package/dist/components/chat/Sidebar.mjs +9 -9
  42. package/dist/components/chat/Suggestion.d.ts +1 -1
  43. package/dist/components/chat/Suggestion.js +8 -1
  44. package/dist/components/chat/Suggestion.js.map +1 -1
  45. package/dist/components/chat/Suggestion.mjs +1 -1
  46. package/dist/components/chat/Window.d.ts +1 -1
  47. package/dist/components/chat/index.d.ts +1 -1
  48. package/dist/components/chat/index.js +73 -65
  49. package/dist/components/chat/index.js.map +1 -1
  50. package/dist/components/chat/index.mjs +10 -10
  51. package/dist/components/chat/props.d.ts +1 -1
  52. package/dist/components/chat/props.js.map +1 -1
  53. package/dist/components/index.d.ts +1 -1
  54. package/dist/components/index.js +73 -65
  55. package/dist/components/index.js.map +1 -1
  56. package/dist/components/index.mjs +10 -10
  57. package/dist/hooks/use-push-to-talk.d.ts +1 -1
  58. package/dist/hooks/use-push-to-talk.js +4 -1
  59. package/dist/hooks/use-push-to-talk.js.map +1 -1
  60. package/dist/hooks/use-push-to-talk.mjs +1 -1
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +75 -67
  63. package/dist/index.js.map +1 -1
  64. package/dist/index.mjs +10 -10
  65. package/package.json +7 -6
  66. package/src/components/chat/Chat.tsx +4 -5
  67. package/src/components/chat/Messages.tsx +98 -98
  68. package/src/components/chat/Suggestion.tsx +9 -1
  69. package/src/components/chat/props.ts +1 -1
  70. package/src/hooks/use-push-to-talk.tsx +5 -3
  71. package/dist/chunk-23PTCJ2T.mjs +0 -122
  72. package/dist/chunk-23PTCJ2T.mjs.map +0 -1
  73. package/dist/chunk-4MKP23AD.mjs.map +0 -1
  74. package/dist/chunk-ANO23V2M.mjs.map +0 -1
  75. package/dist/chunk-F4KCDLRJ.mjs.map +0 -1
  76. package/dist/types/types.d.ts +0 -16
  77. package/dist/types/types.js +0 -19
  78. package/dist/types/types.js.map +0 -1
  79. package/dist/types/types.mjs +0 -1
  80. package/dist/types/types.mjs.map +0 -1
  81. package/src/types/types.ts +0 -18
  82. /package/dist/{chunk-IEV5SYHX.mjs.map → chunk-5B6K3N4M.mjs.map} +0 -0
  83. /package/dist/{chunk-GKZ5DRPT.mjs.map → chunk-B5UDC4YJ.mjs.map} +0 -0
  84. /package/dist/{chunk-MSSOYSBR.mjs.map → chunk-U3TLLYFC.mjs.map} +0 -0
  85. /package/dist/{chunk-LZHY5L7A.mjs.map → chunk-U6J5DGOE.mjs.map} +0 -0
@@ -512,8 +512,6 @@ var Header = ({ setOpen }) => {
512
512
 
513
513
  // src/components/chat/Messages.tsx
514
514
  var import_react5 = __toESM(require("react"));
515
- var import_nanoid = require("nanoid");
516
- var import_shared = require("@copilotkit/shared");
517
515
 
518
516
  // src/components/chat/Markdown.tsx
519
517
  var import_react4 = require("react");
@@ -985,6 +983,7 @@ var components = {
985
983
 
986
984
  // src/components/chat/Messages.tsx
987
985
  var import_react_core = require("@copilotkit/react-core");
986
+ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
988
987
  var import_jsx_runtime8 = require("react/jsx-runtime");
989
988
  var Messages = ({ messages, inProgress, children }) => {
990
989
  const { chatComponentsCache } = (0, import_react_core.useCopilotContext)();
@@ -996,10 +995,13 @@ var Messages = ({ messages, inProgress, children }) => {
996
995
  messages = [...initialMessages, ...messages];
997
996
  const functionResults = {};
998
997
  for (let i = 0; i < messages.length; i++) {
999
- if (messages[i].role === "assistant" && messages[i].function_call) {
998
+ if (messages[i] instanceof import_runtime_client_gql.ActionExecutionMessage) {
1000
999
  const id = messages[i].id;
1001
- if (i + 1 < messages.length && messages[i + 1].role === "function") {
1002
- functionResults[id] = (0, import_shared.decodeResult)(messages[i + 1].content || "");
1000
+ const resultMessage = messages.find(
1001
+ (message) => message instanceof import_runtime_client_gql.ResultMessage && message.actionExecutionId === id
1002
+ );
1003
+ if (resultMessage) {
1004
+ functionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
1003
1005
  }
1004
1006
  }
1005
1007
  }
@@ -1016,60 +1018,55 @@ var Messages = ({ messages, inProgress, children }) => {
1016
1018
  }, [messages]);
1017
1019
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "copilotKitMessages", children: [
1018
1020
  messages.map((message, index) => {
1019
- var _a, _b, _c;
1020
1021
  const isCurrentMessage = index === messages.length - 1;
1021
- if (message.role === "user") {
1022
+ if (message instanceof import_runtime_client_gql.TextMessage && message.role === "user") {
1022
1023
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
1023
- } else if (message.role == "assistant") {
1024
- if (isCurrentMessage && inProgress && !message.content && !message.partialFunctionCall) {
1025
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
1026
- } else if (message.function_call || message.partialFunctionCall) {
1027
- const functionCallName = ((_a = message.function_call) == null ? void 0 : _a.name) || ((_b = message.partialFunctionCall) == null ? void 0 : _b.name);
1028
- if (chatComponentsCache.current !== null && chatComponentsCache.current[functionCallName]) {
1029
- const render = chatComponentsCache.current[functionCallName];
1030
- if (typeof render === "string") {
1031
- if (isCurrentMessage && inProgress) {
1032
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1033
- context.icons.spinnerIcon,
1034
- " ",
1035
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "inProgressLabel", children: render })
1036
- ] }, index);
1037
- } else {
1038
- return null;
1039
- }
1024
+ } else if (message instanceof import_runtime_client_gql.TextMessage && message.role == "assistant") {
1025
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: isCurrentMessage && inProgress && !message.content ? context.icons.spinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Markdown, { content: message.content }) }, index);
1026
+ } else if (message instanceof import_runtime_client_gql.ActionExecutionMessage) {
1027
+ if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {
1028
+ const render = chatComponentsCache.current[message.name];
1029
+ if (typeof render === "string") {
1030
+ if (isCurrentMessage && inProgress) {
1031
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1032
+ context.icons.spinnerIcon,
1033
+ " ",
1034
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "inProgressLabel", children: render })
1035
+ ] }, index);
1040
1036
  } else {
1041
- const args = message.function_call ? JSON.parse(message.function_call.arguments || "{}") : (_c = message.partialFunctionCall) == null ? void 0 : _c.arguments;
1042
- let status = "inProgress";
1043
- if (functionResults[message.id] !== void 0) {
1044
- status = "complete";
1045
- } else if (message.function_call) {
1046
- status = "executing";
1047
- }
1048
- const toRender = render({
1049
- status,
1050
- args,
1051
- result: functionResults[message.id]
1052
- });
1053
- if (!toRender && status === "complete") {
1054
- return null;
1055
- }
1056
- if (typeof toRender === "string") {
1057
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1058
- isCurrentMessage && inProgress && context.icons.spinnerIcon,
1059
- " ",
1060
- toRender
1061
- ] }, index);
1062
- } else {
1063
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
1064
- }
1037
+ return null;
1065
1038
  }
1066
- } else if ((!inProgress || !isCurrentMessage) && message.function_call) {
1067
- return null;
1068
1039
  } else {
1069
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
1040
+ const args = message.arguments;
1041
+ let status = "inProgress";
1042
+ if (functionResults[message.id] !== void 0) {
1043
+ status = "complete";
1044
+ } else if (message.status.code !== import_runtime_client_gql.MessageStatusCode.Pending) {
1045
+ status = "executing";
1046
+ }
1047
+ const toRender = render({
1048
+ status,
1049
+ args,
1050
+ result: functionResults[message.id]
1051
+ });
1052
+ if (!toRender && status === "complete") {
1053
+ return null;
1054
+ }
1055
+ if (typeof toRender === "string") {
1056
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1057
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
1058
+ " ",
1059
+ toRender
1060
+ ] }, index);
1061
+ } else {
1062
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
1063
+ }
1070
1064
  }
1065
+ } else if (!inProgress || !isCurrentMessage) {
1066
+ return null;
1067
+ } else {
1068
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
1071
1069
  }
1072
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Markdown, { content: message.content }) }, index);
1073
1070
  }
1074
1071
  }),
1075
1072
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("footer", { ref: messagesEndRef, children })
@@ -1084,11 +1081,12 @@ function makeInitialMessages(initial) {
1084
1081
  initialArray.push(initial);
1085
1082
  }
1086
1083
  }
1087
- return initialArray.map((message) => ({
1088
- id: (0, import_nanoid.nanoid)(),
1089
- role: "assistant",
1090
- content: message
1091
- }));
1084
+ return initialArray.map(
1085
+ (message) => new import_runtime_client_gql.TextMessage({
1086
+ role: import_runtime_client_gql.Role.Assistant,
1087
+ content: message
1088
+ })
1089
+ );
1092
1090
  }
1093
1091
 
1094
1092
  // src/components/chat/Input.tsx
@@ -1145,6 +1143,7 @@ var Textarea_default = AutoResizingTextarea;
1145
1143
 
1146
1144
  // src/hooks/use-push-to-talk.tsx
1147
1145
  var import_react_core2 = require("@copilotkit/react-core");
1146
+ var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
1148
1147
  var import_react7 = require("react");
1149
1148
  var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
1150
1149
  if (!mediaStreamRef.current || !audioContextRef.current) {
@@ -1234,7 +1233,9 @@ var usePushToTalk = ({
1234
1233
  const lastMessageIndex = context.messages.findIndex(
1235
1234
  (message) => message.id === startReadingFromMessageId
1236
1235
  );
1237
- const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter((message) => message.role === "assistant" && message.content);
1236
+ const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter(
1237
+ (message) => message instanceof import_runtime_client_gql2.TextMessage && message.role === "assistant"
1238
+ );
1238
1239
  const text = messagesAfterLast.map((message) => message.content).join("\n");
1239
1240
  playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
1240
1241
  setStartReadingFromMessageId(null);
@@ -1323,6 +1324,7 @@ var ResponseButton = ({ onClick, inProgress }) => {
1323
1324
 
1324
1325
  // src/components/chat/Suggestion.tsx
1325
1326
  var import_react_core4 = require("@copilotkit/react-core");
1327
+ var import_shared = require("@copilotkit/shared");
1326
1328
  var import_jsx_runtime12 = require("react/jsx-runtime");
1327
1329
  function Suggestion({ title, message, onClick, partial, className }) {
1328
1330
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
@@ -1343,7 +1345,13 @@ function Suggestion({ title, message, onClick, partial, className }) {
1343
1345
  }
1344
1346
  var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggestions, abortControllerRef) => __async(void 0, null, function* () {
1345
1347
  const abortController = abortControllerRef.current;
1346
- const tools = JSON.stringify(context.getChatCompletionFunctionDescriptions(context.entryPoints));
1348
+ const tools = JSON.stringify(
1349
+ Object.values(context.actions).map((action) => ({
1350
+ name: action.name,
1351
+ description: action.description,
1352
+ jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters))
1353
+ }))
1354
+ );
1347
1355
  const allSuggestions = [];
1348
1356
  for (const config of Object.values(chatSuggestionConfiguration)) {
1349
1357
  try {
@@ -1407,7 +1415,8 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
1407
1415
  // src/components/chat/Chat.tsx
1408
1416
  var import_react9 = __toESM(require("react"));
1409
1417
  var import_react_core5 = require("@copilotkit/react-core");
1410
- var import_nanoid2 = require("nanoid");
1418
+ var import_nanoid = require("nanoid");
1419
+ var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
1411
1420
  var import_jsx_runtime13 = require("react/jsx-runtime");
1412
1421
  function CopilotChat({
1413
1422
  instructions,
@@ -1479,7 +1488,7 @@ function WrappedCopilotChat({
1479
1488
  var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
1480
1489
  var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) => {
1481
1490
  const { visibleMessages, appendMessage, reloadMessages, stopGeneration, isLoading } = (0, import_react_core5.useCopilotChat)({
1482
- id: (0, import_nanoid2.nanoid)(),
1491
+ id: (0, import_nanoid.nanoid)(),
1483
1492
  makeSystemMessage
1484
1493
  });
1485
1494
  const [currentSuggestions, setCurrentSuggestions] = (0, import_react9.useState)([]);
@@ -1516,11 +1525,10 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
1516
1525
  abortSuggestions();
1517
1526
  setCurrentSuggestions([]);
1518
1527
  onSubmitMessage == null ? void 0 : onSubmitMessage(messageContent);
1519
- const message = {
1520
- id: (0, import_nanoid2.nanoid)(),
1528
+ const message = new import_runtime_client_gql3.TextMessage({
1521
1529
  content: messageContent,
1522
- role: "user"
1523
- };
1530
+ role: import_runtime_client_gql3.Role.User
1531
+ });
1524
1532
  appendMessage(message);
1525
1533
  return message;
1526
1534
  });