@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
|
@@ -5,6 +5,7 @@ import { type AgentDynamicSuggestionsOption } from "./dynamic-suggestions.js";
|
|
|
5
5
|
import type { ReasoningEffort } from "../shared/reasoning-effort.js";
|
|
6
6
|
import type { ChatThreadScope, ChatThreadSnapshot } from "./use-chat-threads.js";
|
|
7
7
|
import type { AgentComposerLayoutVariant } from "./composer/types.js";
|
|
8
|
+
export type AgentRecoveryAction = "continue" | "retry";
|
|
8
9
|
export declare function displayableUserMessageText(text: string): string;
|
|
9
10
|
export declare function isAssistantUiStaleIndexError(error: unknown): boolean;
|
|
10
11
|
type AssistantUiStaleIndexErrorBoundaryProps = {
|
|
@@ -29,9 +30,12 @@ export declare function AssistantMessageListErrorBoundary({ resetKey, children,
|
|
|
29
30
|
resetKey: string;
|
|
30
31
|
children: React.ReactNode;
|
|
31
32
|
}): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function latestNonRecoveryUserMessageText(messages: readonly unknown[]): string;
|
|
32
34
|
export interface AssistantChatHandle {
|
|
33
35
|
/** Programmatically send a message into this chat */
|
|
34
36
|
sendMessage(text: string, images?: string[]): void;
|
|
37
|
+
/** Programmatically send a recovery prompt without replacing the original request. */
|
|
38
|
+
sendRecoveryMessage(text: string, recoveryAction: AgentRecoveryAction, images?: string[]): void;
|
|
35
39
|
/** Queue a message to send after the current run finishes */
|
|
36
40
|
queueMessage(text: string, images?: string[]): void;
|
|
37
41
|
/** Whether the chat is currently running */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAEV,gBAAgB,EAEhB,yBAAyB,EAI1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AA4C/B,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -179,7 +179,7 @@ function createAgentImageAttachments(images) {
|
|
|
179
179
|
};
|
|
180
180
|
});
|
|
181
181
|
}
|
|
182
|
-
function createUserMessageRunConfig(references, requestMode) {
|
|
182
|
+
function createUserMessageRunConfig(references, requestMode, recoveryAction) {
|
|
183
183
|
const custom = {};
|
|
184
184
|
if (references && references.length > 0) {
|
|
185
185
|
custom.references = references;
|
|
@@ -187,7 +187,16 @@ function createUserMessageRunConfig(references, requestMode) {
|
|
|
187
187
|
if (requestMode) {
|
|
188
188
|
custom.requestMode = requestMode;
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
const options = {};
|
|
191
|
+
if (Object.keys(custom).length > 0) {
|
|
192
|
+
options.runConfig = { custom };
|
|
193
|
+
}
|
|
194
|
+
if (recoveryAction) {
|
|
195
|
+
options.metadata = {
|
|
196
|
+
custom: { agentNativeRecoveryAction: recoveryAction },
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return options;
|
|
191
200
|
}
|
|
192
201
|
function escapeQueuedAttachmentAttribute(value) {
|
|
193
202
|
return value.replace(/&/g, "&").replace(/"/g, """);
|
|
@@ -1570,6 +1579,35 @@ function getMessageText(message) {
|
|
|
1570
1579
|
}
|
|
1571
1580
|
return typeof content === "string" ? content.trim() : "";
|
|
1572
1581
|
}
|
|
1582
|
+
const RECOVERY_USER_MESSAGE_PREFIXES = [
|
|
1583
|
+
"Continue from where you left off",
|
|
1584
|
+
"Continue from where you stopped",
|
|
1585
|
+
"Retry the previous request from a clean approach",
|
|
1586
|
+
];
|
|
1587
|
+
function getRecoveryActionMetadata(message) {
|
|
1588
|
+
const meta = message?.metadata;
|
|
1589
|
+
const action = meta?.custom?.agentNativeRecoveryAction;
|
|
1590
|
+
return action === "continue" || action === "retry" ? action : null;
|
|
1591
|
+
}
|
|
1592
|
+
function isRecoveryUserMessage(message) {
|
|
1593
|
+
if (getRecoveryActionMetadata(message))
|
|
1594
|
+
return true;
|
|
1595
|
+
const text = getMessageText(message);
|
|
1596
|
+
return RECOVERY_USER_MESSAGE_PREFIXES.some((prefix) => text.startsWith(prefix));
|
|
1597
|
+
}
|
|
1598
|
+
export function latestNonRecoveryUserMessageText(messages) {
|
|
1599
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
1600
|
+
const message = messages[i];
|
|
1601
|
+
if (message?.role !== "user")
|
|
1602
|
+
continue;
|
|
1603
|
+
if (isRecoveryUserMessage(message))
|
|
1604
|
+
continue;
|
|
1605
|
+
const text = getMessageText(message);
|
|
1606
|
+
if (text)
|
|
1607
|
+
return text;
|
|
1608
|
+
}
|
|
1609
|
+
return "";
|
|
1610
|
+
}
|
|
1573
1611
|
function RunErrorRecoveryCard({ info, onContinue, onRetry, onFork, onDismiss, }) {
|
|
1574
1612
|
const [detailsOpen, setDetailsOpen] = useState(false);
|
|
1575
1613
|
const [copied, setCopied] = useState(false);
|
|
@@ -2646,7 +2684,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2646
2684
|
...(messageAttachments.length > 0
|
|
2647
2685
|
? { attachments: messageAttachments }
|
|
2648
2686
|
: {}),
|
|
2649
|
-
...createUserMessageRunConfig(next.references, next.requestMode),
|
|
2687
|
+
...createUserMessageRunConfig(next.references, next.requestMode, next.recoveryAction),
|
|
2650
2688
|
});
|
|
2651
2689
|
})();
|
|
2652
2690
|
}, 100);
|
|
@@ -2742,7 +2780,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2742
2780
|
threadId,
|
|
2743
2781
|
threadRuntime,
|
|
2744
2782
|
]);
|
|
2745
|
-
const addToQueue = useCallback(async (text, images, references, attachments, requestMode, intent = "queued") => {
|
|
2783
|
+
const addToQueue = useCallback(async (text, images, references, attachments, requestMode, intent = "queued", recoveryAction) => {
|
|
2746
2784
|
materializeFrozenReconnectContent();
|
|
2747
2785
|
setShowContinue(false);
|
|
2748
2786
|
setLoopLimitInfo(null);
|
|
@@ -2788,6 +2826,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2788
2826
|
attachments: messageAttachments.length > 0 ? messageAttachments : undefined,
|
|
2789
2827
|
references,
|
|
2790
2828
|
requestMode: effectiveRequestMode,
|
|
2829
|
+
recoveryAction,
|
|
2791
2830
|
},
|
|
2792
2831
|
]);
|
|
2793
2832
|
}
|
|
@@ -2798,7 +2837,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2798
2837
|
...(messageAttachments.length > 0
|
|
2799
2838
|
? { attachments: messageAttachments }
|
|
2800
2839
|
: {}),
|
|
2801
|
-
...createUserMessageRunConfig(references, effectiveRequestMode),
|
|
2840
|
+
...createUserMessageRunConfig(references, effectiveRequestMode, recoveryAction),
|
|
2802
2841
|
});
|
|
2803
2842
|
}
|
|
2804
2843
|
}, [execMode, isRunning, materializeFrozenReconnectContent, threadRuntime]);
|
|
@@ -2807,6 +2846,9 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2807
2846
|
sendMessage(text, images) {
|
|
2808
2847
|
addToQueue(text, images);
|
|
2809
2848
|
},
|
|
2849
|
+
sendRecoveryMessage(text, recoveryAction, images) {
|
|
2850
|
+
addToQueue(text, images, undefined, undefined, undefined, "queued", recoveryAction);
|
|
2851
|
+
},
|
|
2810
2852
|
queueMessage(text, images) {
|
|
2811
2853
|
addToQueue(text, images);
|
|
2812
2854
|
},
|
|
@@ -2884,13 +2926,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2884
2926
|
return null;
|
|
2885
2927
|
return getRunErrorMetadata(last);
|
|
2886
2928
|
}, [messages]);
|
|
2887
|
-
const lastUserText = useMemo(() =>
|
|
2888
|
-
for (let i = messages.length - 1; i >= 0; i--) {
|
|
2889
|
-
if (messages[i]?.role === "user")
|
|
2890
|
-
return getMessageText(messages[i]);
|
|
2891
|
-
}
|
|
2892
|
-
return "";
|
|
2893
|
-
}, [messages]);
|
|
2929
|
+
const lastUserText = useMemo(() => latestNonRecoveryUserMessageText(messages), [messages]);
|
|
2894
2930
|
const latestMessage = messages[messages.length - 1];
|
|
2895
2931
|
const latestMessageRole = latestMessage?.role;
|
|
2896
2932
|
const latestAssistantWasPlan = latestMessageRole === "assistant" &&
|
|
@@ -2967,15 +3003,15 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2967
3003
|
} }) }), missingApiKey && (_jsx(BuilderSetupCard, { onConnected: handleBuilderConnected, bouncePulse: missingKeyBouncePulse })), visibleLoopLimit && !showRunningInUI && (_jsx(LoopLimitContinueCard, { info: visibleLoopLimit, onContinue: () => {
|
|
2968
3004
|
setShowContinue(false);
|
|
2969
3005
|
setLoopLimitInfo(null);
|
|
2970
|
-
addToQueue("Continue from where you left off.");
|
|
3006
|
+
addToQueue("Continue from where you left off.", undefined, undefined, undefined, undefined, "queued", "continue");
|
|
2971
3007
|
} })), shouldShowRunError && visibleRunError && (_jsx(RunErrorRecoveryCard, { info: visibleRunError, onContinue: () => {
|
|
2972
3008
|
setRunErrorInfo(null);
|
|
2973
|
-
addToQueue("Continue from where you stopped. Use the partial work above, verify what succeeded, and finish the original request. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. Prefer dedicated app actions over raw database edits when they exist.");
|
|
3009
|
+
addToQueue("Continue from where you stopped. Use the partial work above, verify what succeeded, and finish the original request. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. Prefer dedicated app actions over raw database edits when they exist.", undefined, undefined, undefined, undefined, "queued", "continue");
|
|
2974
3010
|
}, onRetry: () => {
|
|
2975
3011
|
setRunErrorInfo(null);
|
|
2976
3012
|
addToQueue(lastUserText
|
|
2977
3013
|
? `Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.\n\nOriginal request:\n\n${lastUserText}`
|
|
2978
|
-
: "Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.");
|
|
3014
|
+
: "Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.", undefined, undefined, undefined, undefined, "queued", "retry");
|
|
2979
3015
|
}, onFork: onForkChat, onDismiss: () => {
|
|
2980
3016
|
if (visibleRunErrorKey) {
|
|
2981
3017
|
setDismissedRunErrorKey(visibleRunErrorKey);
|