@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
76 lines (75 loc) • 3.25 kB
TypeScript
/**
* 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 { LanguageModel, ModelMessage, Tool } from "ai";
import { generateText } from "ai";
import type { AIProviderName, EnhancedGenerateResult, NeuroLinkEvents, StandardRecord, TextGenerationOptions, TypedEventEmitter } from "../../types/index.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<string, string | number | boolean>;
} | undefined, handleToolStorageFn: (toolCalls: unknown[], toolResults: unknown[], options: TextGenerationOptions, timestamp: Date) => Promise<void>, getEmitterFn?: (() => TypedEventEmitter<NeuroLinkEvents> | 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<string, Tool>, options: TextGenerationOptions): Promise<Awaited<ReturnType<typeof generateText>>>;
/**
* 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<ReturnType<typeof generateText>>): void;
/**
* Extract tool information from generation result
*/
extractToolInformation(generateResult: Awaited<ReturnType<typeof generateText>>): {
toolsUsed: string[];
toolExecutions: Array<{
name: string;
input: StandardRecord;
output: unknown;
}>;
};
/**
* Format the enhanced result
*/
formatEnhancedResult(generateResult: Awaited<ReturnType<typeof generateText>>, tools: Record<string, Tool>, 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<string, unknown>): void;
}