sussudio
Version:
An unofficial VS Code Internal API
124 lines (123 loc) • 6.41 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Event } from "../../../base/common/event.mjs";
import { Disposable } from "../../../base/common/lifecycle.mjs";
import { IProcessEnvironment, OperatingSystem } from "../../../base/common/platform.mjs";
import { URI } from "../../../base/common/uri.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { IProcessDataEvent, IPtyService, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalLaunchError, ITerminalsLayoutInfo, 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";
import { IProductService } from "../../product/common/productService.mjs";
export declare class PtyService extends Disposable implements IPtyService {
private _lastPtyId;
private readonly _logService;
private readonly _productService;
private readonly _reconnectConstants;
readonly _serviceBrand: undefined;
private readonly _ptys;
private readonly _workspaceLayoutInfos;
private readonly _detachInstanceRequestStore;
private readonly _revivedPtyIdMap;
private readonly _autoReplies;
private readonly _onHeartbeat;
readonly onHeartbeat: Event<void>;
private readonly _onProcessData;
readonly onProcessData: Event<{
id: number;
event: IProcessDataEvent | string;
}>;
private readonly _onProcessReplay;
readonly onProcessReplay: Event<{
id: number;
event: IPtyHostProcessReplayEvent;
}>;
private readonly _onProcessReady;
readonly onProcessReady: Event<{
id: number;
event: {
pid: number;
cwd: string;
};
}>;
private readonly _onProcessExit;
readonly onProcessExit: Event<{
id: number;
event: number | undefined;
}>;
private readonly _onProcessOrphanQuestion;
readonly onProcessOrphanQuestion: Event<{
id: number;
}>;
private readonly _onDidRequestDetach;
readonly onDidRequestDetach: Event<{
requestId: number;
workspaceId: string;
instanceId: number;
}>;
private readonly _onDidChangeProperty;
readonly onDidChangeProperty: Event<{
id: number;
property: IProcessProperty<any>;
}>;
constructor(_lastPtyId: number, _logService: ILogService, _productService: IProductService, _reconnectConstants: IReconnectConstants);
refreshIgnoreProcessNames(names: string[]): Promise<void>;
onPtyHostExit?: Event<number> | undefined;
onPtyHostStart?: Event<void> | undefined;
onPtyHostUnresponsive?: Event<void> | undefined;
onPtyHostResponsive?: Event<void> | undefined;
onPtyHostRequestResolveVariables?: Event<IRequestResolveVariablesEvent> | 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[], dateTimeFormatLocale: string): Promise<void>;
shutdownAll(): Promise<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, isReviving?: boolean, rawReviveBuffer?: string): Promise<number>;
attachToProcess(id: number): Promise<void>;
updateTitle(id: number, title: string, titleSource: TitleEventSource): Promise<void>;
updateIcon(id: number, userInitiated: boolean, icon: URI | {
light: URI;
dark: URI;
} | {
id: string;
color?: {
id: string;
};
}, color?: string): Promise<void>;
refreshProperty<T extends ProcessPropertyType>(id: number, type: T): Promise<IProcessPropertyMap[T]>;
updateProperty<T extends ProcessPropertyType>(id: number, type: T, value: IProcessPropertyMap[T]): Promise<void>;
detachFromProcess(id: number, forcePersist?: boolean): Promise<void>;
reduceConnectionGraceTime(): Promise<void>;
listProcesses(): Promise<IProcessDetails[]>;
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>;
getInitialCwd(id: number): Promise<string>;
getCwd(id: number): Promise<string>;
acknowledgeDataEvent(id: number, charCount: number): Promise<void>;
setUnicodeVersion(id: number, version: '6' | '11'): Promise<void>;
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>;
getEnvironment(): Promise<IProcessEnvironment>;
getWslPath(original: string, direction: 'unix-to-win' | 'win-to-unix' | unknown): Promise<string>;
private _getWSLExecutablePath;
getRevivedPtyNewId(id: number): Promise<number | undefined>;
setTerminalLayoutInfo(args: ISetTerminalLayoutInfoArgs): Promise<void>;
getTerminalLayoutInfo(args: IGetTerminalLayoutInfoArgs): Promise<ITerminalsLayoutInfo | undefined>;
private _expandTerminalTab;
private _expandTerminalInstance;
private _buildProcessDetails;
private _throwIfNoPty;
}