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
This commit is contained in:
defi-failure 2025-10-17 20:53:08 +08:00 committed by GitHub
parent 131444ac52
commit 8470e252d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 5 deletions

View File

@ -159,11 +159,26 @@ if (!app.requestSingleInstanceLock()) {
logger.error('Failed to initialize Agent service:', error) logger.error('Failed to initialize Agent service:', error)
} }
// Start API server if enabled // Start API server if enabled or if agents exist
try { try {
const config = await apiServerService.getCurrentConfig() const config = await apiServerService.getCurrentConfig()
logger.info('API server config:', config) 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() await apiServerService.start()
} }
} catch (error: any) { } catch (error: any) {

View File

@ -26,7 +26,8 @@ export const useAgents = () => {
const key = client.agentPaths.base const key = client.agentPaths.base
const { apiServerConfig, apiServerRunning } = useApiServer() const { apiServerConfig, apiServerRunning } = useApiServer()
const fetcher = useCallback(async () => { 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')) throw new Error(t('apiServer.messages.notEnabled'))
} }
if (!apiServerRunning) { if (!apiServerRunning) {

View File

@ -101,7 +101,7 @@ const AssistantsTab: FC<AssistantsTabProps> = (props) => {
return ( return (
<Container className="assistants-tab" ref={containerRef}> <Container className="assistants-tab" ref={containerRef}>
{!apiServerConfig.enabled && !iknow[ALERT_KEY] && ( {!apiServerConfig.enabled && !apiServerRunning && !iknow[ALERT_KEY] && (
<Alert <Alert
color="warning" color="warning"
title={t('agent.warning.enable_server')} title={t('agent.warning.enable_server')}
@ -117,7 +117,7 @@ const AssistantsTab: FC<AssistantsTabProps> = (props) => {
{apiServerConfig.enabled && !apiServerRunning && ( {apiServerConfig.enabled && !apiServerRunning && (
<Alert color="danger" title={t('agent.server.error.not_running')} isClosable className="mb-2" /> <Alert color="danger" title={t('agent.server.error.not_running')} isClosable className="mb-2" />
)} )}
{apiServerConfig.enabled && apiServerRunning && agentsError && ( {apiServerRunning && agentsError && (
<Alert <Alert
color="danger" color="danger"
title={t('agent.list.error.failed')} title={t('agent.list.error.failed')}