/** * HTTP Route Registration Orchestrator. * * Registers all domain-specific route handlers on a Fastify instance. * Each route file mirrors the corresponding IPC handler. */ import { createLogger } from '@shared/utils/logger'; import { registerConfigRoutes } from './config'; import { broadcastEvent, registerEventRoutes } from './events'; import { registerNotificationRoutes } from './notifications'; import { registerProjectRoutes } from './projects'; import { registerSearchRoutes } from './search'; import { registerSessionRoutes } from './sessions'; import { registerSshRoutes } from './ssh'; import { registerSubagentRoutes } from './subagents'; import { registerUpdaterRoutes } from './updater'; import { registerUtilityRoutes } from './utility'; import { registerValidationRoutes } from './validation'; import type { ChunkBuilder, DataCache, ProjectScanner, SessionParser, SubagentResolver, UpdaterService, } from '../services'; import type { SshConnectionManager } from '../services/infrastructure/SshConnectionManager'; import type { FastifyInstance } from 'fastify'; const logger = createLogger('HTTP:routes'); export interface HttpServices { projectScanner: ProjectScanner; sessionParser: SessionParser; subagentResolver: SubagentResolver; chunkBuilder: ChunkBuilder; dataCache: DataCache; updaterService: UpdaterService; sshConnectionManager: SshConnectionManager; } export function registerHttpRoutes( app: FastifyInstance, services: HttpServices, sshModeSwitchCallback: (mode: 'local' | 'ssh') => Promise ): void { registerProjectRoutes(app, services); registerSessionRoutes(app, services); registerSearchRoutes(app, services); registerSubagentRoutes(app, services); registerNotificationRoutes(app); registerConfigRoutes(app); registerValidationRoutes(app); registerUtilityRoutes(app); registerSshRoutes(app, services.sshConnectionManager, sshModeSwitchCallback); registerUpdaterRoutes(app, services); registerEventRoutes(app); logger.info('All HTTP routes registered'); } export { broadcastEvent };