@jupyterlab/debugger
Version: 
JupyterLab - Debugger Extension
922 lines (921 loc) • 30.4 kB
TypeScript
import { CodeEditor, CodeEditorWrapper } from '@jupyterlab/codeeditor';
import { KernelMessage, Session } from '@jupyterlab/services';
import { ISharedText } from '@jupyter/ydoc';
import { ReadonlyJSONObject, Token } from '@lumino/coreutils';
import { IDisposable, IObservableDisposable } from '@lumino/disposable';
import { ISignal, Signal } from '@lumino/signaling';
import { Panel } from '@lumino/widgets';
import { DebugProtocol } from '@vscode/debugprotocol';
import { DebuggerHandler } from './handler';
/**
 * An interface describing an application's visual debugger.
 */
export interface IDebugger {
    /**
     * Signal emitted for debug event messages.
     */
    readonly eventMessage: ISignal<IDebugger, IDebugger.ISession.Event>;
    /**
     * Whether the current debugger is started.
     */
    readonly isStarted: boolean;
    /**
     * Get debugger config.
     */
    readonly config: IDebugger.IConfig;
    /**
     * A signal emitted when the pause on exception filter changes.
     */
    readonly pauseOnExceptionChanged: Signal<IDebugger, void>;
    /**
     * The debugger service's model.
     */
    readonly model: IDebugger.Model.IService;
    /**
     * The current debugger session.
     */
    session: IDebugger.ISession | null;
    /**
     * Signal emitted upon session changed.
     */
    readonly sessionChanged: ISignal<IDebugger, IDebugger.ISession | null>;
    /**
     * Removes all the breakpoints from the current notebook or console
     */
    clearBreakpoints(): Promise<void>;
    /**
     * Used to determine if kernel has pause on exception capabilities
     */
    pauseOnExceptionsIsValid(): boolean;
    /**
     * Add a filter to pauseOnExceptionsFilter.
     *
     * @param exceptionFilter - filter name.
     */
    pauseOnExceptionsFilter(exceptionFilter: string): Promise<void>;
    /**
     * Send the pauseOnExceptions' filters to the debugger.
     */
    pauseOnExceptions(exceptionFilter: string[]): Promise<void>;
    /**
     * Continues the execution of the current thread.
     */
    continue(): Promise<void>;
    /**
     * Evaluate an expression.
     */
    evaluate(expression: string): Promise<DebugProtocol.EvaluateResponse['body'] | null>;
    /**
     * Computes an id based on the given code.
     */
    getCodeId(code: string): string;
    /**
     * Retrieve the content of a source file.
     *
     * @param source The source object containing the path to the file.
     */
    getSource(source: DebugProtocol.Source): Promise<IDebugger.Source>;
    /**
     * Whether there exist a thread in stopped state.
     */
    hasStoppedThreads(): boolean;
    /**
     * Request variables for a given variable reference.
     *
     * @param variablesReference The variable reference to request.
     */
    inspectVariable(variablesReference: number): Promise<DebugProtocol.Variable[]>;
    /**
     * Request to set a variable in the global scope.
     *
     * @param name The name of the variable.
     * @param value The value of the variable.
     */
    copyToGlobals(name: string): Promise<void>;
    /**
     * Request rich representation of a variable.
     *
     * @param variableName The variable name to request
     * @param frameId The current frame id in which to request the variable
     * @returns The mime renderer data model
     */
    inspectRichVariable(variableName: string, frameId?: number): Promise<IDebugger.IRichVariable>;
    /**
     * Requests all the defined variables and display them in the
     * table view.
     */
    displayDefinedVariables(): Promise<void>;
    /**
     * Requests all the loaded modules and display them.
     */
    displayModules(): Promise<void>;
    /**
     * Request whether debugging is available for the given session connection.
     *
     * @param connection The session connection.
     */
    isAvailable(connection: Session.ISessionConnection): Promise<boolean>;
    /**
     * Makes the current thread run again for one step.
     */
    next(): Promise<void>;
    /**
     * Restart the debugger.
     * Precondition: isStarted
     */
    restart(): Promise<void>;
    /**
     * Restore the state of a debug session.
     *
     * @param autoStart - when true, starts the debugger
     * if it has not been started yet.
     */
    restoreState(autoStart: boolean): Promise<void>;
    /**
     * Starts a debugger.
     * Precondition: !isStarted
     */
    start(): Promise<void>;
    /**
     * Makes the current thread pause if possible.
     */
    pause(): Promise<void>;
    /**
     * Makes the current thread step in a function / method if possible.
     */
    stepIn(): Promise<void>;
    /**
     * Makes the current thread step out a function / method if possible.
     */
    stepOut(): Promise<void>;
    /**
     * Stops the debugger.
     * Precondition: isStarted
     */
    stop(): Promise<void>;
    /**
     * Update all breakpoints of a cell at once.
     *
     * @param code - The code in the cell where the breakpoints are set.
     * @param breakpoints - The list of breakpoints to set.
     * @param path - Optional path to the file where to set the breakpoints.
     */
    updateBreakpoints(code: string, breakpoints: IDebugger.IBreakpoint[], path?: string): Promise<void>;
    /**
     * Get the debugger state
     *
     * @returns Debugger state
     */
    getDebuggerState(): IDebugger.State;
    /**
     * Restore the debugger state
     *
     * @param state Debugger state
     * @returns Whether the state has been restored successfully or not
     */
    restoreDebuggerState(state: IDebugger.State): Promise<boolean>;
}
/**
 * A namespace for visual debugger types.
 */
