@copilotkit/react-core 1.4.8 → 1.5.0-coagents-v0-3.0
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 +14 -0
- package/dist/{chunk-X6ZF5WAX.mjs → chunk-35EN6BG4.mjs} +2 -2
- package/dist/{chunk-FSC4A3JN.mjs → chunk-42N5VKIX.mjs} +23 -5
- package/dist/{chunk-FSC4A3JN.mjs.map → chunk-42N5VKIX.mjs.map} +1 -1
- package/dist/{chunk-AG7FH7OD.mjs → chunk-5FYKUKG3.mjs} +2 -2
- package/dist/{chunk-YUY5ZAST.mjs → chunk-ALR5W5JK.mjs} +17 -8
- package/dist/chunk-ALR5W5JK.mjs.map +1 -0
- package/dist/{chunk-6EMLM6WX.mjs → chunk-BT6WK2JZ.mjs} +43 -6
- package/dist/chunk-BT6WK2JZ.mjs.map +1 -0
- package/dist/{chunk-NTLCOVE5.mjs → chunk-QTDCEDOC.mjs} +141 -70
- package/dist/chunk-QTDCEDOC.mjs.map +1 -0
- package/dist/{chunk-IFTHM7LF.mjs → chunk-QX6V774L.mjs} +6 -8
- package/dist/chunk-QX6V774L.mjs.map +1 -0
- package/dist/{chunk-XQFVXX6R.mjs → chunk-TQN3EZWQ.mjs} +10 -2
- package/dist/chunk-TQN3EZWQ.mjs.map +1 -0
- package/dist/{chunk-UOVONDR6.mjs → chunk-V3PFWGIY.mjs} +2 -2
- package/dist/{chunk-IVYL7JRC.mjs → chunk-VMP6JWBB.mjs} +12 -3
- package/dist/{chunk-IVYL7JRC.mjs.map → chunk-VMP6JWBB.mjs.map} +1 -1
- package/dist/chunk-XERJQUHA.mjs +31 -0
- package/dist/chunk-XERJQUHA.mjs.map +1 -0
- package/dist/components/copilot-provider/copilotkit.js +19 -2
- 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.js +19 -2
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +2 -2
- package/dist/components/index.js +19 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +2 -2
- package/dist/context/copilot-context.d.ts +8 -2
- package/dist/context/copilot-context.js +9 -1
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +9 -1
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +1 -1
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.js +264 -95
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +16 -9
- package/dist/hooks/use-chat.d.ts +20 -0
- package/dist/hooks/use-chat.js +171 -77
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +2 -1
- package/dist/hooks/use-coagent-state-render.js +9 -1
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +2 -2
- package/dist/hooks/use-coagent.d.ts +14 -1
- package/dist/hooks/use-coagent.js +245 -85
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +12 -5
- package/dist/hooks/use-copilot-action.d.ts +12 -2
- package/dist/hooks/use-copilot-action.js +24 -7
- 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.d.ts +1 -0
- package/dist/hooks/use-copilot-chat.js +223 -84
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +5 -4
- package/dist/hooks/use-copilot-readable.js +9 -1
- 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 +9 -1
- 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 +2 -2
- package/dist/index.js +281 -106
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -10
- package/dist/lib/copilot-task.d.ts +1 -1
- package/dist/lib/copilot-task.js +33 -13
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +4 -3
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +33 -13
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +4 -3
- package/dist/types/frontend-action.d.ts +21 -2
- package/dist/types/frontend-action.js +34 -0
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/types/frontend-action.mjs +7 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +2 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +2 -2
- package/package.json +3 -3
- package/src/components/copilot-provider/copilotkit.tsx +10 -0
- package/src/context/copilot-context.tsx +30 -2
- package/src/hooks/index.ts +1 -1
- package/src/hooks/use-chat.ts +196 -88
- package/src/hooks/use-coagent.ts +21 -4
- package/src/hooks/use-copilot-action.ts +38 -10
- package/src/hooks/use-copilot-chat.ts +43 -3
- package/src/lib/copilot-task.ts +2 -8
- package/src/types/frontend-action.ts +55 -2
- package/src/types/index.ts +5 -1
- package/dist/chunk-6EMLM6WX.mjs.map +0 -1
- package/dist/chunk-IFTHM7LF.mjs.map +0 -1
- package/dist/chunk-NTLCOVE5.mjs.map +0 -1
- package/dist/chunk-XQFVXX6R.mjs.map +0 -1
- package/dist/chunk-YUY5ZAST.mjs.map +0 -1
- /package/dist/{chunk-X6ZF5WAX.mjs.map → chunk-35EN6BG4.mjs.map} +0 -0
- /package/dist/{chunk-AG7FH7OD.mjs.map → chunk-5FYKUKG3.mjs.map} +0 -0
- /package/dist/{chunk-UOVONDR6.mjs.map → chunk-V3PFWGIY.mjs.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -87,7 +87,10 @@ __export(src_exports, {
|
|
|
87
87
|
CopilotTask: () => CopilotTask,
|
|
88
88
|
defaultCopilotContextCategories: () => defaultCopilotContextCategories,
|
|
89
89
|
extract: () => extract,
|
|
90
|
+
runAgent: () => runAgent,
|
|
90
91
|
shouldShowDevConsole: () => shouldShowDevConsole,
|
|
92
|
+
startAgent: () => startAgent,
|
|
93
|
+
stopAgent: () => stopAgent,
|
|
91
94
|
useCoAgent: () => useCoAgent,
|
|
92
95
|
useCoAgentStateRender: () => useCoAgentStateRender,
|
|
93
96
|
useCopilotAction: () => useCopilotAction,
|
|
@@ -157,7 +160,15 @@ var emptyCopilotContext = {
|
|
|
157
160
|
},
|
|
158
161
|
agentSession: null,
|
|
159
162
|
setAgentSession: () => {
|
|
160
|
-
}
|
|
163
|
+
},
|
|
164
|
+
agentLock: null,
|
|
165
|
+
threadId: null,
|
|
166
|
+
setThreadId: () => {
|
|
167
|
+
},
|
|
168
|
+
runId: null,
|
|
169
|
+
setRunId: () => {
|
|
170
|
+
},
|
|
171
|
+
chatAbortControllerRef: { current: null }
|
|
161
172
|
};
|
|
162
173
|
var CopilotContext = import_react.default.createContext(emptyCopilotContext);
|
|
163
174
|
function useCopilotContext() {
|
|
@@ -1044,6 +1055,9 @@ ${nonDocumentStrings}`;
|
|
|
1044
1055
|
};
|
|
1045
1056
|
}
|
|
1046
1057
|
const [agentSession, setAgentSession] = (0, import_react10.useState)(initialAgentSession);
|
|
1058
|
+
const [threadId, setThreadId] = (0, import_react10.useState)(null);
|
|
1059
|
+
const [runId, setRunId] = (0, import_react10.useState)(null);
|
|
1060
|
+
const chatAbortControllerRef = (0, import_react10.useRef)(null);
|
|
1047
1061
|
const showDevConsole = props.showDevConsole === void 0 ? "auto" : props.showDevConsole;
|
|
1048
1062
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1049
1063
|
CopilotContext.Provider,
|
|
@@ -1078,7 +1092,13 @@ ${nonDocumentStrings}`;
|
|
|
1078
1092
|
setCoagentStatesWithRef,
|
|
1079
1093
|
agentSession,
|
|
1080
1094
|
setAgentSession,
|
|
1081
|
-
runtimeClient
|
|
1095
|
+
runtimeClient,
|
|
1096
|
+
agentLock: props.agent || null,
|
|
1097
|
+
threadId,
|
|
1098
|
+
setThreadId,
|
|
1099
|
+
runId,
|
|
1100
|
+
setRunId,
|
|
1101
|
+
chatAbortControllerRef
|
|
1082
1102
|
},
|
|
1083
1103
|
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CopilotMessages, { children })
|
|
1084
1104
|
}
|
|
@@ -1113,12 +1133,39 @@ function entryPointsToFunctionCallHandler(actions) {
|
|
|
1113
1133
|
|
|
1114
1134
|
// src/hooks/use-copilot-chat.ts
|
|
1115
1135
|
var import_react12 = require("react");
|
|
1116
|
-
var
|
|
1136
|
+
var import_runtime_client_gql6 = require("@copilotkit/runtime-client-gql");
|
|
1117
1137
|
|
|
1118
1138
|
// src/hooks/use-chat.ts
|
|
1119
1139
|
var import_react11 = require("react");
|
|
1120
|
-
var
|
|
1140
|
+
var import_shared6 = require("@copilotkit/shared");
|
|
1141
|
+
var import_runtime_client_gql5 = require("@copilotkit/runtime-client-gql");
|
|
1142
|
+
|
|
1143
|
+
// src/types/frontend-action.ts
|
|
1121
1144
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
1145
|
+
var import_shared5 = require("@copilotkit/shared");
|
|
1146
|
+
function processActionsForRuntimeRequest(actions) {
|
|
1147
|
+
const filteredActions = actions.filter(
|
|
1148
|
+
(action) => action.available !== import_runtime_client_gql4.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*"
|
|
1149
|
+
).map((action) => {
|
|
1150
|
+
let available = import_runtime_client_gql4.ActionInputAvailability.Enabled;
|
|
1151
|
+
if (action.disabled) {
|
|
1152
|
+
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1153
|
+
} else if (action.available === "disabled") {
|
|
1154
|
+
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1155
|
+
} else if (action.available === "remote") {
|
|
1156
|
+
available = import_runtime_client_gql4.ActionInputAvailability.Remote;
|
|
1157
|
+
}
|
|
1158
|
+
return {
|
|
1159
|
+
name: action.name,
|
|
1160
|
+
description: action.description || "",
|
|
1161
|
+
jsonSchema: JSON.stringify((0, import_shared5.actionParametersToJsonSchema)(action.parameters || [])),
|
|
1162
|
+
available
|
|
1163
|
+
};
|
|
1164
|
+
});
|
|
1165
|
+
return filteredActions;
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
// src/hooks/use-chat.ts
|
|
1122
1169
|
function useChat(options) {
|
|
1123
1170
|
const {
|
|
1124
1171
|
messages,
|
|
@@ -1134,17 +1181,23 @@ function useChat(options) {
|
|
|
1134
1181
|
setCoagentStatesWithRef,
|
|
1135
1182
|
coagentStatesRef,
|
|
1136
1183
|
agentSession,
|
|
1137
|
-
setAgentSession
|
|
1184
|
+
setAgentSession,
|
|
1185
|
+
threadId,
|
|
1186
|
+
setThreadId,
|
|
1187
|
+
runId,
|
|
1188
|
+
setRunId,
|
|
1189
|
+
chatAbortControllerRef
|
|
1138
1190
|
} = options;
|
|
1139
|
-
const abortControllerRef = (0, import_react11.useRef)();
|
|
1140
|
-
const threadIdRef = (0, import_react11.useRef)(null);
|
|
1141
|
-
const runIdRef = (0, import_react11.useRef)(null);
|
|
1142
1191
|
const { addGraphQLErrorsToast } = useToast();
|
|
1143
1192
|
const runChatCompletionRef = (0, import_react11.useRef)();
|
|
1144
1193
|
const agentSessionRef = (0, import_react11.useRef)(agentSession);
|
|
1145
1194
|
agentSessionRef.current = agentSession;
|
|
1195
|
+
const threadIdRef = (0, import_react11.useRef)(threadId);
|
|
1196
|
+
threadIdRef.current = threadId;
|
|
1197
|
+
const runIdRef = (0, import_react11.useRef)(runId);
|
|
1198
|
+
runIdRef.current = runId;
|
|
1146
1199
|
const publicApiKey = copilotConfig.publicApiKey;
|
|
1147
|
-
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [
|
|
1200
|
+
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [import_shared6.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
|
|
1148
1201
|
const runtimeClient = useCopilotRuntimeClient({
|
|
1149
1202
|
url: copilotConfig.chatApiEndpoint,
|
|
1150
1203
|
publicApiKey: copilotConfig.publicApiKey,
|
|
@@ -1153,48 +1206,29 @@ function useChat(options) {
|
|
|
1153
1206
|
});
|
|
1154
1207
|
const runChatCompletion = useAsyncCallback(
|
|
1155
1208
|
(previousMessages) => __async(this, null, function* () {
|
|
1156
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
1209
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
1157
1210
|
setIsLoading(true);
|
|
1158
1211
|
let newMessages = [
|
|
1159
|
-
new
|
|
1212
|
+
new import_runtime_client_gql5.TextMessage({
|
|
1160
1213
|
content: "",
|
|
1161
|
-
role:
|
|
1214
|
+
role: import_runtime_client_gql5.Role.Assistant
|
|
1162
1215
|
})
|
|
1163
1216
|
];
|
|
1164
|
-
|
|
1165
|
-
abortControllerRef.current = abortController;
|
|
1217
|
+
chatAbortControllerRef.current = new AbortController();
|
|
1166
1218
|
setMessages([...previousMessages, ...newMessages]);
|
|
1167
1219
|
const systemMessage = makeSystemMessageCallback();
|
|
1168
1220
|
const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
|
|
1221
|
+
const isAgentRun = agentSessionRef.current !== null;
|
|
1169
1222
|
const stream = runtimeClient.asStream(
|
|
1170
1223
|
runtimeClient.generateCopilotResponse({
|
|
1171
1224
|
data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
|
|
1172
1225
|
frontend: {
|
|
1173
|
-
actions: actions
|
|
1174
|
-
(action) => action.available !== import_runtime_client_gql4.ActionInputAvailability.Disabled || !action.disabled
|
|
1175
|
-
).map((action) => {
|
|
1176
|
-
let available = import_runtime_client_gql4.ActionInputAvailability.Enabled;
|
|
1177
|
-
if (action.disabled) {
|
|
1178
|
-
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1179
|
-
} else if (action.available === "disabled") {
|
|
1180
|
-
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1181
|
-
} else if (action.available === "remote") {
|
|
1182
|
-
available = import_runtime_client_gql4.ActionInputAvailability.Remote;
|
|
1183
|
-
}
|
|
1184
|
-
return {
|
|
1185
|
-
name: action.name,
|
|
1186
|
-
description: action.description || "",
|
|
1187
|
-
jsonSchema: JSON.stringify(
|
|
1188
|
-
(0, import_shared5.actionParametersToJsonSchema)(action.parameters || [])
|
|
1189
|
-
),
|
|
1190
|
-
available
|
|
1191
|
-
};
|
|
1192
|
-
}),
|
|
1226
|
+
actions: processActionsForRuntimeRequest(actions),
|
|
1193
1227
|
url: window.location.href
|
|
1194
1228
|
},
|
|
1195
1229
|
threadId: threadIdRef.current,
|
|
1196
1230
|
runId: runIdRef.current,
|
|
1197
|
-
messages: (0,
|
|
1231
|
+
messages: (0, import_runtime_client_gql5.convertMessagesToGqlInput)((0, import_runtime_client_gql5.filterAgentStateMessages)(messagesWithContext))
|
|
1198
1232
|
}, copilotConfig.cloud ? {
|
|
1199
1233
|
cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
|
|
1200
1234
|
guardrails: {
|
|
@@ -1206,7 +1240,7 @@ function useChat(options) {
|
|
|
1206
1240
|
} : {})
|
|
1207
1241
|
} : {}), {
|
|
1208
1242
|
metadata: {
|
|
1209
|
-
requestType:
|
|
1243
|
+
requestType: import_runtime_client_gql5.CopilotRequestType.Chat
|
|
1210
1244
|
}
|
|
1211
1245
|
}), agentSessionRef.current ? {
|
|
1212
1246
|
agentSession: agentSessionRef.current
|
|
@@ -1217,14 +1251,15 @@ function useChat(options) {
|
|
|
1217
1251
|
}))
|
|
1218
1252
|
}),
|
|
1219
1253
|
properties: copilotConfig.properties,
|
|
1220
|
-
signal: (_d =
|
|
1254
|
+
signal: (_d = chatAbortControllerRef.current) == null ? void 0 : _d.signal
|
|
1221
1255
|
})
|
|
1222
1256
|
);
|
|
1223
1257
|
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
1224
1258
|
const reader = stream.getReader();
|
|
1225
|
-
let actionResults = {};
|
|
1226
1259
|
let executedCoAgentStateRenders = [];
|
|
1227
1260
|
let followUp = void 0;
|
|
1261
|
+
let messages2 = [];
|
|
1262
|
+
let syncedMessages = [];
|
|
1228
1263
|
try {
|
|
1229
1264
|
while (true) {
|
|
1230
1265
|
let done, value;
|
|
@@ -1236,6 +1271,9 @@ function useChat(options) {
|
|
|
1236
1271
|
break;
|
|
1237
1272
|
}
|
|
1238
1273
|
if (done) {
|
|
1274
|
+
if (chatAbortControllerRef.current.signal.aborted) {
|
|
1275
|
+
return [];
|
|
1276
|
+
}
|
|
1239
1277
|
break;
|
|
1240
1278
|
}
|
|
1241
1279
|
if (!(value == null ? void 0 : value.generateCopilotResponse)) {
|
|
@@ -1243,8 +1281,10 @@ function useChat(options) {
|
|
|
1243
1281
|
}
|
|
1244
1282
|
threadIdRef.current = value.generateCopilotResponse.threadId || null;
|
|
1245
1283
|
runIdRef.current = value.generateCopilotResponse.runId || null;
|
|
1246
|
-
|
|
1247
|
-
|
|
1284
|
+
setThreadId(threadIdRef.current);
|
|
1285
|
+
setRunId(runIdRef.current);
|
|
1286
|
+
messages2 = (0, import_runtime_client_gql5.convertGqlOutputToMessages)(
|
|
1287
|
+
(0, import_runtime_client_gql5.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
|
|
1248
1288
|
);
|
|
1249
1289
|
if (messages2.length === 0) {
|
|
1250
1290
|
continue;
|
|
@@ -1252,44 +1292,16 @@ function useChat(options) {
|
|
|
1252
1292
|
newMessages = [];
|
|
1253
1293
|
if (((_h = value.generateCopilotResponse.status) == null ? void 0 : _h.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
|
|
1254
1294
|
newMessages = [
|
|
1255
|
-
new
|
|
1256
|
-
role:
|
|
1295
|
+
new import_runtime_client_gql5.TextMessage({
|
|
1296
|
+
role: import_runtime_client_gql5.MessageRole.Assistant,
|
|
1257
1297
|
content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
|
|
1258
1298
|
})
|
|
1259
1299
|
];
|
|
1300
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
1301
|
+
break;
|
|
1260
1302
|
} else {
|
|
1303
|
+
newMessages = [...messages2];
|
|
1261
1304
|
for (const message of messages2) {
|
|
1262
|
-
newMessages.push(message);
|
|
1263
|
-
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql4.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
|
|
1264
|
-
if (!(message.id in actionResults)) {
|
|
1265
|
-
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
1266
|
-
break;
|
|
1267
|
-
}
|
|
1268
|
-
try {
|
|
1269
|
-
setMessages([...previousMessages, ...newMessages]);
|
|
1270
|
-
const action = actions.find((action2) => action2.name === message.name);
|
|
1271
|
-
if (action) {
|
|
1272
|
-
followUp = action.followUp;
|
|
1273
|
-
}
|
|
1274
|
-
const result = yield onFunctionCall({
|
|
1275
|
-
messages: previousMessages,
|
|
1276
|
-
name: message.name,
|
|
1277
|
-
args: message.arguments
|
|
1278
|
-
});
|
|
1279
|
-
actionResults[message.id] = result;
|
|
1280
|
-
} catch (e) {
|
|
1281
|
-
actionResults[message.id] = `Failed to execute action ${message.name}`;
|
|
1282
|
-
console.error(`Failed to execute action ${message.name}: ${e}`);
|
|
1283
|
-
}
|
|
1284
|
-
}
|
|
1285
|
-
newMessages.push(
|
|
1286
|
-
new import_runtime_client_gql4.ResultMessage({
|
|
1287
|
-
result: import_runtime_client_gql4.ResultMessage.encodeResult(actionResults[message.id]),
|
|
1288
|
-
actionExecutionId: message.id,
|
|
1289
|
-
actionName: message.name
|
|
1290
|
-
})
|
|
1291
|
-
);
|
|
1292
|
-
}
|
|
1293
1305
|
if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
|
|
1294
1306
|
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
1295
1307
|
break;
|
|
@@ -1304,6 +1316,11 @@ function useChat(options) {
|
|
|
1304
1316
|
}
|
|
1305
1317
|
const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
|
|
1306
1318
|
if (lastAgentStateMessage) {
|
|
1319
|
+
if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
|
|
1320
|
+
syncedMessages = (0, import_runtime_client_gql5.loadMessagesFromJsonRepresentation)(
|
|
1321
|
+
lastAgentStateMessage.state.messages
|
|
1322
|
+
);
|
|
1323
|
+
}
|
|
1307
1324
|
setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
1308
1325
|
[lastAgentStateMessage.agentName]: {
|
|
1309
1326
|
name: lastAgentStateMessage.agentName,
|
|
@@ -1330,14 +1347,96 @@ function useChat(options) {
|
|
|
1330
1347
|
setMessages([...previousMessages, ...newMessages]);
|
|
1331
1348
|
}
|
|
1332
1349
|
}
|
|
1350
|
+
const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
|
|
1351
|
+
let didExecuteAction = false;
|
|
1352
|
+
if (onFunctionCall) {
|
|
1353
|
+
const lastMessages = [];
|
|
1354
|
+
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
1355
|
+
const message = finalMessages[i];
|
|
1356
|
+
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql5.MessageStatusCode.Pending) {
|
|
1357
|
+
lastMessages.unshift(message);
|
|
1358
|
+
} else {
|
|
1359
|
+
break;
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
for (const message of lastMessages) {
|
|
1363
|
+
setMessages(finalMessages);
|
|
1364
|
+
const action = actions.find((action2) => action2.name === message.name);
|
|
1365
|
+
if (action) {
|
|
1366
|
+
followUp = action.followUp;
|
|
1367
|
+
let result;
|
|
1368
|
+
try {
|
|
1369
|
+
result = yield Promise.race([
|
|
1370
|
+
onFunctionCall({
|
|
1371
|
+
messages: previousMessages,
|
|
1372
|
+
name: message.name,
|
|
1373
|
+
args: message.arguments
|
|
1374
|
+
}),
|
|
1375
|
+
new Promise(
|
|
1376
|
+
(resolve) => {
|
|
1377
|
+
var _a2;
|
|
1378
|
+
return (_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.addEventListener(
|
|
1379
|
+
"abort",
|
|
1380
|
+
() => resolve("Operation was aborted by the user")
|
|
1381
|
+
);
|
|
1382
|
+
}
|
|
1383
|
+
),
|
|
1384
|
+
// if the user stopped generation, we also abort consecutive actions
|
|
1385
|
+
new Promise((resolve) => {
|
|
1386
|
+
var _a2;
|
|
1387
|
+
if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
|
|
1388
|
+
resolve("Operation was aborted by the user");
|
|
1389
|
+
}
|
|
1390
|
+
})
|
|
1391
|
+
]);
|
|
1392
|
+
} catch (e) {
|
|
1393
|
+
result = `Failed to execute action ${message.name}`;
|
|
1394
|
+
console.error(`Failed to execute action ${message.name}: ${e}`);
|
|
1395
|
+
}
|
|
1396
|
+
didExecuteAction = true;
|
|
1397
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === message.id);
|
|
1398
|
+
finalMessages.splice(
|
|
1399
|
+
messageIndex + 1,
|
|
1400
|
+
0,
|
|
1401
|
+
new import_runtime_client_gql5.ResultMessage({
|
|
1402
|
+
id: "result-" + message.id,
|
|
1403
|
+
result: import_runtime_client_gql5.ResultMessage.encodeResult(result),
|
|
1404
|
+
actionExecutionId: message.id,
|
|
1405
|
+
actionName: message.name
|
|
1406
|
+
})
|
|
1407
|
+
);
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
setMessages(finalMessages);
|
|
1411
|
+
}
|
|
1333
1412
|
if (
|
|
1334
1413
|
// if followUp is not explicitly false
|
|
1335
|
-
followUp !== false && //
|
|
1336
|
-
(
|
|
1337
|
-
|
|
1414
|
+
followUp !== false && // and we executed an action
|
|
1415
|
+
(didExecuteAction || // the last message is a server side result
|
|
1416
|
+
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
1417
|
+
!((_j = chatAbortControllerRef.current) == null ? void 0 : _j.signal.aborted)
|
|
1338
1418
|
) {
|
|
1339
1419
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
1340
|
-
return yield runChatCompletionRef.current(
|
|
1420
|
+
return yield runChatCompletionRef.current(finalMessages);
|
|
1421
|
+
} else if ((_k = chatAbortControllerRef.current) == null ? void 0 : _k.signal.aborted) {
|
|
1422
|
+
const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
|
|
1423
|
+
if (message.isActionExecutionMessage()) {
|
|
1424
|
+
return finalMessages.find(
|
|
1425
|
+
(msg, resultIndex) => msg.isResultMessage() && msg.actionExecutionId === message.id && resultIndex === actionExecutionIndex + 1
|
|
1426
|
+
);
|
|
1427
|
+
}
|
|
1428
|
+
return true;
|
|
1429
|
+
});
|
|
1430
|
+
const repairedMessageIds = repairedMessages.map((message) => message.id);
|
|
1431
|
+
setMessages(repairedMessages);
|
|
1432
|
+
if ((_l = agentSessionRef.current) == null ? void 0 : _l.nodeName) {
|
|
1433
|
+
setAgentSession({
|
|
1434
|
+
threadId: agentSessionRef.current.threadId,
|
|
1435
|
+
agentName: agentSessionRef.current.agentName,
|
|
1436
|
+
nodeName: "__end__"
|
|
1437
|
+
});
|
|
1438
|
+
}
|
|
1439
|
+
return newMessages.filter((message) => repairedMessageIds.includes(message.id));
|
|
1341
1440
|
} else {
|
|
1342
1441
|
return newMessages.slice();
|
|
1343
1442
|
}
|
|
@@ -1394,7 +1493,7 @@ function useChat(options) {
|
|
|
1394
1493
|
}), [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]);
|
|
1395
1494
|
const stop = () => {
|
|
1396
1495
|
var _a;
|
|
1397
|
-
(_a =
|
|
1496
|
+
(_a = chatAbortControllerRef.current) == null ? void 0 : _a.abort("Stop was called");
|
|
1398
1497
|
};
|
|
1399
1498
|
return {
|
|
1400
1499
|
append,
|
|
@@ -1403,6 +1502,23 @@ function useChat(options) {
|
|
|
1403
1502
|
runChatCompletion: () => runChatCompletionRef.current(messages)
|
|
1404
1503
|
};
|
|
1405
1504
|
}
|
|
1505
|
+
function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
1506
|
+
const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
|
|
1507
|
+
if (syncedMessages.length > 0) {
|
|
1508
|
+
const messagesWithAgentState = [...previousMessages, ...newMessages];
|
|
1509
|
+
let previousMessageId = void 0;
|
|
1510
|
+
for (const message of messagesWithAgentState) {
|
|
1511
|
+
if (message.isAgentStateMessage()) {
|
|
1512
|
+
const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
|
|
1513
|
+
if (index !== -1) {
|
|
1514
|
+
finalMessages.splice(index + 1, 0, message);
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
previousMessageId = message.id;
|
|
1518
|
+
}
|
|
1519
|
+
}
|
|
1520
|
+
return finalMessages;
|
|
1521
|
+
}
|
|
1406
1522
|
|
|
1407
1523
|
// src/hooks/use-copilot-chat.ts
|
|
1408
1524
|
function useCopilotChat(_a = {}) {
|
|
@@ -1423,7 +1539,13 @@ function useCopilotChat(_a = {}) {
|
|
|
1423
1539
|
setCoagentStatesWithRef,
|
|
1424
1540
|
coAgentStateRenders,
|
|
1425
1541
|
agentSession,
|
|
1426
|
-
setAgentSession
|
|
1542
|
+
setAgentSession,
|
|
1543
|
+
agentLock,
|
|
1544
|
+
threadId,
|
|
1545
|
+
setThreadId,
|
|
1546
|
+
runId,
|
|
1547
|
+
setRunId,
|
|
1548
|
+
chatAbortControllerRef
|
|
1427
1549
|
} = useCopilotContext();
|
|
1428
1550
|
const { messages, setMessages } = useCopilotMessagesContext();
|
|
1429
1551
|
const latestGetContextString = useUpdatedRef(getContextString);
|
|
@@ -1436,9 +1558,9 @@ function useCopilotChat(_a = {}) {
|
|
|
1436
1558
|
const makeSystemMessageCallback = (0, import_react12.useCallback)(() => {
|
|
1437
1559
|
const systemMessageMaker = makeSystemMessage2 || defaultSystemMessage;
|
|
1438
1560
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
1439
|
-
return new
|
|
1561
|
+
return new import_runtime_client_gql6.TextMessage({
|
|
1440
1562
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
1441
|
-
role:
|
|
1563
|
+
role: import_runtime_client_gql6.Role.System
|
|
1442
1564
|
});
|
|
1443
1565
|
}, [getContextString, makeSystemMessage2, chatInstructions]);
|
|
1444
1566
|
const onCoAgentStateRender = useAsyncCallback(
|
|
@@ -1473,7 +1595,12 @@ function useCopilotChat(_a = {}) {
|
|
|
1473
1595
|
coagentStatesRef,
|
|
1474
1596
|
setCoagentStatesWithRef,
|
|
1475
1597
|
agentSession,
|
|
1476
|
-
setAgentSession
|
|
1598
|
+
setAgentSession,
|
|
1599
|
+
threadId,
|
|
1600
|
+
setThreadId,
|
|
1601
|
+
runId,
|
|
1602
|
+
setRunId,
|
|
1603
|
+
chatAbortControllerRef
|
|
1477
1604
|
}));
|
|
1478
1605
|
const latestAppend = useUpdatedRef(append);
|
|
1479
1606
|
const latestAppendFunc = useAsyncCallback(
|
|
@@ -1508,12 +1635,38 @@ function useCopilotChat(_a = {}) {
|
|
|
1508
1635
|
const latestRunChatCompletionFunc = useAsyncCallback(() => __async(this, null, function* () {
|
|
1509
1636
|
return yield latestRunChatCompletion.current();
|
|
1510
1637
|
}), [latestRunChatCompletion]);
|
|
1638
|
+
const reset = (0, import_react12.useCallback)(() => {
|
|
1639
|
+
latestStopFunc();
|
|
1640
|
+
setMessages([]);
|
|
1641
|
+
setThreadId(null);
|
|
1642
|
+
setRunId(null);
|
|
1643
|
+
setCoagentStatesWithRef({});
|
|
1644
|
+
let initialAgentSession = null;
|
|
1645
|
+
if (agentLock) {
|
|
1646
|
+
initialAgentSession = {
|
|
1647
|
+
agentName: agentLock
|
|
1648
|
+
};
|
|
1649
|
+
}
|
|
1650
|
+
setAgentSession(initialAgentSession);
|
|
1651
|
+
}, [
|
|
1652
|
+
latestStopFunc,
|
|
1653
|
+
setMessages,
|
|
1654
|
+
setThreadId,
|
|
1655
|
+
setCoagentStatesWithRef,
|
|
1656
|
+
setAgentSession,
|
|
1657
|
+
agentLock
|
|
1658
|
+
]);
|
|
1659
|
+
const latestReset = useUpdatedRef(reset);
|
|
1660
|
+
const latestResetFunc = (0, import_react12.useCallback)(() => {
|
|
1661
|
+
return latestReset.current();
|
|
1662
|
+
}, [latestReset]);
|
|
1511
1663
|
return {
|
|
1512
1664
|
visibleMessages: messages,
|
|
1513
1665
|
appendMessage: latestAppendFunc,
|
|
1514
1666
|
setMessages: latestSetMessagesFunc,
|
|
1515
1667
|
reloadMessages: latestReloadFunc,
|
|
1516
1668
|
stopGeneration: latestStopFunc,
|
|
1669
|
+
reset: latestResetFunc,
|
|
1517
1670
|
deleteMessage: latestDeleteFunc,
|
|
1518
1671
|
runChatCompletion: latestRunChatCompletionFunc,
|
|
1519
1672
|
isLoading
|
|
@@ -1551,14 +1704,18 @@ ${additionalInstructions}` : "");
|
|
|
1551
1704
|
}
|
|
1552
1705
|
|
|
1553
1706
|
// src/hooks/use-copilot-action.ts
|
|
1554
|
-
var
|
|
1707
|
+
var import_shared7 = require("@copilotkit/shared");
|
|
1555
1708
|
var import_react13 = require("react");
|
|
1556
1709
|
function useCopilotAction(action, dependencies) {
|
|
1557
1710
|
const { setAction, removeAction, actions, chatComponentsCache } = useCopilotContext();
|
|
1558
|
-
const idRef = (0, import_react13.useRef)((0,
|
|
1711
|
+
const idRef = (0, import_react13.useRef)((0, import_shared7.randomId)());
|
|
1559
1712
|
const renderAndWaitRef = (0, import_react13.useRef)(null);
|
|
1560
1713
|
action = __spreadValues({}, action);
|
|
1561
|
-
if (
|
|
1714
|
+
if (
|
|
1715
|
+
// renderAndWaitForResponse is not available for catch all actions
|
|
1716
|
+
isFrontendAction(action) && // check if renderAndWaitForResponse is set
|
|
1717
|
+
(action.renderAndWait || action.renderAndWaitForResponse)
|
|
1718
|
+
) {
|
|
1562
1719
|
const renderAndWait = action.renderAndWait || action.renderAndWaitForResponse;
|
|
1563
1720
|
action.renderAndWait = void 0;
|
|
1564
1721
|
action.renderAndWaitForResponse = void 0;
|
|
@@ -1596,7 +1753,9 @@ function useCopilotAction(action, dependencies) {
|
|
|
1596
1753
|
}
|
|
1597
1754
|
if (dependencies === void 0) {
|
|
1598
1755
|
if (actions[idRef.current]) {
|
|
1599
|
-
|
|
1756
|
+
if (isFrontendAction(action)) {
|
|
1757
|
+
actions[idRef.current].handler = action.handler;
|
|
1758
|
+
}
|
|
1600
1759
|
if (typeof action.render === "function") {
|
|
1601
1760
|
if (chatComponentsCache.current !== null) {
|
|
1602
1761
|
chatComponentsCache.current.actions[action.name] = action.render;
|
|
@@ -1615,23 +1774,26 @@ function useCopilotAction(action, dependencies) {
|
|
|
1615
1774
|
}, [
|
|
1616
1775
|
setAction,
|
|
1617
1776
|
removeAction,
|
|
1618
|
-
action.description,
|
|
1777
|
+
isFrontendAction(action) ? action.description : void 0,
|
|
1619
1778
|
action.name,
|
|
1620
|
-
action.disabled,
|
|
1621
|
-
action.available,
|
|
1779
|
+
isFrontendAction(action) ? action.disabled : void 0,
|
|
1780
|
+
isFrontendAction(action) ? action.available : void 0,
|
|
1622
1781
|
// This should be faster than deep equality checking
|
|
1623
1782
|
// In addition, all major JS engines guarantee the order of object keys
|
|
1624
|
-
JSON.stringify(action.parameters),
|
|
1783
|
+
JSON.stringify(isFrontendAction(action) ? action.parameters : []),
|
|
1625
1784
|
// include render only if it's a string
|
|
1626
1785
|
typeof action.render === "string" ? action.render : void 0,
|
|
1627
1786
|
// dependencies set by the developer
|
|
1628
1787
|
...dependencies || []
|
|
1629
1788
|
]);
|
|
1630
1789
|
}
|
|
1790
|
+
function isFrontendAction(action) {
|
|
1791
|
+
return action.name !== "*";
|
|
1792
|
+
}
|
|
1631
1793
|
|
|
1632
1794
|
// src/hooks/use-coagent-state-render.ts
|
|
1633
1795
|
var import_react14 = require("react");
|
|
1634
|
-
var
|
|
1796
|
+
var import_shared8 = require("@copilotkit/shared");
|
|
1635
1797
|
function useCoAgentStateRender(action, dependencies) {
|
|
1636
1798
|
const {
|
|
1637
1799
|
setCoAgentStateRender,
|
|
@@ -1639,7 +1801,7 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
1639
1801
|
coAgentStateRenders,
|
|
1640
1802
|
chatComponentsCache
|
|
1641
1803
|
} = (0, import_react14.useContext)(CopilotContext);
|
|
1642
|
-
const idRef = (0, import_react14.useRef)((0,
|
|
1804
|
+
const idRef = (0, import_react14.useRef)((0, import_shared8.randomId)());
|
|
1643
1805
|
const key = `${action.name}-${action.nodeName || "global"}`;
|
|
1644
1806
|
if (dependencies === void 0) {
|
|
1645
1807
|
if (coAgentStateRenders[idRef.current]) {
|
|
@@ -1752,7 +1914,11 @@ function useCoAgent(options) {
|
|
|
1752
1914
|
} else if (coagentStates[name] === void 0) {
|
|
1753
1915
|
setState(options.initialState === void 0 ? {} : options.initialState);
|
|
1754
1916
|
}
|
|
1755
|
-
}, [
|
|
1917
|
+
}, [
|
|
1918
|
+
isExternalStateManagement(options) ? JSON.stringify(options.state) : void 0,
|
|
1919
|
+
// reset initialstate on reset
|
|
1920
|
+
coagentStates[name] === void 0
|
|
1921
|
+
]);
|
|
1756
1922
|
const runAgentCallback = useAsyncCallback(
|
|
1757
1923
|
(hint) => __async(this, null, function* () {
|
|
1758
1924
|
yield runAgent(name, context, appendMessage, runChatCompletion, hint);
|
|
@@ -1781,6 +1947,17 @@ function stopAgent(name, context) {
|
|
|
1781
1947
|
const { agentSession, setAgentSession } = context;
|
|
1782
1948
|
if (agentSession && agentSession.agentName === name) {
|
|
1783
1949
|
setAgentSession(null);
|
|
1950
|
+
context.setCoagentStates((prevAgentStates) => {
|
|
1951
|
+
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
1952
|
+
[name]: __spreadProps(__spreadValues({}, prevAgentStates[name]), {
|
|
1953
|
+
running: false,
|
|
1954
|
+
active: false,
|
|
1955
|
+
threadId: void 0,
|
|
1956
|
+
nodeName: void 0,
|
|
1957
|
+
runId: void 0
|
|
1958
|
+
})
|
|
1959
|
+
});
|
|
1960
|
+
});
|
|
1784
1961
|
} else {
|
|
1785
1962
|
console.warn(`No agent session found for ${name}`);
|
|
1786
1963
|
}
|
|
@@ -1816,8 +1993,7 @@ function runAgent(name, context, appendMessage, runChatCompletion, hint) {
|
|
|
1816
1993
|
}
|
|
1817
1994
|
|
|
1818
1995
|
// src/lib/copilot-task.ts
|
|
1819
|
-
var
|
|
1820
|
-
var import_shared8 = require("@copilotkit/shared");
|
|
1996
|
+
var import_runtime_client_gql7 = require("@copilotkit/runtime-client-gql");
|
|
1821
1997
|
var CopilotTask = class {
|
|
1822
1998
|
constructor(config) {
|
|
1823
1999
|
this.instructions = config.instructions;
|
|
@@ -1844,12 +2020,12 @@ var CopilotTask = class {
|
|
|
1844
2020
|
if (this.includeCopilotReadable) {
|
|
1845
2021
|
contextString += context.getContextString([], defaultCopilotContextCategories);
|
|
1846
2022
|
}
|
|
1847
|
-
const systemMessage = new
|
|
2023
|
+
const systemMessage = new import_runtime_client_gql7.TextMessage({
|
|
1848
2024
|
content: taskSystemMessage(contextString, this.instructions),
|
|
1849
|
-
role:
|
|
2025
|
+
role: import_runtime_client_gql7.Role.System
|
|
1850
2026
|
});
|
|
1851
2027
|
const messages = [systemMessage];
|
|
1852
|
-
const runtimeClient = new
|
|
2028
|
+
const runtimeClient = new import_runtime_client_gql7.CopilotRuntimeClient({
|
|
1853
2029
|
url: context.copilotApiConfig.chatApiEndpoint,
|
|
1854
2030
|
publicApiKey: context.copilotApiConfig.publicApiKey,
|
|
1855
2031
|
headers: context.copilotApiConfig.headers,
|
|
@@ -1858,16 +2034,12 @@ var CopilotTask = class {
|
|
|
1858
2034
|
const response = yield runtimeClient.generateCopilotResponse({
|
|
1859
2035
|
data: {
|
|
1860
2036
|
frontend: {
|
|
1861
|
-
actions: Object.values(actions)
|
|
1862
|
-
name: action.name,
|
|
1863
|
-
description: action.description || "",
|
|
1864
|
-
jsonSchema: JSON.stringify((0, import_shared8.actionParametersToJsonSchema)(action.parameters || []))
|
|
1865
|
-
})),
|
|
2037
|
+
actions: processActionsForRuntimeRequest(Object.values(actions)),
|
|
1866
2038
|
url: window.location.href
|
|
1867
2039
|
},
|
|
1868
|
-
messages: (0,
|
|
2040
|
+
messages: (0, import_runtime_client_gql7.convertMessagesToGqlInput)((0, import_runtime_client_gql7.filterAgentStateMessages)(messages)),
|
|
1869
2041
|
metadata: {
|
|
1870
|
-
requestType:
|
|
2042
|
+
requestType: import_runtime_client_gql7.CopilotRequestType.Task
|
|
1871
2043
|
},
|
|
1872
2044
|
forwardedParameters: {
|
|
1873
2045
|
toolChoice: "required"
|
|
@@ -1876,7 +2048,7 @@ var CopilotTask = class {
|
|
|
1876
2048
|
properties: context.copilotApiConfig.properties
|
|
1877
2049
|
}).toPromise();
|
|
1878
2050
|
const functionCallHandler = context.getFunctionCallHandler(actions);
|
|
1879
|
-
const functionCalls = (0,
|
|
2051
|
+
const functionCalls = (0, import_runtime_client_gql7.convertGqlOutputToMessages)(
|
|
1880
2052
|
((_b = (_a = response.data) == null ? void 0 : _a.generateCopilotResponse) == null ? void 0 : _b.messages) || []
|
|
1881
2053
|
).filter((m) => m.isActionExecutionMessage());
|
|
1882
2054
|
for (const functionCall of functionCalls) {
|
|
@@ -1922,7 +2094,10 @@ ${instructions}
|
|
|
1922
2094
|
CopilotTask,
|
|
1923
2095
|
defaultCopilotContextCategories,
|
|
1924
2096
|
extract,
|
|
2097
|
+
runAgent,
|
|
1925
2098
|
shouldShowDevConsole,
|
|
2099
|
+
startAgent,
|
|
2100
|
+
stopAgent,
|
|
1926
2101
|
useCoAgent,
|
|
1927
2102
|
useCoAgentStateRender,
|
|
1928
2103
|
useCopilotAction,
|