@copilotkit/react-core 1.9.2-next.19 → 1.9.2-next.20
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.
- package/CHANGELOG.md +18 -0
- package/dist/{chunk-XJ34ATKP.mjs → chunk-FN3UA2ZE.mjs} +2 -2
- package/dist/{chunk-7EJ4IWSA.mjs → chunk-K42OD3J6.mjs} +2 -2
- package/dist/{chunk-5DODGOMM.mjs → chunk-MTAJI7HV.mjs} +77 -45
- package/dist/chunk-MTAJI7HV.mjs.map +1 -0
- package/dist/{chunk-WR3XTNHJ.mjs → chunk-NJA5ZLAZ.mjs} +26 -7
- package/dist/chunk-NJA5ZLAZ.mjs.map +1 -0
- package/dist/{chunk-5PE2XROA.mjs → chunk-UGJGKBFB.mjs} +2 -2
- package/dist/{chunk-BHGYBOR3.mjs → chunk-ZOMEQ3XC.mjs} +2 -2
- package/dist/hooks/index.js +102 -51
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +6 -6
- package/dist/hooks/use-chat.js +170 -138
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +1 -1
- package/dist/hooks/use-coagent.js +77 -45
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +3 -3
- package/dist/hooks/use-copilot-action.js +25 -6
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +1 -1
- package/dist/hooks/use-copilot-authenticated-action.js +25 -6
- package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +2 -2
- package/dist/hooks/use-copilot-chat.js +77 -45
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +2 -2
- package/dist/hooks/use-langgraph-interrupt.js +77 -45
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt.mjs +3 -3
- package/dist/index.js +101 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/package.json +3 -3
- package/src/hooks/use-chat.ts +110 -46
- package/src/hooks/use-copilot-action.ts +51 -9
- package/dist/chunk-5DODGOMM.mjs.map +0 -1
- package/dist/chunk-WR3XTNHJ.mjs.map +0 -1
- /package/dist/{chunk-XJ34ATKP.mjs.map → chunk-FN3UA2ZE.mjs.map} +0 -0
- /package/dist/{chunk-7EJ4IWSA.mjs.map → chunk-K42OD3J6.mjs.map} +0 -0
- /package/dist/{chunk-5PE2XROA.mjs.map → chunk-UGJGKBFB.mjs.map} +0 -0
- /package/dist/{chunk-BHGYBOR3.mjs.map → chunk-ZOMEQ3XC.mjs.map} +0 -0
|
@@ -198,6 +198,7 @@ var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
|
198
198
|
|
|
199
199
|
// src/hooks/use-chat.ts
|
|
200
200
|
var import_react6 = require("react");
|
|
201
|
+
var import_react_dom = require("react-dom");
|
|
201
202
|
var import_shared4 = require("@copilotkit/shared");
|
|
202
203
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
203
204
|
|
|
@@ -804,6 +805,39 @@ function useChat(options) {
|
|
|
804
805
|
newMessages
|
|
805
806
|
);
|
|
806
807
|
let didExecuteAction = false;
|
|
808
|
+
const executeActionFromMessage = (currentAction, actionMessage) => __async(this, null, function* () {
|
|
809
|
+
var _a2;
|
|
810
|
+
const isInterruptAction = interruptMessages.find((m) => m.id === actionMessage.id);
|
|
811
|
+
followUp = (_a2 = currentAction == null ? void 0 : currentAction.followUp) != null ? _a2 : !isInterruptAction;
|
|
812
|
+
if (currentAction == null ? void 0 : currentAction._setActivatingMessageId) {
|
|
813
|
+
currentAction._setActivatingMessageId(actionMessage.id);
|
|
814
|
+
}
|
|
815
|
+
const resultMessage = yield executeAction({
|
|
816
|
+
onFunctionCall,
|
|
817
|
+
message: actionMessage,
|
|
818
|
+
chatAbortControllerRef,
|
|
819
|
+
onError: (error) => {
|
|
820
|
+
addErrorToast([error]);
|
|
821
|
+
console.error(`Failed to execute action ${actionMessage.name}: ${error}`);
|
|
822
|
+
},
|
|
823
|
+
setMessages,
|
|
824
|
+
getFinalMessages: () => finalMessages,
|
|
825
|
+
isRenderAndWait: (currentAction == null ? void 0 : currentAction._isRenderAndWait) || false
|
|
826
|
+
});
|
|
827
|
+
didExecuteAction = true;
|
|
828
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === actionMessage.id);
|
|
829
|
+
finalMessages.splice(messageIndex + 1, 0, resultMessage);
|
|
830
|
+
if (currentAction == null ? void 0 : currentAction._isRenderAndWait) {
|
|
831
|
+
const messagesForImmediateUpdate = [...finalMessages];
|
|
832
|
+
(0, import_react_dom.flushSync)(() => {
|
|
833
|
+
setMessages(messagesForImmediateUpdate);
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
if (currentAction == null ? void 0 : currentAction._setActivatingMessageId) {
|
|
837
|
+
currentAction._setActivatingMessageId(null);
|
|
838
|
+
}
|
|
839
|
+
return resultMessage;
|
|
840
|
+
});
|
|
807
841
|
if (onFunctionCall) {
|
|
808
842
|
const lastMessages = [];
|
|
809
843
|
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
@@ -820,37 +854,28 @@ function useChat(options) {
|
|
|
820
854
|
(action2) => action2.name === message.name
|
|
821
855
|
);
|
|
822
856
|
const currentResultMessagePairedFeAction = message.isResultMessage() ? getPairedFeAction(actions, message) : null;
|
|
823
|
-
const executeActionFromMessage = (action2, message2) => __async(this, null, function* () {
|
|
824
|
-
var _a2;
|
|
825
|
-
const isInterruptAction = interruptMessages.find((m) => m.id === message2.id);
|
|
826
|
-
followUp = (_a2 = action2 == null ? void 0 : action2.followUp) != null ? _a2 : !isInterruptAction;
|
|
827
|
-
const resultMessage = yield executeAction({
|
|
828
|
-
onFunctionCall,
|
|
829
|
-
previousMessages,
|
|
830
|
-
message: message2,
|
|
831
|
-
chatAbortControllerRef,
|
|
832
|
-
onError: (error) => {
|
|
833
|
-
addErrorToast([error]);
|
|
834
|
-
console.error(`Failed to execute action ${message2.name}: ${error}`);
|
|
835
|
-
}
|
|
836
|
-
});
|
|
837
|
-
didExecuteAction = true;
|
|
838
|
-
const messageIndex = finalMessages.findIndex((msg) => msg.id === message2.id);
|
|
839
|
-
finalMessages.splice(messageIndex + 1, 0, resultMessage);
|
|
840
|
-
return resultMessage;
|
|
841
|
-
});
|
|
842
857
|
if (action && message.isActionExecutionMessage()) {
|
|
843
|
-
const
|
|
844
|
-
const
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
858
|
+
const isRenderAndWaitAction = (action == null ? void 0 : action._isRenderAndWait) || false;
|
|
859
|
+
const alreadyProcessed = isRenderAndWaitAction && finalMessages.some(
|
|
860
|
+
(fm) => fm.isResultMessage() && fm.actionExecutionId === message.id
|
|
861
|
+
);
|
|
862
|
+
if (alreadyProcessed) {
|
|
863
|
+
} else {
|
|
864
|
+
const resultMessage = yield executeActionFromMessage(
|
|
865
|
+
action,
|
|
866
|
+
message
|
|
867
|
+
);
|
|
868
|
+
const pairedFeAction = getPairedFeAction(actions, resultMessage);
|
|
869
|
+
if (pairedFeAction) {
|
|
870
|
+
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
871
|
+
name: pairedFeAction.name,
|
|
872
|
+
arguments: (0, import_shared4.parseJson)(resultMessage.result, resultMessage.result),
|
|
873
|
+
status: message.status,
|
|
874
|
+
createdAt: message.createdAt,
|
|
875
|
+
parentMessageId: message.parentMessageId
|
|
876
|
+
});
|
|
877
|
+
yield executeActionFromMessage(pairedFeAction, newExecutionMessage);
|
|
878
|
+
}
|
|
854
879
|
}
|
|
855
880
|
} else if (message.isResultMessage() && currentResultMessagePairedFeAction) {
|
|
856
881
|
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
@@ -868,13 +893,9 @@ function useChat(options) {
|
|
|
868
893
|
}
|
|
869
894
|
setMessages(finalMessages);
|
|
870
895
|
}
|
|
871
|
-
if (
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
(didExecuteAction || // the last message is a server side result
|
|
875
|
-
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
876
|
-
!((_r = chatAbortControllerRef.current) == null ? void 0 : _r.signal.aborted)
|
|
877
|
-
) {
|
|
896
|
+
if (followUp !== false && (didExecuteAction || // the last message is a server side result
|
|
897
|
+
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
898
|
+
!((_r = chatAbortControllerRef.current) == null ? void 0 : _r.signal.aborted)) {
|
|
878
899
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
879
900
|
return yield runChatCompletionRef.current(finalMessages);
|
|
880
901
|
} else if ((_s = chatAbortControllerRef.current) == null ? void 0 : _s.signal.aborted) {
|
|
@@ -1045,20 +1066,31 @@ function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
|
1045
1066
|
function executeAction(_0) {
|
|
1046
1067
|
return __async(this, arguments, function* ({
|
|
1047
1068
|
onFunctionCall,
|
|
1048
|
-
previousMessages,
|
|
1049
1069
|
message,
|
|
1050
1070
|
chatAbortControllerRef,
|
|
1051
|
-
onError
|
|
1071
|
+
onError,
|
|
1072
|
+
setMessages,
|
|
1073
|
+
getFinalMessages,
|
|
1074
|
+
isRenderAndWait
|
|
1052
1075
|
}) {
|
|
1053
1076
|
let result;
|
|
1054
1077
|
let error = null;
|
|
1078
|
+
const currentMessagesForHandler = getFinalMessages();
|
|
1079
|
+
const handlerReturnedPromise = onFunctionCall({
|
|
1080
|
+
messages: currentMessagesForHandler,
|
|
1081
|
+
name: message.name,
|
|
1082
|
+
args: message.arguments
|
|
1083
|
+
});
|
|
1084
|
+
if (isRenderAndWait) {
|
|
1085
|
+
const currentMessagesForRender = getFinalMessages();
|
|
1086
|
+
(0, import_react_dom.flushSync)(() => {
|
|
1087
|
+
setMessages([...currentMessagesForRender]);
|
|
1088
|
+
});
|
|
1089
|
+
}
|
|
1055
1090
|
try {
|
|
1056
1091
|
result = yield Promise.race([
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
name: message.name,
|
|
1060
|
-
args: message.arguments
|
|
1061
|
-
}),
|
|
1092
|
+
handlerReturnedPromise,
|
|
1093
|
+
// Await the promise returned by the handler
|
|
1062
1094
|
new Promise(
|
|
1063
1095
|
(resolve) => {
|
|
1064
1096
|
var _a;
|
|
@@ -1106,7 +1138,7 @@ function getPairedFeAction(actions, message) {
|
|
|
1106
1138
|
|
|
1107
1139
|
// src/components/copilot-provider/copilotkit.tsx
|
|
1108
1140
|
var import_react7 = require("react");
|
|
1109
|
-
var
|
|
1141
|
+
var import_react_dom2 = require("react-dom");
|
|
1110
1142
|
var import_shared5 = require("@copilotkit/shared");
|
|
1111
1143
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
1112
1144
|
var defaultCopilotContextCategories = ["global"];
|