/** * Generation Handler Module * * Handles text generation execution, result formatting, and tool information extraction. * Extracted from BaseProvider to follow Single Responsibility Principle. * * Responsibilities: * - Generation execution with AI SDK * - Tool information extraction * - Result formatting and enhancement * - Response analysis and logging * * @module core/modules/GenerationHandler */ import type { AIProviderName, EnhancedGenerateResult, NeuroLinkEvents, StandardRecord, TextGenerationOptions, TypedEventEmitter } from "../../types/index.js"; import type { LanguageModel, ModelMessage, Tool } from "../../types/index.js"; import { generateText } from "../../utils/generation.js"; /** * GenerationHandler class - Handles text generation operations for AI providers */ export declare class GenerationHandler { private readonly providerName; private readonly modelName; private readonly supportsToolsFn; private readonly getTelemetryConfigFn; private readonly handleToolStorageFn; private readonly getEmitterFn?; constructor(providerName: AIProviderName, modelName: string, supportsToolsFn: () => boolean, getTelemetryConfigFn: (options: TextGenerationOptions, type: string) => { isEnabled: boolean; functionId?: string; metadata?: Record; } | undefined, handleToolStorageFn: (toolCalls: unknown[], toolResults: unknown[], options: TextGenerationOptions, timestamp: Date) => Promise, getEmitterFn?: (() => TypedEventEmitter | undefined) | undefined); /** * Helper method to call generateText with optional structured output * @private */ private callGenerateText; /** * Execute the generation with AI SDK */ executeGeneration(model: LanguageModel, messages: ModelMessage[], tools: Record, options: TextGenerationOptions): Promise>>; /** * Extract cache metrics from provider metadata (e.g. Anthropic's providerMetadata.anthropic) * The AI SDK's LanguageModelUsage only has inputTokens/outputTokens. * Cache metrics are surfaced via providerMetadata by provider-specific SDK adapters. */ private extractCacheMetricsFromProviderMetadata; /** * Log generation completion information */ logGenerationComplete(generateResult: Awaited>): void; /** * Extract tool information from generation result */ extractToolInformation(generateResult: Awaited>): { toolsUsed: string[]; toolExecutions: Array<{ name: string; input: StandardRecord; output: unknown; }>; }; /** * Format the enhanced result */ formatEnhancedResult(generateResult: Awaited>, tools: Record, toolsUsed: string[], toolExecutions: Array<{ name: string; input: StandardRecord; output: unknown; }>, options: TextGenerationOptions): EnhancedGenerateResult; /** * Analyze AI response structure and log detailed debugging information */ analyzeAIResponse(result: Record): void; }