fix: only confirm archive when agent is running
Skip the confirmation dialog when archiving idle agents — archive immediately. Show a warning that the agent will be stopped only when it is running or initializing.
This commit is contained in:
@@ -261,9 +261,23 @@ export function AgentList({
|
|||||||
[isActionSheetVisible, onAgentSelect],
|
[isActionSheetVisible, onAgentSelect],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleAgentLongPress = useCallback((agent: AggregatedAgent) => {
|
const handleAgentLongPress = useCallback(
|
||||||
setActionAgent(agent);
|
(agent: AggregatedAgent) => {
|
||||||
}, []);
|
const isRunning = agent.status === "running" || agent.status === "initializing";
|
||||||
|
if (isRunning) {
|
||||||
|
setActionAgent(agent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const client = useSessionStore.getState().sessions[agent.serverId]?.client ?? null;
|
||||||
|
if (!client) {
|
||||||
|
setActionAgent(agent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
void client.archiveAgent(agent.id);
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
const handleCloseActionSheet = useCallback(() => {
|
const handleCloseActionSheet = useCallback(() => {
|
||||||
setActionAgent(null);
|
setActionAgent(null);
|
||||||
@@ -365,7 +379,9 @@ export function AgentList({
|
|||||||
>
|
>
|
||||||
<View style={styles.sheetHandle} />
|
<View style={styles.sheetHandle} />
|
||||||
<Text style={styles.sheetTitle}>
|
<Text style={styles.sheetTitle}>
|
||||||
{isActionDaemonUnavailable ? "Host offline" : "Archive this session?"}
|
{isActionDaemonUnavailable
|
||||||
|
? "Host offline"
|
||||||
|
: "This agent is still running. Archiving it will stop the agent."}
|
||||||
</Text>
|
</Text>
|
||||||
<View style={styles.sheetButtonRow}>
|
<View style={styles.sheetButtonRow}>
|
||||||
<Pressable
|
<Pressable
|
||||||
|
|||||||
@@ -1284,15 +1284,21 @@ function WorkspaceScreenContent({ serverId, workspaceId }: WorkspaceScreenProps)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const confirmed = await confirmDialog({
|
const agent =
|
||||||
title: "Archive agent?",
|
useSessionStore.getState().sessions[normalizedServerId]?.agents?.get(agentId) ?? null;
|
||||||
message: "This closes the tab and archives the agent.",
|
const isRunning = agent?.status === "running" || agent?.status === "initializing";
|
||||||
confirmLabel: "Archive",
|
|
||||||
cancelLabel: "Cancel",
|
if (isRunning) {
|
||||||
destructive: true,
|
const confirmed = await confirmDialog({
|
||||||
});
|
title: "Archive running agent?",
|
||||||
if (!confirmed) {
|
message: "This agent is still running. Archiving it will stop the agent and close the tab.",
|
||||||
return;
|
confirmLabel: "Archive",
|
||||||
|
cancelLabel: "Cancel",
|
||||||
|
destructive: true,
|
||||||
|
});
|
||||||
|
if (!confirmed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setHoveredTabKey((current) => (current === tabId ? null : current));
|
setHoveredTabKey((current) => (current === tabId ? null : current));
|
||||||
|
|||||||
Reference in New Issue
Block a user