@copilotkit/react-core 1.4.6 → 1.4.8-coagents-v0-3.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 +80 -6
- package/README.md +2 -0
- package/dist/{chunk-EUIBVFV6.mjs → chunk-EC5YZTSH.mjs} +91 -57
- package/dist/chunk-EC5YZTSH.mjs.map +1 -0
- package/dist/{chunk-XBVKTDXP.mjs → chunk-TNSI3FLW.mjs} +2 -2
- package/dist/{chunk-JHEAUB3Z.mjs → chunk-X6ZF5WAX.mjs} +1 -1
- package/dist/{chunk-JHEAUB3Z.mjs.map → chunk-X6ZF5WAX.mjs.map} +1 -1
- package/dist/{chunk-O22KGHOQ.mjs → chunk-XIDLJSIH.mjs} +2 -2
- package/dist/chunk-XIDLJSIH.mjs.map +1 -0
- package/dist/hooks/index.js +88 -55
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +4 -4
- package/dist/hooks/use-chat.js +88 -55
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +1 -1
- package/dist/hooks/use-coagent-state-render.d.ts +2 -2
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +1 -1
- package/dist/hooks/use-coagent.js +88 -55
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +3 -3
- package/dist/hooks/use-copilot-chat.js +88 -55
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +2 -2
- package/dist/index.js +88 -55
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/package.json +3 -3
- package/src/hooks/use-chat.ts +128 -77
- package/src/hooks/use-coagent-state-render.ts +2 -2
- package/src/hooks/use-coagent.ts +0 -1
- package/dist/chunk-EUIBVFV6.mjs.map +0 -1
- package/dist/chunk-O22KGHOQ.mjs.map +0 -1
- /package/dist/{chunk-XBVKTDXP.mjs.map → chunk-TNSI3FLW.mjs.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1088,28 +1088,28 @@ function useChat(options) {
|
|
|
1088
1088
|
setMessages([...previousMessages, ...newMessages]);
|
|
1089
1089
|
const systemMessage = makeSystemMessageCallback();
|
|
1090
1090
|
const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
|
|
1091
|
+
const filteredActions = actions.filter((action) => action.available !== import_runtime_client_gql4.ActionInputAvailability.Disabled || !action.disabled).map((action) => {
|
|
1092
|
+
let available = import_runtime_client_gql4.ActionInputAvailability.Enabled;
|
|
1093
|
+
if (action.disabled) {
|
|
1094
|
+
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1095
|
+
} else if (action.available === "disabled") {
|
|
1096
|
+
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1097
|
+
} else if (action.available === "remote") {
|
|
1098
|
+
available = import_runtime_client_gql4.ActionInputAvailability.Remote;
|
|
1099
|
+
}
|
|
1100
|
+
return {
|
|
1101
|
+
name: action.name,
|
|
1102
|
+
description: action.description || "",
|
|
1103
|
+
jsonSchema: JSON.stringify((0, import_shared5.actionParametersToJsonSchema)(action.parameters || [])),
|
|
1104
|
+
available
|
|
1105
|
+
};
|
|
1106
|
+
});
|
|
1107
|
+
const isAgentRun = agentSessionRef.current !== null;
|
|
1091
1108
|
const stream = runtimeClient.asStream(
|
|
1092
1109
|
runtimeClient.generateCopilotResponse({
|
|
1093
1110
|
data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
|
|
1094
1111
|
frontend: {
|
|
1095
|
-
actions:
|
|
1096
|
-
(action) => action.available !== import_runtime_client_gql4.ActionInputAvailability.Disabled || !action.disabled
|
|
1097
|
-
).map((action) => {
|
|
1098
|
-
let available = import_runtime_client_gql4.ActionInputAvailability.Enabled;
|
|
1099
|
-
if (action.disabled) {
|
|
1100
|
-
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1101
|
-
} else if (action.available === "disabled") {
|
|
1102
|
-
available = import_runtime_client_gql4.ActionInputAvailability.Disabled;
|
|
1103
|
-
} else if (action.available === "remote") {
|
|
1104
|
-
available = import_runtime_client_gql4.ActionInputAvailability.Remote;
|
|
1105
|
-
}
|
|
1106
|
-
return {
|
|
1107
|
-
name: action.name,
|
|
1108
|
-
description: action.description || "",
|
|
1109
|
-
jsonSchema: JSON.stringify((0, import_shared5.actionParametersToJsonSchema)(action.parameters || [])),
|
|
1110
|
-
available
|
|
1111
|
-
};
|
|
1112
|
-
}),
|
|
1112
|
+
actions: filteredActions,
|
|
1113
1113
|
url: window.location.href
|
|
1114
1114
|
},
|
|
1115
1115
|
threadId: threadIdRef.current,
|
|
@@ -1142,9 +1142,10 @@ function useChat(options) {
|
|
|
1142
1142
|
);
|
|
1143
1143
|
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
1144
1144
|
const reader = stream.getReader();
|
|
1145
|
-
let actionResults = {};
|
|
1146
1145
|
let executedCoAgentStateRenders = [];
|
|
1147
1146
|
let followUp = void 0;
|
|
1147
|
+
let messages2 = [];
|
|
1148
|
+
let syncedMessages = [];
|
|
1148
1149
|
try {
|
|
1149
1150
|
while (true) {
|
|
1150
1151
|
let done, value;
|
|
@@ -1163,7 +1164,7 @@ function useChat(options) {
|
|
|
1163
1164
|
}
|
|
1164
1165
|
threadIdRef.current = value.generateCopilotResponse.threadId || null;
|
|
1165
1166
|
runIdRef.current = value.generateCopilotResponse.runId || null;
|
|
1166
|
-
|
|
1167
|
+
messages2 = (0, import_runtime_client_gql4.convertGqlOutputToMessages)(
|
|
1167
1168
|
(0, import_runtime_client_gql4.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
|
|
1168
1169
|
);
|
|
1169
1170
|
if (messages2.length === 0) {
|
|
@@ -1177,39 +1178,11 @@ function useChat(options) {
|
|
|
1177
1178
|
content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
|
|
1178
1179
|
})
|
|
1179
1180
|
];
|
|
1181
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
1182
|
+
break;
|
|
1180
1183
|
} else {
|
|
1184
|
+
newMessages = [...messages2];
|
|
1181
1185
|
for (const message of messages2) {
|
|
1182
|
-
newMessages.push(message);
|
|
1183
|
-
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql4.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
|
|
1184
|
-
if (!(message.id in actionResults)) {
|
|
1185
|
-
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
1186
|
-
break;
|
|
1187
|
-
}
|
|
1188
|
-
try {
|
|
1189
|
-
setMessages([...previousMessages, ...newMessages]);
|
|
1190
|
-
const action = actions.find((action2) => action2.name === message.name);
|
|
1191
|
-
if (action) {
|
|
1192
|
-
followUp = action.followUp;
|
|
1193
|
-
}
|
|
1194
|
-
const result = yield onFunctionCall({
|
|
1195
|
-
messages: previousMessages,
|
|
1196
|
-
name: message.name,
|
|
1197
|
-
args: message.arguments
|
|
1198
|
-
});
|
|
1199
|
-
actionResults[message.id] = result;
|
|
1200
|
-
} catch (e) {
|
|
1201
|
-
actionResults[message.id] = `Failed to execute action ${message.name}`;
|
|
1202
|
-
console.error(`Failed to execute action ${message.name}: ${e}`);
|
|
1203
|
-
}
|
|
1204
|
-
}
|
|
1205
|
-
newMessages.push(
|
|
1206
|
-
new import_runtime_client_gql4.ResultMessage({
|
|
1207
|
-
result: import_runtime_client_gql4.ResultMessage.encodeResult(actionResults[message.id]),
|
|
1208
|
-
actionExecutionId: message.id,
|
|
1209
|
-
actionName: message.name
|
|
1210
|
-
})
|
|
1211
|
-
);
|
|
1212
|
-
}
|
|
1213
1186
|
if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
|
|
1214
1187
|
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
1215
1188
|
break;
|
|
@@ -1224,6 +1197,11 @@ function useChat(options) {
|
|
|
1224
1197
|
}
|
|
1225
1198
|
const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
|
|
1226
1199
|
if (lastAgentStateMessage) {
|
|
1200
|
+
if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
|
|
1201
|
+
syncedMessages = (0, import_runtime_client_gql4.loadMessagesFromJsonRepresentation)(
|
|
1202
|
+
lastAgentStateMessage.state.messages
|
|
1203
|
+
);
|
|
1204
|
+
}
|
|
1227
1205
|
setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
1228
1206
|
[lastAgentStateMessage.agentName]: {
|
|
1229
1207
|
name: lastAgentStateMessage.agentName,
|
|
@@ -1250,14 +1228,52 @@ function useChat(options) {
|
|
|
1250
1228
|
setMessages([...previousMessages, ...newMessages]);
|
|
1251
1229
|
}
|
|
1252
1230
|
}
|
|
1231
|
+
const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
|
|
1232
|
+
let didExecuteAction = false;
|
|
1233
|
+
if (onFunctionCall) {
|
|
1234
|
+
const lastMessages = [];
|
|
1235
|
+
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
1236
|
+
const message = finalMessages[i];
|
|
1237
|
+
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql4.MessageStatusCode.Pending) {
|
|
1238
|
+
lastMessages.unshift(message);
|
|
1239
|
+
} else {
|
|
1240
|
+
break;
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
for (const message of lastMessages) {
|
|
1244
|
+
setMessages(finalMessages);
|
|
1245
|
+
const action = actions.find((action2) => action2.name === message.name);
|
|
1246
|
+
if (action) {
|
|
1247
|
+
followUp = action.followUp;
|
|
1248
|
+
const result = yield onFunctionCall({
|
|
1249
|
+
messages: finalMessages,
|
|
1250
|
+
name: message.name,
|
|
1251
|
+
args: message.arguments
|
|
1252
|
+
});
|
|
1253
|
+
didExecuteAction = true;
|
|
1254
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === message.id);
|
|
1255
|
+
finalMessages.splice(
|
|
1256
|
+
messageIndex + 1,
|
|
1257
|
+
0,
|
|
1258
|
+
new import_runtime_client_gql4.ResultMessage({
|
|
1259
|
+
id: "result-" + message.id,
|
|
1260
|
+
result: import_runtime_client_gql4.ResultMessage.encodeResult(result),
|
|
1261
|
+
actionExecutionId: message.id,
|
|
1262
|
+
actionName: message.name
|
|
1263
|
+
})
|
|
1264
|
+
);
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
setMessages(finalMessages);
|
|
1268
|
+
}
|
|
1253
1269
|
if (
|
|
1254
1270
|
// if followUp is not explicitly false
|
|
1255
|
-
followUp !== false && //
|
|
1256
|
-
(
|
|
1257
|
-
|
|
1271
|
+
followUp !== false && // and we executed an action
|
|
1272
|
+
(didExecuteAction || // the last message is a server side result
|
|
1273
|
+
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage())
|
|
1258
1274
|
) {
|
|
1259
1275
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
1260
|
-
return yield runChatCompletionRef.current(
|
|
1276
|
+
return yield runChatCompletionRef.current(finalMessages);
|
|
1261
1277
|
} else {
|
|
1262
1278
|
return newMessages.slice();
|
|
1263
1279
|
}
|
|
@@ -1300,6 +1316,23 @@ function useChat(options) {
|
|
|
1300
1316
|
runChatCompletion: () => runChatCompletionRef.current(messages)
|
|
1301
1317
|
};
|
|
1302
1318
|
}
|
|
1319
|
+
function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
1320
|
+
const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
|
|
1321
|
+
if (syncedMessages.length > 0) {
|
|
1322
|
+
const messagesWithAgentState = [...previousMessages, ...newMessages];
|
|
1323
|
+
let previousMessageId = void 0;
|
|
1324
|
+
for (const message of messagesWithAgentState) {
|
|
1325
|
+
if (message.isAgentStateMessage()) {
|
|
1326
|
+
const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
|
|
1327
|
+
if (index !== -1) {
|
|
1328
|
+
finalMessages.splice(index + 1, 0, message);
|
|
1329
|
+
}
|
|
1330
|
+
}
|
|
1331
|
+
previousMessageId = message.id;
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
return finalMessages;
|
|
1335
|
+
}
|
|
1303
1336
|
|
|
1304
1337
|
// src/hooks/use-copilot-chat.ts
|
|
1305
1338
|
function useCopilotChat(_a = {}) {
|