/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { VSBuffer } from 'vs/base/common/buffer'; import { CancellationToken } from 'vs/base/common/cancellation'; import { IRemoteConsoleLog } from 'vs/base/common/console'; import { SerializedError } from 'vs/base/common/errors'; import { IRelativePattern } from 'vs/base/common/glob'; import { IMarkdownString } from 'vs/base/common/htmlContent'; import { IDisposable } from 'vs/base/common/lifecycle'; import { revive } from 'vs/base/common/marshalling'; import * as performance from 'vs/base/common/performance'; import Severity from 'vs/base/common/severity'; import { URI, UriComponents } from 'vs/base/common/uri'; import { RenderLineNumbersType, TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions'; import { ISingleEditOperation } from 'vs/editor/common/core/editOperation'; import { IPosition } from 'vs/editor/common/core/position'; import { IRange } from 'vs/editor/common/core/range'; import { ISelection, Selection } from 'vs/editor/common/core/selection'; import { ILineChange } from 'vs/editor/common/diff/diffComputer'; import * as editorCommon from 'vs/editor/common/editorCommon'; import * as languages from 'vs/editor/common/languages'; import { StandardTokenType } from 'vs/editor/common/encodedTokenAttributes'; import { CharacterPair, CommentRule, EnterAction } from 'vs/editor/common/languages/languageConfiguration'; import { EndOfLineSequence } from 'vs/editor/common/model'; import { IModelChangedEvent } from 'vs/editor/common/model/mirrorTextModel'; import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility'; import { ConfigurationTarget, IConfigurationChange, IConfigurationData, IConfigurationOverrides } from 'vs/platform/configuration/common/configuration'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { IExtensionIdWithVersion } from 'vs/platform/extensionManagement/common/extensionStorage'; import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import * as files from 'vs/platform/files/common/files'; import { ResourceLabelFormatter } from 'vs/platform/label/common/label'; import { ILoggerOptions, LogLevel } from 'vs/platform/log/common/log'; import { IMarkerData } from 'vs/platform/markers/common/markers'; import { IProgressOptions, IProgressStep } from 'vs/platform/progress/common/progress'; import * as quickInput from 'vs/platform/quickinput/common/quickInput'; import { IRemoteConnectionData, TunnelDescription } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { ClassifiedEvent, GDPRClassification, StrictPropertyCheck } from 'vs/platform/telemetry/common/gdprTypings'; import { TelemetryLevel } from 'vs/platform/telemetry/common/telemetry'; import { ICreateContributedTerminalProfileOptions, IProcessProperty, IShellLaunchConfigDto, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, TerminalLocation } from 'vs/platform/terminal/common/terminal'; import { ThemeColor, ThemeIcon } from 'vs/platform/theme/common/themeService'; import { ProvidedPortAttributes, TunnelCreationOptions, TunnelOptions, TunnelPrivacyId, TunnelProviderFeatures } from 'vs/platform/tunnel/common/tunnel'; import { WorkspaceTrustRequestOptions } from 'vs/platform/workspace/common/workspaceTrust'; import * as tasks from 'vs/workbench/api/common/shared/tasks'; import { SaveReason } from 'vs/workbench/common/editor'; import { IRevealOptions, ITreeItem, IViewBadge } from 'vs/workbench/common/views'; import { CallHierarchyItem } from 'vs/workbench/contrib/callHierarchy/common/callHierarchy'; import { DebugConfigurationProviderTriggerKind, IAdapterDescriptor, IConfig, IDebugSessionReplMode } from 'vs/workbench/contrib/debug/common/debug'; import * as notebookCommon from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { CellExecutionUpdateType } from 'vs/workbench/contrib/notebook/common/notebookExecutionService'; import { ICellExecutionComplete, ICellExecutionStateUpdate } from 'vs/workbench/contrib/notebook/common/notebookExecutionStateService'; import { ICellRange } from 'vs/workbench/contrib/notebook/common/notebookRange'; import { OutputChannelUpdateMode } from 'vs/workbench/services/output/common/output'; import { InputValidationType } from 'vs/workbench/contrib/scm/common/scm'; import { IWorkspaceSymbol } from 'vs/workbench/contrib/search/common/search'; import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable'; import { CoverageDetails, ExtensionRunTestsRequest, IFileCoverage, ISerializedTestResults, ITestItem, ITestMessage, ITestRunProfile, ITestRunTask, ResolvedTestRunRequest, RunTestForControllerRequest, TestResultState, TestsDiffOp } from 'vs/workbench/contrib/testing/common/testTypes'; import { Timeline, TimelineChangeEvent, TimelineOptions, TimelineProviderDescriptor } from 'vs/workbench/contrib/timeline/common/timeline'; import { TypeHierarchyItem } from 'vs/workbench/contrib/typeHierarchy/common/typeHierarchy'; import { AuthenticationProviderInformation, AuthenticationSession, AuthenticationSessionsChangeEvent } from 'vs/workbench/services/authentication/common/authentication'; import { EditorGroupColumn } from 'vs/workbench/services/editor/common/editorGroupColumn'; import { IExtensionDescriptionDelta, IStaticWorkspaceData } from 'vs/workbench/services/extensions/common/extensionHostProtocol'; import { IResolveAuthorityResult } from 'vs/workbench/services/extensions/common/extensionHostProxy'; import { ActivationKind, ExtensionActivationReason, MissingExtensionDependency } from 'vs/workbench/services/extensions/common/extensions'; import { createProxyIdentifier, Dto, IRPCProtocol, SerializableObjectWithBuffers } from 'vs/workbench/services/extensions/common/proxyIdentifier'; import { ILanguageStatus } from 'vs/workbench/services/languageStatus/common/languageStatusService'; import { CandidatePort } from 'vs/workbench/services/remote/common/remoteExplorerService'; import { ITextQueryBuilderOptions } from 'vs/workbench/services/search/common/queryBuilder'; import * as search from 'vs/workbench/services/search/common/search'; export interface IWorkspaceData extends IStaticWorkspaceData { folders: { uri: UriComponents; name: string; index: number }[]; } export interface IConfigurationInitData extends IConfigurationData { configurationScopes: [string, ConfigurationScope | undefined][]; } export interface IMainContext extends IRPCProtocol { } // --- main thread export interface MainThreadClipboardShape extends IDisposable { $readText(): Promise; $writeText(value: string): Promise; } export interface MainThreadCommandsShape extends IDisposable { $registerCommand(id: string): void; $unregisterCommand(id: string): void; $executeCommand(id: string, args: any[] | SerializableObjectWithBuffers, retry: boolean): Promise; $getCommands(): Promise; } export interface CommentProviderFeatures { reactionGroup?: languages.CommentReaction[]; reactionHandler?: boolean; options?: languages.CommentOptions; } export interface CommentChanges { readonly uniqueIdInThread: number; readonly body: string | IMarkdownString; readonly userName: string; readonly userIconPath?: string; readonly contextValue?: string; readonly commentReactions?: languages.CommentReaction[]; readonly label?: string; readonly mode?: languages.CommentMode; readonly timestamp?: string; } export type CommentThreadChanges = Partial<{ range: T; label: string; contextValue: string | null; comments: CommentChanges[]; collapseState: languages.CommentThreadCollapsibleState; canReply: boolean; state: languages.CommentThreadState; isTemplate: boolean; }>; export interface MainThreadCommentsShape extends IDisposable { $registerCommentController(handle: number, id: string, label: string): void; $unregisterCommentController(handle: number): void; $updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void; $createCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, range: IRange | ICellRange, extensionId: ExtensionIdentifier, isTemplate: boolean): languages.CommentThread | undefined; $updateCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, changes: CommentThreadChanges): void; $deleteCommentThread(handle: number, commentThreadHandle: number): void; $updateCommentingRanges(handle: number): void; } export interface MainThreadAuthenticationShape extends IDisposable { $registerAuthenticationProvider(id: string, label: string, supportsMultipleAccounts: boolean): void; $unregisterAuthenticationProvider(id: string): void; $ensureProvider(id: string): Promise; $sendDidChangeSessions(providerId: string, event: AuthenticationSessionsChangeEvent): void; $getSession(providerId: string, scopes: readonly string[], extensionId: string, extensionName: string, options: { createIfNone?: boolean; forceNewSession?: boolean | { detail: string }; clearSessionPreference?: boolean }): Promise; $removeSession(providerId: string, sessionId: string): Promise; } export interface MainThreadSecretStateShape extends IDisposable { $getPassword(extensionId: string, key: string): Promise; $setPassword(extensionId: string, key: string, value: string): Promise; $deletePassword(extensionId: string, key: string): Promise; } export interface MainThreadConfigurationShape extends IDisposable { $updateConfigurationOption(target: ConfigurationTarget | null, key: string, value: any, overrides: IConfigurationOverrides | undefined, scopeToLanguage: boolean | undefined): Promise; $removeConfigurationOption(target: ConfigurationTarget | null, key: string, overrides: IConfigurationOverrides | undefined, scopeToLanguage: boolean | undefined): Promise; } export interface MainThreadDiagnosticsShape extends IDisposable { $changeMany(owner: string, entries: [UriComponents, IMarkerData[] | undefined][]): void; $clear(owner: string): void; } export interface MainThreadDialogOpenOptions { defaultUri?: UriComponents; openLabel?: string; canSelectFiles?: boolean; canSelectFolders?: boolean; canSelectMany?: boolean; filters?: { [name: string]: string[] }; title?: string; } export interface MainThreadDialogSaveOptions { defaultUri?: UriComponents; saveLabel?: string; filters?: { [name: string]: string[] }; title?: string; } export interface MainThreadDiaglogsShape extends IDisposable { $showOpenDialog(options?: MainThreadDialogOpenOptions): Promise; $showSaveDialog(options?: MainThreadDialogSaveOptions): Promise; } export interface MainThreadDecorationsShape extends IDisposable { $registerDecorationProvider(handle: number, label: string): void; $unregisterDecorationProvider(handle: number): void; $onDidChange(handle: number, resources: UriComponents[] | null): void; } export interface MainThreadDocumentContentProvidersShape extends IDisposable { $registerTextContentProvider(handle: number, scheme: string): void; $unregisterTextContentProvider(handle: number): void; $onVirtualDocumentChange(uri: UriComponents, value: string): void; } export interface MainThreadDocumentsShape extends IDisposable { $tryCreateDocument(options?: { language?: string; content?: string }): Promise; $tryOpenDocument(uri: UriComponents): Promise; $trySaveDocument(uri: UriComponents): Promise; } export interface ITextEditorConfigurationUpdate { tabSize?: number | 'auto'; insertSpaces?: boolean | 'auto'; cursorStyle?: TextEditorCursorStyle; lineNumbers?: RenderLineNumbersType; } export interface IResolvedTextEditorConfiguration { tabSize: number; insertSpaces: boolean; cursorStyle: TextEditorCursorStyle; lineNumbers: RenderLineNumbersType; } export enum TextEditorRevealType { Default = 0, InCenter = 1, InCenterIfOutsideViewport = 2, AtTop = 3 } export interface IUndoStopOptions { undoStopBefore: boolean; undoStopAfter: boolean; } export interface IApplyEditsOptions extends IUndoStopOptions { setEndOfLine?: EndOfLineSequence; } export interface ITextDocumentShowOptions { position?: EditorGroupColumn; preserveFocus?: boolean; pinned?: boolean; selection?: IRange; } export interface MainThreadBulkEditsShape extends IDisposable { $tryApplyWorkspaceEdit(workspaceEditDto: IWorkspaceEditDto, undoRedoGroupId?: number): Promise; } export interface MainThreadTextEditorsShape extends IDisposable { $tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): Promise; $registerTextEditorDecorationType(extensionId: ExtensionIdentifier, key: string, options: editorCommon.IDecorationRenderOptions): void; $removeTextEditorDecorationType(key: string): void; $tryShowEditor(id: string, position: EditorGroupColumn): Promise; $tryHideEditor(id: string): Promise; $trySetOptions(id: string, options: ITextEditorConfigurationUpdate): Promise; $trySetDecorations(id: string, key: string, ranges: editorCommon.IDecorationOptions[]): Promise; $trySetDecorationsFast(id: string, key: string, ranges: number[]): Promise; $tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): Promise; $trySetSelections(id: string, selections: ISelection[]): Promise; $tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Promise; $tryInsertSnippet(id: string, modelVersionId: number, template: string, selections: readonly IRange[], opts: IUndoStopOptions): Promise; $getDiffInformation(id: string): Promise; } export interface MainThreadTreeViewsShape extends IDisposable { $registerTreeViewDataProvider(treeViewId: string, options: { showCollapseAll: boolean; canSelectMany: boolean; dropMimeTypes: readonly string[]; dragMimeTypes: readonly string[]; hasHandleDrag: boolean; hasHandleDrop: boolean }): Promise; $refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem }): Promise; $reveal(treeViewId: string, itemInfo: { item: ITreeItem; parentChain: ITreeItem[] } | undefined, options: IRevealOptions): Promise; $setMessage(treeViewId: string, message: string): void; $setTitle(treeViewId: string, title: string, description: string | undefined): void; $setBadge(treeViewId: string, badge: IViewBadge | undefined): void; $resolveDropFileData(destinationViewId: string, requestId: number, dataItemIndex: number): Promise; } export interface MainThreadDownloadServiceShape extends IDisposable { $download(uri: UriComponents, to: UriComponents): Promise; } export interface MainThreadErrorsShape extends IDisposable { $onUnexpectedError(err: any | SerializedError): void; } export interface MainThreadConsoleShape extends IDisposable { $logExtensionHostMessage(msg: IRemoteConsoleLog): void; } export interface MainThreadKeytarShape extends IDisposable { $getPassword(service: string, account: string): Promise; $setPassword(service: string, account: string, password: string): Promise; $deletePassword(service: string, account: string): Promise; $findPassword(service: string): Promise; $findCredentials(service: string): Promise>; } export interface IRegExpDto { pattern: string; flags?: string; } export interface IIndentationRuleDto { decreaseIndentPattern: IRegExpDto; increaseIndentPattern: IRegExpDto; indentNextLinePattern?: IRegExpDto; unIndentedLinePattern?: IRegExpDto; } export interface IOnEnterRuleDto { beforeText: IRegExpDto; afterText?: IRegExpDto; previousLineText?: IRegExpDto; action: EnterAction; } export interface ILanguageConfigurationDto { comments?: CommentRule; brackets?: CharacterPair[]; wordPattern?: IRegExpDto; indentationRules?: IIndentationRuleDto; onEnterRules?: IOnEnterRuleDto[]; __electricCharacterSupport?: { brackets?: any; docComment?: { scope: string; open: string; lineStart: string; close?: string; }; }; __characterPairSupport?: { autoClosingPairs: { open: string; close: string; notIn?: string[]; }[]; }; } export type GlobPattern = string | IRelativePattern; export interface IRelativePatternDto extends IRelativePattern { baseUri: UriComponents; } export interface IDocumentFilterDto { $serialized: true; language?: string; scheme?: string; pattern?: string | IRelativePattern; exclusive?: boolean; notebookType?: string; } export interface ISignatureHelpProviderMetadataDto { readonly triggerCharacters: readonly string[]; readonly retriggerCharacters: readonly string[]; } export interface IdentifiableInlineCompletions extends languages.InlineCompletions { pid: number; } export interface IdentifiableInlineCompletion extends languages.InlineCompletion { idx: number; } export interface MainThreadLanguageFeaturesShape extends IDisposable { $unregister(handle: number): void; $registerDocumentSymbolProvider(handle: number, selector: IDocumentFilterDto[], label: string): void; $registerCodeLensSupport(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void; $emitCodeLensEvent(eventHandle: number, event?: any): void; $registerDefinitionSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerDeclarationSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerImplementationSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerTypeDefinitionSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerHoverProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerEvaluatableExpressionProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerInlineValuesProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void; $emitInlineValuesEvent(eventHandle: number, event?: any): void; $registerDocumentHighlightProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerLinkedEditingRangeProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerReferenceSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerQuickFixSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, supportsResolve: boolean): void; $registerDocumentFormattingSupport(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string): void; $registerRangeFormattingSupport(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string): void; $registerOnTypeFormattingSupport(handle: number, selector: IDocumentFilterDto[], autoFormatTriggerCharacters: string[], extensionId: ExtensionIdentifier): void; $registerNavigateTypeSupport(handle: number, supportsResolve: boolean): void; $registerRenameSupport(handle: number, selector: IDocumentFilterDto[], supportsResolveInitialValues: boolean): void; $registerDocumentSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend, eventHandle: number | undefined): void; $emitDocumentSemanticTokensEvent(eventHandle: number): void; $registerDocumentRangeSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend): void; $registerCompletionsProvider(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, displayName: string): void; $registerInlineCompletionsSupport(handle: number, selector: IDocumentFilterDto[], supportsHandleDidShowCompletionItem: boolean): void; $registerSignatureHelpProvider(handle: number, selector: IDocumentFilterDto[], metadata: ISignatureHelpProviderMetadataDto): void; $registerInlayHintsProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean, eventHandle: number | undefined, displayName: string | undefined): void; $emitInlayHintsEvent(eventHandle: number): void; $registerDocumentLinkProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean): void; $registerDocumentColorProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void; $emitFoldingRangeEvent(eventHandle: number, event?: any): void; $registerSelectionRangeProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerCallHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerTypeHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerDocumentOnDropEditProvider(handle: number, selector: IDocumentFilterDto[]): void; $resolveDocumentOnDropFileData(handle: number, requestId: number, dataIndex: number): Promise; $setLanguageConfiguration(handle: number, languageId: string, configuration: ILanguageConfigurationDto): void; } export interface MainThreadLanguagesShape extends IDisposable { $changeLanguage(resource: UriComponents, languageId: string): Promise; $tokensAtPosition(resource: UriComponents, position: IPosition): Promise; $setLanguageStatus(handle: number, status: ILanguageStatus): void; $removeLanguageStatus(handle: number): void; } export interface MainThreadMessageOptions { source?: { identifier: ExtensionIdentifier; label: string }; modal?: boolean; detail?: string; useCustom?: boolean; } export interface MainThreadMessageServiceShape extends IDisposable { $showMessage(severity: Severity, message: string, options: MainThreadMessageOptions, commands: { title: string; isCloseAffordance: boolean; handle: number }[]): Promise; } export interface MainThreadOutputServiceShape extends IDisposable { $register(label: string, log: boolean, file: UriComponents, languageId: string | undefined, extensionId: string): Promise; $update(channelId: string, mode: OutputChannelUpdateMode, till?: number): Promise; $reveal(channelId: string, preserveFocus: boolean): Promise; $close(channelId: string): Promise; $dispose(channelId: string): Promise; } export interface MainThreadProgressShape extends IDisposable { $startProgress(handle: number, options: IProgressOptions, extensionId?: string): Promise; $progressReport(handle: number, message: IProgressStep): void; $progressEnd(handle: number): void; } /** * A terminal that is created on the extension host side is temporarily assigned * a UUID by the extension host that created it. Once the renderer side has assigned * a real numeric id, the numeric id will be used. * * All other terminals (that are not created on the extension host side) always * use the numeric id. */ export type ExtHostTerminalIdentifier = number | string; export interface TerminalLaunchConfig { name?: string; shellPath?: string; shellArgs?: string[] | string; cwd?: string | UriComponents; env?: ITerminalEnvironment; icon?: URI | { light: URI; dark: URI } | ThemeIcon; color?: string; initialText?: string; waitOnExit?: boolean; strictEnv?: boolean; hideFromUser?: boolean; isExtensionCustomPtyTerminal?: boolean; isFeatureTerminal?: boolean; isExtensionOwnedTerminal?: boolean; useShellEnvironment?: boolean; location?: TerminalLocation | { viewColumn: number; preserveFocus?: boolean } | { parentTerminal: ExtHostTerminalIdentifier } | { splitActiveTerminal: boolean }; isTransient?: boolean; } export interface MainThreadTerminalServiceShape extends IDisposable { $createTerminal(extHostTerminalId: string, config: TerminalLaunchConfig): Promise; $dispose(id: ExtHostTerminalIdentifier): void; $hide(id: ExtHostTerminalIdentifier): void; $sendText(id: ExtHostTerminalIdentifier, text: string, addNewLine: boolean): void; $show(id: ExtHostTerminalIdentifier, preserveFocus: boolean): void; $startSendingDataEvents(): void; $stopSendingDataEvents(): void; $startLinkProvider(): void; $stopLinkProvider(): void; $registerProcessSupport(isSupported: boolean): void; $registerProfileProvider(id: string, extensionIdentifier: string): void; $unregisterProfileProvider(id: string): void; $setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined): void; // Process $sendProcessData(terminalId: number, data: string): void; $sendProcessReady(terminalId: number, pid: number, cwd: string): void; $sendProcessProperty(terminalId: number, property: IProcessProperty): void; $sendProcessExit(terminalId: number, exitCode: number | undefined): void; } export type TransferQuickPickItemOrSeparator = TransferQuickPickItem | quickInput.IQuickPickSeparator; export interface TransferQuickPickItem { handle: number; // shared properties from IQuickPickItem type?: 'item'; label: string; description?: string; detail?: string; picked?: boolean; alwaysShow?: boolean; buttons?: TransferQuickInputButton[]; } export interface TransferQuickInputButton extends quickInput.IQuickInputButton { handle: number; } export type TransferQuickInput = TransferQuickPick | TransferInputBox; export interface BaseTransferQuickInput { [key: string]: any; id: number; title?: string; type?: 'quickPick' | 'inputBox'; enabled?: boolean; busy?: boolean; visible?: boolean; } export interface TransferQuickPick extends BaseTransferQuickInput { type?: 'quickPick'; value?: string; placeholder?: string; buttons?: TransferQuickInputButton[]; items?: TransferQuickPickItemOrSeparator[]; activeItems?: number[]; selectedItems?: number[]; canSelectMany?: boolean; ignoreFocusOut?: boolean; matchOnDescription?: boolean; matchOnDetail?: boolean; sortByLabel?: boolean; } export interface TransferInputBox extends BaseTransferQuickInput { type?: 'inputBox'; value?: string; placeholder?: string; password?: boolean; buttons?: TransferQuickInputButton[]; prompt?: string; validationMessage?: string; } export interface IInputBoxOptions { title?: string; value?: string; valueSelection?: [number, number]; prompt?: string; placeHolder?: string; password?: boolean; ignoreFocusOut?: boolean; } export interface MainThreadQuickOpenShape extends IDisposable { $show(instance: number, options: quickInput.IPickOptions, token: CancellationToken): Promise; $setItems(instance: number, items: TransferQuickPickItemOrSeparator[]): Promise; $setError(instance: number, error: Error): Promise; $input(options: IInputBoxOptions | undefined, validateInput: boolean, token: CancellationToken): Promise; $createOrUpdate(params: TransferQuickInput): Promise; $dispose(id: number): Promise; } export interface MainThreadStatusBarShape extends IDisposable { $setEntry(id: number, statusId: string, statusName: string, text: string, tooltip: IMarkdownString | string | undefined, command: ICommandDto | undefined, color: string | ThemeColor | undefined, backgroundColor: string | ThemeColor | undefined, alignLeft: boolean, priority: number | undefined, accessibilityInformation: IAccessibilityInformation | undefined): void; $dispose(id: number): void; } export interface MainThreadStorageShape extends IDisposable { $initializeExtensionStorage(shared: boolean, extensionId: string): Promise; $setValue(shared: boolean, extensionId: string, value: object): Promise; $registerExtensionStorageKeysToSync(extension: IExtensionIdWithVersion, keys: string[]): void; } export interface MainThreadTelemetryShape extends IDisposable { $publicLog(eventName: string, data?: any): void; $publicLog2 = never, T extends GDPRClassification = never>(eventName: string, data?: StrictPropertyCheck): void; } export interface MainThreadEditorInsetsShape extends IDisposable { $createEditorInset(handle: number, id: string, uri: UriComponents, line: number, height: number, options: IWebviewContentOptions, extensionId: ExtensionIdentifier, extensionLocation: UriComponents): Promise; $disposeEditorInset(handle: number): void; $setHtml(handle: number, value: string): void; $setOptions(handle: number, options: IWebviewContentOptions): void; $postMessage(handle: number, value: any): Promise; } export interface ExtHostEditorInsetsShape { $onDidDispose(handle: number): void; $onDidReceiveMessage(handle: number, message: any): void; } //#region --- tabs model export const enum TabInputKind { UnknownInput, TextInput, TextDiffInput, NotebookInput, NotebookDiffInput, CustomEditorInput, WebviewEditorInput, TerminalEditorInput } export const enum TabModelOperationKind { TAB_OPEN, TAB_CLOSE, TAB_UPDATE, TAB_MOVE } export interface UnknownInputDto { kind: TabInputKind.UnknownInput; } export interface TextInputDto { kind: TabInputKind.TextInput; uri: UriComponents; } export interface TextDiffInputDto { kind: TabInputKind.TextDiffInput; original: UriComponents; modified: UriComponents; } export interface NotebookInputDto { kind: TabInputKind.NotebookInput; notebookType: string; uri: UriComponents; } export interface NotebookDiffInputDto { kind: TabInputKind.NotebookDiffInput; notebookType: string; original: UriComponents; modified: UriComponents; } export interface CustomInputDto { kind: TabInputKind.CustomEditorInput; viewType: string; uri: UriComponents; } export interface WebviewInputDto { kind: TabInputKind.WebviewEditorInput; viewType: string; } export interface TabInputDto { kind: TabInputKind.TerminalEditorInput; } export type AnyInputDto = UnknownInputDto | TextInputDto | TextDiffInputDto | NotebookInputDto | NotebookDiffInputDto | CustomInputDto | WebviewInputDto | TabInputDto; export interface MainThreadEditorTabsShape extends IDisposable { // manage tabs: move, close, rearrange etc $moveTab(tabId: string, index: number, viewColumn: EditorGroupColumn, preserveFocus?: boolean): void; $closeTab(tabIds: string[], preserveFocus?: boolean): Promise; $closeGroup(groupIds: number[], preservceFocus?: boolean): Promise; } export interface IEditorTabGroupDto { isActive: boolean; viewColumn: EditorGroupColumn; // Decided not to go with simple index here due to opening and closing causing index shifts // This allows us to patch the model without having to do full rebuilds tabs: IEditorTabDto[]; groupId: number; } export interface TabOperation { readonly kind: TabModelOperationKind.TAB_OPEN | TabModelOperationKind.TAB_CLOSE | TabModelOperationKind.TAB_UPDATE | TabModelOperationKind.TAB_MOVE; // TODO @lramos15 Possibly get rid of index for tab update, it's only needed for open and close readonly index: number; readonly tabDto: IEditorTabDto; readonly groupId: number; readonly oldIndex?: number; } export interface IEditorTabDto { id: string; label: string; input: AnyInputDto; editorId?: string; isActive: boolean; isPinned: boolean; isPreview: boolean; isDirty: boolean; } export interface IExtHostEditorTabsShape { // Accepts a whole new model $acceptEditorTabModel(tabGroups: IEditorTabGroupDto[]): void; // Only when group property changes (not the tabs inside) $acceptTabGroupUpdate(groupDto: IEditorTabGroupDto): void; // When a tab is added, removed, or updated $acceptTabOperation(operation: TabOperation): void; } //#endregion export type WebviewHandle = string; export interface WebviewPanelShowOptions { readonly viewColumn?: EditorGroupColumn; readonly preserveFocus?: boolean; } export interface WebviewExtensionDescription { readonly id: ExtensionIdentifier; readonly location: UriComponents; } export enum WebviewEditorCapabilities { Editable, SupportsHotExit, } export interface IWebviewPortMapping { readonly webviewPort: number; readonly extensionHostPort: number; } export interface IWebviewContentOptions { readonly enableScripts?: boolean; readonly enableForms?: boolean; readonly enableCommandUris?: boolean; readonly localResourceRoots?: readonly UriComponents[]; readonly portMapping?: readonly IWebviewPortMapping[]; } export interface IWebviewPanelOptions { readonly enableFindWidget?: boolean; readonly retainContextWhenHidden?: boolean; } export interface CustomTextEditorCapabilities { readonly supportsMove?: boolean; } export const enum WebviewMessageArrayBufferViewType { Int8Array = 1, Uint8Array = 2, Uint8ClampedArray = 3, Int16Array = 4, Uint16Array = 5, Int32Array = 6, Uint32Array = 7, Float32Array = 8, Float64Array = 9, BigInt64Array = 10, BigUint64Array = 11, } export interface WebviewMessageArrayBufferReference { readonly $$vscode_array_buffer_reference$$: true; readonly index: number; /** * Tracks if the reference is to a view instead of directly to an ArrayBuffer. */ readonly view?: { readonly type: WebviewMessageArrayBufferViewType; readonly byteLength: number; readonly byteOffset: number; }; } export interface MainThreadWebviewsShape extends IDisposable { $setHtml(handle: WebviewHandle, value: string): void; $setOptions(handle: WebviewHandle, options: IWebviewContentOptions): void; $postMessage(handle: WebviewHandle, value: string, ...buffers: VSBuffer[]): Promise; } export interface IWebviewIconPath { readonly light: UriComponents; readonly dark: UriComponents; } export interface IWebviewInitData { readonly title: string; readonly webviewOptions: IWebviewContentOptions; readonly panelOptions: IWebviewPanelOptions; readonly serializeBuffersForPostMessage: boolean; } export interface MainThreadWebviewPanelsShape extends IDisposable { $createWebviewPanel( extension: WebviewExtensionDescription, handle: WebviewHandle, viewType: string, initData: IWebviewInitData, showOptions: WebviewPanelShowOptions, ): void; $disposeWebview(handle: WebviewHandle): void; $reveal(handle: WebviewHandle, showOptions: WebviewPanelShowOptions): void; $setTitle(handle: WebviewHandle, value: string): void; $setIconPath(handle: WebviewHandle, value: IWebviewIconPath | undefined): void; $registerSerializer(viewType: string, options: { serializeBuffersForPostMessage: boolean }): void; $unregisterSerializer(viewType: string): void; } export interface MainThreadCustomEditorsShape extends IDisposable { $registerTextEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, capabilities: CustomTextEditorCapabilities, serializeBuffersForPostMessage: boolean): void; $registerCustomEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, supportsMultipleEditorsPerDocument: boolean, serializeBuffersForPostMessage: boolean): void; $unregisterEditorProvider(viewType: string): void; $onDidEdit(resource: UriComponents, viewType: string, editId: number, label: string | undefined): void; $onContentChange(resource: UriComponents, viewType: string): void; } export interface MainThreadWebviewViewsShape extends IDisposable { $registerWebviewViewProvider(extension: WebviewExtensionDescription, viewType: string, options: { retainContextWhenHidden?: boolean; serializeBuffersForPostMessage: boolean }): void; $unregisterWebviewViewProvider(viewType: string): void; $setWebviewViewTitle(handle: WebviewHandle, value: string | undefined): void; $setWebviewViewDescription(handle: WebviewHandle, value: string | undefined): void; $setWebviewViewBadge(handle: WebviewHandle, badge: IViewBadge | undefined): void; $show(handle: WebviewHandle, preserveFocus: boolean): void; } export interface WebviewPanelViewStateData { [handle: string]: { readonly active: boolean; readonly visible: boolean; readonly position: EditorGroupColumn; }; } export interface ExtHostWebviewsShape { $onMessage(handle: WebviewHandle, jsonSerializedMessage: string, buffers: SerializableObjectWithBuffers): void; $onMissingCsp(handle: WebviewHandle, extensionId: string): void; } export interface ExtHostWebviewPanelsShape { $onDidChangeWebviewPanelViewStates(newState: WebviewPanelViewStateData): void; $onDidDisposeWebviewPanel(handle: WebviewHandle): Promise; $deserializeWebviewPanel( newWebviewHandle: WebviewHandle, viewType: string, initData: { title: string; state: any; webviewOptions: IWebviewContentOptions; panelOptions: IWebviewPanelOptions; active: boolean; }, position: EditorGroupColumn, ): Promise; } export interface ExtHostCustomEditorsShape { $resolveWebviewEditor( resource: UriComponents, newWebviewHandle: WebviewHandle, viewType: string, initData: { title: string; webviewOptions: IWebviewContentOptions; panelOptions: IWebviewPanelOptions; }, position: EditorGroupColumn, cancellation: CancellationToken ): Promise; $createCustomDocument(resource: UriComponents, viewType: string, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, cancellation: CancellationToken): Promise<{ editable: boolean }>; $disposeCustomDocument(resource: UriComponents, viewType: string): Promise; $undo(resource: UriComponents, viewType: string, editId: number, isDirty: boolean): Promise; $redo(resource: UriComponents, viewType: string, editId: number, isDirty: boolean): Promise; $revert(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise; $disposeEdits(resourceComponents: UriComponents, viewType: string, editIds: number[]): void; $onSave(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise; $onSaveAs(resource: UriComponents, viewType: string, targetResource: UriComponents, cancellation: CancellationToken): Promise; $backup(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise; $onMoveCustomEditor(handle: WebviewHandle, newResource: UriComponents, viewType: string): Promise; } export interface ExtHostWebviewViewsShape { $resolveWebviewView(webviewHandle: WebviewHandle, viewType: string, title: string | undefined, state: any, cancellation: CancellationToken): Promise; $onDidChangeWebviewViewVisibility(webviewHandle: WebviewHandle, visible: boolean): void; $disposeWebviewView(webviewHandle: WebviewHandle): void; } export enum CellOutputKind { Text = 1, Error = 2, Rich = 3 } export enum NotebookEditorRevealType { Default = 0, InCenter = 1, InCenterIfOutsideViewport = 2, AtTop = 3 } export interface INotebookDocumentShowOptions { position?: EditorGroupColumn; preserveFocus?: boolean; pinned?: boolean; selections?: ICellRange[]; } export type INotebookCellStatusBarEntryDto = Dto; export interface INotebookCellStatusBarListDto { items: INotebookCellStatusBarEntryDto[]; cacheId: number; } export interface MainThreadNotebookShape extends IDisposable { $registerNotebookProvider(extension: notebookCommon.NotebookExtensionDescription, viewType: string, options: notebookCommon.TransientOptions, registration: notebookCommon.INotebookContributionData | undefined): Promise; $updateNotebookProviderOptions(viewType: string, options?: { transientOutputs: boolean; transientCellMetadata: notebookCommon.TransientCellMetadata; transientDocumentMetadata: notebookCommon.TransientDocumentMetadata }): Promise; $unregisterNotebookProvider(viewType: string): Promise; $registerNotebookSerializer(handle: number, extension: notebookCommon.NotebookExtensionDescription, viewType: string, options: notebookCommon.TransientOptions, registration: notebookCommon.INotebookContributionData | undefined): void; $unregisterNotebookSerializer(handle: number): void; $registerNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined, viewType: string): Promise; $unregisterNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined): Promise; $emitCellStatusBarEvent(eventHandle: number): void; } export interface MainThreadNotebookEditorsShape extends IDisposable { $tryShowNotebookDocument(uriComponents: UriComponents, viewType: string, options: INotebookDocumentShowOptions): Promise; $tryRevealRange(id: string, range: ICellRange, revealType: NotebookEditorRevealType): Promise; $registerNotebookEditorDecorationType(key: string, options: notebookCommon.INotebookDecorationRenderOptions): void; $removeNotebookEditorDecorationType(key: string): void; $trySetSelections(id: string, range: ICellRange[]): void; $trySetDecorations(id: string, range: ICellRange, decorationKey: string): void; $tryApplyEdits(editorId: string, modelVersionId: number, cellEdits: ICellEditOperationDto[]): Promise; } export interface MainThreadNotebookDocumentsShape extends IDisposable { $tryCreateNotebook(options: { viewType: string; content?: NotebookDataDto }): Promise; $tryOpenNotebook(uriComponents: UriComponents): Promise; $trySaveNotebook(uri: UriComponents): Promise; } export interface INotebookKernelDto2 { id: string; notebookType: string; extensionId: ExtensionIdentifier; extensionLocation: UriComponents; label: string; detail?: string; description?: string; kind?: string; supportedLanguages?: string[]; supportsInterrupt?: boolean; supportsExecutionOrder?: boolean; preloads?: { uri: UriComponents; provides: string[] }[]; } export interface INotebookProxyKernelDto { id: string; notebookType: string; extensionId: ExtensionIdentifier; extensionLocation: UriComponents; label: string; detail?: string; description?: string; kind?: string; } export interface ICellExecuteOutputEditDto { editType: CellExecutionUpdateType.Output; append?: boolean; outputs: NotebookOutputDto[]; } export interface ICellExecuteOutputItemEditDto { editType: CellExecutionUpdateType.OutputItems; append?: boolean; outputId: string; items: NotebookOutputItemDto[]; } export interface ICellExecutionStateUpdateDto extends ICellExecutionStateUpdate { } export interface ICellExecutionCompleteDto extends ICellExecutionComplete { } export type ICellExecuteUpdateDto = ICellExecuteOutputEditDto | ICellExecuteOutputItemEditDto | ICellExecutionStateUpdateDto; export interface MainThreadNotebookKernelsShape extends IDisposable { $postMessage(handle: number, editorId: string | undefined, message: any): Promise; $addKernel(handle: number, data: INotebookKernelDto2): Promise; $updateKernel(handle: number, data: Partial): void; $removeKernel(handle: number): void; $updateNotebookPriority(handle: number, uri: UriComponents, value: number | undefined): void; $createExecution(handle: number, controllerId: string, uri: UriComponents, cellHandle: number): void; $updateExecution(handle: number, data: SerializableObjectWithBuffers): void; $completeExecution(handle: number, data: SerializableObjectWithBuffers): void; } export interface MainThreadNotebookRenderersShape extends IDisposable { $postMessage(editorId: string | undefined, rendererId: string, message: unknown): Promise; } export interface MainThreadInteractiveShape extends IDisposable { } export interface MainThreadUrlsShape extends IDisposable { $registerUriHandler(handle: number, extensionId: ExtensionIdentifier): Promise; $unregisterUriHandler(handle: number): Promise; $createAppUri(uri: UriComponents): Promise; } export interface ExtHostUrlsShape { $handleExternalUri(handle: number, uri: UriComponents): Promise; } export interface MainThreadUriOpenersShape extends IDisposable { $registerUriOpener(id: string, schemes: readonly string[], extensionId: ExtensionIdentifier, label: string): Promise; $unregisterUriOpener(id: string): Promise; } export interface ExtHostUriOpenersShape { $canOpenUri(id: string, uri: UriComponents, token: CancellationToken): Promise; $openUri(id: string, context: { resolvedUri: UriComponents; sourceUri: UriComponents }, token: CancellationToken): Promise; } export interface ITextSearchComplete { limitHit?: boolean; } export interface MainThreadWorkspaceShape extends IDisposable { $startFileSearch(includePattern: string | null, includeFolder: UriComponents | null, excludePatternOrDisregardExcludes: string | false | null, maxResults: number | null, token: CancellationToken): Promise; $startTextSearch(query: search.IPatternInfo, folder: UriComponents | null, options: ITextQueryBuilderOptions, requestId: number, token: CancellationToken): Promise; $checkExists(folders: readonly UriComponents[], includes: string[], token: CancellationToken): Promise; $saveAll(includeUntitled?: boolean): Promise; $updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents; name?: string }[]): Promise; $resolveProxy(url: string): Promise; $requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise; } export interface IFileChangeDto { resource: UriComponents; type: files.FileChangeType; } export interface MainThreadFileSystemShape extends IDisposable { $registerFileSystemProvider(handle: number, scheme: string, capabilities: files.FileSystemProviderCapabilities): Promise; $unregisterProvider(handle: number): void; $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; $stat(uri: UriComponents): Promise; $readdir(resource: UriComponents): Promise<[string, files.FileType][]>; $readFile(resource: UriComponents): Promise; $writeFile(resource: UriComponents, content: VSBuffer): Promise; $rename(resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $copy(resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $mkdir(resource: UriComponents): Promise; $delete(resource: UriComponents, opts: files.IFileDeleteOptions): Promise; $watch(extensionId: string, session: number, resource: UriComponents, opts: files.IWatchOptions): void; $unwatch(session: number): void; $ensureActivation(scheme: string): Promise; } export interface MainThreadLabelServiceShape extends IDisposable { $registerResourceLabelFormatter(handle: number, formatter: ResourceLabelFormatter): void; $unregisterResourceLabelFormatter(handle: number): void; } export interface MainThreadSearchShape extends IDisposable { $registerFileSearchProvider(handle: number, scheme: string): void; $registerTextSearchProvider(handle: number, scheme: string): void; $unregisterProvider(handle: number): void; $handleFileMatch(handle: number, session: number, data: UriComponents[]): void; $handleTextMatch(handle: number, session: number, data: search.IRawFileMatch2[]): void; $handleTelemetry(eventName: string, data: any): void; } export interface MainThreadTaskShape extends IDisposable { $createTaskId(task: tasks.TaskDTO): Promise; $registerTaskProvider(handle: number, type: string): Promise; $unregisterTaskProvider(handle: number): Promise; $fetchTasks(filter?: tasks.TaskFilterDTO): Promise; $getTaskExecution(value: tasks.TaskHandleDTO | tasks.TaskDTO): Promise; $executeTask(task: tasks.TaskHandleDTO | tasks.TaskDTO): Promise; $terminateTask(id: string): Promise; $registerTaskSystem(scheme: string, info: tasks.TaskSystemInfoDTO): void; $customExecutionComplete(id: string, result?: number): Promise; $registerSupportedExecutions(custom?: boolean, shell?: boolean, process?: boolean): Promise; } export interface MainThreadExtensionServiceShape extends IDisposable { $getExtension(extensionId: string): Promise | undefined>; $activateExtension(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise; $onWillActivateExtension(extensionId: ExtensionIdentifier): Promise; $onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void; $onExtensionActivationError(extensionId: ExtensionIdentifier, error: SerializedError, missingExtensionDependency: MissingExtensionDependency | null): Promise; $onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void; $setPerformanceMarks(marks: performance.PerformanceMark[]): Promise; $asBrowserUri(uri: UriComponents): Promise; } export interface SCMProviderFeatures { hasQuickDiffProvider?: boolean; count?: number; commitTemplate?: string; acceptInputCommand?: languages.Command; actionButton?: SCMActionButtonDto | null; statusBarCommands?: ICommandDto[]; } export interface SCMActionButtonDto { command: ICommandDto; description?: string; } export interface SCMGroupFeatures { hideWhenEmpty?: boolean; } export type SCMRawResource = [ number /*handle*/, UriComponents /*resourceUri*/, [UriComponents | ThemeIcon | undefined, UriComponents | ThemeIcon | undefined] /*icons: light, dark*/, string /*tooltip*/, boolean /*strike through*/, boolean /*faded*/, string /*context value*/, ICommandDto | undefined /*command*/ ]; export type SCMRawResourceSplice = [ number /* start */, number /* delete count */, SCMRawResource[] ]; export type SCMRawResourceSplices = [ number, /*handle*/ SCMRawResourceSplice[] ]; export interface MainThreadSCMShape extends IDisposable { $registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void; $updateSourceControl(handle: number, features: SCMProviderFeatures): void; $unregisterSourceControl(handle: number): void; $registerGroups(sourceControlHandle: number, groups: [number /*handle*/, string /*id*/, string /*label*/, SCMGroupFeatures][], splices: SCMRawResourceSplices[]): void; $updateGroup(sourceControlHandle: number, handle: number, features: SCMGroupFeatures): void; $updateGroupLabel(sourceControlHandle: number, handle: number, label: string): void; $unregisterGroup(sourceControlHandle: number, handle: number): void; $spliceResourceStates(sourceControlHandle: number, splices: SCMRawResourceSplices[]): void; $setInputBoxValue(sourceControlHandle: number, value: string): void; $setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void; $setInputBoxVisibility(sourceControlHandle: number, visible: boolean): void; $showValidationMessage(sourceControlHandle: number, message: string | IMarkdownString, type: InputValidationType): void; $setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void; } export type DebugSessionUUID = string; export interface IDebugConfiguration { type: string; name: string; request: string; [key: string]: any; } export interface IStartDebuggingOptions { parentSessionID?: DebugSessionUUID; lifecycleManagedByParent?: boolean; repl?: IDebugSessionReplMode; noDebug?: boolean; compact?: boolean; debugUI?: { simple?: boolean; }; suppressSaveBeforeStart?: boolean; } export interface MainThreadDebugServiceShape extends IDisposable { $registerDebugTypes(debugTypes: string[]): void; $sessionCached(sessionID: string): void; $acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void; $acceptDAError(handle: number, name: string, message: string, stack: string | undefined): void; $acceptDAExit(handle: number, code: number | undefined, signal: string | undefined): void; $registerDebugConfigurationProvider(type: string, triggerKind: DebugConfigurationProviderTriggerKind, hasProvideMethod: boolean, hasResolveMethod: boolean, hasResolve2Method: boolean, handle: number): Promise; $registerDebugAdapterDescriptorFactory(type: string, handle: number): Promise; $unregisterDebugConfigurationProvider(handle: number): void; $unregisterDebugAdapterDescriptorFactory(handle: number): void; $startDebugging(folder: UriComponents | undefined, nameOrConfig: string | IDebugConfiguration, options: IStartDebuggingOptions): Promise; $stopDebugging(sessionId: DebugSessionUUID | undefined): Promise; $setDebugSessionName(id: DebugSessionUUID, name: string): void; $customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): Promise; $getDebugProtocolBreakpoint(id: DebugSessionUUID, breakpoinId: string): Promise; $appendDebugConsole(value: string): void; $startBreakpointEvents(): void; $registerBreakpoints(breakpoints: Array): Promise; $unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[], dataBreakpointIds: string[]): Promise; } export interface IOpenUriOptions { readonly allowTunneling?: boolean; readonly allowContributedOpeners?: boolean | string; } export interface MainThreadWindowShape extends IDisposable { $getWindowVisibility(): Promise; $openUri(uri: UriComponents, uriString: string | undefined, options: IOpenUriOptions): Promise; $asExternalUri(uri: UriComponents, options: IOpenUriOptions): Promise; } export enum CandidatePortSource { None = 0, Process = 1, Output = 2 } export interface PortAttributesProviderSelector { pid?: number; portRange?: [number, number]; commandMatcher?: RegExp; } export interface MainThreadTunnelServiceShape extends IDisposable { $openTunnel(tunnelOptions: TunnelOptions, source: string | undefined): Promise; $closeTunnel(remote: { host: string; port: number }): Promise; $getTunnels(): Promise; $setTunnelProvider(features?: TunnelProviderFeatures): Promise; $setRemoteTunnelService(processId: number): Promise; $setCandidateFilter(): Promise; $onFoundNewCandidates(candidates: CandidatePort[]): Promise; $setCandidatePortSource(source: CandidatePortSource): Promise; $registerPortsAttributesProvider(selector: PortAttributesProviderSelector, providerHandle: number): Promise; $unregisterPortsAttributesProvider(providerHandle: number): Promise; } export interface MainThreadTimelineShape extends IDisposable { $registerTimelineProvider(provider: TimelineProviderDescriptor): void; $unregisterTimelineProvider(source: string): void; $emitTimelineChangeEvent(e: TimelineChangeEvent | undefined): void; } // -- extension host export interface ICommandHandlerDescriptionDto { readonly description: string; readonly args: ReadonlyArray<{ readonly name: string; readonly isOptional?: boolean; readonly description?: string; }>; readonly returns?: string; } export interface ExtHostCommandsShape { $executeContributedCommand(id: string, ...args: any[]): Promise; $getContributedCommandHandlerDescriptions(): Promise<{ [id: string]: string | ICommandHandlerDescriptionDto }>; } export interface ExtHostConfigurationShape { $initializeConfiguration(data: IConfigurationInitData): void; $acceptConfigurationChanged(data: IConfigurationInitData, change: IConfigurationChange): void; } export interface ExtHostDiagnosticsShape { $acceptMarkersChange(data: [UriComponents, IMarkerData[]][]): void; } export interface ExtHostDocumentContentProvidersShape { $provideTextDocumentContent(handle: number, uri: UriComponents): Promise; } export interface IModelAddedData { uri: UriComponents; versionId: number; lines: string[]; EOL: string; languageId: string; isDirty: boolean; } export interface ExtHostDocumentsShape { $acceptModelLanguageChanged(strURL: UriComponents, newLanguageId: string): void; $acceptModelSaved(strURL: UriComponents): void; $acceptDirtyStateChanged(strURL: UriComponents, isDirty: boolean): void; $acceptModelChanged(strURL: UriComponents, e: IModelChangedEvent, isDirty: boolean): void; } export interface ExtHostDocumentSaveParticipantShape { $participateInSave(resource: UriComponents, reason: SaveReason): Promise; } export interface ITextEditorAddData { id: string; documentUri: UriComponents; options: IResolvedTextEditorConfiguration; selections: ISelection[]; visibleRanges: IRange[]; editorPosition: EditorGroupColumn | undefined; } export interface ITextEditorPositionData { [id: string]: EditorGroupColumn; } export interface IEditorPropertiesChangeData { options: IResolvedTextEditorConfiguration | null; selections: ISelectionChangeEvent | null; visibleRanges: IRange[] | null; } export interface ISelectionChangeEvent { selections: Selection[]; source?: string; } export interface ExtHostEditorsShape { $acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void; $acceptEditorPositionData(data: ITextEditorPositionData): void; } export interface IDocumentsAndEditorsDelta { removedDocuments?: UriComponents[]; addedDocuments?: IModelAddedData[]; removedEditors?: string[]; addedEditors?: ITextEditorAddData[]; newActiveEditor?: string | null; } export interface ExtHostDocumentsAndEditorsShape { $acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void; } export interface IDataTransferFileDTO { readonly name: string; readonly uri?: UriComponents; } export interface DataTransferItemDTO { readonly asString: string; readonly fileData: IDataTransferFileDTO | undefined; } export interface DataTransferDTO { readonly items: Array<[/* type */string, DataTransferItemDTO]>; } export interface ExtHostTreeViewsShape { $getChildren(treeViewId: string, treeItemHandle?: string): Promise; $handleDrop(destinationViewId: string, requestId: number, treeDataTransfer: DataTransferDTO, targetHandle: string | undefined, token: CancellationToken, operationUuid?: string, sourceViewId?: string, sourceTreeItemHandles?: string[]): Promise; $handleDrag(sourceViewId: string, sourceTreeItemHandles: string[], operationUuid: string, token: CancellationToken): Promise; $setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void; $setSelection(treeViewId: string, treeItemHandles: string[]): void; $setVisible(treeViewId: string, visible: boolean): void; $hasResolve(treeViewId: string): Promise; $resolve(treeViewId: string, treeItemHandle: string, token: CancellationToken): Promise; } export interface ExtHostWorkspaceShape { $initializeWorkspace(workspace: IWorkspaceData | null, trusted: boolean): void; $acceptWorkspaceData(workspace: IWorkspaceData | null): void; $handleTextSearchResult(result: search.IRawFileMatch2, requestId: number): void; $onDidGrantWorkspaceTrust(): void; } export interface ExtHostFileSystemInfoShape { $acceptProviderInfos(uri: UriComponents, capabilities: number | null): void; } export interface ExtHostFileSystemShape { $stat(handle: number, resource: UriComponents): Promise; $readdir(handle: number, resource: UriComponents): Promise<[string, files.FileType][]>; $readFile(handle: number, resource: UriComponents): Promise; $writeFile(handle: number, resource: UriComponents, content: VSBuffer, opts: files.IFileWriteOptions): Promise; $rename(handle: number, resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $copy(handle: number, resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $mkdir(handle: number, resource: UriComponents): Promise; $delete(handle: number, resource: UriComponents, opts: files.IFileDeleteOptions): Promise; $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void; $unwatch(handle: number, session: number): void; $open(handle: number, resource: UriComponents, opts: files.IFileOpenOptions): Promise; $close(handle: number, fd: number): Promise; $read(handle: number, fd: number, pos: number, length: number): Promise; $write(handle: number, fd: number, pos: number, data: VSBuffer): Promise; } export interface ExtHostLabelServiceShape { $registerResourceLabelFormatter(formatter: ResourceLabelFormatter): IDisposable; } export interface ExtHostAuthenticationShape { $getSessions(id: string, scopes?: string[]): Promise>; $createSession(id: string, scopes: string[]): Promise; $removeSession(id: string, sessionId: string): Promise; $onDidChangeAuthenticationSessions(id: string, label: string): Promise; $setProviders(providers: AuthenticationProviderInformation[]): Promise; } export interface ExtHostSecretStateShape { $onDidChangePassword(e: { extensionId: string; key: string }): Promise; } export interface ExtHostSearchShape { $enableExtensionHostSearch(): void; $provideFileSearchResults(handle: number, session: number, query: search.IRawQuery, token: CancellationToken): Promise; $provideTextSearchResults(handle: number, session: number, query: search.IRawTextQuery, token: CancellationToken): Promise; $clearCache(cacheKey: string): Promise; } export interface ExtHostExtensionServiceShape { $resolveAuthority(remoteAuthority: string, resolveAttempt: number): Promise; /** * Returns `null` if no resolver for `remoteAuthority` is found. */ $getCanonicalURI(remoteAuthority: string, uri: UriComponents): Promise; $startExtensionHost(extensionsDelta: IExtensionDescriptionDelta): Promise; $extensionTestsExecute(): Promise; $extensionTestsExit(code: number): Promise; $activateByEvent(activationEvent: string, activationKind: ActivationKind): Promise; $activate(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise; $setRemoteEnvironment(env: { [key: string]: string | null }): Promise; $updateRemoteConnectionData(connectionData: IRemoteConnectionData): Promise; $deltaExtensions(extensionsDelta: IExtensionDescriptionDelta): Promise; $test_latency(n: number): Promise; $test_up(b: VSBuffer): Promise; $test_down(size: number): Promise; } export interface FileSystemEvents { created: UriComponents[]; changed: UriComponents[]; deleted: UriComponents[]; } export interface SourceTargetPair { source?: UriComponents; target: UriComponents; } export interface IWillRunFileOperationParticipation { edit: IWorkspaceEditDto; extensionNames: string[]; } export interface ExtHostFileSystemEventServiceShape { $onFileEvent(events: FileSystemEvents): void; $onWillRunFileOperation(operation: files.FileOperation, files: readonly SourceTargetPair[], timeout: number, token: CancellationToken): Promise; $onDidRunFileOperation(operation: files.FileOperation, files: readonly SourceTargetPair[]): void; } export interface ExtHostLanguagesShape { $acceptLanguageIds(ids: string[]): void; } export interface ExtHostHeapServiceShape { $onGarbageCollection(ids: number[]): void; } export interface IRawColorInfo { color: [number, number, number, number]; range: IRange; } export class IdObject { _id?: number; private static _n = 0; static mixin(object: T): T & IdObject { (object)._id = IdObject._n++; return object; } } export const enum ISuggestDataDtoField { label = 'a', kind = 'b', detail = 'c', documentation = 'd', sortText = 'e', filterText = 'f', preselect = 'g', insertText = 'h', insertTextRules = 'i', range = 'j', commitCharacters = 'k', additionalTextEdits = 'l', command = 'm', kindModifier = 'n', } export interface ISuggestDataDto { [ISuggestDataDtoField.label]: string | languages.CompletionItemLabel; [ISuggestDataDtoField.kind]?: languages.CompletionItemKind; [ISuggestDataDtoField.detail]?: string; [ISuggestDataDtoField.documentation]?: string | IMarkdownString; [ISuggestDataDtoField.sortText]?: string; [ISuggestDataDtoField.filterText]?: string; [ISuggestDataDtoField.preselect]?: true; [ISuggestDataDtoField.insertText]?: string; [ISuggestDataDtoField.insertTextRules]?: languages.CompletionItemInsertTextRule; [ISuggestDataDtoField.range]?: IRange | { insert: IRange; replace: IRange }; [ISuggestDataDtoField.commitCharacters]?: string[]; [ISuggestDataDtoField.additionalTextEdits]?: ISingleEditOperation[]; [ISuggestDataDtoField.command]?: languages.Command; [ISuggestDataDtoField.kindModifier]?: languages.CompletionItemTag[]; // not-standard x?: ChainedCacheId; } export const enum ISuggestResultDtoField { defaultRanges = 'a', completions = 'b', isIncomplete = 'c', duration = 'd', } export interface ISuggestResultDto { [ISuggestResultDtoField.defaultRanges]: { insert: IRange; replace: IRange }; [ISuggestResultDtoField.completions]: ISuggestDataDto[]; [ISuggestResultDtoField.isIncomplete]: undefined | true; [ISuggestResultDtoField.duration]: number; x?: number; } export interface ISignatureHelpDto { id: CacheId; signatures: languages.SignatureInformation[]; activeSignature: number; activeParameter: number; } export interface ISignatureHelpContextDto { readonly triggerKind: languages.SignatureHelpTriggerKind; readonly triggerCharacter: string | undefined; readonly isRetrigger: boolean; readonly activeSignatureHelp: ISignatureHelpDto | undefined; } export type IInlayHintDto = CachedSessionItem>; export type IInlayHintsDto = CachedSession<{ hints: IInlayHintDto[] }>; export type ILocationDto = Dto; export type ILocationLinkDto = Dto; export type IWorkspaceSymbolDto = CachedSessionItem>; export type IWorkspaceSymbolsDto = CachedSession<{ symbols: IWorkspaceSymbolDto[] }>; export interface IWorkspaceEditEntryMetadataDto { needsConfirmation: boolean; label: string; description?: string; iconPath?: { id: string } | UriComponents | { light: UriComponents; dark: UriComponents }; } export const enum WorkspaceEditType { File = 1, Text = 2, Cell = 3, } export interface IWorkspaceFileEditDto { _type: WorkspaceEditType.File; oldUri?: UriComponents; newUri?: UriComponents; options?: languages.WorkspaceFileEditOptions; metadata?: IWorkspaceEditEntryMetadataDto; } export interface IWorkspaceTextEditDto { _type: WorkspaceEditType.Text; resource: UriComponents; edit: languages.TextEdit; modelVersionId?: number; metadata?: IWorkspaceEditEntryMetadataDto; } export type ICellEditOperationDto = notebookCommon.ICellPartialMetadataEdit | notebookCommon.IDocumentMetadataEdit | { editType: notebookCommon.CellEditType.Replace; index: number; count: number; cells: NotebookCellDataDto[]; }; export interface IWorkspaceCellEditDto { _type: WorkspaceEditType.Cell; resource: UriComponents; notebookVersionId?: number; metadata?: IWorkspaceEditEntryMetadataDto; edit: ICellEditOperationDto; } export interface IWorkspaceEditDto { edits: Array; } export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): languages.WorkspaceEdit { if (data && data.edits) { for (const edit of data.edits) { if (typeof (edit).resource === 'object') { (edit).resource = URI.revive((edit).resource); } else { (edit).newUri = URI.revive((edit).newUri); (edit).oldUri = URI.revive((edit).oldUri); } if (edit.metadata && edit.metadata.iconPath) { edit.metadata = revive(edit.metadata); } } } return data; } export type ICommandDto = { $ident?: number } & languages.Command; export interface ICodeActionDto { cacheId?: ChainedCacheId; title: string; edit?: IWorkspaceEditDto; diagnostics?: Dto; command?: ICommandDto; kind?: string; isPreferred?: boolean; disabled?: string; } export interface ICodeActionListDto { cacheId: CacheId; actions: ReadonlyArray; } export interface ICodeActionProviderMetadataDto { readonly providedKinds?: readonly string[]; readonly documentation?: ReadonlyArray<{ readonly kind: string; readonly command: ICommandDto }>; } export type CacheId = number; export type ChainedCacheId = [CacheId, CacheId]; type CachedSessionItem = T & { cacheId?: ChainedCacheId }; type CachedSession = T & { cacheId?: CacheId }; export type ILinksListDto = CachedSession<{ links: ILinkDto[] }>; export type ILinkDto = CachedSessionItem>; export type ICodeLensListDto = CachedSession<{ lenses: ICodeLensDto[] }>; export type ICodeLensDto = CachedSessionItem>; export type ICallHierarchyItemDto = Dto; export interface IIncomingCallDto { from: ICallHierarchyItemDto; fromRanges: IRange[]; } export interface IOutgoingCallDto { fromRanges: IRange[]; to: ICallHierarchyItemDto; } export interface ILanguageWordDefinitionDto { languageId: string; regexSource: string; regexFlags: string; } export interface ILinkedEditingRangesDto { ranges: IRange[]; wordPattern?: IRegExpDto; } export interface IInlineValueContextDto { frameId: number; stoppedLocation: IRange; } export type ITypeHierarchyItemDto = Dto; export interface ExtHostLanguageFeaturesShape { $provideDocumentSymbols(handle: number, resource: UriComponents, token: CancellationToken): Promise; $provideCodeLenses(handle: number, resource: UriComponents, token: CancellationToken): Promise; $resolveCodeLens(handle: number, symbol: ICodeLensDto, token: CancellationToken): Promise; $releaseCodeLenses(handle: number, id: number): void; $provideDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideDeclaration(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideImplementation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideTypeDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideHover(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideEvaluatableExpression(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideInlineValues(handle: number, resource: UriComponents, range: IRange, context: languages.InlineValueContext, token: CancellationToken): Promise; $provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideLinkedEditingRanges(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideReferences(handle: number, resource: UriComponents, position: IPosition, context: languages.ReferenceContext, token: CancellationToken): Promise; $provideCodeActions(handle: number, resource: UriComponents, rangeOrSelection: IRange | ISelection, context: languages.CodeActionContext, token: CancellationToken): Promise; $resolveCodeAction(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseCodeActions(handle: number, cacheId: number): void; $provideDocumentFormattingEdits(handle: number, resource: UriComponents, options: languages.FormattingOptions, token: CancellationToken): Promise; $provideDocumentRangeFormattingEdits(handle: number, resource: UriComponents, range: IRange, options: languages.FormattingOptions, token: CancellationToken): Promise; $provideOnTypeFormattingEdits(handle: number, resource: UriComponents, position: IPosition, ch: string, options: languages.FormattingOptions, token: CancellationToken): Promise; $provideWorkspaceSymbols(handle: number, search: string, token: CancellationToken): Promise; $resolveWorkspaceSymbol(handle: number, symbol: IWorkspaceSymbolDto, token: CancellationToken): Promise; $releaseWorkspaceSymbols(handle: number, id: number): void; $provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string, token: CancellationToken): Promise; $resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideDocumentSemanticTokens(handle: number, resource: UriComponents, previousResultId: number, token: CancellationToken): Promise; $releaseDocumentSemanticTokens(handle: number, semanticColoringResultId: number): void; $provideDocumentRangeSemanticTokens(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise; $provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: languages.CompletionContext, token: CancellationToken): Promise; $resolveCompletionItem(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseCompletionItems(handle: number, id: number): void; $provideInlineCompletions(handle: number, resource: UriComponents, position: IPosition, context: languages.InlineCompletionContext, token: CancellationToken): Promise; $handleInlineCompletionDidShow(handle: number, pid: number, idx: number): void; $freeInlineCompletionsList(handle: number, pid: number): void; $provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition, context: languages.SignatureHelpContext, token: CancellationToken): Promise; $releaseSignatureHelp(handle: number, id: number): void; $provideInlayHints(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise; $resolveInlayHint(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseInlayHints(handle: number, id: number): void; $provideDocumentLinks(handle: number, resource: UriComponents, token: CancellationToken): Promise; $resolveDocumentLink(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseDocumentLinks(handle: number, id: number): void; $provideDocumentColors(handle: number, resource: UriComponents, token: CancellationToken): Promise; $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise; $provideFoldingRanges(handle: number, resource: UriComponents, context: languages.FoldingContext, token: CancellationToken): Promise; $provideSelectionRanges(handle: number, resource: UriComponents, positions: IPosition[], token: CancellationToken): Promise; $prepareCallHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideCallHierarchyIncomingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $provideCallHierarchyOutgoingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $releaseCallHierarchy(handle: number, sessionId: string): void; $setWordDefinitions(wordDefinitions: ILanguageWordDefinitionDto[]): void; $prepareTypeHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideTypeHierarchySupertypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $provideTypeHierarchySubtypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $releaseTypeHierarchy(handle: number, sessionId: string): void; $provideDocumentOnDropEdits(handle: number, requestId: number, resource: UriComponents, position: IPosition, dataTransferDto: DataTransferDTO, token: CancellationToken): Promise | undefined>; } export interface ExtHostQuickOpenShape { $onItemSelected(handle: number): void; $validateInput(input: string): Promise; $onDidChangeActive(sessionId: number, handles: number[]): void; $onDidChangeSelection(sessionId: number, handles: number[]): void; $onDidAccept(sessionId: number): void; $onDidChangeValue(sessionId: number, value: string): void; $onDidTriggerButton(sessionId: number, handle: number): void; $onDidTriggerItemButton(sessionId: number, itemHandle: number, buttonHandle: number): void; $onDidHide(sessionId: number): void; } export interface ExtHostTelemetryShape { $initializeTelemetryLevel(level: TelemetryLevel, productConfig?: { usage: boolean; error: boolean }): void; $onDidChangeTelemetryLevel(level: TelemetryLevel): void; } export interface ITerminalLinkDto { /** The ID of the link to enable activation and disposal. */ id: number; /** The startIndex of the link in the line. */ startIndex: number; /** The length of the link in the line. */ length: number; /** The descriptive label for what the link does when activated. */ label?: string; } export interface ITerminalDimensionsDto { columns: number; rows: number; } export interface ExtHostTerminalServiceShape { $acceptTerminalClosed(id: number, exitCode: number | undefined): void; $acceptTerminalOpened(id: number, extHostTerminalId: string | undefined, name: string, shellLaunchConfig: IShellLaunchConfigDto): void; $acceptActiveTerminalChanged(id: number | null): void; $acceptTerminalProcessId(id: number, processId: number): void; $acceptTerminalProcessData(id: number, data: string): void; $acceptTerminalTitleChange(id: number, name: string): void; $acceptTerminalDimensions(id: number, cols: number, rows: number): void; $acceptTerminalMaximumDimensions(id: number, cols: number, rows: number): void; $acceptTerminalInteraction(id: number): void; $startExtensionTerminal(id: number, initialDimensions: ITerminalDimensionsDto | undefined): Promise; $acceptProcessAckDataEvent(id: number, charCount: number): void; $acceptProcessInput(id: number, data: string): void; $acceptProcessResize(id: number, cols: number, rows: number): void; $acceptProcessShutdown(id: number, immediate: boolean): void; $acceptProcessRequestInitialCwd(id: number): void; $acceptProcessRequestCwd(id: number): void; $acceptProcessRequestLatency(id: number): Promise; $provideLinks(id: number, line: string): Promise; $activateLink(id: number, linkId: number): void; $initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void; $acceptDefaultProfile(profile: ITerminalProfile, automationProfile: ITerminalProfile): void; $createContributedProfileTerminal(id: string, options: ICreateContributedTerminalProfileOptions): Promise; } export interface ExtHostSCMShape { $provideOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise; $onInputBoxValueChange(sourceControlHandle: number, value: string): void; $executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number, preserveFocus: boolean): Promise; $validateInput(sourceControlHandle: number, value: string, cursorPosition: number): Promise<[string | IMarkdownString, number] | undefined>; $setSelectedSourceControl(selectedSourceControlHandle: number | undefined): Promise; } export interface ExtHostTaskShape { $provideTasks(handle: number, validTypes: { [key: string]: boolean }): Promise; $resolveTask(handle: number, taskDTO: tasks.TaskDTO): Promise; $onDidStartTask(execution: tasks.TaskExecutionDTO, terminalId: number, resolvedDefinition: tasks.TaskDefinitionDTO): void; $onDidStartTaskProcess(value: tasks.TaskProcessStartedDTO): void; $onDidEndTaskProcess(value: tasks.TaskProcessEndedDTO): void; $OnDidEndTask(execution: tasks.TaskExecutionDTO): void; $resolveVariables(workspaceFolder: UriComponents, toResolve: { process?: { name: string; cwd?: string }; variables: string[] }): Promise<{ process?: string; variables: { [key: string]: string } }>; $jsonTasksSupported(): Promise; $findExecutable(command: string, cwd?: string, paths?: string[]): Promise; } export interface IBreakpointDto { type: string; id?: string; enabled: boolean; condition?: string; hitCondition?: string; logMessage?: string; } export interface IFunctionBreakpointDto extends IBreakpointDto { type: 'function'; functionName: string; } export interface IDataBreakpointDto extends IBreakpointDto { type: 'data'; dataId: string; canPersist: boolean; label: string; accessTypes?: DebugProtocol.DataBreakpointAccessType[]; accessType: DebugProtocol.DataBreakpointAccessType; } export interface ISourceBreakpointDto extends IBreakpointDto { type: 'source'; uri: UriComponents; line: number; character: number; } export interface IBreakpointsDeltaDto { added?: Array; removed?: string[]; changed?: Array; } export interface ISourceMultiBreakpointDto { type: 'sourceMulti'; uri: UriComponents; lines: { id: string; enabled: boolean; condition?: string; hitCondition?: string; logMessage?: string; line: number; character: number; }[]; } export interface IDebugSessionFullDto { id: DebugSessionUUID; type: string; name: string; parent: DebugSessionUUID | undefined; folderUri: UriComponents | undefined; configuration: IConfig; } export type IDebugSessionDto = IDebugSessionFullDto | DebugSessionUUID; export interface ExtHostDebugServiceShape { $substituteVariables(folder: UriComponents | undefined, config: IConfig): Promise; $runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, sessionId: string): Promise; $startDASession(handle: number, session: IDebugSessionDto): Promise; $stopDASession(handle: number): Promise; $sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void; $resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise; $resolveDebugConfigurationWithSubstitutedVariables(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise; $provideDebugConfigurations(handle: number, folder: UriComponents | undefined, token: CancellationToken): Promise; $provideDebugAdapter(handle: number, session: IDebugSessionDto): Promise>; $acceptDebugSessionStarted(session: IDebugSessionDto): void; $acceptDebugSessionTerminated(session: IDebugSessionDto): void; $acceptDebugSessionActiveChanged(session: IDebugSessionDto | undefined): void; $acceptDebugSessionCustomEvent(session: IDebugSessionDto, event: any): void; $acceptBreakpointsDelta(delta: IBreakpointsDeltaDto): void; $acceptDebugSessionNameChanged(session: IDebugSessionDto, name: string): void; } export interface DecorationRequest { readonly id: number; readonly uri: UriComponents; } export type DecorationData = [boolean, string, string, ThemeColor]; export type DecorationReply = { [id: number]: DecorationData }; export interface ExtHostDecorationsShape { $provideDecorations(handle: number, requests: DecorationRequest[], token: CancellationToken): Promise; } export interface ExtHostWindowShape { $onDidChangeWindowFocus(value: boolean): void; } export interface ExtHostLogLevelServiceShape { $setLevel(level: LogLevel): void; } export interface MainThreadLoggerShape { $log(file: UriComponents, messages: [LogLevel, string][]): void; $createLogger(file: UriComponents, options?: ILoggerOptions): Promise; } export interface ExtHostOutputServiceShape { $setVisibleChannel(channelId: string | null): void; } export interface ExtHostProgressShape { $acceptProgressCanceled(handle: number): void; } export interface ExtHostCommentsShape { $createCommentThreadTemplate(commentControllerHandle: number, uriComponents: UriComponents, range: IRange): void; $updateCommentThreadTemplate(commentControllerHandle: number, threadHandle: number, range: IRange): Promise; $deleteCommentThread(commentControllerHandle: number, commentThreadHandle: number): void; $provideCommentingRanges(commentControllerHandle: number, uriComponents: UriComponents, token: CancellationToken): Promise; $toggleReaction(commentControllerHandle: number, threadHandle: number, uri: UriComponents, comment: languages.Comment, reaction: languages.CommentReaction): Promise; } export interface INotebookSelectionChangeEvent { selections: ICellRange[]; } export interface INotebookVisibleRangesEvent { ranges: ICellRange[]; } export interface INotebookEditorPropertiesChangeData { visibleRanges?: INotebookVisibleRangesEvent; selections?: INotebookSelectionChangeEvent; } export interface INotebookDocumentPropertiesChangeData { metadata?: notebookCommon.NotebookDocumentMetadata; } export interface INotebookModelAddedData { uri: UriComponents; versionId: number; cells: NotebookCellDto[]; viewType: string; metadata?: notebookCommon.NotebookDocumentMetadata; } export interface INotebookEditorAddData { id: string; documentUri: UriComponents; selections: ICellRange[]; visibleRanges: ICellRange[]; viewColumn?: number; } export interface INotebookDocumentsAndEditorsDelta { removedDocuments?: UriComponents[]; addedDocuments?: INotebookModelAddedData[]; removedEditors?: string[]; addedEditors?: INotebookEditorAddData[]; newActiveEditor?: string | null; visibleEditors?: string[]; } export interface NotebookOutputItemDto { readonly mime: string; readonly valueBytes: VSBuffer; } export interface NotebookOutputDto { items: NotebookOutputItemDto[]; outputId: string; metadata?: Record; } export interface NotebookCellDataDto { source: string; language: string; mime: string | undefined; cellKind: notebookCommon.CellKind; outputs: NotebookOutputDto[]; metadata?: notebookCommon.NotebookCellMetadata; internalMetadata?: notebookCommon.NotebookCellInternalMetadata; } export interface NotebookDataDto { readonly cells: NotebookCellDataDto[]; readonly metadata: notebookCommon.NotebookDocumentMetadata; } export interface NotebookCellDto { handle: number; uri: UriComponents; eol: string; source: string[]; language: string; mime?: string; cellKind: notebookCommon.CellKind; outputs: NotebookOutputDto[]; metadata?: notebookCommon.NotebookCellMetadata; internalMetadata?: notebookCommon.NotebookCellInternalMetadata; } export interface ExtHostNotebookShape extends ExtHostNotebookDocumentsAndEditorsShape { $provideNotebookCellStatusBarItems(handle: number, uri: UriComponents, index: number, token: CancellationToken): Promise; $releaseNotebookCellStatusBarItems(id: number): void; $openNotebook(viewType: string, uri: UriComponents, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, token: CancellationToken): Promise>; $saveNotebook(viewType: string, uri: UriComponents, token: CancellationToken): Promise; $saveNotebookAs(viewType: string, uri: UriComponents, target: UriComponents, token: CancellationToken): Promise; $backupNotebook(viewType: string, uri: UriComponents, cancellation: CancellationToken): Promise; $dataToNotebook(handle: number, data: VSBuffer, token: CancellationToken): Promise>; $notebookToData(handle: number, data: SerializableObjectWithBuffers, token: CancellationToken): Promise; } export interface ExtHostNotebookRenderersShape { $postRendererMessage(editorId: string, rendererId: string, message: unknown): void; } export interface ExtHostNotebookDocumentsAndEditorsShape { $acceptDocumentAndEditorsDelta(delta: SerializableObjectWithBuffers): void; } export type NotebookRawContentEventDto = // notebookCommon.NotebookCellsInitializeEvent | { readonly kind: notebookCommon.NotebookCellsChangeType.ModelChange; readonly changes: notebookCommon.NotebookCellTextModelSplice[]; } | { readonly kind: notebookCommon.NotebookCellsChangeType.Move; readonly index: number; readonly length: number; readonly newIdx: number; } | { readonly kind: notebookCommon.NotebookCellsChangeType.Output; readonly index: number; readonly outputs: NotebookOutputDto[]; } | { readonly kind: notebookCommon.NotebookCellsChangeType.OutputItem; readonly index: number; readonly outputId: string; readonly outputItems: NotebookOutputItemDto[]; readonly append: boolean; } | notebookCommon.NotebookCellsChangeLanguageEvent | notebookCommon.NotebookCellsChangeMimeEvent | notebookCommon.NotebookCellsChangeMetadataEvent | notebookCommon.NotebookCellsChangeInternalMetadataEvent // | notebookCommon.NotebookDocumentChangeMetadataEvent | notebookCommon.NotebookCellContentChangeEvent // | notebookCommon.NotebookDocumentUnknownChangeEvent ; export type NotebookCellsChangedEventDto = { readonly rawEvents: NotebookRawContentEventDto[]; readonly versionId: number; }; export interface ExtHostNotebookDocumentsShape { $acceptModelChanged(uriComponents: UriComponents, event: SerializableObjectWithBuffers, isDirty: boolean, newMetadata?: notebookCommon.NotebookDocumentMetadata): void; $acceptDirtyStateChanged(uriComponents: UriComponents, isDirty: boolean): void; $acceptModelSaved(uriComponents: UriComponents): void; } export type INotebookEditorViewColumnInfo = Record; export interface ExtHostNotebookEditorsShape { $acceptEditorPropertiesChanged(id: string, data: INotebookEditorPropertiesChangeData): void; $acceptEditorViewColumns(data: INotebookEditorViewColumnInfo): void; } export interface ExtHostNotebookKernelsShape { $acceptNotebookAssociation(handle: number, uri: UriComponents, value: boolean): void; $executeCells(handle: number, uri: UriComponents, handles: number[]): Promise; $cancelCells(handle: number, uri: UriComponents, handles: number[]): Promise; $acceptKernelMessageFromRenderer(handle: number, editorId: string, message: any): void; $cellExecutionChanged(uri: UriComponents, cellHandle: number, state: notebookCommon.NotebookCellExecutionState | undefined): void; } export interface ExtHostInteractiveShape { $willAddInteractiveDocument(uri: UriComponents, eol: string, languageId: string, notebookUri: UriComponents): void; $willRemoveInteractiveDocument(uri: UriComponents, notebookUri: UriComponents): void; } export interface ExtHostStorageShape { $acceptValue(shared: boolean, extensionId: string, value: object | undefined): void; } export interface ExtHostThemingShape { $onColorThemeChange(themeType: string): void; } export interface MainThreadThemingShape extends IDisposable { } export interface TunnelDto { remoteAddress: { port: number; host: string }; localAddress: { port: number; host: string } | string; public: boolean; privacy: TunnelPrivacyId | string; protocol: string | undefined; } export interface ExtHostTunnelServiceShape { $forwardPort(tunnelOptions: TunnelOptions, tunnelCreationOptions: TunnelCreationOptions): Promise; $closeTunnel(remote: { host: string; port: number }, silent?: boolean): Promise; $onDidTunnelsChange(): Promise; $registerCandidateFinder(enable: boolean): Promise; $applyCandidateFilter(candidates: CandidatePort[]): Promise; $providePortAttributes(handles: number[], ports: number[], pid: number | undefined, commandline: string | undefined, cancellationToken: CancellationToken): Promise; } export interface ExtHostTimelineShape { $getTimeline(source: string, uri: UriComponents, options: TimelineOptions, token: CancellationToken): Promise | undefined>; } export const enum ExtHostTestingResource { Workspace, TextDocument } export interface ExtHostTestingShape { $runControllerTests(req: RunTestForControllerRequest, token: CancellationToken): Promise; $cancelExtensionTestRun(runId: string | undefined): void; /** Handles a diff of tests, as a result of a subscribeToDiffs() call */ $acceptDiff(diff: TestsDiffOp.Serialized[]): void; /** Publishes that a test run finished. */ $publishTestResults(results: ISerializedTestResults[]): void; /** Expands a test item's children, by the given number of levels. */ $expandTest(testId: string, levels: number): Promise; /** Requests file coverage for a test run. Errors if not available. */ $provideFileCoverage(runId: string, taskId: string, token: CancellationToken): Promise>; /** * Requests coverage details for the file index in coverage data for the run. * Requires file coverage to have been previously requested via $provideFileCoverage. */ $resolveFileCoverage(runId: string, taskId: string, fileIndex: number, token: CancellationToken): Promise; /** Configures a test run config. */ $configureRunProfile(controllerId: string, configId: number): void; /** Asks the controller to refresh its tests */ $refreshTests(controllerId: string, token: CancellationToken): Promise; } export interface ITestControllerPatch { label?: string; canRefresh?: boolean; } export interface MainThreadTestingShape { // --- test lifecycle: /** Registers that there's a test controller with the given ID */ $registerTestController(controllerId: string, label: string, canRefresh: boolean): void; /** Updates the label of an existing test controller. */ $updateController(controllerId: string, patch: ITestControllerPatch): void; /** Diposes of the test controller with the given ID */ $unregisterTestController(controllerId: string): void; /** Requests tests published to VS Code. */ $subscribeToDiffs(): void; /** Stops requesting tests published to VS Code. */ $unsubscribeFromDiffs(): void; /** Publishes that new tests were available on the given source. */ $publishDiff(controllerId: string, diff: TestsDiffOp.Serialized[]): void; // --- test run configurations: /** Called when a new test run configuration is available */ $publishTestRunProfile(config: ITestRunProfile): void; /** Updates an existing test run configuration */ $updateTestRunConfig(controllerId: string, configId: number, update: Partial): void; /** Removes a previously-published test run config */ $removeTestProfile(controllerId: string, configId: number): void; // --- test run handling: /** Request by an extension to run tests. */ $runTests(req: ResolvedTestRunRequest, token: CancellationToken): Promise; /** * Adds tests to the run. The tests are given in descending depth. The first * item will be a previously-known test, or a test root. */ $addTestsToRun(controllerId: string, runId: string, tests: ITestItem.Serialized[]): void; /** Updates the state of a test run in the given run. */ $updateTestStateInRun(runId: string, taskId: string, testId: string, state: TestResultState, duration?: number): void; /** Appends a message to a test in the run. */ $appendTestMessagesInRun(runId: string, taskId: string, testId: string, messages: ITestMessage.Serialized[]): void; /** Appends raw output to the test run.. */ $appendOutputToRun(runId: string, taskId: string, output: VSBuffer, location?: ILocationDto, testId?: string): void; /** Triggered when coverage is added to test results. */ $signalCoverageAvailable(runId: string, taskId: string): void; /** Signals a task in a test run started. */ $startedTestRunTask(runId: string, task: ITestRunTask): void; /** Signals a task in a test run ended. */ $finishedTestRunTask(runId: string, taskId: string): void; /** Start a new extension-provided test run. */ $startedExtensionTestRun(req: ExtensionRunTestsRequest): void; /** Signals that an extension-provided test run finished. */ $finishedExtensionTestRun(runId: string): void; } // --- proxy identifiers export const MainContext = { MainThreadAuthentication: createProxyIdentifier('MainThreadAuthentication'), MainThreadBulkEdits: createProxyIdentifier('MainThreadBulkEdits'), MainThreadClipboard: createProxyIdentifier('MainThreadClipboard'), MainThreadCommands: createProxyIdentifier('MainThreadCommands'), MainThreadComments: createProxyIdentifier('MainThreadComments'), MainThreadConfiguration: createProxyIdentifier('MainThreadConfiguration'), MainThreadConsole: createProxyIdentifier('MainThreadConsole'), MainThreadDebugService: createProxyIdentifier('MainThreadDebugService'), MainThreadDecorations: createProxyIdentifier('MainThreadDecorations'), MainThreadDiagnostics: createProxyIdentifier('MainThreadDiagnostics'), MainThreadDialogs: createProxyIdentifier('MainThreadDiaglogs'), MainThreadDocuments: createProxyIdentifier('MainThreadDocuments'), MainThreadDocumentContentProviders: createProxyIdentifier('MainThreadDocumentContentProviders'), MainThreadTextEditors: createProxyIdentifier('MainThreadTextEditors'), MainThreadEditorInsets: createProxyIdentifier('MainThreadEditorInsets'), MainThreadEditorTabs: createProxyIdentifier('MainThreadEditorTabs'), MainThreadErrors: createProxyIdentifier('MainThreadErrors'), MainThreadTreeViews: createProxyIdentifier('MainThreadTreeViews'), MainThreadDownloadService: createProxyIdentifier('MainThreadDownloadService'), MainThreadKeytar: createProxyIdentifier('MainThreadKeytar'), MainThreadLanguageFeatures: createProxyIdentifier('MainThreadLanguageFeatures'), MainThreadLanguages: createProxyIdentifier('MainThreadLanguages'), MainThreadLogger: createProxyIdentifier('MainThreadLogger'), MainThreadMessageService: createProxyIdentifier('MainThreadMessageService'), MainThreadOutputService: createProxyIdentifier('MainThreadOutputService'), MainThreadProgress: createProxyIdentifier('MainThreadProgress'), MainThreadQuickOpen: createProxyIdentifier('MainThreadQuickOpen'), MainThreadStatusBar: createProxyIdentifier('MainThreadStatusBar'), MainThreadSecretState: createProxyIdentifier('MainThreadSecretState'), MainThreadStorage: createProxyIdentifier('MainThreadStorage'), MainThreadTelemetry: createProxyIdentifier('MainThreadTelemetry'), MainThreadTerminalService: createProxyIdentifier('MainThreadTerminalService'), MainThreadWebviews: createProxyIdentifier('MainThreadWebviews'), MainThreadWebviewPanels: createProxyIdentifier('MainThreadWebviewPanels'), MainThreadWebviewViews: createProxyIdentifier('MainThreadWebviewViews'), MainThreadCustomEditors: createProxyIdentifier('MainThreadCustomEditors'), MainThreadUrls: createProxyIdentifier('MainThreadUrls'), MainThreadUriOpeners: createProxyIdentifier('MainThreadUriOpeners'), MainThreadWorkspace: createProxyIdentifier('MainThreadWorkspace'), MainThreadFileSystem: createProxyIdentifier('MainThreadFileSystem'), MainThreadExtensionService: createProxyIdentifier('MainThreadExtensionService'), MainThreadSCM: createProxyIdentifier('MainThreadSCM'), MainThreadSearch: createProxyIdentifier('MainThreadSearch'), MainThreadTask: createProxyIdentifier('MainThreadTask'), MainThreadWindow: createProxyIdentifier('MainThreadWindow'), MainThreadLabelService: createProxyIdentifier('MainThreadLabelService'), MainThreadNotebook: createProxyIdentifier('MainThreadNotebook'), MainThreadNotebookDocuments: createProxyIdentifier('MainThreadNotebookDocumentsShape'), MainThreadNotebookEditors: createProxyIdentifier('MainThreadNotebookEditorsShape'), MainThreadNotebookKernels: createProxyIdentifier('MainThreadNotebookKernels'), MainThreadNotebookRenderers: createProxyIdentifier('MainThreadNotebookRenderers'), MainThreadInteractive: createProxyIdentifier('MainThreadInteractive'), MainThreadTheming: createProxyIdentifier('MainThreadTheming'), MainThreadTunnelService: createProxyIdentifier('MainThreadTunnelService'), MainThreadTimeline: createProxyIdentifier('MainThreadTimeline'), MainThreadTesting: createProxyIdentifier('MainThreadTesting'), }; export const ExtHostContext = { ExtHostCommands: createProxyIdentifier('ExtHostCommands'), ExtHostConfiguration: createProxyIdentifier('ExtHostConfiguration'), ExtHostDiagnostics: createProxyIdentifier('ExtHostDiagnostics'), ExtHostDebugService: createProxyIdentifier('ExtHostDebugService'), ExtHostDecorations: createProxyIdentifier('ExtHostDecorations'), ExtHostDocumentsAndEditors: createProxyIdentifier('ExtHostDocumentsAndEditors'), ExtHostDocuments: createProxyIdentifier('ExtHostDocuments'), ExtHostDocumentContentProviders: createProxyIdentifier('ExtHostDocumentContentProviders'), ExtHostDocumentSaveParticipant: createProxyIdentifier('ExtHostDocumentSaveParticipant'), ExtHostEditors: createProxyIdentifier('ExtHostEditors'), ExtHostTreeViews: createProxyIdentifier('ExtHostTreeViews'), ExtHostFileSystem: createProxyIdentifier('ExtHostFileSystem'), ExtHostFileSystemInfo: createProxyIdentifier('ExtHostFileSystemInfo'), ExtHostFileSystemEventService: createProxyIdentifier('ExtHostFileSystemEventService'), ExtHostLanguages: createProxyIdentifier('ExtHostLanguages'), ExtHostLanguageFeatures: createProxyIdentifier('ExtHostLanguageFeatures'), ExtHostQuickOpen: createProxyIdentifier('ExtHostQuickOpen'), ExtHostExtensionService: createProxyIdentifier('ExtHostExtensionService'), ExtHostLogLevelServiceShape: createProxyIdentifier('ExtHostLogLevelServiceShape'), ExtHostTerminalService: createProxyIdentifier('ExtHostTerminalService'), ExtHostSCM: createProxyIdentifier('ExtHostSCM'), ExtHostSearch: createProxyIdentifier('ExtHostSearch'), ExtHostTask: createProxyIdentifier('ExtHostTask'), ExtHostWorkspace: createProxyIdentifier('ExtHostWorkspace'), ExtHostWindow: createProxyIdentifier('ExtHostWindow'), ExtHostWebviews: createProxyIdentifier('ExtHostWebviews'), ExtHostWebviewPanels: createProxyIdentifier('ExtHostWebviewPanels'), ExtHostCustomEditors: createProxyIdentifier('ExtHostCustomEditors'), ExtHostWebviewViews: createProxyIdentifier('ExtHostWebviewViews'), ExtHostEditorInsets: createProxyIdentifier('ExtHostEditorInsets'), ExtHostEditorTabs: createProxyIdentifier('ExtHostEditorTabs'), ExtHostProgress: createProxyIdentifier('ExtHostProgress'), ExtHostComments: createProxyIdentifier('ExtHostComments'), ExtHostSecretState: createProxyIdentifier('ExtHostSecretState'), ExtHostStorage: createProxyIdentifier('ExtHostStorage'), ExtHostUrls: createProxyIdentifier('ExtHostUrls'), ExtHostUriOpeners: createProxyIdentifier('ExtHostUriOpeners'), ExtHostOutputService: createProxyIdentifier('ExtHostOutputService'), ExtHosLabelService: createProxyIdentifier('ExtHostLabelService'), ExtHostNotebook: createProxyIdentifier('ExtHostNotebook'), ExtHostNotebookDocuments: createProxyIdentifier('ExtHostNotebookDocuments'), ExtHostNotebookEditors: createProxyIdentifier('ExtHostNotebookEditors'), ExtHostNotebookKernels: createProxyIdentifier('ExtHostNotebookKernels'), ExtHostNotebookRenderers: createProxyIdentifier('ExtHostNotebookRenderers'), ExtHostInteractive: createProxyIdentifier('ExtHostInteractive'), ExtHostTheming: createProxyIdentifier('ExtHostTheming'), ExtHostTunnelService: createProxyIdentifier('ExtHostTunnelService'), ExtHostAuthentication: createProxyIdentifier('ExtHostAuthentication'), ExtHostTimeline: createProxyIdentifier('ExtHostTimeline'), ExtHostTesting: createProxyIdentifier('ExtHostTesting'), ExtHostTelemetry: createProxyIdentifier('ExtHostTelemetry'), };