@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
@@ -515,8 +515,6 @@ var Header = ({ setOpen }) => {
515
515
 
516
516
  // src/components/chat/Messages.tsx
517
517
  var import_react5 = __toESM(require("react"));
518
- var import_nanoid = require("nanoid");
519
- var import_shared = require("@copilotkit/shared");
520
518
 
521
519
  // src/components/chat/Markdown.tsx
522
520
  var import_react4 = require("react");
@@ -988,6 +986,7 @@ var components = {
988
986
 
989
987
  // src/components/chat/Messages.tsx
990
988
  var import_react_core = require("@copilotkit/react-core");
989
+ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
991
990
  var import_jsx_runtime8 = require("react/jsx-runtime");
992
991
  var Messages = ({ messages, inProgress, children }) => {
993
992
  const { chatComponentsCache } = (0, import_react_core.useCopilotContext)();
@@ -999,10 +998,13 @@ var Messages = ({ messages, inProgress, children }) => {
999
998
  messages = [...initialMessages, ...messages];
1000
999
  const functionResults = {};
1001
1000
  for (let i = 0; i < messages.length; i++) {
1002
- if (messages[i].role === "assistant" && messages[i].function_call) {
1001
+ if (messages[i] instanceof import_runtime_client_gql.ActionExecutionMessage) {
1003
1002
  const id = messages[i].id;
1004
- if (i + 1 < messages.length && messages[i + 1].role === "function") {
1005
- functionResults[id] = (0, import_shared.decodeResult)(messages[i + 1].content || "");
1003
+ const resultMessage = messages.find(
1004
+ (message) => message instanceof import_runtime_client_gql.ResultMessage && message.actionExecutionId === id
1005
+ );
1006
+ if (resultMessage) {
1007
+ functionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
1006
1008
  }
1007
1009
  }
1008
1010
  }
@@ -1019,60 +1021,55 @@ var Messages = ({ messages, inProgress, children }) => {
1019
1021
  }, [messages]);
1020
1022
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "copilotKitMessages", children: [
1021
1023
  messages.map((message, index) => {
1022
- var _a, _b, _c;
1023
1024
  const isCurrentMessage = index === messages.length - 1;
1024
- if (message.role === "user") {
1025
+ if (message instanceof import_runtime_client_gql.TextMessage && message.role === "user") {
1025
1026
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
1026
- } else if (message.role == "assistant") {
1027
- if (isCurrentMessage && inProgress && !message.content && !message.partialFunctionCall) {
1028
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
1029
- } else if (message.function_call || message.partialFunctionCall) {
1030
- const functionCallName = ((_a = message.function_call) == null ? void 0 : _a.name) || ((_b = message.partialFunctionCall) == null ? void 0 : _b.name);
1031
- if (chatComponentsCache.current !== null && chatComponentsCache.current[functionCallName]) {
1032
- const render = chatComponentsCache.current[functionCallName];
1033
- if (typeof render === "string") {
1034
- if (isCurrentMessage && inProgress) {
1035
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1036
- context.icons.spinnerIcon,
1037
- " ",
1038
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "inProgressLabel", children: render })
1039
- ] }, index);
1040
- } else {
1041
- return null;
1042
- }
1027
+ } else if (message instanceof import_runtime_client_gql.TextMessage && message.role == "assistant") {
1028
+ 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);
1029
+ } else if (message instanceof import_runtime_client_gql.ActionExecutionMessage) {
1030
+ if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {
1031
+ const render = chatComponentsCache.current[message.name];
1032
+ if (typeof render === "string") {
1033
+ if (isCurrentMessage && inProgress) {
1034
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1035
+ context.icons.spinnerIcon,
1036
+ " ",
1037
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "inProgressLabel", children: render })
1038
+ ] }, index);
1043
1039
  } else {
1044
- const args = message.function_call ? JSON.parse(message.function_call.arguments || "{}") : (_c = message.partialFunctionCall) == null ? void 0 : _c.arguments;
1045
- let status = "inProgress";
1046
- if (functionResults[message.id] !== void 0) {
1047
- status = "complete";
1048
- } else if (message.function_call) {
1049
- status = "executing";
1050
- }
1051
- const toRender = render({
1052
- status,
1053
- args,
1054
- result: functionResults[message.id]
1055
- });
1056
- if (!toRender && status === "complete") {
1057
- return null;
1058
- }
1059
- if (typeof toRender === "string") {
1060
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1061
- isCurrentMessage && inProgress && context.icons.spinnerIcon,
1062
- " ",
1063
- toRender
1064
- ] }, index);
1065
- } else {
1066
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
1067
- }
1040
+ return null;
1068
1041
  }
1069
- } else if ((!inProgress || !isCurrentMessage) && message.function_call) {
1070
- return null;
1071
1042
  } else {
1072
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
1043
+ const args = message.arguments;
1044
+ let status = "inProgress";
1045
+ if (functionResults[message.id] !== void 0) {
1046
+ status = "complete";
1047
+ } else if (message.status.code !== import_runtime_client_gql.MessageStatusCode.Pending) {
1048
+ status = "executing";
1049
+ }
1050
+ const toRender = render({
1051
+ status,
1052
+ args,
1053
+ result: functionResults[message.id]
1054
+ });
1055
+ if (!toRender && status === "complete") {
1056
+ return null;
1057
+ }
1058
+ if (typeof toRender === "string") {
1059
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
1060
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
1061
+ " ",
1062
+ toRender
1063
+ ] }, index);
1064
+ } else {
1065
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
1066
+ }
1073
1067
  }
