@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
|
@@ -170,7 +170,7 @@ function returnAndThrowInDebug(_value) {
|
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
// src/hooks/use-copilot-chat.ts
|
|
173
|
-
var
|
|
173
|
+
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
174
174
|
|
|
175
175
|
// src/hooks/use-chat.ts
|
|
176
176
|
var import_react5 = require("react");
|
|
@@ -182,7 +182,7 @@ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
|
182
182
|
var import_shared = require("@copilotkit/shared");
|
|
183
183
|
function processActionsForRuntimeRequest(actions) {
|
|
184
184
|
const filteredActions = actions.filter(
|
|
185
|
-
(action) => action.available !== import_runtime_client_gql.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*"
|
|
185
|
+
(action) => action.available !== import_runtime_client_gql.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*" && action.available != "frontend" && !action.pairedAction
|
|
186
186
|
).map((action) => {
|
|
187
187
|
let available = import_runtime_client_gql.ActionInputAvailability.Enabled;
|
|
188
188
|
if (action.disabled) {
|
|
@@ -359,8 +359,6 @@ var useCopilotRuntimeClient = (options) => {
|
|
|
359
359
|
};
|
|
360
360
|
|
|
361
361
|
// src/hooks/use-chat.ts
|
|
362
|
-
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
363
|
-
var import_shared3 = require("@copilotkit/shared");
|
|
364
362
|
function useChat(options) {
|
|
365
363
|
const {
|
|
366
364
|
messages,
|
|
@@ -409,7 +407,7 @@ function useChat(options) {
|
|
|
409
407
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
410
408
|
setIsLoading(true);
|
|
411
409
|
const interruptEvent = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event;
|
|
412
|
-
if ((interruptEvent == null ? void 0 : interruptEvent.name) ===
|
|
410
|
+
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) {
|
|
413
411
|
addErrorToast([
|
|
414
412
|
new Error(
|
|
415
413
|
"A message was sent while interrupt is active. This will cause failure on the agent side"
|
|
@@ -503,16 +501,16 @@ function useChat(options) {
|
|
|
503
501
|
setExtensions(extensionsRef.current);
|
|
504
502
|
let rawMessagesResponse = value.generateCopilotResponse.messages;
|
|
505
503
|
((_i = (_h = value.generateCopilotResponse) == null ? void 0 : _h.metaEvents) != null ? _i : []).forEach((ev) => {
|
|
506
|
-
if (ev.name ===
|
|
504
|
+
if (ev.name === import_runtime_client_gql3.MetaEventName.LangGraphInterruptEvent) {
|
|
507
505
|
let eventValue = (0, import_runtime_client_gql3.langGraphInterruptEvent)(ev).value;
|
|
508
|
-
eventValue = (0,
|
|
506
|
+
eventValue = (0, import_shared2.parseJson)(eventValue, eventValue);
|
|
509
507
|
setLangGraphInterruptAction({
|
|
510
508
|
event: __spreadProps(__spreadValues({}, (0, import_runtime_client_gql3.langGraphInterruptEvent)(ev)), {
|
|
511
509
|
value: eventValue
|
|
512
510
|
})
|
|
513
511
|
});
|
|
514
512
|
}
|
|
515
|
-
if (ev.name ===
|
|
513
|
+
if (ev.name === import_runtime_client_gql3.MetaEventName.CopilotKitLangGraphInterruptEvent) {
|
|
516
514
|
const data = ev.data;
|
|
517
515
|
rawMessagesResponse = [...rawMessagesResponse, ...data.messages];
|
|
518
516
|
interruptMessages = (0, import_runtime_client_gql3.convertGqlOutputToMessages)(
|
|
@@ -593,7 +591,7 @@ function useChat(options) {
|
|
|
593
591
|
setMessages([...previousMessages, ...newMessages]);
|
|
594
592
|
}
|
|
595
593
|
}
|
|
596
|
-
|
|
594
|
+
let finalMessages = constructFinalMessages(
|
|
597
595
|
[...syncedMessages, ...interruptMessages],
|
|
598
596
|
previousMessages,
|
|
599
597
|
newMessages
|
|
@@ -603,7 +601,7 @@ function useChat(options) {
|
|
|
603
601
|
const lastMessages = [];
|
|
604
602
|
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
605
603
|
const message = finalMessages[i];
|
|
606
|
-
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
|
|
604
|
+
if ((message.isActionExecutionMessage() || message.isResultMessage()) && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
|
|
607
605
|
lastMessages.unshift(message);
|
|
608
606
|
} else {
|
|
609
607
|
break;
|
|
@@ -611,59 +609,51 @@ function useChat(options) {
|
|
|
611
609
|
}
|
|
612
610
|
for (const message of lastMessages) {
|
|
613
611
|
setMessages(finalMessages);
|
|
614
|
-
const action = actions.find(
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
"abort",
|
|
631
|
-
() => resolve("Operation was aborted by the user")
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
|
-
),
|
|
635
|
-
// if the user stopped generation, we also abort consecutive actions
|
|
636
|
-
new Promise((resolve) => {
|
|
637
|
-
var _a2;
|
|
638
|
-
if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
|
|
639
|
-
resolve("Operation was aborted by the user");
|
|
640
|
-
}
|
|
641
|
-
})
|
|
642
|
-
]);
|
|
643
|
-
} catch (e) {
|
|
644
|
-
error = e;
|
|
645
|
-
addErrorToast([error]);
|
|
646
|
-
result = `Failed to execute action ${message.name}. ${error.message}`;
|
|
647
|
-
console.error(`Failed to execute action ${message.name}: ${error}`);
|
|
648
|
-
}
|
|
612
|
+
const action = actions.find(
|
|
613
|
+
(action2) => action2.name === message.name
|
|
614
|
+
);
|
|
615
|
+
const currentResultMessagePairedFeAction = message.isResultMessage() ? getPairedFeAction(actions, message) : null;
|
|
616
|
+
const executeActionFromMessage = (action2, message2) => __async(this, null, function* () {
|
|
617
|
+
followUp = action2 == null ? void 0 : action2.followUp;
|
|
618
|
+
const resultMessage = yield executeAction({
|
|
619
|
+
onFunctionCall,
|
|
620
|
+
previousMessages,
|
|
621
|
+
message: message2,
|
|
622
|
+
chatAbortControllerRef,
|
|
623
|
+
onError: (error) => {
|
|
624
|
+
addErrorToast([error]);
|
|
625
|
+
console.error(`Failed to execute action ${message2.name}: ${error}`);
|
|
626
|
+
}
|
|
627
|
+
});
|
|
649
628
|
didExecuteAction = true;
|
|
650
|
-
const messageIndex = finalMessages.findIndex((msg) => msg.id ===
|
|
651
|
-
finalMessages.splice(
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
629
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === message2.id);
|
|
630
|
+
finalMessages.splice(messageIndex + 1, 0, resultMessage);
|
|
631
|
+
return resultMessage;
|
|
632
|
+
});
|
|
633
|
+
if (action && message.isActionExecutionMessage()) {
|
|
634
|
+
const resultMessage = yield executeActionFromMessage(action, message);
|
|
635
|
+
const pairedFeAction = getPairedFeAction(actions, resultMessage);
|
|
636
|
+
if (pairedFeAction) {
|
|
637
|
+
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
638
|
+
name: pairedFeAction.name,
|
|
639
|
+
arguments: (0, import_shared2.parseJson)(resultMessage.result, resultMessage.result),
|
|
640
|
+
status: message.status,
|
|
641
|
+
createdAt: message.createdAt,
|
|
642
|
+
parentMessageId: message.parentMessageId
|
|
643
|
+
});
|
|
644
|
+
yield executeActionFromMessage(pairedFeAction, newExecutionMessage);
|
|
645
|
+
}
|
|
646
|
+
} else if (message.isResultMessage() && currentResultMessagePairedFeAction) {
|
|
647
|
+
const newExecutionMessage = new import_runtime_client_gql3.ActionExecutionMessage({
|
|
648
|
+
name: currentResultMessagePairedFeAction.name,
|
|
649
|
+
arguments: (0, import_shared2.parseJson)(message.result, message.result),
|
|
650
|
+
status: message.status,
|
|
651
|
+
createdAt: message.createdAt
|
|
652
|
+
});
|
|
653
|
+
finalMessages.push(newExecutionMessage);
|
|
654
|
+
yield executeActionFromMessage(
|
|
655
|
+
currentResultMessagePairedFeAction,
|
|
656
|
+
newExecutionMessage
|
|
667
657
|
);
|
|
668
658
|
}
|
|
669
659
|
}
|
|
@@ -734,7 +724,7 @@ function useChat(options) {
|
|
|
734
724
|
if (!event)
|
|
735
725
|
return acc;
|
|
736
726
|
switch (event.name) {
|
|
737
|
-
case
|
|
727
|
+
case import_runtime_client_gql3.MetaEventName.LangGraphInterruptEvent:
|
|
738
728
|
if (event.response) {
|
|
739
729
|
setLangGraphInterruptAction(null);
|
|
740
730
|
const value = event.value;
|
|
@@ -810,11 +800,72 @@ function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
|
810
800
|
}
|
|
811
801
|
return finalMessages;
|
|
812
802
|
}
|
|
803
|
+
function executeAction(_0) {
|
|
804
|
+
return __async(this, arguments, function* ({
|
|
805
|
+
onFunctionCall,
|
|
806
|
+
previousMessages,
|
|
807
|
+
message,
|
|
808
|
+
chatAbortControllerRef,
|
|
809
|
+
onError
|
|
810
|
+
}) {
|
|
811
|
+
let result;
|
|
812
|
+
let error = null;
|
|
813
|
+
try {
|
|
814
|
+
result = yield Promise.race([
|
|
815
|
+
onFunctionCall({
|
|
816
|
+
messages: previousMessages,
|
|
817
|
+
name: message.name,
|
|
818
|
+
args: message.arguments
|
|
819
|
+
}),
|
|
820
|
+
new Promise(
|
|
821
|
+
(resolve) => {
|
|
822
|
+
var _a;
|
|
823
|
+
return (_a = chatAbortControllerRef.current) == null ? void 0 : _a.signal.addEventListener(
|
|
824
|
+
"abort",
|
|
825
|
+
() => resolve("Operation was aborted by the user")
|
|
826
|
+
);
|
|
827
|
+
}
|
|
828
|
+
),
|
|
829
|
+
// if the user stopped generation, we also abort consecutive actions
|
|
830
|
+
new Promise((resolve) => {
|
|
831
|
+
var _a;
|
|
832
|
+
if ((_a = chatAbortControllerRef.current) == null ? void 0 : _a.signal.aborted) {
|
|
833
|
+
resolve("Operation was aborted by the user");
|
|
834
|
+
}
|
|
835
|
+
})
|
|
836
|
+
]);
|
|
837
|
+
} catch (e) {
|
|
838
|
+
onError(e);
|
|
839
|
+
}
|
|
840
|
+
return new import_runtime_client_gql3.ResultMessage({
|
|
841
|
+
id: "result-" + message.id,
|
|
842
|
+
result: import_runtime_client_gql3.ResultMessage.encodeResult(
|
|
843
|
+
error ? {
|
|
844
|
+
content: result,
|
|
845
|
+
error: JSON.parse(JSON.stringify(error, Object.getOwnPropertyNames(error)))
|
|
846
|
+
} : result
|
|
847
|
+
),
|
|
848
|
+
actionExecutionId: message.id,
|
|
849
|
+
actionName: message.name
|
|
850
|
+
});
|
|
851
|
+
});
|
|
852
|
+
}
|
|
853
|
+
function getPairedFeAction(actions, message) {
|
|
854
|
+
let actionName = null;
|
|
855
|
+
if (message.isActionExecutionMessage()) {
|
|
856
|
+
actionName = message.name;
|
|
857
|
+
} else if (message.isResultMessage()) {
|
|
858
|
+
actionName = message.actionName;
|
|
859
|
+
}
|
|
860
|
+
return actions.find(
|
|
861
|
+
(action) => action.name === actionName && action.available === "frontend" || action.pairedAction === actionName
|
|
862
|
+
);
|
|
863
|
+
}
|
|
813
864
|
|
|
814
865
|
// src/components/copilot-provider/copilotkit.tsx
|
|
815
866
|
var import_react7 = require("react");
|
|
816
867
|
var import_react_dom = require("react-dom");
|
|
817
|
-
var
|
|
868
|
+
var import_shared3 = require("@copilotkit/shared");
|
|
818
869
|
|
|
819
870
|
// src/context/copilot-messages-context.tsx
|
|
820
871
|
var import_react6 = __toESM(require("react"));
|
|
@@ -880,9 +931,9 @@ function useCopilotChat(_a = {}) {
|
|
|
880
931
|
const makeSystemMessageCallback = (0, import_react8.useCallback)(() => {
|
|
881
932
|
const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
|
|
882
933
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
883
|
-
return new
|
|
934
|
+
return new import_runtime_client_gql4.TextMessage({
|
|
884
935
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
885
|
-
role:
|
|
936
|
+
role: import_runtime_client_gql4.Role.System
|
|
886
937
|
});
|
|
887
938
|
}, [getContextString, makeSystemMessage, chatInstructions]);
|
|
888
939
|
const onCoAgentStateRender = useAsyncCallback(
|