import { Body, Controller, Get, Logger, Param, Post, Put } from '@nestjs/common'; import { AiConfigService } from './ai-config.service'; import type { AiActorKey, AiConfig } from './ai.defaults'; // Mounted under /api/config alongside theme/widget/telephony/setup-state. // // GET /api/config/ai — full config (no secrets here, all safe to return) // PUT /api/config/ai — admin update (provider/model/temperature) // POST /api/config/ai/reset — reset entire config to defaults // PUT /api/config/ai/prompts/:actor — update one persona's system prompt template // POST /api/config/ai/prompts/:actor/reset — restore one persona to its default @Controller('api/config') export class AiConfigController { private readonly logger = new Logger(AiConfigController.name); constructor(private readonly ai: AiConfigService) {} @Get('ai') getAi() { return this.ai.getConfig(); } @Put('ai') updateAi(@Body() body: Partial) { this.logger.log('AI config update request'); return this.ai.updateConfig(body); } @Post('ai/reset') resetAi() { this.logger.log('AI config reset request'); return this.ai.resetConfig(); } @Put('ai/prompts/:actor') updatePrompt( @Param('actor') actor: AiActorKey, @Body() body: { template: string; editedBy?: string }, ) { this.logger.log(`AI prompt update for actor '${actor}'`); return this.ai.updatePrompt(actor, body.template, body.editedBy ?? null); } @Post('ai/prompts/:actor/reset') resetPrompt(@Param('actor') actor: AiActorKey) { this.logger.log(`AI prompt reset for actor '${actor}'`); return this.ai.resetPrompt(actor); } }