@ai-capabilities-suite/mcp-debugger-core
Version:
Core debugging engine for Node.js and TypeScript applications. Provides Inspector Protocol integration, breakpoint management, variable inspection, execution control, profiling, hang detection, and source map support.
155 lines (154 loc) • 3.81 kB
TypeScript
/**
* Session event types for recording
*/
export declare enum SessionEventType {
SESSION_START = "session_start",
SESSION_END = "session_end",
BREAKPOINT_SET = "breakpoint_set",
BREAKPOINT_HIT = "breakpoint_hit",
BREAKPOINT_REMOVED = "breakpoint_removed",
STEP_OVER = "step_over",
STEP_INTO = "step_into",
STEP_OUT = "step_out",
CONTINUE = "continue",
PAUSE = "pause",
VARIABLE_INSPECT = "variable_inspect",
EXPRESSION_EVALUATE = "expression_evaluate",
STACK_TRACE = "stack_trace",
ERROR = "error"
}
/**
* Session event for recording
*/
export interface SessionEvent {
type: SessionEventType;
timestamp: number;
sessionId: string;
data?: Record<string, any>;
masked?: boolean;
}
/**
* Session recording metadata
*/
export interface SessionRecordingMetadata {
sessionId: string;
startTime: number;
endTime?: number;
duration?: number;
eventCount: number;
privacyMode: PrivacyMode;
}
/**
* Complete session recording
*/
export interface SessionRecording {
metadata: SessionRecordingMetadata;
events: SessionEvent[];
}
/**
* Privacy mode for session recording
*/
export declare enum PrivacyMode {
FULL = "full",// Record everything
MASKED = "masked",// Mask sensitive data
MINIMAL = "minimal",// Only record event types and timestamps
DISABLED = "disabled"
}
/**
* Storage configuration for recordings
*/
export interface StorageConfig {
maxRecordings: number;
maxEventsPerRecording: number;
retentionDays: number;
}
/**
* Session recorder for advanced observability
* Records debugging session events for replay and analysis
*/
export declare class SessionRecorder {
private recordings;
private metadata;
private privacyMode;
private storageConfig;
private sensitivePatterns;
constructor(privacyMode?: PrivacyMode, storageConfig?: Partial<StorageConfig>);
/**
* Start recording a session
*/
startRecording(sessionId: string): void;
/**
* Stop recording a session
*/
stopRecording(sessionId: string): void;
/**
* Check if data contains sensitive information
*/
private containsSensitiveData;
/**
* Mask sensitive data in event data
*/
private maskSensitiveData;
/**
* Process event data based on privacy mode
*/
private processEventData;
/**
* Record an event
*/
recordEvent(sessionId: string, type: SessionEventType, data: Record<string, any>): void;
/**
* Get recording for a session
*/
getRecording(sessionId: string): SessionRecording | undefined;
/**
* Get all recordings
*/
getAllRecordings(): SessionRecording[];
/**
* Delete a recording
*/
deleteRecording(sessionId: string): boolean;
/**
* Clear old recordings based on retention policy
*/
pruneOldRecordings(): number;
/**
* Enforce recording limit
*/
enforceRecordingLimit(): number;
/**
* Export recording as JSON
*/
exportRecording(sessionId: string): string | undefined;
/**
* Import recording from JSON
*/
importRecording(json: string): boolean;
/**
* Get recording statistics
*/
getStatistics(): {
totalRecordings: number;
totalEvents: number;
oldestRecording?: number;
newestRecording?: number;
averageEventsPerRecording: number;
};
/**
* Set privacy mode
*/
setPrivacyMode(mode: PrivacyMode): void;
/**
* Get current privacy mode
*/
getPrivacyMode(): PrivacyMode;
/**
* Add custom sensitive pattern
*/
addSensitivePattern(pattern: RegExp): void;
/**
* Clear all recordings
*/
clearAllRecordings(): void;
}