From 5d1b3383d764dbc6b4d588dc8d6b9e769c6228cf Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Mon, 6 Apr 2026 11:04:05 +0700 Subject: [PATCH] fix: only confirm archive when agent is running MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- packages/app/src/components/agent-list.tsx | 24 +++++++++++++++---- .../screens/workspace/workspace-screen.tsx | 24 ++++++++++++------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/packages/app/src/components/agent-list.tsx b/packages/app/src/components/agent-list.tsx index 1881b4ce4..f89ad51a3 100644 --- a/packages/app/src/components/agent-list.tsx +++ b/packages/app/src/components/agent-list.tsx @@ -261,9 +261,23 @@ export function AgentList({ [isActionSheetVisible, onAgentSelect], ); - const handleAgentLongPress = useCallback((agent: AggregatedAgent) => { - setActionAgent(agent); - }, []); + const handleAgentLongPress = useCallback( + (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(() => { setActionAgent(null); @@ -365,7 +379,9 @@ export function AgentList({ > - {isActionDaemonUnavailable ? "Host offline" : "Archive this session?"} + {isActionDaemonUnavailable + ? "Host offline" + : "This agent is still running. Archiving it will stop the agent."} (current === tabId ? null : current));