@debugmcp/mcp-debugger
Version:
Run-time step-through debugging for LLM agents.
87 lines (86 loc) • 3.31 kB
TypeScript
/**
* Mock Debug Adapter implementation for testing
*
* Provides a fully functional debug adapter that simulates debugging
* without requiring external dependencies.
*
* @since 2.0.0
*/
import { EventEmitter } from 'events';
import { DebugProtocol } from '@vscode/debugprotocol';
import { IDebugAdapter, AdapterState, ValidationResult, DependencyInfo, AdapterCommand, AdapterConfig, GenericLaunchConfig, LanguageSpecificLaunchConfig, DebugFeature, FeatureRequirement, AdapterCapabilities } from '../debug-adapter-interface.js';
import { DebugLanguage } from '../../session/models.js';
import { AdapterDependencies } from '../adapter-registry-interface.js';
/**
* Mock adapter configuration
*/
export interface MockAdapterConfig {
defaultDelay?: number;
connectionDelay?: number;
stepDelay?: number;
supportedFeatures?: DebugFeature[];
maxVariableDepth?: number;
maxArrayLength?: number;
errorProbability?: number;
errorScenarios?: MockErrorScenario[];
cpuIntensive?: boolean;
memoryIntensive?: boolean;
}
/**
* Mock error scenarios
*/
export declare enum MockErrorScenario {
NONE = "none",
EXECUTABLE_NOT_FOUND = "executable_not_found",
ADAPTER_CRASH = "adapter_crash",
CONNECTION_TIMEOUT = "connection_timeout",
INVALID_BREAKPOINT = "invalid_breakpoint",
SCRIPT_ERROR = "script_error",
OUT_OF_MEMORY = "out_of_memory"
}
/**
* Mock debug adapter implementation
*/
export declare class MockDebugAdapter extends EventEmitter implements IDebugAdapter {
readonly language = DebugLanguage.MOCK;
readonly name = "Mock Debug Adapter";
private state;
private config;
private dependencies;
private currentThreadId;
private connected;
private errorScenario;
constructor(dependencies: AdapterDependencies, config?: MockAdapterConfig);
initialize(): Promise<void>;
dispose(): Promise<void>;
getState(): AdapterState;
isReady(): boolean;
getCurrentThreadId(): number | null;
private transitionTo;
validateEnvironment(): Promise<ValidationResult>;
getRequiredDependencies(): DependencyInfo[];
resolveExecutablePath(preferredPath?: string): Promise<string>;
getDefaultExecutableName(): string;
getExecutableSearchPaths(): string[];
buildAdapterCommand(config: AdapterConfig): AdapterCommand;
getAdapterModuleName(): string;
getAdapterInstallCommand(): string;
transformLaunchConfig(config: GenericLaunchConfig): LanguageSpecificLaunchConfig;
getDefaultLaunchConfig(): Partial<GenericLaunchConfig>;
sendDapRequest<T extends DebugProtocol.Response>(command: string, args?: unknown): Promise<T>;
handleDapEvent(event: DebugProtocol.Event): void;
handleDapResponse(_response: DebugProtocol.Response): void;
connect(host: string, port: number): Promise<void>;
disconnect(): Promise<void>;
isConnected(): boolean;
getInstallationInstructions(): string;
getMissingExecutableError(): string;
translateErrorMessage(error: Error): string;
supportsFeature(feature: DebugFeature): boolean;
getFeatureRequirements(feature: DebugFeature): FeatureRequirement[];
getCapabilities(): AdapterCapabilities;
/**
* Set error scenario for testing
*/
setErrorScenario(scenario: MockErrorScenario): void;
}