@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
defaultSystemMessage,
|
|
3
3
|
useCopilotChat
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-K42OD3J6.mjs";
|
|
5
5
|
import "../chunk-KWQPQ4MM.mjs";
|
|
6
6
|
import "../chunk-SJJNFYGQ.mjs";
|
|
7
7
|
import "../chunk-R2LNRHJP.mjs";
|
|
@@ -11,7 +11,7 @@ import "../chunk-PMAFHQ7P.mjs";
|
|
|
11
11
|
import "../chunk-57K2ZJ5F.mjs";
|
|
12
12
|
import "../chunk-YPSGKPDA.mjs";
|
|
13
13
|
import "../chunk-DCTJZ742.mjs";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-MTAJI7HV.mjs";
|
|
15
15
|
import "../chunk-4CEQJ2X6.mjs";
|
|
16
16
|
import "../chunk-3OQM3NEK.mjs";
|
|
17
17
|
import "../chunk-O7ARI5CV.mjs";
|
|
@@ -178,6 +178,7 @@ var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
|
178
178
|
|
|
179
179
|
// src/hooks/use-chat.ts
|
|
180
180
|
var import_react5 = require("react");
|
|
181
|
+
var import_react_dom = require("react-dom");
|
|
181
182
|
var import_shared4 = require("@copilotkit/shared");
|
|
182
183
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
183
184
|
|
|
@@ -784,6 +785,39 @@ function useChat(options) {
|
|
|
784
785
|
newMessages
|
|
785
786
|
);
|
|
786
787
|
let didExecuteAction = false;
|
|
788
|
+
const executeActionFromMessage = (currentAction, actionMessage) => __async(this, null, function* () {
|
|
789
|
+
var _a2;
|
|
790
|
+
const isInterruptAction = interruptMessages.find((m) => m.id === actionMessage.id);
|
|
791
|
+
followUp = (_a2 = currentAction == null ? void 0 : currentAction.followUp) != null ? _a2 : !isInterruptAction;
|
|
792
|
+
if (currentAction == null ? void 0 : currentAction._setActivatingMessageId) {
|
|
793
|
+
currentAction._setActivatingMessageId(actionMessage.id);
|
|
794
|
+
}
|
|
795
|
+
const resultMessage = yield executeAction({
|
|
796
|
+
onFunctionCall,
|
|
797
|
+
message: actionMessage,
|
|
798
|
+
chatAbortControllerRef,
|
|
799
|
+
onError: (error) => {
|
|
800
|
+
addErrorToast([error]);
|
|
801
|
+
console.error(`Failed to execute action ${actionMessage.name}: ${error}`);
|
|
802
|
+
},
|
|
803
|
+
setMessages,
|
|
804
|
+
getFinalMessages: () => finalMessages,
|
|
805
|
+
isRenderAndWait: (currentAction == null ? void 0 : currentAction._isRenderAndWait) || false
|
|
806
|
+
});
|
|
807
|
+
didExecuteAction = true;
|
|
808
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === actionMessage.id);
|
|
809
|
+
finalMessages.splice(messageIndex + 1, 0, resultMessage);
|
|
810
|
+
if (currentAction == null ? void 0 : currentAction._isRenderAndWait) {
|
|
811
|
+
const messagesForImmediateUpdate = [...finalMessages];
|
|
812
|
+
(0, import_react_dom.flushSync)(() => {
|
|
813
|
+
setMessages(messagesForImmediateUpdate);
|
|
814
|
+
});
|
|
815
|
+
}
|
|
816
|
+
if (currentAction == null ? void 0 : currentAction._setActivatingMessageId) {
|
|
817
|
+
currentAction._setActivatingMessageId(null);
|
|
818
|
+
}
|
|
819
|
+
return resultMessage;
|
|
820
|
+
});
|
|
787
821
|
if (onFunctionCall) {
|
|
788
822
|
const lastMessages = [];
|
|
789
823
|
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
@@ -800,37 +834,28 @@ function useChat(options) {
|
|
|
800
834
|
(action2) => action2.name === message.name
|
|
801
835
|
);
|
|
802
836
|
const currentResultMessagePairedFeAction = message.isResultMessage() ? getPairedFeAction(actions, message) : null;
|
|
803
|
-
const executeActionFromMessage = (action2, message2) => __async(this, null, function* () {
|
|
804
|
-
var _a2;
|
|
805
|
-
const isInterruptAction = interruptMessages.find((m) => m.id === message2.id);
|
|
806
|
-
followUp = (_a2 = action2 == null ? void 0 : action2.followUp) != null ? _a2 : !isInterruptAction;
|
|
807
|
-
const resultMessage = yield executeAction({
|
|
808
|
-
onFunctionCall,
|
|
809
|
-
previousMessages,
|
|
810
|
-
message: message2,
|
|
811
|
-
chatAbortControllerRef,
|
|
812
|
-
onError: (error) => {
|
|
813
|
-
addErrorToast([error]);
|
|
814
|
-
console.error(`Failed to execute action ${message2.name}: ${error}`);
|
|
815
|
-
}
|
|
816
|
-
});
|
|
817
|
-
didExecuteAction = true;
|
|
818
|
-
const messageIndex = finalMessages.findIndex((msg) => msg.id === message2.id);
|
|
819
|
-
finalMessages.splice(messageIndex + 1, 0, resultMessage);
|
|
820
|
-
return resultMessage;
|
|
821
|
-
});
|
|
822
837
|
if (action && message.isActionExecutionMessage()) {
|
|
823
|
-
const
|
|
824
|
-
const
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
838
|
+
const isRenderAndWaitAction = (action == null ? void 0 : action._isRenderAndWait) || false;
|
|
839
|
+
const alreadyProcessed = isRenderAndWaitAction && finalMessages.some(
|
|
840
|
+
(fm) => fm.isResultMessage() && fm.actionExecutionId === message.id
|
|
841
|
+
);
|
|
842
|
+
if (alreadyProcessed) {
|
|
843
|
+
} else {
|
|
844
|
+
const resultMessage = yield executeActionFromMessage(
|
|
845
|
+
action,
|
|
846
|
+
message
|
|
847
|
+
);
|
|
848
|
+
const pairedFeAction = getPairedFeAction(actions, resultMessage);
|
|
849
|
+
if (pairedFeAction) {
|
|
850
|
+
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
851
|
+
name: pairedFeAction.name,
|
|
852
|
+
arguments: (0, import_shared4.parseJson)(resultMessage.result, resultMessage.result),
|
|
853
|
+
status: message.status,
|
|
854
|
+
createdAt: message.createdAt,
|
|
855
|
+
parentMessageId: message.parentMessageId
|
|
856
|
+
});
|
|
857
|
+
yield executeActionFromMessage(pairedFeAction, newExecutionMessage);
|
|
858
|
+
}
|
|
834
859
|
}
|
|
835
860
|
} else if (message.isResultMessage() && currentResultMessagePairedFeAction) {
|
|
836
861
|
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
@@ -848,13 +873,9 @@ function useChat(options) {
|
|
|
848
873
|
}
|
|
849
874
|
setMessages(finalMessages);
|
|
850
875
|
}
|
|
851
|
-
if (
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
(didExecuteAction || // the last message is a server side result
|
|
855
|
-
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
856
|
-
!((_r = chatAbortControllerRef.current) == null ? void 0 : _r.signal.aborted)
|
|
857
|
-
) {
|
|
876
|
+
if (followUp !== false && (didExecuteAction || // the last message is a server side result
|
|
877
|
+
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
878
|
+
!((_r = chatAbortControllerRef.current) == null ? void 0 : _r.signal.aborted)) {
|
|
858
879
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
859
880
|
return yield runChatCompletionRef.current(finalMessages);
|
|
860
881
|
} else if ((_s = chatAbortControllerRef.current) == null ? void 0 : _s.signal.aborted) {
|
|
@@ -1025,20 +1046,31 @@ function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
|
1025
1046
|
function executeAction(_0) {
|
|
1026
1047
|
return __async(this, arguments, function* ({
|
|
1027
1048
|
onFunctionCall,
|
|
1028
|
-
previousMessages,
|
|
1029
1049
|
message,
|
|
1030
1050
|
chatAbortControllerRef,
|
|
1031
|
-
onError
|
|
1051
|
+
onError,
|
|
1052
|
+
setMessages,
|
|
1053
|
+
getFinalMessages,
|
|
1054
|
+
isRenderAndWait
|
|
1032
1055
|
}) {
|
|
1033
1056
|
let result;
|
|
1034
1057
|
let error = null;
|
|
1058
|
+
const currentMessagesForHandler = getFinalMessages();
|
|
1059
|
+
const handlerReturnedPromise = onFunctionCall({
|
|
1060
|
+
messages: currentMessagesForHandler,
|
|
1061
|
+
name: message.name,
|
|
1062
|
+
args: message.arguments
|
|
1063
|
+
});
|
|
1064
|
+
if (isRenderAndWait) {
|
|
1065
|
+
const currentMessagesForRender = getFinalMessages();
|
|
1066
|
+
(0, import_react_dom.flushSync)(() => {
|
|
1067
|
+
setMessages([...currentMessagesForRender]);
|
|
1068
|
+
});
|
|
1069
|
+
}
|
|
1035
1070
|
try {
|
|
1036
1071
|
result = yield Promise.race([
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
name: message.name,
|
|
1040
|
-
args: message.arguments
|
|
1041
|
-
}),
|
|
1072
|
+
handlerReturnedPromise,
|
|
1073
|
+
// Await the promise returned by the handler
|
|
1042
1074
|
new Promise(
|
|
1043
1075
|
(resolve) => {
|
|
1044
1076
|
var _a;
|
|
@@ -1086,7 +1118,7 @@ function getPairedFeAction(actions, message) {
|
|
|
1086
1118
|
|
|
1087
1119
|
// src/components/copilot-provider/copilotkit.tsx
|
|
1088
1120
|
var import_react7 = require("react");
|
|
1089
|
-
var
|
|
1121
|
+
var import_react_dom2 = require("react-dom");
|
|
1090
1122
|
var import_shared5 = require("@copilotkit/shared");
|
|
1091
1123
|
|
|
1092
1124
|
// src/context/copilot-messages-context.tsx
|