All files / src/platform/ai/providers mock-ai.provider.ts

0% Statements 0/12
100% Branches 0/0
0% Functions 0/4
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41                                                                                 
import { AiProvider } from '../interfaces/ai-provider.interface';
import { Logger } from '@nestjs/common';
 
/**
 * Mock AI provider for local development and test environments.
 * Returns deterministic fake responses without hitting any external API.
 */
export class MockAiProvider implements AiProvider {
  readonly providerKey = 'mock';
  private readonly logger = new Logger(MockAiProvider.name);
 
  async generateText(options: {
    model: string;
    userPrompt: string;
    systemPrompt?: string;
    maxTokens?: number;
  }): Promise<{ text: string; inputTokens: number; outputTokens: number }> {
    this.logger.log(
      `[Mock AI] generateText called with model: ${options.model}`,
    );
    const text = `[Mock AI Response] This is a simulated response for: "${options.userPrompt.slice(0, 80)}"`;
    return { text, inputTokens: 50, outputTokens: 30 };
  }
 
  async createEmbedding(options: {
    model: string;
    text: string;
  }): Promise<{ embedding: number[]; inputTokens: number }> {
    this.logger.log(`[Mock AI] createEmbedding called`);
    // Return a deterministic fake 1536-dimension embedding
    const embedding = Array.from({ length: 1536 }, (_, i) =>
      Math.sin(i * 0.01),
    );
    return { embedding, inputTokens: 10 };
  }
 
  async testConnection(): Promise<boolean> {
    return true;
  }
}