import { ModelConfigKey, ValidatedOllamaModelConfig } from '../../shared/config/models.config'; import { BaseAIRequest, BaseAIResult } from '../../shared/types/base-request.types'; import { ModelParameterOverrides } from '../../services/model-parameter-manager/model-parameter-manager.service'; /** * Base abstract class for all AI use cases * Provides common functionality and enforces configuration for each use case * TPrompt: The type of prompt data (string, object, etc.) * TRequest: The request type (must extend BaseAIRequest) * TResult: The result type (must extend BaseAIResult) */ export declare abstract class BaseAIUseCase = BaseAIRequest, TResult extends BaseAIResult = BaseAIResult> { /** * The system message defines the behavior and instructions for the AI model * Must be defined by each specific use case */ protected abstract readonly systemMessage: string; /** * Default model configuration key to use across all use cases * Can be overridden by specific use cases if needed */ protected static readonly DEFAULT_MODEL_CONFIG_KEY: ModelConfigKey; /** * The model configuration key to use for this specific use case * If not overridden, uses the default model config key */ protected get modelConfigKey(): ModelConfigKey; /** * Get the model configuration for this use case * Returns validated config with guaranteed model name */ protected get modelConfig(): ValidatedOllamaModelConfig; /** * Creates a user message from the prompt * Override in child classes for custom formatting */ protected formatUserMessage(prompt: any): string; /** * Abstract method that each use case MUST implement * Returns the specific template function for the use case * This enforces the message pattern: each use case should have a corresponding message file */ protected abstract getUserTemplate(): (formattedPrompt: string) => string; /** * Override model parameters for this specific use case * Override this method in child classes to customize parameters * @returns Parameter overrides to apply to the default model configuration */ protected getParameterOverrides(): ModelParameterOverrides; /** * Execute the AI use case * @param request The request parameters * @returns The result of the AI processing */ execute(request: TRequest): Promise; /** * Process the raw AI response using the modern Recipe System * Can be overridden by specific use cases if special processing is needed */ protected processResponse(response: string): Promise<{ cleanedJson: string; thinking: string; }>; /** * Create the result object * This is a template method to be implemented by specific use cases * @param content The processed content to use for the result * @param usedPrompt The formatted prompt that was used * @param thinking Optional thinking content from the model */ protected abstract createResult(content: string, usedPrompt: string, thinking?: string): TResult; } //# sourceMappingURL=base-ai.usecase.d.ts.map