@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and
132 lines (131 loc) • 3.87 kB
TypeScript
import type { Tool } from "ai";
import type { ValidationSchema, StandardRecord } from "./typeAliases.js";
import type { AIProviderName, AnalyticsData, EvaluationData } from "../core/types.js";
/**
* Generate function options interface - Primary method for content generation
* Future-ready for multi-modal capabilities while maintaining text focus
*/
export interface GenerateOptions {
input: {
text: string;
};
output?: {
format?: "text" | "structured" | "json";
};
provider?: AIProviderName | string;
model?: string;
temperature?: number;
maxTokens?: number;
systemPrompt?: string;
schema?: ValidationSchema;
tools?: Record<string, Tool>;
timeout?: number | string;
disableTools?: boolean;
enableEvaluation?: boolean;
enableAnalytics?: boolean;
context?: StandardRecord;
evaluationDomain?: string;
toolUsageContext?: string;
conversationHistory?: Array<{
role: string;
content: string;
}>;
factoryConfig?: {
domainType?: string;
domainConfig?: StandardRecord;
enhancementType?: "domain-configuration" | "streaming-optimization" | "mcp-integration" | "legacy-migration" | "context-conversion";
preserveLegacyFields?: boolean;
validateDomainData?: boolean;
};
streaming?: {
enabled?: boolean;
chunkSize?: number;
bufferSize?: number;
enableProgress?: boolean;
fallbackToGenerate?: boolean;
};
}
/**
* Generate function result interface - Primary output format
* Future-ready for multi-modal outputs while maintaining text focus
*/
export interface GenerateResult {
content: string;
outputs?: {
text: string;
};
provider?: string;
model?: string;
usage?: {
inputTokens: number;
outputTokens: number;
totalTokens: number;
};
responseTime?: number;
toolCalls?: Array<{
toolCallId: string;
toolName: string;
args: StandardRecord;
}>;
toolResults?: unknown[];
toolsUsed?: string[];
toolExecutions?: Array<{
name: string;
input: StandardRecord;
output: unknown;
}>;
enhancedWithTools?: boolean;
availableTools?: Array<{
name: string;
description: string;
parameters: StandardRecord;
}>;
analytics?: AnalyticsData;
evaluation?: EvaluationData;
factoryMetadata?: {
enhancementApplied: boolean;
enhancementType?: string;
domainType?: string;
processingTime?: number;
configurationUsed?: StandardRecord;
migrationPerformed?: boolean;
legacyFieldsPreserved?: boolean;
};
streamingMetadata?: {
streamingUsed: boolean;
fallbackToGenerate?: boolean;
chunkCount?: number;
streamingDuration?: number;
streamId?: string;
bufferOptimization?: boolean;
};
}
/**
* Unified options for both generation and streaming
* Supports factory patterns and domain configuration
*/
export interface UnifiedGenerationOptions extends GenerateOptions {
preferStreaming?: boolean;
streamingFallback?: boolean;
}
/**
* Enhanced provider interface with generate method
*/
export interface EnhancedProvider {
generate(options: GenerateOptions): Promise<GenerateResult>;
getName(): string;
isAvailable(): Promise<boolean>;
}
/**
* Factory-enhanced provider interface
* Supports domain configuration and streaming optimizations
*/
export interface FactoryEnhancedProvider extends EnhancedProvider {
generateWithFactory(options: UnifiedGenerationOptions): Promise<GenerateResult>;
getDomainSupport(): string[];
getStreamingCapabilities(): {
supportsStreaming: boolean;
maxChunkSize: number;
bufferOptimizations: boolean;
};
}