@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
71 lines (69 loc) • 3.08 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 { IShellIntegration, ShellIntegrationStatus } from '../terminal.mjs';
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { TerminalCapabilityStore } from '../capabilities/terminalCapabilityStore.mjs';
import {
IBufferMarkCapability,
ICommandDetectionCapability,
ICwdDetectionCapability,
ISerializedCommandDetectionCapability,
} from '../capabilities/capabilities.mjs';
import { ILogService } from '../../../log/common/log.mjs';
import { ITelemetryService } from '../../../telemetry/common/telemetry.mjs';
import type { ITerminalAddon, Terminal } from 'xterm-headless';
/**
* The shell integration addon extends xterm by reading shell integration sequences and creating
* capabilities and passing along relevant sequences to the capabilities. This is meant to
* encapsulate all handling/parsing of sequences so the capabilities don't need to.
*/
export declare class ShellIntegrationAddon extends Disposable implements IShellIntegration, ITerminalAddon {
private readonly _disableTelemetry;
private readonly _telemetryService;
private readonly _logService;
private _terminal?;
readonly capabilities: TerminalCapabilityStore;
private _hasUpdatedTelemetry;
private _activationTimeout;
private _commonProtocolDisposables;
private _status;
get status(): ShellIntegrationStatus;
private readonly _onDidChangeStatus;
readonly onDidChangeStatus: import('@sussudio/base/common/event.mjs').Event<ShellIntegrationStatus>;
constructor(
_disableTelemetry: boolean | undefined,
_telemetryService: ITelemetryService | undefined,
_logService: ILogService,
);
private _disposeCommonProtocol;
activate(xterm: Terminal): void;
private _handleFinalTermSequence;
private _doHandleFinalTermSequence;
private _handleVSCodeSequence;
private _ensureCapabilitiesOrAddFailureTelemetry;
private _clearActivationTimeout;
private _doHandleVSCodeSequence;
private _updateCwd;
private _doHandleITermSequence;
private _doHandleSetWindowsFriendlyCwd;
/**
* Handles the sequence: `OSC 7 ; scheme://cwd ST`
*/
private _doHandleSetCwd;
serialize(): ISerializedCommandDetectionCapability;
deserialize(serialized: ISerializedCommandDetectionCapability): void;
protected _createOrGetCwdDetection(): ICwdDetectionCapability;
protected _createOrGetCommandDetection(terminal: Terminal): ICommandDetectionCapability;
protected _createOrGetBufferMarkDetection(terminal: Terminal): IBufferMarkCapability;
}
export declare function deserializeMessage(message: string): string;
export declare function parseKeyValueAssignment(message: string): {
key: string;
value: string | undefined;
};
export declare function parseMarkSequence(sequence: string[]): {
id?: string;
hidden?: boolean;
};