From 8470e252d6cae65e4de3f4989968f9da9995c6bc Mon Sep 17 00:00:00 2001 From: defi-failure <159208748+defi-failure@users.noreply.github.com> Date: Fri, 17 Oct 2025 20:53:08 +0800 Subject: [PATCH] feat: auto-start API server when agents exist (#10772) * feat: auto-start API server when agents exist * fix: only display not running alert when enabled --- src/main/index.ts | 19 +++++++++++++++++-- src/renderer/src/hooks/agents/useAgents.ts | 3 ++- .../src/pages/home/Tabs/AssistantsTab.tsx | 4 ++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index da9736c2b..fa83dc72b 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -159,11 +159,26 @@ if (!app.requestSingleInstanceLock()) { logger.error('Failed to initialize Agent service:', error) } - // Start API server if enabled + // Start API server if enabled or if agents exist try { const config = await apiServerService.getCurrentConfig() logger.info('API server config:', config) - if (config.enabled) { + + // Check if there are any agents + let shouldStart = config.enabled + if (!shouldStart) { + try { + const { total } = await agentService.listAgents({ limit: 1 }) + if (total > 0) { + shouldStart = true + logger.info(`Detected ${total} agent(s), auto-starting API server`) + } + } catch (error: any) { + logger.warn('Failed to check agent count:', error) + } + } + + if (shouldStart) { await apiServerService.start() } } catch (error: any) { diff --git a/src/renderer/src/hooks/agents/useAgents.ts b/src/renderer/src/hooks/agents/useAgents.ts index 6af38228c..bf23c2c9c 100644 --- a/src/renderer/src/hooks/agents/useAgents.ts +++ b/src/renderer/src/hooks/agents/useAgents.ts @@ -26,7 +26,8 @@ export const useAgents = () => { const key = client.agentPaths.base const { apiServerConfig, apiServerRunning } = useApiServer() const fetcher = useCallback(async () => { - if (!apiServerConfig.enabled) { + // API server will start on startup if enabled OR there are agents + if (!apiServerConfig.enabled && !apiServerRunning) { throw new Error(t('apiServer.messages.notEnabled')) } if (!apiServerRunning) { diff --git a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx index af02796d7..dc272b869 100644 --- a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx @@ -101,7 +101,7 @@ const AssistantsTab: FC = (props) => { return ( - {!apiServerConfig.enabled && !iknow[ALERT_KEY] && ( + {!apiServerConfig.enabled && !apiServerRunning && !iknow[ALERT_KEY] && ( = (props) => { {apiServerConfig.enabled && !apiServerRunning && ( )} - {apiServerConfig.enabled && apiServerRunning && agentsError && ( + {apiServerRunning && agentsError && (