export declare namespace IDebugger {
    /**
     * The type for a source file.
     */
    type Source = {
        /**
         * The content of the source.
         */
        content: string;
        /**
         * The mimeType of the source.
         */
        mimeType?: string;
        /**
         * The path of the source.
         */
        path: string;
    };
    /**
     * The type for a kernel source file.
     */
    type KernelSource = {
        /**
         * The name of the source.
         */
        name: string;
        /**
         * The path of the source.
         */
        path: string;
    };
    /**
     * Single breakpoint in an editor.
     */
    interface IBreakpoint extends DebugProtocol.Breakpoint {
    }
    type State = {
        /**
         * List of cells to dump after the kernel has restarted
         */
        cells: string[];
        /**
         * Map of breakpoints to send back to the kernel after it has restarted
         */
        breakpoints: Map<string, IDebugger.IBreakpoint[]>;
    };
    /**
     * Debugger file and hashing configuration.
     */
    interface IConfig {
        /**
         * Returns an id based on the given code.
         *
         * @param code The source code.
         * @param kernel The kernel name from current session.
         */
        getCodeId(code: string, kernel: string): string;
        /**
         * Sets the hash parameters for a kernel.
         *
         * @param params - Hashing parameters for a kernel.
         */
        setHashParams(params: IConfig.HashParams): void;
        /**
         * Sets the parameters used for the temp files (e.g. cells) for a kernel.
         *
         * @param params - Temporary file prefix and suffix for a kernel.
         */
        setTmpFileParams(params: IConfig.FileParams): void;
        /**
         * Gets the parameters used for the temp files (e.e. cells) for a kernel.
         *
         * @param kernel - The kernel name from current session.
         */
        getTmpFileParams(kernel: string): IConfig.FileParams;
    }
    /**
     * An interface for debugger handler.
     */
    interface IHandler extends DebuggerHandler.IHandler {
    }
    /**
     * Interface for interacting with source viewer.
     */
    interface ISourceViewer {
        /**
         * Open read-only editor for given source and optionally set a breakpoint.
         */
        open(source: IDebugger.Source, breakpoint?: IDebugger.IBreakpoint): void;
    }
    /**
     * An interface for a scope.
     */
    interface IScope {
        /**
         * The name of the scope.
         */
        name: string;
        /**
         * The list of variables.
         */
        variables: IVariable[];
    }
    /**
     * A visual debugger session.
     */
    interface ISession extends IObservableDisposable {
        /**
         * The API session connection to connect to a debugger.
         */
        connection: Session.ISessionConnection | null;
        /**
         * Returns the initialize response.
         */
        readonly capabilities: DebugProtocol.Capabilities | undefined;
        /**
         * Whether the debug session is started.
         */
        readonly isStarted: boolean;
        /**
         * Whether the debug session is pausing on exceptions.
         */
        exceptionPaths: string[];
        /**
         * Get exception filters and default values.
         */
        exceptionBreakpointFilters: DebugProtocol.ExceptionBreakpointsFilter[] | undefined;
        /**
         * Signal emitted for debug event messages.
         */
        readonly eventMessage: ISignal<IDebugger.ISession, IDebugger.ISession.Event>;
        /**
         * Get current exception filter.
         */
        currentExceptionFilters: string[];
        /**
         * Whether the debugger is pausing on exception.
         *
         * @param filter - Specify a filter
         */
        isPausingOnException(filter?: string): boolean;
        /**
         * Restore the state of a debug session.
         */
        restoreState(): Promise<IDebugger.ISession.Response['debugInfo']>;
        /**
         * Send a debug request to the kernel.
         */
        sendRequest<K extends keyof IDebugger.ISession.Request>(command: K, args: IDebugger.ISession.Request[K]): Promise<IDebugger.ISession.Response[K]>;
        /**
         * Start a new debug session.
         */
        start(): Promise<void>;
        /**
         * Stop a running debug session.
         */
        stop(): Promise<void>;
    }
    /**
     * A utility to find text editors used by the debugger.
     */
    interface ISources {
        /**
         * Returns an array of editors for a source matching the current debug
         * session by iterating through all the widgets in each of the supported
         * debugger types (i.e., consoles, files, notebooks).
         *
         * @param params - The editor find parameters.
         */
        find(params: ISources.FindParams): ISources.IEditor[];
        /**
         * Open a read-only editor in the main area.
         *
         * @param params - The editor open parameters.
         */
        open(params: ISources.OpenParams): void;
    }
    /**
     * The type for a stack frame
     */
    interface IStackFrame extends DebugProtocol.StackFrame {
    }
    /**
     * A reply to an rich inspection request.
     */
    interface IRichVariable {
        /**
         * The MIME bundle data returned from an rich inspection request.
         */
        data: ReadonlyJSONObject;
        /**
         * Any metadata that accompanies the MIME bundle returning from a rich inspection request.
         */
        metadata: ReadonlyJSONObject;
    }
    /**
     * An interface for a variable.
     */
    interface IVariable extends DebugProtocol.Variable {
        /**
         * Whether the variable is expanded.
         */
        expanded?: boolean;
    }
    /**
     * Debugger file and hashing configuration.
     */
    namespace IConfig {
        /**
         * Temporary file prefix and suffix for a kernel.
         */
        type FileParams = {
            /**
             * The kernel name.
             */
            kernel: string;
            /**
             * Prefix added to temporary files created by the kernel per cell.
             */
            prefix: string;
            /**
             * Suffix added temporary files created by the kernel per cell.
             */
            suffix: string;
        };
        /**
         * Hashing parameters for a kernel.
         */
        type HashParams = {
            /**
             * The kernel name.
             */
            kernel: string;
            /**
             * The hashing method.
             */
            method: string;
            /**
             * An optional hashing seed provided by the kernel.
             */
            seed?: any;
        };
    }
    namespace ISession {
        /**
         * A generic debug event.
         */
        type Event = DebugProtocol.Event;
        /**
         * Expose all the debug requests types.
         */
        type Request = {
            attach: DebugProtocol.AttachRequestArguments;
            completions: DebugProtocol.CompletionsArguments;
            configurationDone: DebugProtocol.ConfigurationDoneArguments;
            continue: DebugProtocol.ContinueArguments;
            copyToGlobals: ICopyToGlobalsArguments;
            debugInfo: Record<string, never>;
            disconnect: DebugProtocol.DisconnectArguments;
            dumpCell: IDumpCellArguments;
            evaluate: DebugProtocol.EvaluateArguments;
            exceptionInfo: DebugProtocol.ExceptionInfoArguments;
            goto: DebugProtocol.GotoArguments;
            gotoTargets: DebugProtocol.GotoTargetsArguments;
            initialize: DebugProtocol.InitializeRequestArguments;
            inspectVariables: Record<string, never>;
            launch: DebugProtocol.LaunchRequestArguments;
            loadedSources: DebugProtocol.LoadedSourcesArguments;
            modules: DebugProtocol.ModulesArguments;
            next: DebugProtocol.NextArguments;
            pause: DebugProtocol.PauseArguments;
            restart: DebugProtocol.RestartArguments;
            restartFrame: DebugProtocol.RestartFrameArguments;
            reverseContinue: DebugProtocol.ReverseContinueArguments;
            richInspectVariables: IRichVariablesArguments;
            scopes: DebugProtocol.ScopesArguments;
            setBreakpoints: DebugProtocol.SetBreakpointsArguments;
            setExceptionBreakpoints: DebugProtocol.SetExceptionBreakpointsArguments;
            setExpression: DebugProtocol.SetExpressionArguments;
            setFunctionBreakpoints: DebugProtocol.SetFunctionBreakpointsArguments;
            setVariable: DebugProtocol.SetVariableArguments;
            source: DebugProtocol.SourceArguments;
            stackTrace: DebugProtocol.StackTraceArguments;
            stepBack: DebugProtocol.StepBackArguments;
            stepIn: DebugProtocol.StepInArguments;
            stepInTargets: DebugProtocol.StepInTargetsArguments;
            stepOut: DebugProtocol.StepOutArguments;
            terminate: DebugProtocol.TerminateArguments;
            terminateThreads: DebugProtocol.TerminateThreadsArguments;
            threads: Record<string, never>;
            variables: DebugProtocol.VariablesArguments;
        };
        /**
         * Expose all the debug response types.
         */
        type Response = {
            attach: DebugProtocol.AttachResponse;
            completions: DebugProtocol.CompletionsResponse;
            configurationDone: DebugProtocol.ConfigurationDoneResponse;
            continue: DebugProtocol.ContinueResponse;
            copyToGlobals: DebugProtocol.SetExpressionResponse;
            debugInfo: IDebugInfoResponse;
            disconnect: DebugProtocol.DisconnectResponse;
            dumpCell: IDumpCellResponse;
            evaluate: DebugProtocol.EvaluateResponse;
            exceptionInfo: DebugProtocol.ExceptionInfoResponse;
            goto: DebugProtocol.GotoResponse;
            gotoTargets: DebugProtocol.GotoTargetsResponse;
            initialize: DebugProtocol.InitializeResponse;
            inspectVariables: IInspectVariablesResponse;
            launch: DebugProtocol.LaunchResponse;
            loadedSources: DebugProtocol.LoadedSourcesResponse;
            modules: DebugProtocol.ModulesResponse;
            next: DebugProtocol.NextResponse;
            pause: DebugProtocol.PauseResponse;
            restart: DebugProtocol.RestartResponse;
            restartFrame: DebugProtocol.RestartFrameResponse;
            reverseContinue: DebugProtocol.ReverseContinueResponse;
            richInspectVariables: IRichVariablesResponse;
            scopes: DebugProtocol.ScopesResponse;
            setBreakpoints: DebugProtocol.SetBreakpointsResponse;
            setExceptionBreakpoints: DebugProtocol.SetExceptionBreakpointsResponse;
            setExpression: DebugProtocol.SetExpressionResponse;
            setFunctionBreakpoints: DebugProtocol.SetFunctionBreakpointsResponse;
            setVariable: DebugProtocol.SetVariableResponse;
            source: DebugProtocol.SourceResponse;
            stackTrace: DebugProtocol.StackTraceResponse;
            stepBack: DebugProtocol.StepBackResponse;
            stepIn: DebugProtocol.StepInResponse;
            stepInTargets: DebugProtocol.StepInTargetsResponse;
            stepOut: DebugProtocol.StepOutResponse;
            terminate: DebugProtocol.TerminateResponse;
            terminateThreads: DebugProtocol.TerminateThreadsResponse;
            threads: DebugProtocol.ThreadsResponse;
            variables: DebugProtocol.VariablesResponse;
        };
        /**
         * Arguments for CopyToGlobals request.
         * This is an addition to the Debug Adaptor protocol to support
         * copying variable from Locals() to Globals() during breakpoint.
         */
        interface ICopyToGlobalsArguments {
            srcVariableName: string;
            dstVariableName: string;
            srcFrameId: number;
        }
        /**
         * List of breakpoints in a source file.
         */
        interface IDebugInfoBreakpoints {
            source: string;
            breakpoints: DebugProtocol.SourceBreakpoint[];
        }
        /**
         * Response to 'debugInfo' request.
         * This is an addition to the Debug Adapter Protocol to be able
         * to retrieve the debugger state when restoring a session.
         */
        interface IDebugInfoResponse extends DebugProtocol.Response {
            body: {
                breakpoints: IDebugInfoBreakpoints[];
                /**
                 * Whether the kernel supports the 'copyToGlobals' request.
                 */
                copyToGlobals?: boolean;
                hashMethod: string;
                hashSeed: number;
                isStarted: boolean;
                /**
                 * Whether the kernel supports variable rich rendering or not.
                 */
                richRendering?: boolean;
                tmpFilePrefix: string;
                tmpFileSuffix: string;
                stoppedThreads: number[];
                exceptionPaths: string[];
            };
        }
        /**
         * Arguments for 'dumpCell' request.
         * This is an addition to the Debug Adapter Protocol to support
         * setting breakpoints for cells.
         */
        interface IDumpCellArguments {
            code: string;
        }
        /**
         * Response to 'dumpCell' request.
         * This is an addition to the Debug Adapter Protocol to support
         * setting breakpoints for cells.
         */
        interface IDumpCellResponse extends DebugProtocol.Response {
            body: {
                sourcePath: string;
            };
        }
        interface IInspectVariablesResponse extends DebugProtocol.Response {
            body: {
                variables: DebugProtocol.Variable[];
            };
        }
        /**
         * Arguments for 'richVariables' request
         *
         * This is an addition to the Debug Adapter Protocol to support
         * render rich variable representation.
         */
        interface IRichVariablesArguments {
            /**
             * Variable name
             */
            variableName: string;
            /**
             * Frame Id
             */
            frameId?: number;
        }
        /**
         * Arguments for 'richVariables' request
         *
         * This is an addition to the Debug Adapter Protocol to support
         * rich rendering of variables.
         */
        interface IRichVariablesResponse extends DebugProtocol.Response {
            /**
             * Variable mime type data
             */
            body: IRichVariable;
        }
        /**
         * Response to the 'kernel_info_request' request.
         * This interface extends the IInfoReply by adding the `debugger` key
         * that isn't part of the protocol yet.
         * See this pull request for more info: https://github.com/jupyter/jupyter_client/pull/486
         */
        interface IInfoReply extends KernelMessage.IInfoReply {
            debugger: boolean;
        }
        /**
         * An interface for current exception filters.
         */
        interface IExceptionFilter {
            []: string[];
        }
    }
    /**
     * Select variable in the variables explorer.
     *
     * @hidden
     *
     * #### Notes
     * This is experimental API
     */
    interface IVariableSelection extends Pick<DebugProtocol.Variable, 'name' | 'type' | 'variablesReference' | 'value'> {
    }
    /**
     * Debugger sidebar interface.
     */
    interface ISidebar extends Panel {
    }
    /**
     * A utility to find text editors used by the debugger.
     */
    namespace ISources {
        /**
         * Source editor interface
         */
        interface IEditor {
            /**
             * Editor getter
             */
            get(): CodeEditor.IEditor | null;
            /**
             * Reveal editor
             */
            reveal(): Promise<void>;
            /**
             * Editor source text
             */
            src: ISharedText;
        }
        /**
         * Unified parameters for the find method
         */
        type FindParams = {
            /**
             * Extra flag to focus on the parent widget of the editor.
             */
            focus: boolean;
            /**
             * Name of current kernel.
             */
            kernel: string;
            /**
             * Path of session connection.
             */
            path: string;
            /**
             * Source path
             */
            source: string;
        };
        /**
         * Unified parameters for the open method
         */
        type OpenParams = {
            /**
             * The caption for the read-only editor.
             */
            caption: string;
            /**
             * The code editor wrapper to add to the main area.
             */
            editorWrapper: CodeEditorWrapper;
            /**
             * The label for the read-only editor.
             */
            label: string;
        };
    }
    /**
     * A namespace for UI model definitions.
     */
    namespace Model {
        /**
         * The breakpoints UI model.
         */
        interface IBreakpoints {
            /**
             * Get all the breakpoints.
             */
            readonly breakpoints: Map<string, IDebugger.IBreakpoint[]>;
            /**
             * Signal emitted when the model changes.
             */
            readonly changed: ISignal<this, IDebugger.IBreakpoint[]>;
            /**
             * Signal emitted when a breakpoint is clicked.
             */
            readonly clicked: Signal<this, IDebugger.IBreakpoint>;
            /**
             * Signal emitted when the breakpoints are restored.
             */
            readonly restored: ISignal<this, void>;
            /**
             * Get the breakpoints for a given id (path).
             *
             * @param id The code id (path).
             */
            getBreakpoints(id: string): IBreakpoint[];
            /**
             * Restore a map of breakpoints.
             *
             * @param breakpoints The map of breakpoints
             */
            restoreBreakpoints(breakpoints: Map<string, IBreakpoint[]>): void;
            /**
             * Set the breakpoints for a given id (path).
             *
             * @param id The code id (path).
             * @param breakpoints The list of breakpoints.
             */
            setBreakpoints(id: string, breakpoints: IBreakpoint[]): void;
        }
        /**
         * The callstack UI model.
         */
        interface ICallstack {
            /**
             * Signal emitted when the current frame has changed.
             */
            readonly currentFrameChanged: ISignal<this, IDebugger.IStackFrame | null>;
            /**
             * The current frame.
             */
            frame: IDebugger.IStackFrame | null;
            /**
             * The frames for the callstack.
             */
            frames: IDebugger.IStackFrame[];
            /**
             * Signal emitted when the frames have changed.
             */
            readonly framesChanged: ISignal<this, IDebugger.IStackFrame[]>;
        }
        /**
         * The data model for the debugger service.
         */
        interface IService {
            /**
             * The breakpoints UI model.
             */
            readonly breakpoints: IBreakpoints;
            /**
             * The callstack UI model.
             */
            readonly callstack: ICallstack;
            /**
             * Whether the kernel support rich variable rendering based on mime type.
             */
            hasRichVariableRendering: boolean;
            /**
             * Whether the kernel supports the copyToGlobals request.
             */
            supportCopyToGlobals: boolean;
            /**
             * The variables UI model.
             */
            readonly variables: IVariables;
            /**
             * The sources UI model.
             */
            readonly sources: ISources;
            /**
             * The kernel sources UI model.
             */
            readonly kernelSources: IKernelSources;
            /**
             * The set of threads in stopped state.
             */
            stoppedThreads: Set<number>;
            /**
             * The current debugger title.
             */
            title: string;
            /**
             * A signal emitted when the title changes.
             */
            titleChanged: ISignal<this, string>;
            /**
             * Clear the model.
             */
            clear(): void;
        }
        /**
         * The sources UI model.
         */
        interface ISources {
            /**
             * Signal emitted when the current frame changes.
             */
            readonly currentFrameChanged: ISignal<IDebugger.Model.ICallstack, IDebugger.IStackFrame | null>;
            /**
             * Return the current source.
             */
            currentSource: IDebugger.Source | null;
            /**
             * Signal emitted when the current source changes.
             */
            readonly currentSourceChanged: ISignal<IDebugger.Model.ISources, IDebugger.Source | null>;
            /**
             * Signal emitted when a source should be open in the main area.
             */
            readonly currentSourceOpened: ISignal<IDebugger.Model.ISources, IDebugger.Source | null>;
            /**
             * Open a source in the main area.
             */
            open(): void;
        }
        /**
         * The kernel sources UI model.
         */
        interface IKernelSources extends IDisposable {
            /**
             * The kernel source.
             */
            kernelSources: IDebugger.KernelSource[] | null;
            /**
             * The filter to apply.
             */
            filter: string;
            /**
             * Signal emitted when the kernel sources have changed.
             */
            readonly changed: ISignal<IDebugger.Model.IKernelSources, IDebugger.KernelSource[] | null>;
            /**
             * Signal emitted when the kernel sources filter has changed.
             */
            readonly filterChanged: ISignal<IDebugger.Model.IKernelSources, string>;
            /**
             * Signal emitted when a kernel source has be opened in the main area.
             */
            readonly kernelSourceOpened: ISignal<IDebugger.Model.IKernelSources, IDebugger.Source | null>;
            /**
             * Open a source in the main area.
             */
            open(source: IDebugger.Source): void;
        }
        /**
         * The variables UI model.
         */
        interface IVariables {
            /**
             * Signal emitted when the current variable has changed.
             */
            readonly changed: ISignal<this, void>;
            /**
             * The variable scopes.
             */
            scopes: IDebugger.IScope[];
            /**
             * Signal emitted when the current variable has been expanded.
             */
            readonly variableExpanded: ISignal<this, IDebugger.IVariable>;
            /**
             * Selected variable in the variables explorer.
             */
            selectedVariable: IVariableSelection | null;
            /**
             * Expand a variable.
             *
             * @param variable The variable to expand.
             */
            expandVariable(variable: IDebugger.IVariable): void;
        }
    }
}
/**
 * The visual debugger token.
 */
export declare const IDebugger: Token<IDebugger>;
/**
 * The debugger configuration token.
 */
export declare const IDebuggerConfig: Token<IDebugger.IConfig>;
/**
 * The debugger sources utility token.
 */
export declare const IDebuggerSources: Token<IDebugger.ISources>;
/**
 * The debugger sidebar token.
 */
export declare const IDebuggerSidebar: Token<IDebugger.ISidebar>;
/**
 * The debugger handler token.
 */
export declare const IDebuggerHandler: Token<IDebugger.IHandler>;
/**
 * The source viewer token.
 */
export declare const IDebuggerSourceViewer: Token<IDebugger.ISourceViewer>;