@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
208 lines (207 loc) • 4.97 kB
TypeScript
/**
* Type definitions for NeuroLink GitHub Action
* @module actionTypes
*/
import type { AIProviderName } from "../constants/enums.js";
/**
* Provider API key configuration (verified providers only)
*/
export type ActionProviderKeys = {
openaiApiKey?: string;
anthropicApiKey?: string;
googleAiApiKey?: string;
azureOpenaiApiKey?: string;
azureOpenaiEndpoint?: string;
azureOpenaiDeployment?: string;
mistralApiKey?: string;
huggingfaceApiKey?: string;
openrouterApiKey?: string;
litellmApiKey?: string;
litellmBaseUrl?: string;
openaiCompatibleApiKey?: string;
openaiCompatibleBaseUrl?: string;
};
/**
* AWS credentials for Bedrock/SageMaker
*/
export type ActionAWSConfig = {
awsAccessKeyId?: string;
awsSecretAccessKey?: string;
awsRegion: string;
awsSessionToken?: string;
bedrockModelId?: string;
sagemakerEndpoint?: string;
};
/**
* Google Cloud configuration for Vertex AI
*/
export type ActionGoogleCloudConfig = {
googleVertexProject?: string;
googleVertexLocation: string;
googleApplicationCredentials?: string;
};
/**
* Extended thinking configuration
*/
export type ActionThinkingConfig = {
enabled: boolean;
level: "minimal" | "low" | "medium" | "high";
budget: number;
};
/**
* Multimodal input paths
*/
export type ActionMultimodalInputs = {
imagePaths?: string[];
pdfPaths?: string[];
csvPaths?: string[];
videoPaths?: string[];
};
/**
* Complete action inputs parsed from GitHub Action
*/
export type ActionInputs = {
prompt: string;
provider: AIProviderName | "auto";
model?: string;
temperature: number;
maxTokens: number;
systemPrompt?: string;
command: "generate" | "stream" | "batch";
providerKeys: ActionProviderKeys;
awsConfig: ActionAWSConfig;
googleCloudConfig: ActionGoogleCloudConfig;
multimodal: ActionMultimodalInputs;
thinking: ActionThinkingConfig;
enableAnalytics: boolean;
enableEvaluation: boolean;
outputFormat: "text" | "json";
outputFile?: string;
enableTools: boolean;
mcpConfigPath?: string;
postComment: boolean;
updateExistingComment: boolean;
commentTag: string;
githubToken?: string;
timeout: number;
debug: boolean;
neurolinkVersion: string;
workingDirectory: string;
};
/**
* Raw CLI token usage format (actual CLI output)
*/
export type CliTokenUsage = {
input: number;
output: number;
total: number;
cacheCreationTokens?: number;
cacheReadTokens?: number;
};
/**
* Raw CLI analytics format (actual CLI output)
*/
export type CliAnalytics = {
provider: string;
model?: string;
tokenUsage: CliTokenUsage;
requestDuration: number;
timestamp: string;
cost?: number;
};
/**
* Raw CLI evaluation format (actual CLI output, 1-10 scale)
*/
export type CliEvaluation = {
relevance: number;
accuracy: number;
completeness: number;
overall: number;
isOffTopic: boolean;
reasoning: string;
};
/**
* Raw CLI response format (actual output structure)
*/
export type CliResponse = {
content: string;
provider?: string;
model?: string;
usage?: CliTokenUsage;
responseTime?: number;
analytics?: CliAnalytics;
evaluation?: CliEvaluation;
};
/**
* Normalized token usage for action output
*/
export type ActionTokenUsage = {
promptTokens: number;
completionTokens: number;
totalTokens: number;
};
/**
* Normalized evaluation for action output
*/
export type ActionEvaluation = {
overallScore: number;
relevance: number;
accuracy: number;
completeness: number;
};
/**
* CLI execution result (normalized)
*/
export type ActionExecutionResult = {
success: boolean;
response: string;
responseJson?: Record<string, unknown>;
provider?: string;
model?: string;
usage?: ActionTokenUsage;
cost?: number;
executionTime?: number;
evaluation?: ActionEvaluation;
error?: string;
};
/**
* GitHub comment posting result
*/
export type ActionCommentResult = {
success: boolean;
commentId?: number;
commentUrl?: string;
error?: string;
};
/**
* Complete action output (snake_case to match action.yml outputs)
*/
export type ActionOutput = {
response: string;
response_json: string;
provider?: string;
model?: string;
tokens_used?: string;
prompt_tokens?: string;
completion_tokens?: string;
cost?: string;
execution_time?: string;
evaluation_score?: string;
comment_id?: string;
};
/**
* Input validation result
*/
export type ActionInputValidation = {
valid: boolean;
errors: string[];
warnings: string[];
};
/**
* Provider key validation mapping
*/
export type ProviderKeyMapping = {
[K in AIProviderName]?: (keyof ActionProviderKeys)[];
};
/** Provider-to-required-keys map used by actionInputs.ts. */
export type ProviderKeyMap = Record<string, string[]>;