@copilotkit/react-core 1.6.0-next.10 → 1.6.0-next.11
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 +8 -0
- package/dist/{chunk-XERJQUHA.mjs → chunk-4CEQJ2X6.mjs} +2 -2
- package/dist/{chunk-XERJQUHA.mjs.map → chunk-4CEQJ2X6.mjs.map} +1 -1
- package/dist/{chunk-ADTDNMYG.mjs → chunk-4EC4JK7H.mjs} +2 -2
- package/dist/{chunk-ALW2T2LL.mjs → chunk-FUO5LKSJ.mjs} +114 -60
- package/dist/chunk-FUO5LKSJ.mjs.map +1 -0
- package/dist/{chunk-MPFP6ANM.mjs → chunk-HBCP2KNA.mjs} +2 -2
- package/dist/{chunk-QJPWWVJQ.mjs → chunk-T4CAQC6B.mjs} +2 -2
- package/dist/{chunk-JFCNSGNU.mjs → chunk-Y2T56VSE.mjs} +2 -2
- package/dist/hooks/index.js +128 -77
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +5 -5
- package/dist/hooks/use-chat.js +113 -62
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +2 -2
- package/dist/hooks/use-coagent.js +119 -68
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +4 -4
- package/dist/hooks/use-copilot-chat.js +117 -66
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +3 -3
- package/dist/hooks/use-langgraph-interrupt.js +119 -68
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt.mjs +4 -4
- package/dist/index.js +134 -83
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/lib/copilot-task.js +1 -1
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +2 -2
- package/dist/lib/index.js +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +2 -2
- package/dist/types/frontend-action.d.ts +2 -1
- package/dist/types/frontend-action.js +1 -1
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/types/frontend-action.mjs +1 -1
- package/package.json +3 -3
- package/src/hooks/use-chat.ts +133 -58
- package/src/types/frontend-action.ts +5 -2
- package/dist/chunk-ALW2T2LL.mjs.map +0 -1
- /package/dist/{chunk-ADTDNMYG.mjs.map → chunk-4EC4JK7H.mjs.map} +0 -0
- /package/dist/{chunk-MPFP6ANM.mjs.map → chunk-HBCP2KNA.mjs.map} +0 -0
- /package/dist/{chunk-QJPWWVJQ.mjs.map → chunk-T4CAQC6B.mjs.map} +0 -0
- /package/dist/{chunk-JFCNSGNU.mjs.map → chunk-Y2T56VSE.mjs.map} +0 -0
|
@@ -190,7 +190,7 @@ function useCopilotMessagesContext() {
|
|
|
190
190
|
|
|
191
191
|
// src/hooks/use-copilot-chat.ts
|
|
192
192
|
var import_react8 = require("react");
|
|
193
|
-
var
|
|
193
|
+
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
194
194
|
|
|
195
195
|
// src/hooks/use-chat.ts
|
|
196
196
|
var import_react6 = require("react");
|
|
@@ -202,7 +202,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
202
202
|
var import_shared = require("@copilotkit/shared");
|
|
203
203
|
function processActionsForRuntimeRequest(actions) {
|
|
204
204
|
const filteredActions = actions.filter(
|
|
205
|
-
(action) => action.available !== import_runtime_client_gql.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*"
|
|
205
|
+
(action) => action.available !== import_runtime_client_gql.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*" && action.available != "frontend" && !action.pairedAction
|
|
206
206
|
).map((action) => {
|
|
207
207
|
let available = import_runtime_client_gql.ActionInputAvailability.Enabled;
|
|
208
208
|
if (action.disabled) {
|
|
@@ -379,8 +379,6 @@ var useCopilotRuntimeClient = (options) => {
|
|
|
379
379
|
};
|
|
380
380
|
|
|
381
381
|
// src/hooks/use-chat.ts
|
|
382
|
-
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
383
|
-
var import_shared3 = require("@copilotkit/shared");
|
|
384
382
|
function useChat(options) {
|
|
385
383
|
const {
|
|
386
384
|
messages,
|
|
@@ -429,7 +427,7 @@ function useChat(options) {
|
|
|
429
427
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
430
428
|
setIsLoading(true);
|
|
431
429
|
const interruptEvent = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event;
|
|
432
|
-
if ((interruptEvent == null ? void 0 : interruptEvent.name) ===
|
|
430
|
+
if ((interruptEvent == null ? void 0 : interruptEvent.name) === import_runtime_client_gql3.MetaEventName.LangGraphInterruptEvent && (interruptEvent == null ? void 0 : interruptEvent.value) && !(interruptEvent == null ? void 0 : interruptEvent.response) && agentSessionRef.current) {
|
|
433
431
|
addErrorToast([
|
|
434
432
|
new Error(
|
|
435
433
|
"A message was sent while interrupt is active. This will cause failure on the agent side"
|
|
@@ -523,16 +521,16 @@ function useChat(options) {
|
|
|
523
521
|
setExtensions(extensionsRef.current);
|
|
524
522
|
let rawMessagesResponse = value.generateCopilotResponse.messages;
|
|
525
523
|
((_i = (_h = value.generateCopilotResponse) == null ? void 0 : _h.metaEvents) != null ? _i : []).forEach((ev) => {
|
|
526
|
-
if (ev.name ===
|
|
524
|
+
if (ev.name === import_runtime_client_gql3.MetaEventName.LangGraphInterruptEvent) {
|
|
527
525
|
let eventValue = (0, import_runtime_client_gql3.langGraphInterruptEvent)(ev).value;
|
|
528
|
-
eventValue = (0,
|
|
526
|
+
eventValue = (0, import_shared2.parseJson)(eventValue, eventValue);
|
|
529
527
|
setLangGraphInterruptAction({
|
|
530
528
|
event: __spreadProps(__spreadValues({}, (0, import_runtime_client_gql3.langGraphInterruptEvent)(ev)), {
|
|
531
529
|
value: eventValue
|
|
532
530
|
})
|
|
533
531
|
});
|
|
534
532
|
}
|
|
535
|
-
if (ev.name ===
|
|
533
|
+
if (ev.name === import_runtime_client_gql3.MetaEventName.CopilotKitLangGraphInterruptEvent) {
|
|
536
534
|
const data = ev.data;
|
|
537
535
|
rawMessagesResponse = [...rawMessagesResponse, ...data.messages];
|
|
538
536
|
interruptMessages = (0, import_runtime_client_gql3.convertGqlOutputToMessages)(
|
|
@@ -613,7 +611,7 @@ function useChat(options) {
|
|
|
613
611
|
setMessages([...previousMessages, ...newMessages]);
|
|
614
612
|
}
|
|
615
613
|
}
|
|
616
|
-
|
|
614
|
+
let finalMessages = constructFinalMessages(
|
|
617
615
|
[...syncedMessages, ...interruptMessages],
|
|
618
616
|
previousMessages,
|
|
619
617
|
newMessages
|
|
@@ -623,7 +621,7 @@ function useChat(options) {
|
|
|
623
621
|
const lastMessages = [];
|
|
624
622
|
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
625
623
|
const message = finalMessages[i];
|
|
626
|
-
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
|
|
624
|
+
if ((message.isActionExecutionMessage() || message.isResultMessage()) && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
|
|
627
625
|
lastMessages.unshift(message);
|
|
628
626
|
} else {
|
|
629
627
|
break;
|
|
@@ -631,59 +629,51 @@ function useChat(options) {
|
|
|
631
629
|
}
|
|
632
630
|
for (const message of lastMessages) {
|
|
633
631
|
setMessages(finalMessages);
|
|
634
|
-
const action = actions.find(
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
"abort",
|
|
651
|
-
() => resolve("Operation was aborted by the user")
|
|
652
|
-
);
|
|
653
|
-
}
|
|
654
|
-
),
|
|
655
|
-
// if the user stopped generation, we also abort consecutive actions
|
|
656
|
-
new Promise((resolve) => {
|
|
657
|
-
var _a2;
|
|
658
|
-
if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
|
|
659
|
-
resolve("Operation was aborted by the user");
|
|
660
|
-
}
|
|
661
|
-
})
|
|
662
|
-
]);
|
|
663
|
-
} catch (e) {
|
|
664
|
-
error = e;
|
|
665
|
-
addErrorToast([error]);
|
|
666
|
-
result = `Failed to execute action ${message.name}. ${error.message}`;
|
|
667
|
-
console.error(`Failed to execute action ${message.name}: ${error}`);
|
|
668
|
-
}
|
|
632
|
+
const action = actions.find(
|
|
633
|
+
(action2) => action2.name === message.name
|
|
634
|
+
);
|
|
635
|
+
const currentResultMessagePairedFeAction = message.isResultMessage() ? getPairedFeAction(actions, message) : null;
|
|
636
|
+
const executeActionFromMessage = (action2, message2) => __async(this, null, function* () {
|
|
637
|
+
followUp = action2 == null ? void 0 : action2.followUp;
|
|
638
|
+
const resultMessage = yield executeAction({
|
|
639
|
+
onFunctionCall,
|
|
640
|
+
previousMessages,
|
|
641
|
+
message: message2,
|
|
642
|
+
chatAbortControllerRef,
|
|
643
|
+
onError: (error) => {
|
|
644
|
+
addErrorToast([error]);
|
|
645
|
+
console.error(`Failed to execute action ${message2.name}: ${error}`);
|
|
646
|
+
}
|
|
647
|
+
});
|
|
669
648
|
didExecuteAction = true;
|
|
670
|
-
const messageIndex = finalMessages.findIndex((msg) => msg.id ===
|
|
671
|
-
finalMessages.splice(
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
649
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === message2.id);
|
|
650
|
+
finalMessages.splice(messageIndex + 1, 0, resultMessage);
|
|
651
|
+
return resultMessage;
|
|
652
|
+
});
|
|
653
|
+
if (action && message.isActionExecutionMessage()) {
|
|
654
|
+
const resultMessage = yield executeActionFromMessage(action, message);
|
|
655
|
+
const pairedFeAction = getPairedFeAction(actions, resultMessage);
|
|
656
|
+
if (pairedFeAction) {
|
|
657
|
+
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
658
|
+
name: pairedFeAction.name,
|
|
659
|
+
arguments: (0, import_shared2.parseJson)(resultMessage.result, resultMessage.result),
|
|
660
|
+
status: message.status,
|
|
661
|
+
createdAt: message.createdAt,
|
|
662
|
+
parentMessageId: message.parentMessageId
|
|
663
|
+
});
|
|
664
|
+
yield executeActionFromMessage(pairedFeAction, newExecutionMessage);
|
|
665
|
+
}
|
|
666
|
+
} else if (message.isResultMessage() && currentResultMessagePairedFeAction) {
|
|
667
|
+
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
668
|
+
name: currentResultMessagePairedFeAction.name,
|
|
669
|
+
arguments: (0, import_shared2.parseJson)(message.result, message.result),
|
|
670
|
+
status: message.status,
|
|
671
|
+
createdAt: message.createdAt
|
|
672
|
+
});
|
|
673
|
+
finalMessages.push(newExecutionMessage);
|
|
674
|
+
yield executeActionFromMessage(
|
|
675
|
+
currentResultMessagePairedFeAction,
|
|
676
|
+
newExecutionMessage
|
|
687
677
|
);
|
|
688
678
|
}
|
|
689
679
|
}
|
|
@@ -754,7 +744,7 @@ function useChat(options) {
|
|
|
754
744
|
if (!event)
|
|
755
745
|
return acc;
|
|
756
746
|
switch (event.name) {
|
|
757
|
-
case
|
|
747
|
+
case import_runtime_client_gql3.MetaEventName.LangGraphInterruptEvent:
|
|
758
748
|
if (event.response) {
|
|
759
749
|
setLangGraphInterruptAction(null);
|
|
760
750
|
const value = event.value;
|
|
@@ -830,11 +820,72 @@ function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
|
830
820
|
}
|
|
831
821
|
return finalMessages;
|
|
832
822
|
}
|
|
823
|
+
function executeAction(_0) {
|
|
824
|
+
return __async(this, arguments, function* ({
|
|
825
|
+
onFunctionCall,
|
|
826
|
+
previousMessages,
|
|
827
|
+
message,
|
|
828
|
+
chatAbortControllerRef,
|
|
829
|
+
onError
|
|
830
|
+
}) {
|
|
831
|
+
let result;
|
|
832
|
+
let error = null;
|
|
833
|
+
try {
|
|
834
|
+
result = yield Promise.race([
|
|
835
|
+
onFunctionCall({
|
|
836
|
+
messages: previousMessages,
|
|
837
|
+
name: message.name,
|
|
838
|
+
args: message.arguments
|
|
839
|
+
}),
|
|
840
|
+
new Promise(
|
|
841
|
+
(resolve) => {
|
|
842
|
+
var _a;
|
|
843
|
+
return (_a = chatAbortControllerRef.current) == null ? void 0 : _a.signal.addEventListener(
|
|
844
|
+
"abort",
|
|
845
|
+
() => resolve("Operation was aborted by the user")
|
|
846
|
+
);
|
|
847
|
+
}
|
|
848
|
+
),
|
|
849
|
+
// if the user stopped generation, we also abort consecutive actions
|
|
850
|
+
new Promise((resolve) => {
|
|
851
|
+
var _a;
|
|
852
|
+
if ((_a = chatAbortControllerRef.current) == null ? void 0 : _a.signal.aborted) {
|
|
853
|
+
resolve("Operation was aborted by the user");
|
|
854
|
+
}
|
|
855
|
+
})
|
|
856
|
+
]);
|
|
857
|
+
} catch (e) {
|
|
858
|
+
onError(e);
|
|
859
|
+
}
|
|
860
|
+
return new import_runtime_client_gql3.ResultMessage({
|
|
861
|
+
id: "result-" + message.id,
|
|
862
|
+
result: import_runtime_client_gql3.ResultMessage.encodeResult(
|
|
863
|
+
error ? {
|
|
864
|
+
content: result,
|
|
865
|
+
error: JSON.parse(JSON.stringify(error, Object.getOwnPropertyNames(error)))
|
|
866
|
+
} : result
|
|
867
|
+
),
|
|
868
|
+
actionExecutionId: message.id,
|
|
869
|
+
actionName: message.name
|
|
870
|
+
});
|
|
871
|
+
});
|
|
872
|
+
}
|
|
873
|
+
function getPairedFeAction(actions, message) {
|
|
874
|
+
let actionName = null;
|
|
875
|
+
if (message.isActionExecutionMessage()) {
|
|
876
|
+
actionName = message.name;
|
|
877
|
+
} else if (message.isResultMessage()) {
|
|
878
|
+
actionName = message.actionName;
|
|
879
|
+
}
|
|
880
|
+
return actions.find(
|
|
881
|
+
(action) => action.name === actionName && action.available === "frontend" || action.pairedAction === actionName
|
|
882
|
+
);
|
|
883
|
+
}
|
|
833
884
|
|
|
834
885
|
// src/components/copilot-provider/copilotkit.tsx
|
|
835
886
|
var import_react7 = require("react");
|
|
836
887
|
var import_react_dom = require("react-dom");
|
|
837
|
-
var
|
|
888
|
+
var import_shared3 = require("@copilotkit/shared");
|
|
838
889
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
839
890
|
var defaultCopilotContextCategories = ["global"];
|
|
840
891
|
|
|
@@ -881,9 +932,9 @@ function useCopilotChat(_a = {}) {
|
|
|
881
932
|
const makeSystemMessageCallback = (0, import_react8.useCallback)(() => {
|
|
882
933
|
const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
|
|
883
934
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
884
|
-
return new
|
|
935
|
+
return new import_runtime_client_gql4.TextMessage({
|
|
885
936
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
886
|
-
role:
|
|
937
|
+
role: import_runtime_client_gql4.Role.System
|
|
887
938
|
});
|
|
888
939
|
}, [getContextString, makeSystemMessage, chatInstructions]);
|
|
889
940
|
const onCoAgentStateRender = useAsyncCallback(
|
|
@@ -1035,7 +1086,7 @@ ${additionalInstructions}` : "");
|
|
|
1035
1086
|
}
|
|
1036
1087
|
|
|
1037
1088
|
// src/hooks/use-coagent.ts
|
|
1038
|
-
var
|
|
1089
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
1039
1090
|
function useCoAgent(options) {
|
|
1040
1091
|
const generalContext = useCopilotContext();
|
|
1041
1092
|
const { availableAgents } = generalContext;
|
|
@@ -1086,7 +1137,7 @@ function useCoAgent(options) {
|
|
|
1086
1137
|
if (((_d = (_c = result.data) == null ? void 0 : _c.loadAgentState) == null ? void 0 : _d.threadExists) && newState && newState != "{}") {
|
|
1087
1138
|
lastLoadedState.current = newState;
|
|
1088
1139
|
lastLoadedThreadId.current = threadId;
|
|
1089
|
-
const fetchedState = (0,
|
|
1140
|
+
const fetchedState = (0, import_shared4.parseJson)(newState, {});
|
|
1090
1141
|
isExternalStateManagement(options) ? options.setState(fetchedState) : setState(fetchedState);
|
|
1091
1142
|
}
|
|
1092
1143
|
});
|