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)
}
// 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) {

View File

@ -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) {

View File

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