@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
201 lines (200 loc) • 7.68 kB
TypeScript
/**
* Parameter Validation Utilities
* Provides consistent parameter validation across all tool interfaces
*/
import type { AIProviderName } from "../constants/enums.js";
import type { GenerateOptions, VideoOutputOptions, EnhancedValidationResult, PPTOutputOptions, StringArray, ValidationSchema } from "../types/index.js";
import { type NeuroLinkError } from "./errorHandling.js";
/**
* Custom error class for parameter validation failures
* Provides detailed information about validation errors including field context and suggestions
*/
export declare class ValidationError extends Error {
field?: string | undefined;
code?: string | undefined;
suggestions?: StringArray | undefined;
/**
* Creates a new ValidationError
* @param message - Human-readable error message
* @param field - Name of the field that failed validation (optional)
* @param code - Error code for programmatic handling (optional)
* @param suggestions - Array of suggested fixes (optional)
*/
constructor(message: string, field?: string | undefined, code?: string | undefined, suggestions?: StringArray | undefined);
}
/**
* Validate that a string parameter is present and non-empty
*/
export declare function validateRequiredString(value: unknown, fieldName: string, minLength?: number): ValidationError | null;
/**
* Validate that a number parameter is within acceptable range
*/
export declare function validateNumberRange(value: unknown, fieldName: string, min: number, max: number, required?: boolean): ValidationError | null;
/**
* Validate that a function parameter is async and has correct signature
*/
export declare function validateAsyncFunction(value: unknown, fieldName: string, expectedParams?: StringArray): ValidationError | null;
/**
* Validate object structure with required properties
*/
export declare function validateObjectStructure(value: unknown, fieldName: string, requiredProperties: StringArray, optionalProperties?: StringArray): ValidationError | null;
/**
* Validate tool name according to naming conventions
*/
export declare function validateToolName(name: unknown): ValidationError | null;
/**
* Validate tool description for clarity and usefulness
*/
export declare function validateToolDescription(description: unknown): ValidationError | null;
/**
* Validate MCP tool structure comprehensively
*/
export declare function validateMCPTool(tool: unknown): EnhancedValidationResult;
/**
* Validate text generation options
*/
export declare function validateTextGenerationOptions(options: unknown): EnhancedValidationResult;
/**
* Validate stream options
*/
export declare function validateStreamOptions(options: unknown): EnhancedValidationResult;
/**
* Validate generate options (unified interface)
*/
export declare function validateGenerateOptions(options: unknown): EnhancedValidationResult;
/**
* Validate tool execution parameters
*/
export declare function validateToolExecutionParams(toolName: string, params: unknown, expectedSchema?: ValidationSchema): EnhancedValidationResult;
/**
* Validate multiple tools at once
*/
export declare function validateToolBatch(tools: Record<string, unknown>): {
isValid: boolean;
validTools: string[];
invalidTools: string[];
results: Record<string, EnhancedValidationResult>;
};
/**
* Validate video output options (resolution, length, aspect ratio, audio)
*
* @param options - VideoOutputOptions to validate
* @returns NeuroLinkError if invalid, null if valid
*
* @example
* ```typescript
* const error = validateVideoOutputOptions({ resolution: "4K", length: 10 });
* // error.code === "INVALID_VIDEO_RESOLUTION"
* ```
*/
export declare function validateVideoOutputOptions(options: VideoOutputOptions): NeuroLinkError | null;
/**
* Validate image input for video generation
*
* Checks image format (magic bytes) and size constraints.
* Supports JPEG, PNG, and WebP formats.
*
* @param image - Image buffer to validate
* @param maxSize - Maximum allowed size in bytes (default: 10MB)
* @returns NeuroLinkError if invalid, null if valid
*
* @example
* ```typescript
* const imageBuffer = readFileSync("product.jpg");
* const error = validateImageForVideo(imageBuffer);
* if (error) throw error;
* ```
*/
export declare function validateImageForVideo(image: Buffer | string, maxSize?: number): NeuroLinkError | null;
/**
* Validate complete video generation input
*
* Validates all requirements for video generation:
* - output.mode must be "video"
* - Must have exactly one input image
* - Prompt must be within length limits
* - Video output options must be valid
*
* @param options - GenerateOptions to validate for video generation
* @returns EnhancedValidationResult with errors, warnings, and suggestions
*
* @example
* ```typescript
* const validation = validateVideoGenerationInput({
* input: { text: "Product showcase video", images: [imageBuffer] },
* output: { mode: "video", video: { resolution: "1080p" } }
* });
* if (!validation.isValid) {
* console.error(validation.errors);
* }
* ```
*/
export declare function validateVideoGenerationInput(options: GenerateOptions): EnhancedValidationResult;
/**
* Validate Director Mode input: segments, transition prompts, and durations.
*
* @param options - GenerateOptions with input.segments and output.director
* @returns EnhancedValidationResult with errors, warnings, and suggestions
*/
export declare function validateDirectorModeInput(options: GenerateOptions): EnhancedValidationResult;
export declare const MIN_PPT_PAGES = 5;
export declare const MAX_PPT_PAGES = 50;
export declare const MIN_PPT_PROMPT_LENGTH = 10;
export declare const MAX_PPT_PROMPT_LENGTH = 1000;
/**
* Validate PPT output options (pages, theme, audience, tone, etc.)
*
* @param options - PPTOutputOptions to validate
* @returns NeuroLinkError if invalid, null if valid
*
* @example
* ```typescript
* const error = validatePPTOutputOptions({ pages: 100, theme: "invalid" });
* // error.code === "INVALID_PPT_PAGES"
* ```
*/
export declare function validatePPTOutputOptions(options: PPTOutputOptions): NeuroLinkError | null;
/**
* Validate PPT provider (supports vertex, openai, azure, anthropic, google-ai, bedrock)
*
* @param provider - Provider name to validate
* @returns NeuroLinkError if invalid, null if valid
*
* @example
* ```typescript
* const error = validatePPTProvider("unsupported-provider");
* // error.code === "INVALID_PPT_PROVIDER"
* ```
*/
export declare function validatePPTProvider(provider: AIProviderName | string): NeuroLinkError | null;
/**
* Validate complete PPT generation input
*
* Validates all requirements for presentation generation:
* - output.mode must be "ppt"
* - Prompt must be within length limits
* - PPT output options must be valid
*
* @param options - GenerateOptions to validate for PPT generation
* @returns EnhancedValidationResult with errors, warnings, and suggestions
*
* @example
* ```typescript
* const validation = validatePPTGenerationInput({
* input: { text: "Introducing Our New Product" },
* output: { mode: "ppt", ppt: { pages: 10, theme: "modern" } }
* });
* if (!validation.isValid) {
* console.error(validation.errors);
* }
* ```
*/
export declare function validatePPTGenerationInput(options: GenerateOptions): EnhancedValidationResult;
/**
* Create a validation error summary for logging
*/
export declare function createValidationSummary(result: EnhancedValidationResult): string;
/**
* Check if validation result has only warnings (no errors)
*/
export declare function hasOnlyWarnings(result: EnhancedValidationResult): boolean;