@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
337 lines (336 loc) • 8.48 kB
TypeScript
/**
* CLI-specific type definitions for NeuroLink
*/
import type { UnknownRecord, JsonValue } from "./common.js";
import type { AnalyticsData, EvaluationData, TokenUsage } from "./providers.js";
import type { ToolCall, ToolResult } from "./tools.js";
/**
* Base command arguments interface
*/
export interface BaseCommandArgs {
/** Enable debug output */
debug?: boolean;
/** Output format */
format?: "text" | "json" | "table" | "yaml";
/** Verbose output */
verbose?: boolean;
/** Quiet mode */
quiet?: boolean;
}
/**
* Generate command arguments
*/
export interface GenerateCommandArgs extends BaseCommandArgs {
/** Input text or prompt */
input?: string;
/** AI provider to use */
provider?: string;
/** Model name */
model?: string;
/** System prompt */
system?: string;
/** Temperature setting */
temperature?: number;
/** Maximum tokens */
maxTokens?: number;
/** Enable analytics */
analytics?: boolean;
/** Enable evaluation */
evaluation?: boolean;
/** Context data */
context?: string;
/** Disable tools */
disableTools?: boolean;
/** Maximum steps for multi-turn */
maxSteps?: number;
/** Output file */
output?: string;
}
/**
* Stream command arguments
*/
export interface StreamCommandArgs extends BaseCommandArgs {
/** Input text or prompt */
input?: string;
/** AI provider to use */
provider?: string;
/** Model name */
model?: string;
/** System prompt */
system?: string;
/** Temperature setting */
temperature?: number;
/** Maximum tokens */
maxTokens?: number;
/** Disable tools */
disableTools?: boolean;
}
/**
* MCP command arguments - Enhanced with transport and server management
*/
export interface MCPCommandArgs extends BaseCommandArgs {
/** MCP server name */
server?: string;
/** MCP server name (alias for server) */
serverName?: string;
/** Tool name to execute */
tool?: string;
/** Tool parameters as JSON string */
params?: string;
/** List available tools */
list?: boolean;
/** List only specific category */
listOnly?: boolean;
/** Discover MCP servers */
discover?: boolean;
/** Show server information */
info?: boolean;
/** Transport type for server connection */
transport?: "stdio" | "websocket" | "tcp" | "unix";
/** Server description */
description?: string;
/** Command/executable for stdio transport */
command?: string;
/** Arguments for server command */
args?: string[];
/** Environment variables for server (JSON string) */
env?: string;
/** Server URL for network transports */
url?: string;
/** Server name for add command */
name?: string;
/** Show detailed information */
detailed?: boolean;
/** Force operation without confirmation */
force?: boolean;
/** Auto install discovered servers */
autoInstall?: boolean;
/** Discovery source */
source?: string;
/** Connection timeout */
timeout?: number;
}
/**
* Models command arguments - Enhanced for model management
*/
export interface ModelsCommandArgs extends BaseCommandArgs {
/** AI provider to query */
provider?: string;
/** Model capability filter */
query?: string;
/** Model use case filter */
useCase?: string;
/** Require vision capability */
requireVision?: boolean;
/** Require function calling capability */
requireFunctionCalling?: boolean;
/** List all available models */
list?: boolean;
/** Show model statistics */
stats?: boolean;
/** Show model pricing */
pricing?: boolean;
/** Resolve best model for criteria */
resolve?: boolean;
/** Maximum cost filter */
maxCost?: number;
/** Maximum tokens filter */
maxTokens?: number;
}
/**
* Ollama command arguments
*/
export interface OllamaCommandArgs extends BaseCommandArgs {
/** Ollama model name */
model?: string;
/** List available models */
list?: boolean;
/** Pull a model */
pull?: boolean;
/** Remove a model */
remove?: boolean;
/** Show model information */
show?: boolean;
}
/**
* SageMaker command arguments
*/
export interface SageMakerCommandArgs extends BaseCommandArgs {
/** SageMaker endpoint name */
endpoint?: string;
/** Model name for the endpoint */
model?: string;
/** Test prompt for endpoint testing */
prompt?: string;
/** List endpoints */
list?: boolean;
/** Show configuration */
config?: boolean;
/** Setup configuration */
setup?: boolean;
/** Clear configuration cache */
clearCache?: boolean;
/** Run benchmark test */
benchmark?: boolean;
/** Duration for benchmark test (in seconds) */
duration?: number;
/** Concurrency level for benchmark */
concurrency?: number;
/** Number of requests for benchmark */
requests?: number;
/** Maximum tokens per request */
maxTokens?: number;
/** Validate endpoint configuration */
validate?: boolean;
/** AWS region override */
region?: string;
/** Force operation without confirmation */
force?: boolean;
}
/**
* Provider status command arguments
*/
export interface ProviderStatusArgs extends BaseCommandArgs {
/** Specific provider to check */
provider?: string;
/** Check all providers */
all?: boolean;
}
/**
* CLI command result
*/
export interface CommandResult {
/** Command success status */
success: boolean;
/** Result data */
data?: unknown;
/** Error message if failed */
error?: string;
/** Output content */
content?: string;
/** Execution metadata */
metadata?: {
executionTime?: number;
timestamp?: number;
command?: string;
};
}
/**
* Generate command result
*/
export interface GenerateResult extends CommandResult {
content: string;
provider?: string;
model?: string;
usage?: TokenUsage;
responseTime?: number;
toolCalls?: ToolCall[];
toolResults?: ToolResult[];
analytics?: AnalyticsData;
evaluation?: EvaluationData;
toolsUsed?: string[];
toolExecutions?: Array<{
toolName: string;
args: UnknownRecord;
result: unknown;
executionTime: number;
}>;
enhancedWithTools?: boolean;
availableTools?: Array<{
name: string;
description: string;
}>;
}
/**
* Stream result chunk
*/
export interface StreamChunk {
content?: string;
delta?: string;
done?: boolean;
metadata?: UnknownRecord;
}
/**
* CLI output formatting options
*/
export interface OutputOptions {
format: "text" | "json" | "table";
pretty?: boolean;
color?: boolean;
compact?: boolean;
}
/**
* Command handler function type
*/
export type CommandHandler<TArgs = BaseCommandArgs, TResult = CommandResult> = (args: TArgs) => Promise<TResult>;
/**
* Command definition
*/
export interface CommandDefinition<TArgs = BaseCommandArgs> {
name: string;
description: string;
aliases?: string[];
args?: {
[K in keyof TArgs]: {
type: "string" | "number" | "boolean";
description: string;
required?: boolean;
default?: TArgs[K];
};
};
handler: CommandHandler<TArgs>;
}
/**
* CLI context
*/
export interface CLIContext {
cwd: string;
args: string[];
env: NodeJS.ProcessEnv;
exitCode?: number;
}
/**
* Color mapping for CLI output
*/
export interface ColorMap {
[severity: string]: {
color: string;
symbol?: string;
};
}
/**
* Display severity colors (for evaluation display)
*/
export interface SeverityColors {
[key: string]: {
color: string;
symbol: string;
};
}
/**
* JSON output structure
*/
export interface JSONOutput {
success: boolean;
data?: JsonValue;
error?: string;
metadata?: {
timestamp: number;
command: string;
version?: string;
};
}
/**
* Console override for quiet mode
*/
export interface ConsoleOverride {
[method: string]: (() => void) | undefined;
}
/**
* Type guard for generate result
*/
export declare function isGenerateResult(value: unknown): value is GenerateResult;
/**
* Type guard for command result
*/
export declare function isCommandResult(value: unknown): value is CommandResult;