39fcc04d78
- Updated logging statements across various modules to provide more structured and detailed information. - Changed log levels from info to debug for less critical messages to reduce log clutter. - Enhanced error logging to include relevant context such as agentId, sessionId, and model details. - Standardized log messages to follow a consistent format, improving readability and maintainability.
71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
import { createServer } from 'node:http'
|
|
|
|
import { agentService } from '../services/agents'
|
|
import { loggerService } from '../services/LoggerService'
|
|
import { app } from './app'
|
|
import { config } from './config'
|
|
|
|
const logger = loggerService.withContext('ApiServer')
|
|
|
|
export class ApiServer {
|
|
private server: ReturnType<typeof createServer> | null = null
|
|
|
|
async start(): Promise<void> {
|
|
if (this.server) {
|
|
logger.warn('Server already running')
|
|
return
|
|
}
|
|
|
|
// Load config
|
|
const { port, host } = await config.load()
|
|
|
|
// Initialize AgentService
|
|
logger.info('Initializing AgentService')
|
|
await agentService.initialize()
|
|
logger.info('AgentService initialized')
|
|
|
|
// Create server with Express app
|
|
this.server = createServer(app)
|
|
|
|
// Start server
|
|
return new Promise((resolve, reject) => {
|
|
this.server!.listen(port, host, () => {
|
|
logger.info('API server started', { host, port })
|
|
resolve()
|
|
})
|
|
|
|
this.server!.on('error', reject)
|
|
})
|
|
}
|
|
|
|
async stop(): Promise<void> {
|
|
if (!this.server) return
|
|
|
|
return new Promise((resolve) => {
|
|
this.server!.close(() => {
|
|
logger.info('API server stopped')
|
|
this.server = null
|
|
resolve()
|
|
})
|
|
})
|
|
}
|
|
|
|
async restart(): Promise<void> {
|
|
await this.stop()
|
|
await config.reload()
|
|
await this.start()
|
|
}
|
|
|
|
isRunning(): boolean {
|
|
const hasServer = this.server !== null
|
|
const isListening = this.server?.listening || false
|
|
const result = hasServer && isListening
|
|
|
|
logger.debug('isRunning check', { hasServer, isListening, result })
|
|
|
|
return result
|
|
}
|
|
}
|
|
|
|
export const apiServer = new ApiServer()
|