@agent-native/core 0.23.0 → 0.24.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/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +5 -6
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/run-manager.d.ts +9 -2
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +9 -2
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +101 -9
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +4 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +51 -15
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +2 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +70 -10
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +157 -2
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +6 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +9 -2
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts +3 -0
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +23 -4
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-chat-threads.spec.js +59 -0
- package/dist/client/use-chat-threads.spec.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +112 -2
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +37 -2
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/schema.d.ts +275 -0
- package/dist/extensions/schema.d.ts.map +1 -1
- package/dist/extensions/schema.js +53 -1
- package/dist/extensions/schema.js.map +1 -1
- package/dist/extensions/store.d.ts +40 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +367 -3
- package/dist/extensions/store.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +4 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +6 -2
- package/dist/server/auth.js.map +1 -1
- package/docs/content/extensions.md +5 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat-adapter.d.ts","sourceRoot":"","sources":["../../src/client/agent-chat-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-chat-adapter.d.ts","sourceRoot":"","sources":["../../src/client/agent-chat-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAgBhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,oBAAoB;AAC9B;;;;GAIG;AACD,KAAK;AACP,0EAA0E;GACxE,WAAW,CAAC;AAmzBhB;;;;GAIG;AACH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;KAAE,CAAC;IACrD,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3D,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,gBAAgB,CAg/BnB"}
|
|
@@ -220,6 +220,36 @@ function messageTextForHistory(message) {
|
|
|
220
220
|
.filter((part) => !!part && part.trim().length > 0);
|
|
221
221
|
return truncateForHistory([text, ...attachments].filter((part) => part.trim()).join("\n\n"), MAX_HISTORY_MESSAGE_CHARS, "Message");
|
|
222
222
|
}
|
|
223
|
+
const RECOVERY_USER_MESSAGE_PREFIXES = [
|
|
224
|
+
"Continue from where you left off",
|
|
225
|
+
"Continue from where you stopped",
|
|
226
|
+
"Retry the previous request from a clean approach",
|
|
227
|
+
];
|
|
228
|
+
function recoveryActionFromMessage(message) {
|
|
229
|
+
const meta = message?.metadata;
|
|
230
|
+
const action = meta?.custom?.agentNativeRecoveryAction;
|
|
231
|
+
return action === "continue" || action === "retry" ? action : null;
|
|
232
|
+
}
|
|
233
|
+
function isRecoveryUserMessage(message) {
|
|
234
|
+
if (recoveryActionFromMessage(message))
|
|
235
|
+
return true;
|
|
236
|
+
const text = messageTextFromContentRaw(message.content).trim();
|
|
237
|
+
return RECOVERY_USER_MESSAGE_PREFIXES.some((prefix) => text.startsWith(prefix));
|
|
238
|
+
}
|
|
239
|
+
function latestUserMessage(messages, options) {
|
|
240
|
+
const start = typeof options?.beforeIndex === "number"
|
|
241
|
+
? Math.min(options.beforeIndex, messages.length)
|
|
242
|
+
: messages.length;
|
|
243
|
+
for (let i = start - 1; i >= 0; i--) {
|
|
244
|
+
const message = messages[i];
|
|
245
|
+
if (message.role !== "user")
|
|
246
|
+
continue;
|
|
247
|
+
if (options?.skipRecovery && isRecoveryUserMessage(message))
|
|
248
|
+
continue;
|
|
249
|
+
return message;
|
|
250
|
+
}
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
223
253
|
function isToolCallContentPart(part) {
|
|
224
254
|
return Boolean(part && typeof part === "object" && part.type === "tool-call");
|
|
225
255
|
}
|
|
@@ -391,10 +421,19 @@ function hasContinuationProgress(content) {
|
|
|
391
421
|
? part.text.trim().length > 0
|
|
392
422
|
: part.result !== undefined);
|
|
393
423
|
}
|
|
424
|
+
function lastActivityTool(trail) {
|
|
425
|
+
for (let i = trail.length - 1; i >= 0; i--) {
|
|
426
|
+
const tool = trail[i]?.tool?.trim();
|
|
427
|
+
if (tool)
|
|
428
|
+
return tool;
|
|
429
|
+
}
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
394
432
|
function snapshotContent(content) {
|
|
395
433
|
return content.map((part) => part.type === "text" ? { ...part } : { ...part, args: { ...part.args } });
|
|
396
434
|
}
|
|
397
435
|
function autoContinueMessage(signal) {
|
|
436
|
+
const tool = lastActivityTool(signal.activityTrail);
|
|
398
437
|
const reason = signal.reason === "loop_limit"
|
|
399
438
|
? "The previous run reached an internal step budget."
|
|
400
439
|
: signal.reason === "stale_run"
|
|
@@ -404,7 +443,10 @@ function autoContinueMessage(signal) {
|
|
|
404
443
|
: signal.reason === "stream_ended"
|
|
405
444
|
? "The previous stream ended before the agent sent a final completion signal."
|
|
406
445
|
: "The previous run reached an internal execution budget.";
|
|
407
|
-
|
|
446
|
+
const actionInputNote = signal.reason === "run_timeout" && tool
|
|
447
|
+
? `\n\nThe previous run timed out while preparing the \`${tool}\` action input before the action could run. Avoid spending another whole run assembling one large tool payload. If this is \`create-extension\`, create a compact working v1 first, then use focused \`update-extension\` edits for refinements.`
|
|
448
|
+
: "";
|
|
449
|
+
return `${AUTO_CONTINUE_PROMPT}\n\nInternal note: ${reason}${actionInputNote}`;
|
|
408
450
|
}
|
|
409
451
|
function delay(ms, abortSignal) {
|
|
410
452
|
if (abortSignal.aborted)
|
|
@@ -602,13 +644,27 @@ export function createAgentChatAdapter(options) {
|
|
|
602
644
|
return {
|
|
603
645
|
async *run({ messages, abortSignal, runConfig }) {
|
|
604
646
|
// Extract latest user message and build history from prior messages
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
647
|
+
const adapterMessages = messages;
|
|
648
|
+
const latestUserIndex = (() => {
|
|
649
|
+
for (let i = adapterMessages.length - 1; i >= 0; i--) {
|
|
650
|
+
if (adapterMessages[i].role === "user")
|
|
651
|
+
return i;
|
|
610
652
|
}
|
|
611
|
-
|
|
653
|
+
return -1;
|
|
654
|
+
})();
|
|
655
|
+
const latestUserMsg = latestUserIndex >= 0 ? adapterMessages[latestUserIndex] : undefined;
|
|
656
|
+
const latestUserIsRecovery = latestUserMsg
|
|
657
|
+
? isRecoveryUserMessage(latestUserMsg)
|
|
658
|
+
: false;
|
|
659
|
+
const lastUserMsg = latestUserIsRecovery && latestUserIndex >= 0
|
|
660
|
+
? (latestUserMessage(adapterMessages, {
|
|
661
|
+
skipRecovery: true,
|
|
662
|
+
beforeIndex: latestUserIndex,
|
|
663
|
+
}) ?? latestUserMsg)
|
|
664
|
+
: latestUserMsg;
|
|
665
|
+
const recoveryMessageText = latestUserIsRecovery && latestUserMsg
|
|
666
|
+
? messageTextFromContentRaw(latestUserMsg.content)
|
|
667
|
+
: "";
|
|
612
668
|
const rawMessageText = lastUserMsg?.content
|
|
613
669
|
.filter((p) => p.type === "text")
|
|
614
670
|
.map((p) => p.text)
|
|
@@ -649,7 +705,7 @@ export function createAgentChatAdapter(options) {
|
|
|
649
705
|
const userMessageText = rawMessageText.trim() || attachments.length === 0
|
|
650
706
|
? rawMessageText
|
|
651
707
|
: "Use the attached context.";
|
|
652
|
-
const priorMessages = limitPriorMessagesForRequest(messages.slice(0, -1)); // exclude latest user message and cap resend size
|
|
708
|
+
const priorMessages = limitPriorMessagesForRequest(messages.slice(0, latestUserIndex >= 0 ? latestUserIndex : -1)); // exclude latest user/recovery message and cap resend size
|
|
653
709
|
const history = priorMessages
|
|
654
710
|
.filter((m) => m.role === "user" || m.role === "assistant")
|
|
655
711
|
.map((m) => ({
|
|
@@ -670,7 +726,7 @@ export function createAgentChatAdapter(options) {
|
|
|
670
726
|
const toolCallCounter = { value: 0 };
|
|
671
727
|
let runId = null;
|
|
672
728
|
let lastSeq = -1;
|
|
673
|
-
let currentMessageText = normalizeMentions(userMessageText);
|
|
729
|
+
let currentMessageText = normalizeMentions(recoveryMessageText.trim() || userMessageText);
|
|
674
730
|
let currentHistory = history;
|
|
675
731
|
let currentStructuredHistory = structuredHistory;
|
|
676
732
|
let includeAttachments = attachments.length > 0;
|
|
@@ -934,7 +990,11 @@ export function createAgentChatAdapter(options) {
|
|
|
934
990
|
}
|
|
935
991
|
else {
|
|
936
992
|
totalTransientContinuationAttempts += 1;
|
|
937
|
-
|
|
993
|
+
const madeActivityProgress = signal.activityTrail.length > 0 ||
|
|
994
|
+
Boolean(lastActivityTool(signal.activityTrail));
|
|
995
|
+
if (!madeVisibleProgress &&
|
|
996
|
+
signal.reason === "run_timeout" &&
|
|
997
|
+
!madeActivityProgress) {
|
|
938
998
|
return { ok: false, resetVisibleContent: false };
|
|
939
999
|
}
|
|
940
1000
|
if (!madeVisibleProgress) {
|