mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-20 15:10:59 +08:00
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:
parent
131444ac52
commit
8470e252d6
@ -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) {
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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')}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user