import { Global, Module } from '@nestjs/common'; import { AgentRuntimeProviderRegistry } from '@mosaicstack/agent'; import { AgentService } from './agent.service.js'; import { ProviderService } from './provider.service.js'; import { ProviderCredentialsService } from './provider-credentials.service.js'; import { RoutingService } from './routing.service.js'; import { RoutingEngineService } from './routing/routing-engine.service.js'; import { SkillLoaderService } from './skill-loader.service.js'; import { ProvidersController } from './providers.controller.js'; import { SessionsController } from './sessions.controller.js'; import { AgentConfigsController } from './agent-configs.controller.js'; import { RoutingController } from './routing/routing.controller.js'; import { CoordModule } from '../coord/coord.module.js'; import { McpClientModule } from '../mcp-client/mcp-client.module.js'; import { SkillsModule } from '../skills/skills.module.js'; import { GCModule } from '../gc/gc.module.js'; import { LogModule } from '../log/log.module.js'; import { AGENT_RUNTIME_PROVIDER_REGISTRY, DenyRuntimeApprovalVerifier, RUNTIME_APPROVAL_VERIFIER, RUNTIME_PROVIDER_AUDIT_SINK, RuntimeProviderAuditService, RuntimeProviderService, } from './runtime-provider-registry.service.js'; @Global() @Module({ imports: [CoordModule, McpClientModule, SkillsModule, GCModule, LogModule], providers: [ ProviderService, ProviderCredentialsService, RoutingService, RoutingEngineService, SkillLoaderService, { provide: AGENT_RUNTIME_PROVIDER_REGISTRY, useFactory: (): AgentRuntimeProviderRegistry => new AgentRuntimeProviderRegistry(), }, RuntimeProviderAuditService, { provide: RUNTIME_PROVIDER_AUDIT_SINK, useExisting: RuntimeProviderAuditService, }, DenyRuntimeApprovalVerifier, { provide: RUNTIME_APPROVAL_VERIFIER, useExisting: DenyRuntimeApprovalVerifier, }, RuntimeProviderService, AgentService, ], controllers: [ProvidersController, SessionsController, AgentConfigsController, RoutingController], exports: [ AgentService, ProviderService, ProviderCredentialsService, RoutingService, RoutingEngineService, SkillLoaderService, RuntimeProviderService, AGENT_RUNTIME_PROVIDER_REGISTRY, ], }) export class AgentModule {}