xpeditis2.0/apps/backend/src/application/mcp/mcp.module.ts
David 177b70ea96 feat(api): registre de capacites et serveur MCP
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:54 +02:00

39 lines
1.4 KiB
TypeScript

import { Module } from '@nestjs/common';
import { TRADE_RETRIEVAL, TRADE_EMBEDDINGS } from '@domain/ports/out/trade-assistant.port';
import { OpenAiEmbeddingAdapter } from '@infrastructure/ai/openai-embedding.adapter';
import { WikiRetriever } from '@infrastructure/ai/wiki-retriever';
import { CsvRateModule } from '@infrastructure/carriers/csv-loader/csv-rate.module';
import { AuditModule } from '../audit/audit.module';
import { CsvBookingsModule } from '../csv-bookings/csv-bookings.module';
import { OrganizationsModule } from '../organizations/organizations.module';
import { SubscriptionsModule } from '../subscriptions/subscriptions.module';
import { UsersModule } from '../users/users.module';
import { CapabilityRegistry } from './capability.registry';
import { McpController } from './mcp.controller';
/**
* Serveur MCP et registre de capacites.
*
* Le module n'apporte aucune logique metier : il assemble des services deja
* exposes ailleurs. C'est le point de la conception — les agents passent par
* les memes chemins que l'interface.
*/
@Module({
imports: [
CsvRateModule,
CsvBookingsModule,
SubscriptionsModule,
UsersModule,
OrganizationsModule,
AuditModule,
],
controllers: [McpController],
providers: [
CapabilityRegistry,
{ provide: TRADE_EMBEDDINGS, useClass: OpenAiEmbeddingAdapter },
{ provide: TRADE_RETRIEVAL, useClass: WikiRetriever },
],
exports: [CapabilityRegistry],
})
export class McpModule {}