UNPKG

sussudio

Version:

An unofficial VS Code Internal API

135 lines (134 loc) 7.64 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Disposable } from "../../../base/common/lifecycle.mjs"; import { IProcessEnvironment, OperatingSystem } from "../../../base/common/platform.mjs"; import { IConfigurationService } from "../../configuration/common/configuration.mjs"; import { INativeEnvironmentService } from "../../environment/common/environment.mjs"; import { ILogService } from "../../log/common/log.mjs"; import { IProcessDataEvent, IPtyService, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, TerminalIcon, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, ISerializedTerminalState, ITerminalProcessOptions } from "../common/terminal.mjs"; import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs } from "../common/terminalProcess.mjs"; import { IPtyHostProcessReplayEvent } from "../common/capabilities/capabilities.mjs"; /** * This service implements IPtyService by launching a pty host process, forwarding messages to and * from the pty host process and manages the connection. */ export declare class PtyHostService extends Disposable implements IPtyService { private readonly _reconnectConstants; private readonly _configurationService; private readonly _environmentService; private readonly _logService; readonly _serviceBrand: undefined; private _client; private _proxy; private readonly _shellEnv; private readonly _resolveVariablesRequestStore; private _restartCount; private _isResponsive; private _isDisposed; private _heartbeatFirstTimeout?; private _heartbeatSecondTimeout?; private readonly _onPtyHostExit; readonly onPtyHostExit: import("../../../base/common/event.mjs").Event<number>; private readonly _onPtyHostStart; readonly onPtyHostStart: import("../../../base/common/event.mjs").Event<void>; private readonly _onPtyHostUnresponsive; readonly onPtyHostUnresponsive: import("../../../base/common/event.mjs").Event<void>; private readonly _onPtyHostResponsive; readonly onPtyHostResponsive: import("../../../base/common/event.mjs").Event<void>; private readonly _onPtyHostRequestResolveVariables; readonly onPtyHostRequestResolveVariables: import("../../../base/common/event.mjs").Event<IRequestResolveVariablesEvent>; private readonly _onProcessData; readonly onProcessData: import("../../../base/common/event.mjs").Event<{ id: number; event: IProcessDataEvent | string; }>; private readonly _onProcessReady; readonly onProcessReady: import("../../../base/common/event.mjs").Event<{ id: number; event: { pid: number; cwd: string; }; }>; private readonly _onProcessReplay; readonly onProcessReplay: import("../../../base/common/event.mjs").Event<{ id: number; event: IPtyHostProcessReplayEvent; }>; private readonly _onProcessOrphanQuestion; readonly onProcessOrphanQuestion: import("../../../base/common/event.mjs").Event<{ id: number; }>; private readonly _onDidRequestDetach; readonly onDidRequestDetach: import("../../../base/common/event.mjs").Event<{ requestId: number; workspaceId: string; instanceId: number; }>; private readonly _onDidChangeProperty; readonly onDidChangeProperty: import("../../../base/common/event.mjs").Event<{ id: number; property: IProcessProperty<any>; }>; private readonly _onProcessExit; readonly onProcessExit: import("../../../base/common/event.mjs").Event<{ id: number; event: number | undefined; }>; constructor(_reconnectConstants: IReconnectConstants, _configurationService: IConfigurationService, _environmentService: INativeEnvironmentService, _logService: ILogService); initialize(): void; private get _ignoreProcessNames(); private _refreshIgnoreProcessNames; private _resolveShellEnv; private _startPtyHost; dispose(): void; createProcess(shellLaunchConfig: IShellLaunchConfig, cwd: string, cols: number, rows: number, unicodeVersion: '6' | '11', env: IProcessEnvironment, executableEnv: IProcessEnvironment, options: ITerminalProcessOptions, shouldPersist: boolean, workspaceId: string, workspaceName: string): Promise<number>; updateTitle(id: number, title: string, titleSource: TitleEventSource): Promise<void>; updateIcon(id: number, userInitiated: boolean, icon: TerminalIcon, color?: string): Promise<void>; attachToProcess(id: number): Promise<void>; detachFromProcess(id: number, forcePersist?: boolean): Promise<void>; listProcesses(): Promise<IProcessDetails[]>; reduceConnectionGraceTime(): Promise<void>; start(id: number): Promise<ITerminalLaunchError | undefined>; shutdown(id: number, immediate: boolean): Promise<void>; input(id: number, data: string): Promise<void>; processBinary(id: number, data: string): Promise<void>; resize(id: number, cols: number, rows: number): Promise<void>; acknowledgeDataEvent(id: number, charCount: number): Promise<void>; setUnicodeVersion(id: number, version: '6' | '11'): Promise<void>; getInitialCwd(id: number): Promise<string>; getCwd(id: number): Promise<string>; getLatency(id: number): Promise<number>; orphanQuestionReply(id: number): Promise<void>; installAutoReply(match: string, reply: string): Promise<void>; uninstallAllAutoReplies(): Promise<void>; uninstallAutoReply(match: string): Promise<void>; getDefaultSystemShell(osOverride?: OperatingSystem): Promise<string>; getProfiles(workspaceId: string, profiles: unknown, defaultProfile: unknown, includeDetectedProfiles?: boolean): Promise<ITerminalProfile[]>; getEnvironment(): Promise<IProcessEnvironment>; getWslPath(original: string, direction: 'unix-to-win' | 'win-to-unix'): Promise<string>; getRevivedPtyNewId(id: number): Promise<number | undefined>; setTerminalLayoutInfo(args: ISetTerminalLayoutInfoArgs): Promise<void>; getTerminalLayoutInfo(args: IGetTerminalLayoutInfoArgs): Promise<ITerminalsLayoutInfo | undefined>; requestDetachInstance(workspaceId: string, instanceId: number): Promise<IProcessDetails | undefined>; acceptDetachInstanceReply(requestId: number, persistentProcessId: number): Promise<void>; freePortKillProcess(port: string): Promise<{ port: string; processId: string; }>; serializeTerminalState(ids: number[]): Promise<string>; reviveTerminalProcesses(state: ISerializedTerminalState[], dateTimeFormatLocate: string): Promise<void>; refreshProperty<T extends ProcessPropertyType>(id: number, property: T): Promise<IProcessPropertyMap[T]>; updateProperty<T extends ProcessPropertyType>(id: number, property: T, value: IProcessPropertyMap[T]): Promise<void>; restartPtyHost(): Promise<void>; private _disposePtyHost; private _handleHeartbeat; private _handleHeartbeatFirstTimeout; private _handleHeartbeatSecondTimeout; private _handleUnresponsiveCreateProcess; private _clearHeartbeatTimeouts; private _resolveVariables; acceptPtyHostResolvedVariables(requestId: number, resolved: string[]): Promise<void>; }