@copilotkit/react-core 1.1.2 → 1.1.3-feat-runtime-remote-actions.1
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 +24 -0
- package/README.md +32 -37
- package/dist/{chunk-T6L4EGTD.mjs → chunk-326LK7LX.mjs} +5 -5
- package/dist/chunk-326LK7LX.mjs.map +1 -0
- package/dist/{chunk-GE7LAL6V.mjs → chunk-3U22BXKC.mjs} +6 -4
- package/dist/chunk-3U22BXKC.mjs.map +1 -0
- package/dist/{chunk-VFDR4MIF.mjs → chunk-A37GANOW.mjs} +11 -7
- package/dist/chunk-A37GANOW.mjs.map +1 -0
- package/dist/chunk-BWYAGPEF.mjs +1 -0
- package/dist/{chunk-KONDJRB4.mjs → chunk-CODXG6KU.mjs} +5 -5
- package/dist/chunk-CODXG6KU.mjs.map +1 -0
- package/dist/{chunk-YYZNR3CS.mjs → chunk-HABY7NLH.mjs} +72 -14
- package/dist/chunk-HABY7NLH.mjs.map +1 -0
- package/dist/{chunk-3NHEWJ4V.mjs → chunk-J2YXDQHR.mjs} +19 -4
- package/dist/chunk-J2YXDQHR.mjs.map +1 -0
- package/dist/chunk-Q4TTTAXQ.mjs +87 -0
- package/dist/chunk-Q4TTTAXQ.mjs.map +1 -0
- package/dist/{chunk-TVR5CJ6E.mjs → chunk-RBNULK3U.mjs} +39 -5
- package/dist/chunk-RBNULK3U.mjs.map +1 -0
- package/dist/chunk-STUXJ3BN.mjs +44 -0
- package/dist/chunk-STUXJ3BN.mjs.map +1 -0
- package/dist/{chunk-UQRDVZ2N.mjs → chunk-TCZBK3HZ.mjs} +9 -5
- package/dist/chunk-TCZBK3HZ.mjs.map +1 -0
- package/dist/{chunk-AGGKI26A.mjs → chunk-XSZDVRPW.mjs} +64 -12
- package/dist/chunk-XSZDVRPW.mjs.map +1 -0
- package/dist/components/copilot-provider/copilotkit-props.d.ts +4 -0
- package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.d.ts +2 -1
- package/dist/components/copilot-provider/copilotkit.js +50 -5
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +2 -2
- package/dist/components/copilot-provider/index.d.ts +1 -0
- package/dist/components/copilot-provider/index.js +50 -5
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +2 -2
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +50 -5
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +2 -2
- package/dist/context/copilot-context.d.ts +21 -2
- package/dist/context/copilot-context.js +18 -3
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +18 -3
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +1 -1
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.js +274 -31
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +21 -12
- package/dist/hooks/use-chat.d.ts +26 -4
- package/dist/hooks/use-chat.js +59 -10
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +1 -1
- package/dist/hooks/use-coagent-action.d.ts +5 -0
- package/dist/hooks/use-coagent-action.js +156 -0
- package/dist/hooks/use-coagent-action.js.map +1 -0
- package/dist/hooks/use-coagent-action.mjs +9 -0
- package/dist/hooks/use-coagent-action.mjs.map +1 -0
- package/dist/hooks/use-coagent.d.ts +27 -0
- package/dist/hooks/use-coagent.js +219 -0
- package/dist/hooks/use-coagent.js.map +1 -0
- package/dist/hooks/use-coagent.mjs +10 -0
- package/dist/hooks/use-coagent.mjs.map +1 -0
- package/dist/hooks/use-copilot-action.js +27 -5
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +2 -2
- package/dist/hooks/use-copilot-chat.js +144 -20
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +4 -4
- package/dist/hooks/use-copilot-readable.js +21 -3
- package/dist/hooks/use-copilot-readable.js.map +1 -1
- package/dist/hooks/use-copilot-readable.mjs +2 -2
- package/dist/hooks/use-make-copilot-document-readable.js +21 -3
- package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
- package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
- package/dist/index.d.ts +5 -0
- package/dist/index.js +320 -44
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -16
- package/dist/lib/copilot-task.d.ts +2 -0
- package/dist/lib/copilot-task.js +3 -2
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +3 -3
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +3 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +3 -3
- package/dist/types/coagent-action.d.ts +17 -0
- package/dist/types/coagent-action.js +19 -0
- package/dist/types/coagent-action.js.map +1 -0
- package/dist/types/coagent-action.mjs +1 -0
- package/dist/types/coagent-action.mjs.map +1 -0
- package/dist/types/coagent-state.d.ts +11 -0
- package/dist/types/coagent-state.js +19 -0
- package/dist/types/coagent-state.js.map +1 -0
- package/dist/types/coagent-state.mjs +1 -0
- package/dist/types/coagent-state.mjs.map +1 -0
- package/dist/types/frontend-action.d.ts +1 -0
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/utils/extract.d.ts +2 -0
- package/dist/utils/extract.js +3 -2
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +3 -3
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +3 -3
- package/package.json +5 -5
- package/src/components/copilot-provider/copilotkit-props.tsx +5 -0
- package/src/components/copilot-provider/copilotkit.tsx +45 -3
- package/src/context/copilot-context.tsx +44 -3
- package/src/hooks/index.ts +2 -0
- package/src/hooks/use-chat.ts +107 -11
- package/src/hooks/use-coagent-action.ts +44 -0
- package/src/hooks/use-coagent.ts +133 -0
- package/src/hooks/use-copilot-action.ts +9 -5
- package/src/hooks/use-copilot-chat.ts +80 -8
- package/src/hooks/use-copilot-readable.ts +3 -3
- package/src/hooks/use-make-copilot-document-readable.ts +3 -3
- package/src/lib/copilot-task.ts +3 -1
- package/src/types/coagent-action.ts +17 -0
- package/src/types/coagent-state.ts +9 -0
- package/src/types/frontend-action.ts +1 -0
- package/src/utils/extract.ts +8 -2
- package/dist/chunk-3NHEWJ4V.mjs.map +0 -1
- package/dist/chunk-5JB4B2SV.mjs +0 -1
- package/dist/chunk-AGGKI26A.mjs.map +0 -1
- package/dist/chunk-GE7LAL6V.mjs.map +0 -1
- package/dist/chunk-KONDJRB4.mjs.map +0 -1
- package/dist/chunk-T6L4EGTD.mjs.map +0 -1
- package/dist/chunk-TVR5CJ6E.mjs.map +0 -1
- package/dist/chunk-UQRDVZ2N.mjs.map +0 -1
- package/dist/chunk-VFDR4MIF.mjs.map +0 -1
- package/dist/chunk-YYZNR3CS.mjs.map +0 -1
- /package/dist/{chunk-5JB4B2SV.mjs.map → chunk-BWYAGPEF.mjs.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -86,6 +86,8 @@ __export(src_exports, {
|
|
|
86
86
|
CopilotTask: () => CopilotTask,
|
|
87
87
|
defaultCopilotContextCategories: () => defaultCopilotContextCategories,
|
|
88
88
|
extract: () => extract,
|
|
89
|
+
useCoAgent: () => useCoAgent,
|
|
90
|
+
useCoAgentAction: () => useCoAgentAction,
|
|
89
91
|
useCopilotAction: () => useCopilotAction,
|
|
90
92
|
useCopilotChat: () => useCopilotChat,
|
|
91
93
|
useCopilotContext: () => useCopilotContext,
|
|
@@ -105,7 +107,12 @@ var emptyCopilotContext = {
|
|
|
105
107
|
},
|
|
106
108
|
removeAction: () => {
|
|
107
109
|
},
|
|
108
|
-
|
|
110
|
+
coagentActions: {},
|
|
111
|
+
setCoagentAction: () => {
|
|
112
|
+
},
|
|
113
|
+
removeCoagentAction: () => {
|
|
114
|
+
},
|
|
115
|
+
chatComponentsCache: { current: { actions: {}, coagentActions: {} } },
|
|
109
116
|
getContextString: (documents, categories) => returnAndThrowInDebug(""),
|
|
110
117
|
addContext: () => "",
|
|
111
118
|
removeContext: () => {
|
|
@@ -138,11 +145,21 @@ var emptyCopilotContext = {
|
|
|
138
145
|
},
|
|
139
146
|
removeChatSuggestionConfiguration: () => {
|
|
140
147
|
},
|
|
141
|
-
showDevConsole: "auto"
|
|
148
|
+
showDevConsole: "auto",
|
|
149
|
+
coagentStates: {},
|
|
150
|
+
setCoagentStates: () => {
|
|
151
|
+
},
|
|
152
|
+
agentSession: null,
|
|
153
|
+
setAgentSession: () => {
|
|
154
|
+
}
|
|
142
155
|
};
|
|
143
156
|
var CopilotContext = import_react.default.createContext(emptyCopilotContext);
|
|
144
157
|
function useCopilotContext() {
|
|
145
|
-
|
|
158
|
+
const context = import_react.default.useContext(CopilotContext);
|
|
159
|
+
if (context === emptyCopilotContext) {
|
|
160
|
+
throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
|
|
161
|
+
}
|
|
162
|
+
return context;
|
|
146
163
|
}
|
|
147
164
|
function returnAndThrowInDebug(value) {
|
|
148
165
|
throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
|
|
@@ -362,7 +379,11 @@ function CopilotKit(_a) {
|
|
|
362
379
|
}
|
|
363
380
|
const chatApiEndpoint = props.runtimeUrl || import_shared3.COPILOT_CLOUD_CHAT_URL;
|
|
364
381
|
const [actions, setActions] = (0, import_react4.useState)({});
|
|
365
|
-
const
|
|
382
|
+
const [coagentActions, setCoagentActions] = (0, import_react4.useState)({});
|
|
383
|
+
const chatComponentsCache = (0, import_react4.useRef)({
|
|
384
|
+
actions: {},
|
|
385
|
+
coagentActions: {}
|
|
386
|
+
});
|
|
366
387
|
const { addElement, removeElement, printTree } = use_tree_default();
|
|
367
388
|
const [messages, setMessages] = (0, import_react4.useState)([]);
|
|
368
389
|
const [isLoading, setIsLoading] = (0, import_react4.useState)(false);
|
|
@@ -386,6 +407,20 @@ function CopilotKit(_a) {
|
|
|
386
407
|
return newPoints;
|
|
387
408
|
});
|
|
388
409
|
}, []);
|
|
410
|
+
const setCoagentAction = (0, import_react4.useCallback)((id, action) => {
|
|
411
|
+
setCoagentActions((prevPoints) => {
|
|
412
|
+
return __spreadProps(__spreadValues({}, prevPoints), {
|
|
413
|
+
[id]: action
|
|
414
|
+
});
|
|
415
|
+
});
|
|
416
|
+
}, []);
|
|
417
|
+
const removeCoagentAction = (0, import_react4.useCallback)((id) => {
|
|
418
|
+
setCoagentActions((prevPoints) => {
|
|
419
|
+
const newPoints = __spreadValues({}, prevPoints);
|
|
420
|
+
delete newPoints[id];
|
|
421
|
+
return newPoints;
|
|
422
|
+
});
|
|
423
|
+
}, []);
|
|
389
424
|
const getContextString = (0, import_react4.useCallback)(
|
|
390
425
|
(documents, categories) => {
|
|
391
426
|
const documentsString = documents.map((document) => {
|
|
@@ -476,6 +511,14 @@ ${nonDocumentStrings}`;
|
|
|
476
511
|
return rest;
|
|
477
512
|
});
|
|
478
513
|
};
|
|
514
|
+
const [coagentStates, setCoagentStates] = (0, import_react4.useState)({});
|
|
515
|
+
let initialAgentSession = null;
|
|
516
|
+
if (props.agent) {
|
|
517
|
+
initialAgentSession = {
|
|
518
|
+
agentName: props.agent
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
const [agentSession, setAgentSession] = (0, import_react4.useState)(initialAgentSession);
|
|
479
522
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
480
523
|
CopilotContext.Provider,
|
|
481
524
|
{
|
|
@@ -485,6 +528,9 @@ ${nonDocumentStrings}`;
|
|
|
485
528
|
getFunctionCallHandler,
|
|
486
529
|
setAction,
|
|
487
530
|
removeAction,
|
|
531
|
+
coagentActions,
|
|
532
|
+
setCoagentAction,
|
|
533
|
+
removeCoagentAction,
|
|
488
534
|
getContextString,
|
|
489
535
|
addContext,
|
|
490
536
|
removeContext,
|
|
@@ -501,7 +547,11 @@ ${nonDocumentStrings}`;
|
|
|
501
547
|
removeChatSuggestionConfiguration,
|
|
502
548
|
chatInstructions,
|
|
503
549
|
setChatInstructions,
|
|
504
|
-
showDevConsole: props.showDevConsole === void 0 ? "auto" : props.showDevConsole
|
|
550
|
+
showDevConsole: props.showDevConsole === void 0 ? "auto" : props.showDevConsole,
|
|
551
|
+
coagentStates,
|
|
552
|
+
setCoagentStates,
|
|
553
|
+
agentSession,
|
|
554
|
+
setAgentSession
|
|
505
555
|
},
|
|
506
556
|
children
|
|
507
557
|
}
|
|
@@ -519,8 +569,9 @@ function entryPointsToFunctionCallHandler(actions) {
|
|
|
519
569
|
if (action) {
|
|
520
570
|
yield new Promise((resolve, reject) => {
|
|
521
571
|
(0, import_react_dom.flushSync)(() => __async(this, null, function* () {
|
|
572
|
+
var _a;
|
|
522
573
|
try {
|
|
523
|
-
result = yield action.handler(args);
|
|
574
|
+
result = yield (_a = action.handler) == null ? void 0 : _a.call(action, args);
|
|
524
575
|
resolve();
|
|
525
576
|
} catch (error) {
|
|
526
577
|
reject(error);
|
|
@@ -551,7 +602,12 @@ function useChat(options) {
|
|
|
551
602
|
initialMessages,
|
|
552
603
|
isLoading,
|
|
553
604
|
actions,
|
|
554
|
-
onFunctionCall
|
|
605
|
+
onFunctionCall,
|
|
606
|
+
onCoagentAction,
|
|
607
|
+
setCoagentStates,
|
|
608
|
+
coagentStates,
|
|
609
|
+
agentSession,
|
|
610
|
+
setAgentSession
|
|
555
611
|
} = options;
|
|
556
612
|
const abortControllerRef = (0, import_react5.useRef)();
|
|
557
613
|
const threadIdRef = (0, import_react5.useRef)(null);
|
|
@@ -580,17 +636,18 @@ function useChat(options) {
|
|
|
580
636
|
const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
|
|
581
637
|
const stream = import_runtime_client_gql.CopilotRuntimeClient.asStream(
|
|
582
638
|
runtimeClient.generateCopilotResponse({
|
|
583
|
-
data: __spreadProps(__spreadValues({
|
|
639
|
+
data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
|
|
584
640
|
frontend: {
|
|
585
641
|
actions: actions.map((action) => ({
|
|
586
642
|
name: action.name,
|
|
587
643
|
description: action.description || "",
|
|
588
644
|
jsonSchema: JSON.stringify((0, import_shared4.actionParametersToJsonSchema)(action.parameters || []))
|
|
589
|
-
}))
|
|
645
|
+
})),
|
|
646
|
+
url: window.location.href
|
|
590
647
|
},
|
|
591
648
|
threadId: threadIdRef.current,
|
|
592
649
|
runId: runIdRef.current,
|
|
593
|
-
messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)(messagesWithContext)
|
|
650
|
+
messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)((0, import_runtime_client_gql.filterAgentStateMessages)(messagesWithContext))
|
|
594
651
|
}, copilotConfig.cloud ? {
|
|
595
652
|
cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
|
|
596
653
|
guardrails: {
|
|
@@ -604,6 +661,13 @@ function useChat(options) {
|
|
|
604
661
|
metadata: {
|
|
605
662
|
requestType: import_runtime_client_gql.CopilotRequestType.Chat
|
|
606
663
|
}
|
|
664
|
+
}), agentSession ? {
|
|
665
|
+
agentSession
|
|
666
|
+
} : {}), {
|
|
667
|
+
agentStates: Object.values(coagentStates).map((state) => ({
|
|
668
|
+
agentName: state.name,
|
|
669
|
+
state: JSON.stringify(state.state)
|
|
670
|
+
}))
|
|
607
671
|
}),
|
|
608
672
|
properties: copilotConfig.properties,
|
|
609
673
|
signal: (_d = abortControllerRef.current) == null ? void 0 : _d.signal
|
|
@@ -611,7 +675,8 @@ function useChat(options) {
|
|
|
611
675
|
);
|
|
612
676
|
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
613
677
|
const reader = stream.getReader();
|
|
614
|
-
let
|
|
678
|
+
let actionResults = {};
|
|
679
|
+
let executedCoagentActions = [];
|
|
615
680
|
try {
|
|
616
681
|
while (true) {
|
|
617
682
|
const { done, value } = yield reader.read();
|
|
@@ -623,7 +688,9 @@ function useChat(options) {
|
|
|
623
688
|
}
|
|
624
689
|
threadIdRef.current = value.generateCopilotResponse.threadId || null;
|
|
625
690
|
runIdRef.current = value.generateCopilotResponse.runId || null;
|
|
626
|
-
const messages2 = (0, import_runtime_client_gql.convertGqlOutputToMessages)(
|
|
691
|
+
const messages2 = (0, import_runtime_client_gql.convertGqlOutputToMessages)(
|
|
692
|
+
(0, import_runtime_client_gql.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
|
|
693
|
+
);
|
|
627
694
|
if (messages2.length === 0) {
|
|
628
695
|
continue;
|
|
629
696
|
}
|
|
@@ -638,8 +705,30 @@ function useChat(options) {
|
|
|
638
705
|
} else {
|
|
639
706
|
for (const message of messages2) {
|
|
640
707
|
newMessages.push(message);
|
|
708
|
+
if (message instanceof import_runtime_client_gql.AgentStateMessage) {
|
|
709
|
+
if (message.running) {
|
|
710
|
+
setCoagentStates((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
711
|
+
[message.agentName]: {
|
|
712
|
+
name: message.agentName,
|
|
713
|
+
state: message.state,
|
|
714
|
+
running: message.running,
|
|
715
|
+
active: message.active,
|
|
716
|
+
threadId: message.threadId,
|
|
717
|
+
nodeName: message.nodeName,
|
|
718
|
+
runId: message.runId
|
|
719
|
+
}
|
|
720
|
+
}));
|
|
721
|
+
setAgentSession({
|
|
722
|
+
threadId: message.threadId,
|
|
723
|
+
agentName: message.agentName,
|
|
724
|
+
nodeName: message.nodeName
|
|
725
|
+
});
|
|
726
|
+
} else {
|
|
727
|
+
setAgentSession(null);
|
|
728
|
+
}
|
|
729
|
+
}
|
|
641
730
|
if (message instanceof import_runtime_client_gql.ActionExecutionMessage && message.status.code !== import_runtime_client_gql.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
|
|
642
|
-
if (!(message.id in
|
|
731
|
+
if (!(message.id in actionResults)) {
|
|
643
732
|
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
644
733
|
break;
|
|
645
734
|
}
|
|
@@ -648,16 +737,27 @@ function useChat(options) {
|
|
|
648
737
|
name: message.name,
|
|
649
738
|
args: message.arguments
|
|
650
739
|
});
|
|
651
|
-
|
|
740
|
+
actionResults[message.id] = result;
|
|
652
741
|
}
|
|
653
742
|
newMessages.push(
|
|
654
743
|
new import_runtime_client_gql.ResultMessage({
|
|
655
|
-
result: import_runtime_client_gql.ResultMessage.encodeResult(
|
|
744
|
+
result: import_runtime_client_gql.ResultMessage.encodeResult(actionResults[message.id]),
|
|
656
745
|
actionExecutionId: message.id,
|
|
657
746
|
actionName: message.name
|
|
658
747
|
})
|
|
659
748
|
);
|
|
660
749
|
}
|
|
750
|
+
if (message instanceof import_runtime_client_gql.AgentStateMessage && !message.active && !executedCoagentActions.includes(message.id) && onCoagentAction) {
|
|
751
|
+
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
752
|
+
break;
|
|
753
|
+
}
|
|
754
|
+
yield onCoagentAction({
|
|
755
|
+
name: message.agentName,
|
|
756
|
+
nodeName: message.nodeName,
|
|
757
|
+
state: message.state
|
|
758
|
+
});
|
|
759
|
+
executedCoagentActions.push(message.id);
|
|
760
|
+
}
|
|
661
761
|
}
|
|
662
762
|
}
|
|
663
763
|
if (newMessages.length > 0) {
|
|
@@ -666,7 +766,7 @@ function useChat(options) {
|
|
|
666
766
|
}
|
|
667
767
|
if (
|
|
668
768
|
// if we have client side results
|
|
669
|
-
Object.values(
|
|
769
|
+
Object.values(actionResults).length || // or the last message we received is a result
|
|
670
770
|
newMessages.length && newMessages[newMessages.length - 1] instanceof import_runtime_client_gql.ResultMessage
|
|
671
771
|
) {
|
|
672
772
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
@@ -728,8 +828,13 @@ function useCopilotChat(_a = {}) {
|
|
|
728
828
|
isLoading,
|
|
729
829
|
setIsLoading,
|
|
730
830
|
chatInstructions,
|
|
731
|
-
actions
|
|
732
|
-
|
|
831
|
+
actions,
|
|
832
|
+
coagentStates,
|
|
833
|
+
setCoagentStates,
|
|
834
|
+
coagentActions,
|
|
835
|
+
agentSession,
|
|
836
|
+
setAgentSession
|
|
837
|
+
} = useCopilotContext();
|
|
733
838
|
const latestGetContextString = useUpdatedRef(getContextString);
|
|
734
839
|
const deleteMessage = (0, import_react6.useCallback)(
|
|
735
840
|
(messageId) => {
|
|
@@ -745,24 +850,76 @@ function useCopilotChat(_a = {}) {
|
|
|
745
850
|
role: import_runtime_client_gql2.Role.System
|
|
746
851
|
});
|
|
747
852
|
}, [getContextString, makeSystemMessage2, chatInstructions]);
|
|
853
|
+
const onCoagentAction = (0, import_react6.useCallback)(
|
|
854
|
+
(args) => __async(this, null, function* () {
|
|
855
|
+
var _a2;
|
|
856
|
+
const { name, nodeName, state } = args;
|
|
857
|
+
let action = Object.values(coagentActions).find(
|
|
858
|
+
(action2) => action2.name === name && action2.nodeName === nodeName
|
|
859
|
+
);
|
|
860
|
+
if (!action) {
|
|
861
|
+
action = Object.values(coagentActions).find(
|
|
862
|
+
(action2) => action2.name === name && !action2.nodeName
|
|
863
|
+
);
|
|
864
|
+
}
|
|
865
|
+
if (action) {
|
|
866
|
+
yield (_a2 = action.handler) == null ? void 0 : _a2.call(action, { state, nodeName });
|
|
867
|
+
}
|
|
868
|
+
}),
|
|
869
|
+
[coagentActions]
|
|
870
|
+
);
|
|
748
871
|
const { append, reload, stop } = useChat(__spreadProps(__spreadValues({}, options), {
|
|
749
872
|
actions: Object.values(actions),
|
|
750
873
|
copilotConfig: copilotApiConfig,
|
|
751
874
|
initialMessages: options.initialMessages || [],
|
|
752
875
|
onFunctionCall: getFunctionCallHandler(),
|
|
876
|
+
onCoagentAction,
|
|
753
877
|
messages,
|
|
754
878
|
setMessages,
|
|
755
879
|
makeSystemMessageCallback,
|
|
756
880
|
isLoading,
|
|
757
|
-
setIsLoading
|
|
881
|
+
setIsLoading,
|
|
882
|
+
coagentStates,
|
|
883
|
+
setCoagentStates,
|
|
884
|
+
agentSession,
|
|
885
|
+
setAgentSession
|
|
758
886
|
}));
|
|
887
|
+
const latestAppend = useUpdatedRef(append);
|
|
888
|
+
const latestAppendFunc = (0, import_react6.useCallback)(
|
|
889
|
+
(message) => {
|
|
890
|
+
return latestAppend.current(message);
|
|
891
|
+
},
|
|
892
|
+
[latestAppend]
|
|
893
|
+
);
|
|
894
|
+
const latestReload = useUpdatedRef(reload);
|
|
895
|
+
const latestReloadFunc = (0, import_react6.useCallback)(() => {
|
|
896
|
+
return latestReload.current();
|
|
897
|
+
}, [latestReload]);
|
|
898
|
+
const latestStop = useUpdatedRef(stop);
|
|
899
|
+
const latestStopFunc = (0, import_react6.useCallback)(() => {
|
|
900
|
+
return latestStop.current();
|
|
901
|
+
}, [latestStop]);
|
|
902
|
+
const latestDelete = useUpdatedRef(deleteMessage);
|
|
903
|
+
const latestDeleteFunc = (0, import_react6.useCallback)(
|
|
904
|
+
(messageId) => {
|
|
905
|
+
return latestDelete.current(messageId);
|
|
906
|
+
},
|
|
907
|
+
[latestDelete]
|
|
908
|
+
);
|
|
909
|
+
const latestSetMessages = useUpdatedRef(setMessages);
|
|
910
|
+
const latestSetMessagesFunc = (0, import_react6.useCallback)(
|
|
911
|
+
(messages2) => {
|
|
912
|
+
return latestSetMessages.current(messages2);
|
|
913
|
+
},
|
|
914
|
+
[latestSetMessages]
|
|
915
|
+
);
|
|
759
916
|
return {
|
|
760
917
|
visibleMessages: messages,
|
|
761
|
-
appendMessage:
|
|
762
|
-
setMessages,
|
|
763
|
-
reloadMessages:
|
|
764
|
-
stopGeneration:
|
|
765
|
-
deleteMessage,
|
|
918
|
+
appendMessage: latestAppendFunc,
|
|
919
|
+
setMessages: latestSetMessagesFunc,
|
|
920
|
+
reloadMessages: latestReloadFunc,
|
|
921
|
+
stopGeneration: latestStopFunc,
|
|
922
|
+
deleteMessage: latestDeleteFunc,
|
|
766
923
|
isLoading
|
|
767
924
|
};
|
|
768
925
|
}
|
|
@@ -801,22 +958,25 @@ ${additionalInstructions}` : "");
|
|
|
801
958
|
var import_react7 = require("react");
|
|
802
959
|
var import_shared5 = require("@copilotkit/shared");
|
|
803
960
|
function useCopilotAction(action, dependencies) {
|
|
804
|
-
const { setAction, removeAction, actions, chatComponentsCache } = (
|
|
961
|
+
const { setAction, removeAction, actions, chatComponentsCache } = useCopilotContext();
|
|
805
962
|
const idRef = (0, import_react7.useRef)((0, import_shared5.randomId)());
|
|
806
963
|
if (dependencies === void 0) {
|
|
807
964
|
if (actions[idRef.current]) {
|
|
808
965
|
actions[idRef.current].handler = action.handler;
|
|
809
966
|
if (typeof action.render === "function") {
|
|
810
967
|
if (chatComponentsCache.current !== null) {
|
|
811
|
-
chatComponentsCache.current[action.name] = action.render;
|
|
968
|
+
chatComponentsCache.current.actions[action.name] = action.render;
|
|
812
969
|
}
|
|
813
970
|
}
|
|
814
971
|
}
|
|
815
972
|
}
|
|
816
973
|
(0, import_react7.useEffect)(() => {
|
|
974
|
+
if (action.disabled) {
|
|
975
|
+
return;
|
|
976
|
+
}
|
|
817
977
|
setAction(idRef.current, action);
|
|
818
978
|
if (chatComponentsCache.current !== null && action.render !== void 0) {
|
|
819
|
-
chatComponentsCache.current[action.name] = action.render;
|
|
979
|
+
chatComponentsCache.current.actions[action.name] = action.render;
|
|
820
980
|
}
|
|
821
981
|
return () => {
|
|
822
982
|
removeAction(idRef.current);
|
|
@@ -826,6 +986,7 @@ function useCopilotAction(action, dependencies) {
|
|
|
826
986
|
removeAction,
|
|
827
987
|
action.description,
|
|
828
988
|
action.name,
|
|
989
|
+
action.disabled,
|
|
829
990
|
// This should be faster than deep equality checking
|
|
830
991
|
// In addition, all major JS engines guarantee the order of object keys
|
|
831
992
|
JSON.stringify(action.parameters),
|
|
@@ -836,12 +997,48 @@ function useCopilotAction(action, dependencies) {
|
|
|
836
997
|
]);
|
|
837
998
|
}
|
|
838
999
|
|
|
839
|
-
// src/hooks/use-
|
|
1000
|
+
// src/hooks/use-coagent-action.ts
|
|
840
1001
|
var import_react8 = require("react");
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
const
|
|
1002
|
+
var import_shared6 = require("@copilotkit/shared");
|
|
1003
|
+
function useCoAgentAction(action, dependencies) {
|
|
1004
|
+
const { setCoagentAction, removeCoagentAction, coagentActions, chatComponentsCache } = (0, import_react8.useContext)(CopilotContext);
|
|
1005
|
+
const idRef = (0, import_react8.useRef)((0, import_shared6.randomId)());
|
|
1006
|
+
const key = `${action.name}-${action.nodeName || "global"}`;
|
|
1007
|
+
if (dependencies === void 0) {
|
|
1008
|
+
if (coagentActions[idRef.current]) {
|
|
1009
|
+
coagentActions[idRef.current].handler = action.handler;
|
|
1010
|
+
if (typeof action.render === "function") {
|
|
1011
|
+
if (chatComponentsCache.current !== null) {
|
|
1012
|
+
chatComponentsCache.current.coagentActions[key] = action.render;
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
844
1017
|
(0, import_react8.useEffect)(() => {
|
|
1018
|
+
setCoagentAction(idRef.current, action);
|
|
1019
|
+
if (chatComponentsCache.current !== null && action.render !== void 0) {
|
|
1020
|
+
chatComponentsCache.current.coagentActions[key] = action.render;
|
|
1021
|
+
}
|
|
1022
|
+
return () => {
|
|
1023
|
+
removeCoagentAction(idRef.current);
|
|
1024
|
+
};
|
|
1025
|
+
}, [
|
|
1026
|
+
setCoagentAction,
|
|
1027
|
+
removeCoagentAction,
|
|
1028
|
+
action.name,
|
|
1029
|
+
// include render only if it's a string
|
|
1030
|
+
typeof action.render === "string" ? action.render : void 0,
|
|
1031
|
+
// dependencies set by the developer
|
|
1032
|
+
...dependencies || []
|
|
1033
|
+
]);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
// src/hooks/use-make-copilot-document-readable.ts
|
|
1037
|
+
var import_react9 = require("react");
|
|
1038
|
+
function useMakeCopilotDocumentReadable(document, categories, dependencies = []) {
|
|
1039
|
+
const { addDocumentContext, removeDocumentContext } = useCopilotContext();
|
|
1040
|
+
const idRef = (0, import_react9.useRef)();
|
|
1041
|
+
(0, import_react9.useEffect)(() => {
|
|
845
1042
|
const id = addDocumentContext(document, categories);
|
|
846
1043
|
idRef.current = id;
|
|
847
1044
|
return () => {
|
|
@@ -852,16 +1049,16 @@ function useMakeCopilotDocumentReadable(document, categories, dependencies = [])
|
|
|
852
1049
|
}
|
|
853
1050
|
|
|
854
1051
|
// src/hooks/use-copilot-readable.ts
|
|
855
|
-
var
|
|
1052
|
+
var import_react10 = require("react");
|
|
856
1053
|
function convertToJSON(description, value) {
|
|
857
1054
|
return `${description}: ${typeof value === "string" ? value : JSON.stringify(value)}`;
|
|
858
1055
|
}
|
|
859
1056
|
function useCopilotReadable({ description, value, parentId, categories, convert }, dependencies) {
|
|
860
|
-
const { addContext, removeContext } = (
|
|
861
|
-
const idRef = (0,
|
|
1057
|
+
const { addContext, removeContext } = useCopilotContext();
|
|
1058
|
+
const idRef = (0, import_react10.useRef)();
|
|
862
1059
|
convert = convert || convertToJSON;
|
|
863
1060
|
const information = convert(description, value);
|
|
864
|
-
(0,
|
|
1061
|
+
(0, import_react10.useEffect)(() => {
|
|
865
1062
|
const id = addContext(information, parentId, categories);
|
|
866
1063
|
idRef.current = id;
|
|
867
1064
|
return () => {
|
|
@@ -871,9 +1068,84 @@ function useCopilotReadable({ description, value, parentId, categories, convert
|
|
|
871
1068
|
return idRef.current;
|
|
872
1069
|
}
|
|
873
1070
|
|
|
1071
|
+
// src/hooks/use-coagent.ts
|
|
1072
|
+
var import_react11 = require("react");
|
|
1073
|
+
function useCoAgent(options) {
|
|
1074
|
+
const isExternalStateManagement = (options2) => {
|
|
1075
|
+
return "state" in options2 && "setState" in options2;
|
|
1076
|
+
};
|
|
1077
|
+
const { name } = options;
|
|
1078
|
+
const isInternalStateManagementWithInitial = (options2) => {
|
|
1079
|
+
return "initialState" in options2;
|
|
1080
|
+
};
|
|
1081
|
+
const { coagentStates, setCoagentStates } = useCopilotContext();
|
|
1082
|
+
const getCoagentState = (coagentStates2, name2) => {
|
|
1083
|
+
if (coagentStates2[name2]) {
|
|
1084
|
+
return coagentStates2[name2];
|
|
1085
|
+
} else {
|
|
1086
|
+
return {
|
|
1087
|
+
name: name2,
|
|
1088
|
+
state: isInternalStateManagementWithInitial(options) ? options.initialState : {},
|
|
1089
|
+
running: false,
|
|
1090
|
+
active: false,
|
|
1091
|
+
threadId: void 0,
|
|
1092
|
+
nodeName: void 0,
|
|
1093
|
+
runId: void 0
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
1096
|
+
};
|
|
1097
|
+
const setState = (newState) => {
|
|
1098
|
+
setCoagentStates((prevAgentStates) => {
|
|
1099
|
+
let coagentState2 = getCoagentState(prevAgentStates, name);
|
|
1100
|
+
const updatedState = typeof newState === "function" ? newState(coagentState2.state) : newState;
|
|
1101
|
+
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
1102
|
+
[name]: __spreadProps(__spreadValues({}, coagentState2), {
|
|
1103
|
+
state: updatedState
|
|
1104
|
+
})
|
|
1105
|
+
});
|
|
1106
|
+
});
|
|
1107
|
+
};
|
|
1108
|
+
const coagentState = getCoagentState(coagentStates, name);
|
|
1109
|
+
const state = isExternalStateManagement(options) ? options.state : coagentState.state;
|
|
1110
|
+
(0, import_react11.useEffect)(() => {
|
|
1111
|
+
if (isExternalStateManagement(options)) {
|
|
1112
|
+
setState(options.state);
|
|
1113
|
+
} else if (coagentStates[name] === void 0) {
|
|
1114
|
+
setState(options.initialState === void 0 ? {} : options.initialState);
|
|
1115
|
+
}
|
|
1116
|
+
}, [isExternalStateManagement(options) ? JSON.stringify(options.state) : void 0]);
|
|
1117
|
+
return {
|
|
1118
|
+
name,
|
|
1119
|
+
nodeName: coagentState.nodeName,
|
|
1120
|
+
state,
|
|
1121
|
+
setState,
|
|
1122
|
+
running: coagentState.running,
|
|
1123
|
+
start: () => {
|
|
1124
|
+
startAgent(name);
|
|
1125
|
+
},
|
|
1126
|
+
stop: () => {
|
|
1127
|
+
stopAgent(name);
|
|
1128
|
+
}
|
|
1129
|
+
};
|
|
1130
|
+
}
|
|
1131
|
+
function startAgent(name) {
|
|
1132
|
+
const { setAgentSession } = useCopilotContext();
|
|
1133
|
+
setAgentSession({
|
|
1134
|
+
agentName: name
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
1137
|
+
function stopAgent(name) {
|
|
1138
|
+
const { agentSession, setAgentSession } = useCopilotContext();
|
|
1139
|
+
if (agentSession && agentSession.agentName === name) {
|
|
1140
|
+
setAgentSession(null);
|
|
1141
|
+
} else {
|
|
1142
|
+
console.warn(`No agent session found for ${name}`);
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
|
|
874
1146
|
// src/lib/copilot-task.ts
|
|
875
1147
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
876
|
-
var
|
|
1148
|
+
var import_shared7 = require("@copilotkit/shared");
|
|
877
1149
|
var CopilotTask = class {
|
|
878
1150
|
constructor(config) {
|
|
879
1151
|
this.instructions = config.instructions;
|
|
@@ -917,10 +1189,11 @@ var CopilotTask = class {
|
|
|
917
1189
|
actions: Object.values(actions).map((action) => ({
|
|
918
1190
|
name: action.name,
|
|
919
1191
|
description: action.description || "",
|
|
920
|
-
jsonSchema: JSON.stringify((0,
|
|
921
|
-
}))
|
|
1192
|
+
jsonSchema: JSON.stringify((0, import_shared7.actionParametersToJsonSchema)(action.parameters || []))
|
|
1193
|
+
})),
|
|
1194
|
+
url: window.location.href
|
|
922
1195
|
},
|
|
923
|
-
messages: (0, import_runtime_client_gql3.convertMessagesToGqlInput)(messages),
|
|
1196
|
+
messages: (0, import_runtime_client_gql3.convertMessagesToGqlInput)((0, import_runtime_client_gql3.filterAgentStateMessages)(messages)),
|
|
924
1197
|
metadata: {
|
|
925
1198
|
requestType: import_runtime_client_gql3.CopilotRequestType.Task
|
|
926
1199
|
},
|
|
@@ -971,7 +1244,7 @@ ${instructions}
|
|
|
971
1244
|
}
|
|
972
1245
|
|
|
973
1246
|
// src/utils/extract.ts
|
|
974
|
-
var
|
|
1247
|
+
var import_shared8 = require("@copilotkit/shared");
|
|
975
1248
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
976
1249
|
var import_runtime_client_gql5 = require("@copilotkit/runtime-client-gql");
|
|
977
1250
|
var import_runtime_client_gql6 = require("@copilotkit/runtime-client-gql");
|
|
@@ -1007,7 +1280,7 @@ function extract(_0) {
|
|
|
1007
1280
|
content: makeSystemMessage(contextString, instructions),
|
|
1008
1281
|
role: import_runtime_client_gql4.Role.System
|
|
1009
1282
|
});
|
|
1010
|
-
const headers = __spreadValues(__spreadValues({}, context.copilotApiConfig.headers || {}), context.copilotApiConfig.publicApiKey ? { [
|
|
1283
|
+
const headers = __spreadValues(__spreadValues({}, context.copilotApiConfig.headers || {}), context.copilotApiConfig.publicApiKey ? { [import_shared8.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: context.copilotApiConfig.publicApiKey } : {});
|
|
1011
1284
|
const runtimeClient = new import_runtime_client_gql5.CopilotRuntimeClient({
|
|
1012
1285
|
url: context.copilotApiConfig.chatApiEndpoint,
|
|
1013
1286
|
publicApiKey: context.copilotApiConfig.publicApiKey,
|
|
@@ -1022,12 +1295,13 @@ function extract(_0) {
|
|
|
1022
1295
|
{
|
|
1023
1296
|
name: action.name,
|
|
1024
1297
|
description: action.description || "",
|
|
1025
|
-
jsonSchema: JSON.stringify((0,
|
|
1298
|
+
jsonSchema: JSON.stringify((0, import_shared8.actionParametersToJsonSchema)(action.parameters || []))
|
|
1026
1299
|
}
|
|
1027
|
-
]
|
|
1300
|
+
],
|
|
1301
|
+
url: window.location.href
|
|
1028
1302
|
},
|
|
1029
1303
|
messages: (0, import_runtime_client_gql6.convertMessagesToGqlInput)(
|
|
1030
|
-
includeMessages ? [systemMessage, ...messages] : [systemMessage]
|
|
1304
|
+
includeMessages ? [systemMessage, ...(0, import_runtime_client_gql6.filterAgentStateMessages)(messages)] : [systemMessage]
|
|
1031
1305
|
),
|
|
1032
1306
|
metadata: {
|
|
1033
1307
|
requestType
|
|
@@ -1108,6 +1382,8 @@ Any additional messages provided are for providing context only and should not b
|
|
|
1108
1382
|
CopilotTask,
|
|
1109
1383
|
defaultCopilotContextCategories,
|
|
1110
1384
|
extract,
|
|
1385
|
+
useCoAgent,
|
|
1386
|
+
useCoAgentAction,
|
|
1111
1387
|
useCopilotAction,
|
|
1112
1388
|
useCopilotChat,
|
|
1113
1389
|
useCopilotContext,
|