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