@juspay/neurolink
Version:
Universal AI Development Platform with external MCP server integration, multi-provider support, and professional CLI. Connect to 65+ MCP servers for filesystem, GitHub, database operations, and more. Build, test, and deploy AI applications with 9 major pr
165 lines (164 loc) • 5.29 kB
TypeScript
/**
* NeuroLink MCP Context Management System
* Unified context creation and management for all tool executions
* Ensures rich context flows through tool chain with session tracking
*/
import type { NeuroLinkExecutionContext } from './factory.js';
/**
* Context creation request interface
*/
export interface ContextRequest {
sessionId?: string;
userId?: string;
aiProvider?: string;
modelId?: string;
temperature?: number;
maxTokens?: number;
organizationId?: string;
projectId?: string;
environmentType?: 'development' | 'staging' | 'production';
frameworkType?: 'react' | 'vue' | 'svelte' | 'next' | 'nuxt' | 'sveltekit';
permissions?: string[];
securityLevel?: 'public' | 'private' | 'organization';
[key: string]: any;
}
/**
* Context manager for creating and managing execution contexts
* Provides rich context for all tool executions with session tracking
*/
export declare class ContextManager {
private sessionCounter;
private activeContexts;
/**
* Create a new execution context with rich information
*
* @param request Context creation request with optional fields
* @returns Complete execution context ready for tool chain
*/
createContext(request?: ContextRequest): NeuroLinkExecutionContext;
/**
* Add a tool to the execution chain
*
* @param context Execution context to modify
* @param toolName Name of the tool being executed
*/
addToToolChain(context: NeuroLinkExecutionContext, toolName: string): void;
/**
* Get the current tool chain for a context
*
* @param context Execution context
* @returns Array of tool names in execution order
*/
getToolChain(context: NeuroLinkExecutionContext): string[];
/**
* Set parent tool for nested tool execution
*
* @param context Execution context to modify
* @param parentToolId ID of the parent tool
*/
setParentTool(context: NeuroLinkExecutionContext, parentToolId: string): void;
/**
* Create child context for nested tool execution
*
* @param parentContext Parent execution context
* @param childToolName Name of the child tool
* @returns New child context with inherited properties
*/
createChildContext(parentContext: NeuroLinkExecutionContext, childToolName: string): NeuroLinkExecutionContext;
/**
* Get context by session ID
*
* @param sessionId Session identifier
* @returns Execution context or undefined if not found
*/
getContext(sessionId: string): NeuroLinkExecutionContext | undefined;
/**
* Update context with new information
*
* @param sessionId Session identifier
* @param updates Partial context updates
*/
updateContext(sessionId: string, updates: Partial<NeuroLinkExecutionContext>): void;
/**
* Remove context from active tracking
*
* @param sessionId Session identifier
*/
removeContext(sessionId: string): void;
/**
* Get all active contexts (for debugging/monitoring)
*
* @returns Array of all active contexts
*/
getActiveContexts(): NeuroLinkExecutionContext[];
/**
* Clear all active contexts
*/
clearAllContexts(): void;
/**
* Get context statistics
*
* @returns Context usage statistics
*/
getStats(): {
activeContexts: number;
totalSessionsCreated: number;
averageToolChainLength: number;
};
/**
* Generate unique session ID
*
* @returns Unique session identifier
*/
private generateSessionId;
/**
* Extract custom fields from request (excluding known fields)
*
* @param request Context creation request
* @returns Custom fields object
*/
private extractCustomFields;
}
/**
* Default context manager instance
* Can be used across the application for consistent context management
*/
export declare const defaultContextManager: ContextManager;
/**
* Utility function to create context with defaults
*
* @param request Optional context request
* @returns Execution context with sensible defaults
*/
export declare function createExecutionContext(request?: ContextRequest): NeuroLinkExecutionContext;
/**
* Utility function to add tool to default context manager
*
* @param context Execution context
* @param toolName Tool name to add
*/
export declare function addToolToChain(context: NeuroLinkExecutionContext, toolName: string): void;
/**
* Context validation utilities
*/
export declare class ContextValidator {
/**
* Validate context has required fields for tool execution
*
* @param context Execution context to validate
* @returns Validation result with details
*/
static validateContext(context: NeuroLinkExecutionContext): {
isValid: boolean;
errors: string[];
warnings: string[];
};
/**
* Validate context permissions for tool execution
*
* @param context Execution context
* @param requiredPermissions Permissions required by tool
* @returns Whether context has required permissions
*/
static hasPermissions(context: NeuroLinkExecutionContext, requiredPermissions: string[]): boolean;
}