@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/hooks/index.js
CHANGED
|
@@ -245,28 +245,28 @@ function useChat(options) {
|
|
|
245
245
|
setMessages([...previousMessages, ...newMessages]);
|
|
246
246
|
const systemMessage = makeSystemMessageCallback();
|
|
247
247
|
const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
|
|
248
|
+
const filteredActions = actions.filter((action) => action.available !== import_runtime_client_gql2.ActionInputAvailability.Disabled || !action.disabled).map((action) => {
|
|
249
|
+
let available = import_runtime_client_gql2.ActionInputAvailability.Enabled;
|
|
250
|
+
if (action.disabled) {
|
|
251
|
+
available = import_runtime_client_gql2.ActionInputAvailability.Disabled;
|
|
252
|
+
} else if (action.available === "disabled") {
|
|
253
|
+
available = import_runtime_client_gql2.ActionInputAvailability.Disabled;
|
|
254
|
+
} else if (action.available === "remote") {
|
|
255
|
+
available = import_runtime_client_gql2.ActionInputAvailability.Remote;
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
name: action.name,
|
|
259
|
+
description: action.description || "",
|
|
260
|
+
jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters || [])),
|
|
261
|
+
available
|
|
262
|
+
};
|
|
263
|
+
});
|
|
264
|
+
const isAgentRun = agentSessionRef.current !== null;
|
|
248
265
|
const stream = runtimeClient.asStream(
|
|
249
266
|
runtimeClient.generateCopilotResponse({
|
|
250
267
|
data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
|
|
251
268
|
frontend: {
|
|
252
|
-
actions:
|
|
253
|
-
(action) => action.available !== import_runtime_client_gql2.ActionInputAvailability.Disabled || !action.disabled
|
|
254
|
-
).map((action) => {
|
|
255
|
-
let available = import_runtime_client_gql2.ActionInputAvailability.Enabled;
|
|
256
|
-
if (action.disabled) {
|
|
257
|
-
available = import_runtime_client_gql2.ActionInputAvailability.Disabled;
|
|
258
|
-
} else if (action.available === "disabled") {
|
|
259
|
-
available = import_runtime_client_gql2.ActionInputAvailability.Disabled;
|
|
260
|
-
} else if (action.available === "remote") {
|
|
261
|
-
available = import_runtime_client_gql2.ActionInputAvailability.Remote;
|
|
262
|
-
}
|
|
263
|
-
return {
|
|
264
|
-
name: action.name,
|
|
265
|
-
description: action.description || "",
|
|
266
|
-
jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters || [])),
|
|
267
|
-
available
|
|
268
|
-
};
|
|
269
|
-
}),
|
|
269
|
+
actions: filteredActions,
|
|
270
270
|
url: window.location.href
|
|
271
271
|
},
|
|
272
272
|
threadId: threadIdRef.current,
|
|
@@ -299,9 +299,10 @@ function useChat(options) {
|
|
|
299
299
|
);
|
|
300
300
|
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
301
301
|
const reader = stream.getReader();
|
|
302
|
-
let actionResults = {};
|
|
303
302
|
let executedCoAgentStateRenders = [];
|
|
304
303
|
let followUp = void 0;
|
|
304
|
+
let messages2 = [];
|
|
305
|
+
let syncedMessages = [];
|
|
305
306
|
try {
|
|
306
307
|
while (true) {
|
|
307
308
|
let done, value;
|
|
@@ -320,7 +321,7 @@ function useChat(options) {
|
|
|
320
321
|
}
|
|
321
322
|
threadIdRef.current = value.generateCopilotResponse.threadId || null;
|
|
322
323
|
runIdRef.current = value.generateCopilotResponse.runId || null;
|
|
323
|
-
|
|
324
|
+
messages2 = (0, import_runtime_client_gql2.convertGqlOutputToMessages)(
|
|
324
325
|
(0, import_runtime_client_gql2.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
|
|
325
326
|
);
|
|
326
327
|
if (messages2.length === 0) {
|
|
@@ -334,39 +335,11 @@ function useChat(options) {
|
|
|
334
335
|
content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
|
|
335
336
|
})
|
|
336
337
|
];
|
|
338
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
339
|
+
break;
|
|
337
340
|
} else {
|
|
341
|
+
newMessages = [...messages2];
|
|
338
342
|
for (const message of messages2) {
|
|
339
|
-
newMessages.push(message);
|
|
340
|
-
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
|
|
341
|
-
if (!(message.id in actionResults)) {
|
|
342
|
-
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
343
|
-
break;
|
|
344
|
-
}
|
|
345
|
-
try {
|
|
346
|
-
setMessages([...previousMessages, ...newMessages]);
|
|
347
|
-
const action = actions.find((action2) => action2.name === message.name);
|
|
348
|
-
if (action) {
|
|
349
|
-
followUp = action.followUp;
|
|
350
|
-
}
|
|
351
|
-
const result = yield onFunctionCall({
|
|
352
|
-
messages: previousMessages,
|
|
353
|
-
name: message.name,
|
|
354
|
-
args: message.arguments
|
|
355
|
-
});
|
|
356
|
-
actionResults[message.id] = result;
|
|
357
|
-
} catch (e) {
|
|
358
|
-
actionResults[message.id] = `Failed to execute action ${message.name}`;
|
|
359
|
-
console.error(`Failed to execute action ${message.name}: ${e}`);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
newMessages.push(
|
|
363
|
-
new import_runtime_client_gql2.ResultMessage({
|
|
364
|
-
result: import_runtime_client_gql2.ResultMessage.encodeResult(actionResults[message.id]),
|
|
365
|
-
actionExecutionId: message.id,
|
|
366
|
-
actionName: message.name
|
|
367
|
-
})
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
343
|
if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
|
|
371
344
|
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
372
345
|
break;
|
|
@@ -381,6 +354,11 @@ function useChat(options) {
|
|
|
381
354
|
}
|
|
382
355
|
const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
|
|
383
356
|
if (lastAgentStateMessage) {
|
|
357
|
+
if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
|
|
358
|
+
syncedMessages = (0, import_runtime_client_gql2.loadMessagesFromJsonRepresentation)(
|
|
359
|
+
lastAgentStateMessage.state.messages
|
|
360
|
+
);
|
|
361
|
+
}
|
|
384
362
|
setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
385
363
|
[lastAgentStateMessage.agentName]: {
|
|
386
364
|
name: lastAgentStateMessage.agentName,
|
|
@@ -407,14 +385,52 @@ function useChat(options) {
|
|
|
407
385
|
setMessages([...previousMessages, ...newMessages]);
|
|
408
386
|
}
|
|
409
387
|
}
|
|
388
|
+
const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
|
|
389
|
+
let didExecuteAction = false;
|
|
390
|
+
if (onFunctionCall) {
|
|
391
|
+
const lastMessages = [];
|
|
392
|
+
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
393
|
+
const message = finalMessages[i];
|
|
394
|
+
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending) {
|
|
395
|
+
lastMessages.unshift(message);
|
|
396
|
+
} else {
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
for (const message of lastMessages) {
|
|
401
|
+
setMessages(finalMessages);
|
|
402
|
+
const action = actions.find((action2) => action2.name === message.name);
|
|
403
|
+
if (action) {
|
|
404
|
+
followUp = action.followUp;
|
|
405
|
+
const result = yield onFunctionCall({
|
|
406
|
+
messages: finalMessages,
|
|
407
|
+
name: message.name,
|
|
408
|
+
args: message.arguments
|
|
409
|
+
});
|
|
410
|
+
didExecuteAction = true;
|
|
411
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === message.id);
|
|
412
|
+
finalMessages.splice(
|
|
413
|
+
messageIndex + 1,
|
|
414
|
+
0,
|
|
415
|
+
new import_runtime_client_gql2.ResultMessage({
|
|
416
|
+
id: "result-" + message.id,
|
|
417
|
+
result: import_runtime_client_gql2.ResultMessage.encodeResult(result),
|
|
418
|
+
actionExecutionId: message.id,
|
|
419
|
+
actionName: message.name
|
|
420
|
+
})
|
|
421
|
+
);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
setMessages(finalMessages);
|
|
425
|
+
}
|
|
410
426
|
if (
|
|
411
427
|
// if followUp is not explicitly false
|
|
412
|
-
followUp !== false && //
|
|
413
|
-
(
|
|
414
|
-
|
|
428
|
+
followUp !== false && // and we executed an action
|
|
429
|
+
(didExecuteAction || // the last message is a server side result
|
|
430
|
+
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage())
|
|
415
431
|
) {
|
|
416
432
|
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
417
|
-
return yield runChatCompletionRef.current(
|
|
433
|
+
return yield runChatCompletionRef.current(finalMessages);
|
|
418
434
|
} else {
|
|
419
435
|
return newMessages.slice();
|
|
420
436
|
}
|
|
@@ -457,6 +473,23 @@ function useChat(options) {
|
|
|
457
473
|
runChatCompletion: () => runChatCompletionRef.current(messages)
|
|
458
474
|
};
|
|
459
475
|
}
|
|
476
|
+
function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
477
|
+
const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
|
|
478
|
+
if (syncedMessages.length > 0) {
|
|
479
|
+
const messagesWithAgentState = [...previousMessages, ...newMessages];
|
|
480
|
+
let previousMessageId = void 0;
|
|
481
|
+
for (const message of messagesWithAgentState) {
|
|
482
|
+
if (message.isAgentStateMessage()) {
|
|
483
|
+
const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
|
|
484
|
+
if (index !== -1) {
|
|
485
|
+
finalMessages.splice(index + 1, 0, message);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
previousMessageId = message.id;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
return finalMessages;
|
|
492
|
+
}
|
|
460
493
|
|
|
461
494
|
// src/components/copilot-provider/copilotkit.tsx
|
|
462
495
|
var import_react6 = require("react");
|