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