/** * QA360 Code Generator * * Generates test code using LLM providers. * Orchestrates prompt building and LLM calls. */ import { type OllamaConfig } from '../ai/index.js'; import type { TestSpec, GenerationSource, GeneratedTest, GenerationContext } from './types.js'; export type { GenerationSource, GeneratedTest }; export interface GenerationResult { success: boolean; tests: GeneratedTest[]; errors?: string[]; warnings?: string[]; metadata: { duration: number; model: string; tokensUsed: number; }; } /** * Code generator options */ export interface CodeGeneratorOptions { /** * LLM provider configuration */ ollama?: OllamaConfig; /** * Model to use */ model?: string; /** * Temperature for generation (0-1) */ temperature?: number; /** * Maximum tokens to generate */ maxTokens?: number; /** * Timeout for LLM generation in milliseconds (default: 30000) */ timeout?: number; /** * Format the generated code */ formatCode?: boolean; /** * Optimize generated tests */ optimize?: boolean; /** * Output directory for generated files */ outputDir?: string; /** * Prompt builder options */ promptOptions?: { includeComments?: boolean; includeDetailedAssertions?: boolean; includeRetryLogic?: boolean; codeStyle?: 'clean' | 'verbose' | 'concise'; }; } /** * Generated test (internal) */ export interface GeneratedTestInternal extends GeneratedTest { rawCode?: string; } /** * Code Generator class */ export declare class CodeGenerator { private readonly provider; private readonly formatter; private readonly options; private readonly defaultOptions; constructor(options?: CodeGeneratorOptions); /** * Generate tests from a source */ generateFromSource(source: GenerationSource, context: Partial): Promise; /** * Wrap a promise with timeout * Throws QA360TimeoutError on timeout */ private withTimeout; /** * Generate tests from OpenAPI spec */ generateFromOpenAPI(specPath: string, context?: Partial): Promise; /** * Generate tests from HAR file */ generateFromHAR(filePath: string, context?: Partial): Promise; /** * Generate tests from URL */ generateFromUrl(url: string, context?: Partial): Promise; /** * Generate tests from spec */ generateFromSpec(spec: TestSpec, context?: Partial): Promise; /** * Generate tests from description */ generateFromDescription(description: string, context?: Partial): Promise; /** * Generate tests from code */ generateFromCode(code: string, language: string, context?: Partial): Promise; /** * Extract code from LLM response * Handles markdown code blocks and plain code */ private extractCode; /** * Parse generated tests into separate files */ private parseGeneratedTests; /** * Summarize code */ private summarizeCode; /** * Get file path for generated test */ private getFilePath; /** * Check if generator is available */ isAvailable(): Promise; /** * List available models */ listModels(): Promise; } /** * Convenience function to generate tests */ export declare function generateTests(source: GenerationSource, options?: CodeGeneratorOptions): Promise;