UNPKG

@debugmcp/mcp-debugger

Version:

Run-time step-through debugging for LLM agents.

87 lines (86 loc) 3.31 kB
/** * 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; }