import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common'; import type { RoutingCriteria } from '@mosaic/types'; import { AuthGuard } from '../auth/auth.guard.js'; import { ProviderService } from './provider.service.js'; import { RoutingService } from './routing.service.js'; @Controller('api/providers') @UseGuards(AuthGuard) export class ProvidersController { constructor( private readonly providerService: ProviderService, private readonly routingService: RoutingService, ) {} @Get() list() { return this.providerService.listProviders(); } @Get('models') listModels() { return this.providerService.listAvailableModels(); } @Post('route') route(@Body() criteria: RoutingCriteria) { return this.routingService.route(criteria); } @Post('rank') rank(@Body() criteria: RoutingCriteria) { return this.routingService.rank(criteria); } }