1068
+ } else if (!inProgress || !isCurrentMessage) {
1069
+ return null;
1070
+ } else {
1071
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
1074
1072
  }
1075
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Markdown, { content: message.content }) }, index);
1076
1073
  }
1077
1074
  }),
1078
1075
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("footer", { ref: messagesEndRef, children })
@@ -1087,11 +1084,12 @@ function makeInitialMessages(initial) {
1087
1084
  initialArray.push(initial);
1088
1085
  }
1089
1086
  }
1090
- return initialArray.map((message) => ({
1091
- id: (0, import_nanoid.nanoid)(),
1092
- role: "assistant",
1093
- content: message
1094
- }));
1087
+ return initialArray.map(
1088
+ (message) => new import_runtime_client_gql.TextMessage({
1089
+ role: import_runtime_client_gql.Role.Assistant,
1090
+ content: message
1091
+ })
1092
+ );
1095
1093
  }
1096
1094
 
1097
1095
  // src/components/chat/Input.tsx
@@ -1148,6 +1146,7 @@ var Textarea_default = AutoResizingTextarea;
1148
1146
 
1149
1147
  // src/hooks/use-push-to-talk.tsx
1150
1148
  var import_react_core2 = require("@copilotkit/react-core");
1149
+ var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
1151
1150
  var import_react7 = require("react");
1152
1151
  var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
1153
1152
  if (!mediaStreamRef.current || !audioContextRef.current) {
@@ -1237,7 +1236,9 @@ var usePushToTalk = ({
1237
1236
  const lastMessageIndex = context.messages.findIndex(
1238
1237
  (message) => message.id === startReadingFromMessageId
1239
1238
  );
1240
- const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter((message) => message.role === "assistant" && message.content);
1239
+ const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter(
1240
+ (message) => message instanceof import_runtime_client_gql2.TextMessage && message.role === "assistant"
1241
+ );
1241
1242
  const text = messagesAfterLast.map((message) => message.content).join("\n");
1242
1243
  playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
1243
1244
  setStartReadingFromMessageId(null);
@@ -1326,6 +1327,7 @@ var ResponseButton = ({ onClick, inProgress }) => {
1326
1327
 
1327
1328
  // src/components/chat/Suggestion.tsx
1328
1329
  var import_react_core4 = require("@copilotkit/react-core");
1330
+ var import_shared = require("@copilotkit/shared");
1329
1331
  var import_jsx_runtime12 = require("react/jsx-runtime");
1330
1332
  function Suggestion({ title, message, onClick, partial, className }) {
1331
1333
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
@@ -1346,7 +1348,13 @@ function Suggestion({ title, message, onClick, partial, className }) {
1346
1348
  }
1347
1349
  var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggestions, abortControllerRef) => __async(void 0, null, function* () {
1348
1350
  const abortController = abortControllerRef.current;
1349
- const tools = JSON.stringify(context.getChatCompletionFunctionDescriptions(context.entryPoints));
1351
+ const tools = JSON.stringify(
1352
+ Object.values(context.actions).map((action) => ({
1353
+ name: action.name,
1354
+ description: action.description,
1355
+ jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters))
1356
+ }))
1357
+ );
1350
1358
  const allSuggestions = [];
1351
1359
  for (const config of Object.values(chatSuggestionConfiguration)) {
1352
1360
  try {
@@ -1410,7 +1418,8 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
1410
1418
  // src/components/chat/Chat.tsx
1411
1419
  var import_react9 = __toESM(require("react"));
1412
1420
  var import_react_core5 = require("@copilotkit/react-core");
1413
- var import_nanoid2 = require("nanoid");
1421
+ var import_nanoid = require("nanoid");
1422
+ var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
1414
1423
  var import_jsx_runtime13 = require("react/jsx-runtime");
1415
1424
  function CopilotChat({
1416
1425
  instructions,
@@ -1482,7 +1491,7 @@ function WrappedCopilotChat({
1482
1491
  var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
1483
1492
  var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) => {
1484
1493
  const { visibleMessages, appendMessage, reloadMessages, stopGeneration, isLoading } = (0, import_react_core5.useCopilotChat)({
1485
- id: (0, import_nanoid2.nanoid)(),
1494
+ id: (0, import_nanoid.nanoid)(),
1486
1495
  makeSystemMessage
1487
1496
  });
1488
1497
  const [currentSuggestions, setCurrentSuggestions] = (0, import_react9.useState)([]);
@@ -1519,11 +1528,10 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
1519
1528
  abortSuggestions();
1520
1529
  setCurrentSuggestions([]);
1521
1530
  onSubmitMessage == null ? void 0 : onSubmitMessage(messageContent);
1522
- const message = {
1523
- id: (0, import_nanoid2.nanoid)(),
1531
+ const message = new import_runtime_client_gql3.TextMessage({
1524
1532
  content: messageContent,
1525
- role: "user"
1526
- };
1533
+ role: import_runtime_client_gql3.Role.User
1534
+ });
1527
1535
  appendMessage(message);
1528
1536
  return message;
1529
1537
  });