extHost.protocol.ts 93.4 KB
Newer Older
1 2 3 4 5
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

6
import * as performance from 'vs/base/common/performance';
7
import { VSBuffer } from 'vs/base/common/buffer';
A
Alex Dima 已提交
8
import { CancellationToken } from 'vs/base/common/cancellation';
9
import { IRemoteConsoleLog } from 'vs/base/common/console';
R
Rob Lourens 已提交
10
import { SerializedError } from 'vs/base/common/errors';
11 12
import { IRelativePattern } from 'vs/base/common/glob';
import { IMarkdownString } from 'vs/base/common/htmlContent';
R
Rob Lourens 已提交
13
import { IDisposable } from 'vs/base/common/lifecycle';
14
import Severity from 'vs/base/common/severity';
15
import { URI, UriComponents } from 'vs/base/common/uri';
16
import { RenderLineNumbersType, TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
17 18
import { IPosition } from 'vs/editor/common/core/position';
import { IRange } from 'vs/editor/common/core/range';
19
import { ISelection, Selection } from 'vs/editor/common/core/selection';
R
Rob Lourens 已提交
20
import * as editorCommon from 'vs/editor/common/editorCommon';
21
import { EndOfLineSequence, ISingleEditOperation } from 'vs/editor/common/model';
R
Rob Lourens 已提交
22 23 24
import { IModelChangedEvent } from 'vs/editor/common/model/mirrorTextModel';
import * as modes from 'vs/editor/common/modes';
import { CharacterPair, CommentRule, EnterAction } from 'vs/editor/common/modes/languageConfiguration';
25
import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands';
26
import { ConfigurationTarget, IConfigurationData, IConfigurationChange, IConfigurationOverrides } from 'vs/platform/configuration/common/configuration';
R
Rob Lourens 已提交
27
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
28
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
J
Johannes Rieken 已提交
29
import * as files from 'vs/platform/files/common/files';
30
import { ResourceLabelFormatter } from 'vs/platform/label/common/label';
S
Sandeep Somavarapu 已提交
31
import { LogLevel } from 'vs/platform/log/common/log';
R
Rob Lourens 已提交
32
import { IMarkerData } from 'vs/platform/markers/common/markers';
33
import { IProgressOptions, IProgressStep } from 'vs/platform/progress/common/progress';
J
Johannes Rieken 已提交
34
import * as quickInput from 'vs/platform/quickinput/common/quickInput';
35
import { RemoteAuthorityResolverErrorCode, ResolverResult, TunnelDescription, IRemoteConnectionData } from 'vs/platform/remote/common/remoteAuthorityResolver';
36
import * as statusbar from 'vs/workbench/services/statusbar/common/statusbar';
37
import { ClassifiedEvent, GDPRClassification, StrictPropertyCheck } from 'vs/platform/telemetry/common/gdprTypings';
R
Rob Lourens 已提交
38 39
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
import { ThemeColor } from 'vs/platform/theme/common/themeService';
40
import * as tasks from 'vs/workbench/api/common/shared/tasks';
41
import { IRevealOptions, ITreeItem } from 'vs/workbench/common/views';
42
import { IAdapterDescriptor, IConfig, IDebugSessionReplMode } from 'vs/workbench/contrib/debug/common/debug';
43
import { ITextQueryBuilderOptions } from 'vs/workbench/contrib/search/common/queryBuilder';
44
import { ActivationKind, ExtensionActivationError, ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensions';
45 46
import { createExtHostContextProxyIdentifier as createExtId, createMainContextProxyIdentifier as createMainId, IRPCProtocol } from 'vs/workbench/services/extensions/common/proxyIdentifier';
import * as search from 'vs/workbench/services/search/common/search';
47
import { EditorGroupColumn, SaveReason } from 'vs/workbench/common/editor';
48
import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtensionActivator';
A
Alex Ross 已提交
49
import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService';
50
import { TunnelCreationOptions, TunnelProviderFeatures, TunnelOptions, ProvidedPortAttributes } from 'vs/platform/remote/common/tunnel';
51
import { Timeline, TimelineChangeEvent, TimelineOptions, TimelineProviderDescriptor, InternalTimelineOptions } from 'vs/workbench/contrib/timeline/common/timeline';
52
import { revive } from 'vs/base/common/marshalling';
R
rebornix 已提交
53 54
import { NotebookCellMetadata, NotebookDocumentMetadata, ICellEditOperation, NotebookCellsChangedEventDto, NotebookDataDto, IMainCellDto, TransientCellMetadata, INotebookDecorationRenderOptions, INotebookExclusiveDocumentFilter, IOutputDto, TransientOptions, IImmediateCellEditOperation, INotebookCellStatusBarItem, TransientDocumentMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { ICellRange } from 'vs/workbench/contrib/notebook/common/notebookRange';
J
Johannes Rieken 已提交
55
import { CallHierarchyItem } from 'vs/workbench/contrib/callHierarchy/common/callHierarchy';
J
Johannes Rieken 已提交
56
import { Dto } from 'vs/base/common/types';
S
SteVen Batten 已提交
57
import { DebugConfigurationProviderTriggerKind, TestResultState } from 'vs/workbench/api/common/extHostTypes';
58
import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility';
59
import { IExtensionIdWithVersion } from 'vs/platform/userDataSync/common/extensionsStorageSync';
60
import { InternalTestItem, RunTestForProviderRequest, RunTestsRequest, TestIdWithSrc, TestsDiff, ISerializedTestResults, ITestMessage, ITestItem, ITestRunTask, ExtensionRunTestsRequest } from 'vs/workbench/contrib/testing/common/testCollection';
61
import { CandidatePort } from 'vs/workbench/services/remote/common/remoteExplorerService';
S
SteVen Batten 已提交
62
import { WorkspaceTrustRequestOptions } from 'vs/platform/workspace/common/workspaceTrust';
63
import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
64
import { IShellLaunchConfig, IShellLaunchConfigDto, ITerminalDimensions, ITerminalEnvironment, ITerminalLaunchError } from 'vs/platform/terminal/common/terminal';
M
Megan Rogge 已提交
65
import { ITerminalProfile } from 'vs/workbench/contrib/terminal/common/terminal';
66
import { NotebookSelector } from 'vs/workbench/contrib/notebook/common/notebookSelector';
67
import { InputValidationType } from 'vs/workbench/contrib/scm/common/scm';
S
Sandeep Somavarapu 已提交
68

69
export interface IEnvironment {
70
	isExtensionDevelopmentDebug: boolean;
71
	appName: string;
72
	appRoot?: URI;
73 74
	appLanguage: string;
	appUriScheme: string;
75
	extensionDevelopmentLocationURI?: URI[];
76
	extensionTestsLocationURI?: URI;
A
Alex Dima 已提交
77
	globalStorageHome: URI;
78
	workspaceStorageHome: URI;
M
Matt Bierner 已提交
79
	webviewResourceRoot: string;
80
	webviewCspSource: string;
81
	useHostProxy?: boolean;
82 83
}

84
export interface IStaticWorkspaceData {
85
	id: string;
86
	name: string;
A
Alex Dima 已提交
87
	configuration?: UriComponents | null;
88
	isUntitled?: boolean | null;
89 90
}

91
export interface IWorkspaceData extends IStaticWorkspaceData {
92
	folders: { uri: UriComponents, name: string, index: number; }[];
93 94
}

95
export interface IInitData {
96
	version: string;
97
	commit?: string;
98 99
	parentPid: number;
	environment: IEnvironment;
A
Alex Dima 已提交
100
	workspace?: IStaticWorkspaceData | null;
A
Alex Dima 已提交
101
	resolvedExtensions: ExtensionIdentifier[];
102
	hostExtensions: ExtensionIdentifier[];
103
	extensions: IExtensionDescription[];
104
	telemetryInfo: ITelemetryInfo;
S
Sandeep Somavarapu 已提交
105
	logLevel: LogLevel;
106
	logsLocation: URI;
107
	logFile: URI;
A
Alex Dima 已提交
108
	autoStart: boolean;
109
	remote: { isRemote: boolean; authority: string | undefined; connectionData: IRemoteConnectionData | null; };
110
	uiKind: UIKind;
111 112
}

S
Sandeep Somavarapu 已提交
113
export interface IConfigurationInitData extends IConfigurationData {
S
Sandeep Somavarapu 已提交
114
	configurationScopes: [string, ConfigurationScope | undefined][];
S
Sandeep Somavarapu 已提交
115 116
}

A
Alex Dima 已提交
117
export interface IExtHostContext extends IRPCProtocol {
118 119
	readonly remoteAuthority: string | null;
	readonly extensionHostKind: ExtensionHostKind;
120 121
}

A
Alex Dima 已提交
122
export interface IMainContext extends IRPCProtocol {
123 124
}

125 126 127 128 129
export enum UIKind {
	Desktop = 1,
	Web = 2
}

130 131
// --- main thread

132 133 134 135 136
export interface MainThreadClipboardShape extends IDisposable {
	$readText(): Promise<string>;
	$writeText(value: string): Promise<void>;
}

137
export interface MainThreadCommandsShape extends IDisposable {
138 139
	$registerCommand(id: string): void;
	$unregisterCommand(id: string): void;
140
	$executeCommand<T>(id: string, args: any[], retry: boolean): Promise<T | undefined>;
J
Johannes Rieken 已提交
141
	$getCommands(): Promise<string[]>;
142 143
}

R
rebornix 已提交
144
export interface CommentProviderFeatures {
P
Peng Lyu 已提交
145
	reactionGroup?: modes.CommentReaction[];
P
Peng Lyu 已提交
146
	reactionHandler?: boolean;
147
	options?: modes.CommentOptions;
R
rebornix 已提交
148 149
}

150 151 152 153 154
export type CommentThreadChanges = Partial<{
	range: IRange,
	label: string,
	contextValue: string,
	comments: modes.Comment[],
155
	collapseState: modes.CommentThreadCollapsibleState;
R
rebornix 已提交
156
	canReply: boolean;
157 158
}>;

M
Matt Bierner 已提交
159
export interface MainThreadCommentsShape extends IDisposable {
P
Peng Lyu 已提交
160
	$registerCommentController(handle: number, id: string, label: string): void;
161
	$unregisterCommentController(handle: number): void;
P
Peng Lyu 已提交
162
	$updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void;
163
	$createCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, range: IRange, extensionId: ExtensionIdentifier): modes.CommentThread | undefined;
164
	$updateCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, changes: CommentThreadChanges): void;
P
Peng Lyu 已提交
165
	$deleteCommentThread(handle: number, commentThreadHandle: number): void;
166
	$onDidCommentThreadsChange(handle: number, event: modes.CommentThreadChangedEvent): void;
M
Matt Bierner 已提交
167 168
}

169
export interface MainThreadAuthenticationShape extends IDisposable {
170
	$registerAuthenticationProvider(id: string, label: string, supportsMultipleAccounts: boolean): void;
171
	$unregisterAuthenticationProvider(id: string): void;
172
	$ensureProvider(id: string): Promise<void>;
173 174
	$sendDidChangeSessions(providerId: string, event: modes.AuthenticationSessionsChangeEvent): void;
	$getSession(providerId: string, scopes: string[], extensionId: string, extensionName: string, options: { createIfNone?: boolean, clearSessionPreference?: boolean }): Promise<modes.AuthenticationSession | undefined>;
175
	$removeSession(providerId: string, sessionId: string): Promise<void>;
176
}
177

178
export interface MainThreadSecretStateShape extends IDisposable {
179 180 181
	$getPassword(extensionId: string, key: string): Promise<string | undefined>;
	$setPassword(extensionId: string, key: string, value: string): Promise<void>;
	$deletePassword(extensionId: string, key: string): Promise<void>;
182 183
}

184
export interface MainThreadConfigurationShape extends IDisposable {
S
Sandeep Somavarapu 已提交
185 186
	$updateConfigurationOption(target: ConfigurationTarget | null, key: string, value: any, overrides: IConfigurationOverrides | undefined, scopeToLanguage: boolean | undefined): Promise<void>;
	$removeConfigurationOption(target: ConfigurationTarget | null, key: string, overrides: IConfigurationOverrides | undefined, scopeToLanguage: boolean | undefined): Promise<void>;
187 188
}

189
export interface MainThreadDiagnosticsShape extends IDisposable {
190
	$changeMany(owner: string, entries: [UriComponents, IMarkerData[] | undefined][]): void;
191
	$clear(owner: string): void;
192 193
}

194
export interface MainThreadDialogOpenOptions {
195
	defaultUri?: UriComponents;
196
	openLabel?: string;
197 198 199
	canSelectFiles?: boolean;
	canSelectFolders?: boolean;
	canSelectMany?: boolean;
200
	filters?: { [name: string]: string[]; };
201
	title?: string;
202 203
}

204
export interface MainThreadDialogSaveOptions {
205
	defaultUri?: UriComponents;
206
	saveLabel?: string;
207
	filters?: { [name: string]: string[]; };
208
	title?: string;
209 210
}

211
export interface MainThreadDiaglogsShape extends IDisposable {
212 213
	$showOpenDialog(options?: MainThreadDialogOpenOptions): Promise<UriComponents[] | undefined>;
	$showSaveDialog(options?: MainThreadDialogSaveOptions): Promise<UriComponents | undefined>;
214 215
}

216 217 218
export interface MainThreadDecorationsShape extends IDisposable {
	$registerDecorationProvider(handle: number, label: string): void;
	$unregisterDecorationProvider(handle: number): void;
219
	$onDidChange(handle: number, resources: UriComponents[] | null): void;
220 221
}

222
export interface MainThreadDocumentContentProvidersShape extends IDisposable {
223 224
	$registerTextContentProvider(handle: number, scheme: string): void;
	$unregisterTextContentProvider(handle: number): void;
225
	$onVirtualDocumentChange(uri: UriComponents, value: string): void;
226 227
}

228
export interface MainThreadDocumentsShape extends IDisposable {
J
Johannes Rieken 已提交
229
	$tryCreateDocument(options?: { language?: string; content?: string; }): Promise<UriComponents>;
230
	$tryOpenDocument(uri: UriComponents): Promise<UriComponents>;
J
Johannes Rieken 已提交
231
	$trySaveDocument(uri: UriComponents): Promise<boolean>;
232 233
}

234 235 236 237
export interface ITextEditorConfigurationUpdate {
	tabSize?: number | 'auto';
	insertSpaces?: boolean | 'auto';
	cursorStyle?: TextEditorCursorStyle;
238
	lineNumbers?: RenderLineNumbersType;
239 240 241 242 243 244
}

export interface IResolvedTextEditorConfiguration {
	tabSize: number;
	insertSpaces: boolean;
	cursorStyle: TextEditorCursorStyle;
245
	lineNumbers: RenderLineNumbersType;
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
}

export enum TextEditorRevealType {
	Default = 0,
	InCenter = 1,
	InCenterIfOutsideViewport = 2,
	AtTop = 3
}

export interface IUndoStopOptions {
	undoStopBefore: boolean;
	undoStopAfter: boolean;
}

export interface IApplyEditsOptions extends IUndoStopOptions {
J
Johannes Rieken 已提交
261
	setEndOfLine?: EndOfLineSequence;
262 263
}

264
export interface ITextDocumentShowOptions {
265
	position?: EditorGroupColumn;
266 267
	preserveFocus?: boolean;
	pinned?: boolean;
268
	selection?: IRange;
269 270
}

271
export interface MainThreadBulkEditsShape extends IDisposable {
272
	$tryApplyWorkspaceEdit(workspaceEditDto: IWorkspaceEditDto, undoRedoGroupId?: number): Promise<boolean>;
273 274
}

275
export interface MainThreadTextEditorsShape extends IDisposable {
276
	$tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): Promise<string | undefined>;
277 278
	$registerTextEditorDecorationType(key: string, options: editorCommon.IDecorationRenderOptions): void;
	$removeTextEditorDecorationType(key: string): void;
279
	$tryShowEditor(id: string, position: EditorGroupColumn): Promise<void>;
J
Johannes Rieken 已提交
280 281 282 283 284 285 286
	$tryHideEditor(id: string): Promise<void>;
	$trySetOptions(id: string, options: ITextEditorConfigurationUpdate): Promise<void>;
	$trySetDecorations(id: string, key: string, ranges: editorCommon.IDecorationOptions[]): Promise<void>;
	$trySetDecorationsFast(id: string, key: string, ranges: number[]): Promise<void>;
	$tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): Promise<void>;
	$trySetSelections(id: string, selections: ISelection[]): Promise<void>;
	$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Promise<boolean>;
M
Matt Bierner 已提交
287
	$tryInsertSnippet(id: string, template: string, selections: readonly IRange[], opts: IUndoStopOptions): Promise<boolean>;
J
Johannes Rieken 已提交
288
	$getDiffInformation(id: string): Promise<editorCommon.ILineChange[]>;
289 290
}

291
export interface MainThreadTreeViewsShape extends IDisposable {
292
	$registerTreeViewDataProvider(treeViewId: string, options: { showCollapseAll: boolean, canSelectMany: boolean; }): Promise<void>;
293
	$refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem; }): Promise<void>;
294
	$reveal(treeViewId: string, itemInfo: { item: ITreeItem, parentChain: ITreeItem[] } | undefined, options: IRevealOptions): Promise<void>;
295
	$setMessage(treeViewId: string, message: string): void;
296
	$setTitle(treeViewId: string, title: string, description: string | undefined): void;
297 298
}

299 300 301 302
export interface MainThreadDownloadServiceShape extends IDisposable {
	$download(uri: UriComponents, to: UriComponents): Promise<void>;
}

303
export interface MainThreadErrorsShape extends IDisposable {
304
	$onUnexpectedError(err: any | SerializedError): void;
305 306
}

307
export interface MainThreadConsoleShape extends IDisposable {
308
	$logExtensionHostMessage(msg: IRemoteConsoleLog): void;
309 310
}

A
Alex Dima 已提交
311 312 313 314 315
export interface MainThreadKeytarShape extends IDisposable {
	$getPassword(service: string, account: string): Promise<string | null>;
	$setPassword(service: string, account: string, password: string): Promise<void>;
	$deletePassword(service: string, account: string): Promise<boolean>;
	$findPassword(service: string): Promise<string | null>;
316
	$findCredentials(service: string): Promise<Array<{ account: string, password: string; }>>;
A
Alex Dima 已提交
317 318
}

J
Johannes Rieken 已提交
319
export interface IRegExpDto {
320 321 322
	pattern: string;
	flags?: string;
}
J
Johannes Rieken 已提交
323 324 325 326 327
export interface IIndentationRuleDto {
	decreaseIndentPattern: IRegExpDto;
	increaseIndentPattern: IRegExpDto;
	indentNextLinePattern?: IRegExpDto;
	unIndentedLinePattern?: IRegExpDto;
328
}
J
Johannes Rieken 已提交
329 330 331
export interface IOnEnterRuleDto {
	beforeText: IRegExpDto;
	afterText?: IRegExpDto;
332
	previousLineText?: IRegExpDto;
333 334
	action: EnterAction;
}
J
Johannes Rieken 已提交
335
export interface ILanguageConfigurationDto {
336 337
	comments?: CommentRule;
	brackets?: CharacterPair[];
J
Johannes Rieken 已提交
338 339 340
	wordPattern?: IRegExpDto;
	indentationRules?: IIndentationRuleDto;
	onEnterRules?: IOnEnterRuleDto[];
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358
	__electricCharacterSupport?: {
		brackets?: any;
		docComment?: {
			scope: string;
			open: string;
			lineStart: string;
			close?: string;
		};
	};
	__characterPairSupport?: {
		autoClosingPairs: {
			open: string;
			close: string;
			notIn?: string[];
		}[];
	};
}

359
export type GlobPattern = string | { base: string; pattern: string; };
360

J
Johannes Rieken 已提交
361
export interface IDocumentFilterDto {
A
Alex Dima 已提交
362 363 364
	$serialized: true;
	language?: string;
	scheme?: string;
365
	pattern?: string | IRelativePattern;
366
	exclusive?: boolean;
A
Alex Dima 已提交
367 368
}

J
Johannes Rieken 已提交
369
export interface ISignatureHelpProviderMetadataDto {
370 371
	readonly triggerCharacters: readonly string[];
	readonly retriggerCharacters: readonly string[];
372 373
}

374
export interface MainThreadLanguageFeaturesShape extends IDisposable {
375
	$unregister(handle: number): void;
J
Johannes Rieken 已提交
376 377
	$registerDocumentSymbolProvider(handle: number, selector: IDocumentFilterDto[], label: string): void;
	$registerCodeLensSupport(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
378
	$emitCodeLensEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
379 380 381 382 383
	$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;
384
	$registerEvaluatableExpressionProvider(handle: number, selector: IDocumentFilterDto[]): void;
385 386
	$registerInlineValuesProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
	$emitInlineValuesEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
387
	$registerDocumentHighlightProvider(handle: number, selector: IDocumentFilterDto[]): void;
388
	$registerLinkedEditingRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
J
Johannes Rieken 已提交
389
	$registerReferenceSupport(handle: number, selector: IDocumentFilterDto[]): void;
390
	$registerQuickFixSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, supportsResolve: boolean): void;
J
Johannes Rieken 已提交
391 392 393
	$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;
394
	$registerNavigateTypeSupport(handle: number): void;
J
Johannes Rieken 已提交
395
	$registerRenameSupport(handle: number, selector: IDocumentFilterDto[], supportsResolveInitialValues: boolean): void;
396 397
	$registerDocumentSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: modes.SemanticTokensLegend, eventHandle: number | undefined): void;
	$emitDocumentSemanticTokensEvent(eventHandle: number): void;
398
	$registerDocumentRangeSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: modes.SemanticTokensLegend): void;
399
	$registerSuggestSupport(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, displayName: string): void;
J
Johannes Rieken 已提交
400
	$registerSignatureHelpProvider(handle: number, selector: IDocumentFilterDto[], metadata: ISignatureHelpProviderMetadataDto): void;
W
Wenlu Wang 已提交
401 402
	$registerInlineHintsProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
	$emitInlineHintsEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
403 404
	$registerDocumentLinkProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean): void;
	$registerDocumentColorProvider(handle: number, selector: IDocumentFilterDto[]): void;
405 406
	$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
	$emitFoldingRangeEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
407 408 409
	$registerSelectionRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
	$registerCallHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void;
	$setLanguageConfiguration(handle: number, languageId: string, configuration: ILanguageConfigurationDto): void;
410 411
}

412
export interface MainThreadLanguagesShape extends IDisposable {
J
Johannes Rieken 已提交
413 414
	$getLanguages(): Promise<string[]>;
	$changeLanguage(resource: UriComponents, languageId: string): Promise<void>;
415
	$tokensAtPosition(resource: UriComponents, position: IPosition): Promise<undefined | { type: modes.StandardTokenType, range: IRange }>;
416 417
}

418
export interface MainThreadMessageOptions {
419
	extension?: IExtensionDescription;
420
	modal?: boolean;
421
	useCustom?: boolean;
422 423
}

424
export interface MainThreadMessageServiceShape extends IDisposable {
425
	$showMessage(severity: Severity, message: string, options: MainThreadMessageOptions, commands: { title: string; isCloseAffordance: boolean; handle: number; }[]): Promise<number | undefined>;
426 427
}

428
export interface MainThreadOutputServiceShape extends IDisposable {
J
Johannes Rieken 已提交
429
	$register(label: string, log: boolean, file?: UriComponents): Promise<string>;
430 431 432 433 434 435
	$append(channelId: string, value: string): Promise<void> | undefined;
	$update(channelId: string): Promise<void> | undefined;
	$clear(channelId: string, till: number): Promise<void> | undefined;
	$reveal(channelId: string, preserveFocus: boolean): Promise<void> | undefined;
	$close(channelId: string): Promise<void> | undefined;
	$dispose(channelId: string): Promise<void> | undefined;
436 437
}

438
export interface MainThreadProgressShape extends IDisposable {
439

B
Benjamin Pasero 已提交
440
	$startProgress(handle: number, options: IProgressOptions, extension?: IExtensionDescription): void;
441 442
	$progressReport(handle: number, message: IProgressStep): void;
	$progressEnd(handle: number): void;
443 444
}

445 446 447 448 449 450 451 452 453 454
/**
 * 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 TerminalIdentifier = number | string;

D
Daniel Imms 已提交
455 456 457 458 459
export interface TerminalLaunchConfig {
	name?: string;
	shellPath?: string;
	shellArgs?: string[] | string;
	cwd?: string | UriComponents;
460
	env?: ITerminalEnvironment;
D
Daniel Imms 已提交
461
	icon?: string;
D
Daniel Imms 已提交
462
	initialText?: string;
D
Daniel Imms 已提交
463 464 465
	waitOnExit?: boolean;
	strictEnv?: boolean;
	hideFromUser?: boolean;
M
meganrogge 已提交
466
	isExtensionCustomPtyTerminal?: boolean;
R
Rob Lourens 已提交
467
	isFeatureTerminal?: boolean;
468
	isExtensionOwnedTerminal?: boolean;
D
Daniel Imms 已提交
469 470
}

471
export interface MainThreadTerminalServiceShape extends IDisposable {
472 473 474 475 476
	$createTerminal(extHostTerminalId: string, config: TerminalLaunchConfig): Promise<void>;
	$dispose(id: TerminalIdentifier): void;
	$hide(id: TerminalIdentifier): void;
	$sendText(id: TerminalIdentifier, text: string, addNewLine: boolean): void;
	$show(id: TerminalIdentifier, preserveFocus: boolean): void;
477 478
	$startSendingDataEvents(): void;
	$stopSendingDataEvents(): void;
479 480
	$startLinkProvider(): void;
	$stopLinkProvider(): void;
D
Daniel Imms 已提交
481
	$registerProcessSupport(isSupported: boolean): void;
482
	$setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined): void;
483

484
	// Process
485 486
	$sendProcessTitle(terminalId: number, title: string): void;
	$sendProcessData(terminalId: number, data: string): void;
D
Daniel Imms 已提交
487
	$sendProcessReady(terminalId: number, pid: number, cwd: string): void;
D
Daniel Imms 已提交
488
	$sendProcessExit(terminalId: number, exitCode: number | undefined): void;
489 490
	$sendProcessInitialCwd(terminalId: number, cwd: string): void;
	$sendProcessCwd(terminalId: number, initialCwd: string): void;
491
	$sendOverrideDimensions(terminalId: number, dimensions: ITerminalDimensions | undefined): void;
492
	$sendResolvedLaunchConfig(terminalId: number, shellLaunchConfig: IShellLaunchConfig): void;
D
Daniel Imms 已提交
493 494
}

J
Johannes Rieken 已提交
495
export interface TransferQuickPickItems extends quickInput.IQuickPickItem {
496 497
	handle: number;
}
C
Christof Marti 已提交
498

499
export interface TransferQuickInputButton {
500
	handle: number;
501 502
	iconPath: { dark: URI; light?: URI; } | { id: string; };
	tooltip?: string;
503
}
504 505 506 507 508

export type TransferQuickInput = TransferQuickPick | TransferInputBox;

export interface BaseTransferQuickInput {

509 510
	[key: string]: any;

511 512
	id: number;

513 514
	title?: string;

515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531
	type?: 'quickPick' | 'inputBox';

	enabled?: boolean;

	busy?: boolean;

	visible?: boolean;
}

export interface TransferQuickPick extends BaseTransferQuickInput {

	type?: 'quickPick';

	value?: string;

	placeholder?: string;

C
Christof Marti 已提交
532
	buttons?: TransferQuickInputButton[];
533

C
Christof Marti 已提交
534
	items?: TransferQuickPickItems[];
535

536 537 538 539
	activeItems?: number[];

	selectedItems?: number[];

540 541 542 543 544 545 546
	canSelectMany?: boolean;

	ignoreFocusOut?: boolean;

	matchOnDescription?: boolean;

	matchOnDetail?: boolean;
547 548

	sortByLabel?: boolean;
549 550 551 552 553 554 555 556 557 558 559 560
}

export interface TransferInputBox extends BaseTransferQuickInput {

	type?: 'inputBox';

	value?: string;

	placeholder?: string;

	password?: boolean;

C
Christof Marti 已提交
561
	buttons?: TransferQuickInputButton[];
562 563 564 565 566 567

	prompt?: string;

	validationMessage?: string;
}

568
export interface IInputBoxOptions {
569
	title?: string;
570 571 572 573 574 575 576 577
	value?: string;
	valueSelection?: [number, number];
	prompt?: string;
	placeHolder?: string;
	password?: boolean;
	ignoreFocusOut?: boolean;
}

578
export interface MainThreadQuickOpenShape extends IDisposable {
J
Johannes Rieken 已提交
579
	$show(instance: number, options: quickInput.IPickOptions<TransferQuickPickItems>, token: CancellationToken): Promise<number | number[] | undefined>;
J
Johannes Rieken 已提交
580 581
	$setItems(instance: number, items: TransferQuickPickItems[]): Promise<void>;
	$setError(instance: number, error: Error): Promise<void>;
582
	$input(options: IInputBoxOptions | undefined, validateInput: boolean, token: CancellationToken): Promise<string | undefined>;
J
Johannes Rieken 已提交
583 584
	$createOrUpdate(params: TransferQuickInput): Promise<void>;
	$dispose(id: number): Promise<void>;
585 586
}

587
export interface MainThreadStatusBarShape extends IDisposable {
588
	$setEntry(id: number, statusId: string, statusName: string, text: string, tooltip: string | undefined, command: ICommandDto | undefined, color: string | ThemeColor | undefined, backgroundColor: string | ThemeColor | undefined, alignment: statusbar.StatusbarAlignment, priority: number | undefined, accessibilityInformation: IAccessibilityInformation | undefined): void;
589
	$dispose(id: number): void;
590 591
}

592
export interface MainThreadStorageShape extends IDisposable {
593
	$getValue<T>(shared: boolean, key: string): Promise<T | undefined>;
J
Johannes Rieken 已提交
594
	$setValue(shared: boolean, key: string, value: object): Promise<void>;
595
	$registerExtensionStorageKeysToSync(extension: IExtensionIdWithVersion, keys: string[]): void;
596 597
}

598
export interface MainThreadTelemetryShape extends IDisposable {
599
	$publicLog(eventName: string, data?: any): void;
600
	$publicLog2<E extends ClassifiedEvent<T> = never, T extends GDPRClassification<T> = never>(eventName: string, data?: StrictPropertyCheck<T, E>): void;
601 602
}

603
export interface MainThreadEditorInsetsShape extends IDisposable {
604
	$createEditorInset(handle: number, id: string, uri: UriComponents, line: number, height: number, options: IWebviewOptions, extensionId: ExtensionIdentifier, extensionLocation: UriComponents): Promise<void>;
605 606 607
	$disposeEditorInset(handle: number): void;

	$setHtml(handle: number, value: string): void;
608
	$setOptions(handle: number, options: IWebviewOptions): void;
609 610
	$postMessage(handle: number, value: any): Promise<boolean>;
}
M
Matt Bierner 已提交
611

612 613 614 615 616 617 618
export interface ExtHostEditorInsetsShape {
	$onDidDispose(handle: number): void;
	$onDidReceiveMessage(handle: number, message: any): void;
}

//#region --- open editors model

619
export interface MainThreadEditorTabsShape extends IDisposable {
620 621
	// manage tabs: move, close, rearrange etc
}
622

623 624 625 626
export interface IEditorTabDto {
	group: number;
	name: string;
	resource: UriComponents
627 628
}

629 630
export interface IExtHostEditorTabsShape {
	$acceptEditorTabs(tabs: IEditorTabDto[]): void;
631 632
}

633 634
//#endregion

635
export type WebviewHandle = string;
636

M
Matt Bierner 已提交
637
export interface WebviewPanelShowOptions {
638
	readonly viewColumn?: EditorGroupColumn;
M
Matt Bierner 已提交
639 640 641
	readonly preserveFocus?: boolean;
}

642 643 644 645 646
export interface WebviewExtensionDescription {
	readonly id: ExtensionIdentifier;
	readonly location: UriComponents;
}

R
rebornix 已提交
647 648 649
export interface NotebookExtensionDescription {
	readonly id: ExtensionIdentifier;
	readonly location: UriComponents;
R
rebornix 已提交
650
	readonly description?: string;
R
rebornix 已提交
651 652
}

653
export enum WebviewEditorCapabilities {
M
Matt Bierner 已提交
654
	Editable,
655
	SupportsHotExit,
656 657
}

658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674
export interface IWebviewPortMapping {
	readonly webviewPort: number;
	readonly extensionHostPort: number;
}

export interface IWebviewOptions {
	readonly enableScripts?: boolean;
	readonly enableCommandUris?: boolean;
	readonly localResourceRoots?: ReadonlyArray<UriComponents>;
	readonly portMapping?: ReadonlyArray<IWebviewPortMapping>;
}

export interface IWebviewPanelOptions {
	readonly enableFindWidget?: boolean;
	readonly retainContextWhenHidden?: boolean;
}

675 676 677 678
export interface CustomTextEditorCapabilities {
	readonly supportsMove?: boolean;
}

679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707
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;
	};
}

M
Matt Bierner 已提交
708
export interface MainThreadWebviewsShape extends IDisposable {
709
	$setHtml(handle: WebviewHandle, value: string): void;
710
	$setOptions(handle: WebviewHandle, options: IWebviewOptions): void;
711
	$postMessage(handle: WebviewHandle, value: any, ...buffers: VSBuffer[]): Promise<boolean>
712
}
713

714
export interface MainThreadWebviewPanelsShape extends IDisposable {
715 716 717 718 719 720 721 722
	$createWebviewPanel(
		extension: WebviewExtensionDescription,
		handle: WebviewHandle,
		viewType: string,
		initData: {
			title: string;
			webviewOptions: IWebviewOptions;
			panelOptions: IWebviewPanelOptions;
723
			serializeBuffersForPostMessage: boolean;
724 725 726
		},
		showOptions: WebviewPanelShowOptions,
	): void;
727 728 729 730
	$disposeWebview(handle: WebviewHandle): void;
	$reveal(handle: WebviewHandle, showOptions: WebviewPanelShowOptions): void;
	$setTitle(handle: WebviewHandle, value: string): void;
	$setIconPath(handle: WebviewHandle, value: { light: UriComponents, dark: UriComponents; } | undefined): void;
731

732
	$registerSerializer(viewType: string, options: { serializeBuffersForPostMessage: boolean }): void;
733
	$unregisterSerializer(viewType: string): void;
734
}
735

736
export interface MainThreadCustomEditorsShape extends IDisposable {
737 738
	$registerTextEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, capabilities: CustomTextEditorCapabilities, serializeBuffersForPostMessage: boolean): void;
	$registerCustomEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, supportsMultipleEditorsPerDocument: boolean, serializeBuffersForPostMessage: boolean): void;
739
	$unregisterEditorProvider(viewType: string): void;
740

741
	$onDidEdit(resource: UriComponents, viewType: string, editId: number, label: string | undefined): void;
742
	$onContentChange(resource: UriComponents, viewType: string): void;
743
}
744

745
export interface MainThreadWebviewViewsShape extends IDisposable {
746
	$registerWebviewViewProvider(extension: WebviewExtensionDescription, viewType: string, options: { retainContextWhenHidden?: boolean, serializeBuffersForPostMessage: boolean }): void;
747
	$unregisterWebviewViewProvider(viewType: string): void;
748

749
	$setWebviewViewTitle(handle: WebviewHandle, value: string | undefined): void;
M
Matt Bierner 已提交
750
	$setWebviewViewDescription(handle: WebviewHandle, value: string | undefined): void;
M
Matt Bierner 已提交
751 752

	$show(handle: WebviewHandle, preserveFocus: boolean): void;
M
Matt Bierner 已提交
753
}
754

755 756 757 758
export interface WebviewPanelViewStateData {
	[handle: string]: {
		readonly active: boolean;
		readonly visible: boolean;
759
		readonly position: EditorGroupColumn;
760
	};
M
Matt Bierner 已提交
761 762
}

M
Matt Bierner 已提交
763
export interface ExtHostWebviewsShape {
764
	$onMessage(handle: WebviewHandle, jsonSerializedMessage: string, ...buffers: VSBuffer[]): void;
765
	$onMissingCsp(handle: WebviewHandle, extensionId: string): void;
766
}
767

768
export interface ExtHostWebviewPanelsShape {
769
	$onDidChangeWebviewPanelViewStates(newState: WebviewPanelViewStateData): void;
770
	$onDidDisposeWebviewPanel(handle: WebviewHandle): Promise<void>;
771 772 773 774 775 776 777 778 779 780 781
	$deserializeWebviewPanel(
		newWebviewHandle: WebviewHandle,
		viewType: string,
		initData: {
			title: string;
			state: any;
			webviewOptions: IWebviewOptions;
			panelOptions: IWebviewPanelOptions;
		},
		position: EditorGroupColumn,
	): Promise<void>;
782
}
783

784
export interface ExtHostCustomEditorsShape {
785 786 787 788 789 790 791 792 793 794 795 796
	$resolveWebviewEditor(
		resource: UriComponents,
		newWebviewHandle: WebviewHandle,
		viewType: string,
		initData: {
			title: string;
			webviewOptions: IWebviewOptions;
			panelOptions: IWebviewPanelOptions;
		},
		position: EditorGroupColumn,
		cancellation: CancellationToken
	): Promise<void>;
797
	$createCustomDocument(resource: UriComponents, viewType: string, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, cancellation: CancellationToken): Promise<{ editable: boolean }>;
M
Matt Bierner 已提交
798
	$disposeCustomDocument(resource: UriComponents, viewType: string): Promise<void>;
799

M
Matt Bierner 已提交
800 801 802
	$undo(resource: UriComponents, viewType: string, editId: number, isDirty: boolean): Promise<void>;
	$redo(resource: UriComponents, viewType: string, editId: number, isDirty: boolean): Promise<void>;
	$revert(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise<void>;
803 804
	$disposeEdits(resourceComponents: UriComponents, viewType: string, editIds: number[]): void;

805
	$onSave(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise<void>;
M
Matt Bierner 已提交
806
	$onSaveAs(resource: UriComponents, viewType: string, targetResource: UriComponents, cancellation: CancellationToken): Promise<void>;
M
Matt Bierner 已提交
807

M
Matt Bierner 已提交
808
	$backup(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise<string>;
809

810
	$onMoveCustomEditor(handle: WebviewHandle, newResource: UriComponents, viewType: string): Promise<void>;
811
}
812

813
export interface ExtHostWebviewViewsShape {
814
	$resolveWebviewView(webviewHandle: WebviewHandle, viewType: string, title: string | undefined, state: any, cancellation: CancellationToken): Promise<void>;
815

816
	$onDidChangeWebviewViewVisibility(webviewHandle: WebviewHandle, visible: boolean): void;
817

818
	$disposeWebviewView(webviewHandle: WebviewHandle): void;
M
Matt Bierner 已提交
819 820
}

R
rebornix 已提交
821 822 823 824 825 826 827 828 829 830 831
export enum CellKind {
	Markdown = 1,
	Code = 2
}

export enum CellOutputKind {
	Text = 1,
	Error = 2,
	Rich = 3
}

832 833
export interface ICellDto {
	handle: number;
834
	uri: UriComponents,
835 836
	source: string[];
	language: string;
R
rebornix 已提交
837
	cellKind: CellKind;
838
	outputs: IOutputDto[];
839
	metadata?: NotebookCellMetadata;
840 841
}

842 843 844 845 846 847 848 849 850
export type NotebookCellsSplice = [
	number /* start */,
	number /* delete count */,
	ICellDto[]
];

export type NotebookCellOutputsSplice = [
	number /* start */,
	number /* delete count */,
851
	IOutputDto[]
852 853
];

R
rebornix 已提交
854 855 856 857
export enum NotebookEditorRevealType {
	Default = 0,
	InCenter = 1,
	InCenterIfOutsideViewport = 2,
R
rebornix 已提交
858
	AtTop = 3
R
rebornix 已提交
859 860
}

R
rebornix 已提交
861 862 863 864
export interface INotebookDocumentShowOptions {
	position?: EditorGroupColumn;
	preserveFocus?: boolean;
	pinned?: boolean;
865
	selections?: ICellRange[];
R
rebornix 已提交
866 867
}

R
Rob Lourens 已提交
868 869 870 871 872 873
export type INotebookCellStatusBarEntryDto = Dto<INotebookCellStatusBarItem>;

export interface INotebookCellStatusBarListDto {
	items: INotebookCellStatusBarEntryDto[];
	cacheId: number;
}
874

R
rebornix 已提交
875
export interface MainThreadNotebookShape extends IDisposable {
876
	$registerNotebookProvider(extension: NotebookExtensionDescription, viewType: string, options: {
877
		transientOutputs: boolean;
878 879
		transientCellMetadata: TransientCellMetadata;
		transientDocumentMetadata: TransientDocumentMetadata;
R
rebornix 已提交
880
		viewOptions?: { displayName: string; filenamePattern: (string | IRelativePattern | INotebookExclusiveDocumentFilter)[]; exclusive: boolean; };
881
	}): Promise<void>;
882
	$updateNotebookProviderOptions(viewType: string, options?: { transientOutputs: boolean; transientCellMetadata: TransientCellMetadata; transientDocumentMetadata: TransientDocumentMetadata; }): Promise<void>;
R
rebornix 已提交
883
	$unregisterNotebookProvider(viewType: string): Promise<void>;
884

885
	$registerNotebookSerializer(handle: number, extension: NotebookExtensionDescription, viewType: string, options: TransientOptions): void;
886 887
	$unregisterNotebookSerializer(handle: number): void;

888
	$registerNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined, selector: NotebookSelector): Promise<void>;
R
Rob Lourens 已提交
889 890
	$unregisterNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined): Promise<void>;
	$emitCellStatusBarEvent(eventHandle: number): void;
891 892 893
}

export interface MainThreadNotebookEditorsShape extends IDisposable {
R
rebornix 已提交
894
	$tryShowNotebookDocument(uriComponents: UriComponents, viewType: string, options: INotebookDocumentShowOptions): Promise<string>;
R
rebornix 已提交
895
	$tryRevealRange(id: string, range: ICellRange, revealType: NotebookEditorRevealType): Promise<void>;
R
rebornix 已提交
896 897 898
	$registerNotebookEditorDecorationType(key: string, options: INotebookDecorationRenderOptions): void;
	$removeNotebookEditorDecorationType(key: string): void;
	$trySetDecorations(id: string, range: ICellRange, decorationKey: string): void;
899 900 901 902 903 904 905
	$tryApplyEdits(editorId: string, modelVersionId: number, cellEdits: ICellEditOperation[]): Promise<boolean>
}

export interface MainThreadNotebookDocumentsShape extends IDisposable {
	$tryOpenDocument(uriComponents: UriComponents): Promise<UriComponents>;
	$trySaveDocument(uri: UriComponents): Promise<boolean>;
	$applyEdits(resource: UriComponents, edits: IImmediateCellEditOperation[], computeUndoRedo?: boolean): Promise<void>;
M
Matt Bierner 已提交
906 907
}

908 909 910
export interface INotebookKernelDto2 {
	id: string;
	selector: NotebookSelector;
911
	extensionId: ExtensionIdentifier;
912
	extensionLocation: UriComponents;
913
	label: string;
J
Johannes Rieken 已提交
914
	detail?: string;
915 916
	description?: string;
	isPreferred?: boolean;
917
	supportedLanguages?: string[];
918
	supportsInterrupt?: boolean;
919
	hasExecutionOrder?: boolean;
920
	preloads?: { uri: UriComponents; provides: string[] }[];
921 922 923
}

export interface MainThreadNotebookKernelsShape extends IDisposable {
924
	$postMessage(handle: number, editorId: string | undefined, message: any): Promise<boolean>;
925
	$addKernel(handle: number, data: INotebookKernelDto2): Promise<void>;
926 927 928 929
	$updateKernel(handle: number, data: Partial<INotebookKernelDto2>): void;
	$removeKernel(handle: number): void;
}

J
Joao Moreno 已提交
930
export interface MainThreadUrlsShape extends IDisposable {
931
	$registerUriHandler(handle: number, extensionId: ExtensionIdentifier): Promise<void>;
J
Johannes Rieken 已提交
932
	$unregisterUriHandler(handle: number): Promise<void>;
933
	$createAppUri(uri: UriComponents): Promise<UriComponents>;
J
Joao Moreno 已提交
934 935 936
}

export interface ExtHostUrlsShape {
J
Johannes Rieken 已提交
937
	$handleExternalUri(handle: number, uri: UriComponents): Promise<void>;
M
Matt Bierner 已提交
938 939
}

940
export interface MainThreadUriOpenersShape extends IDisposable {
M
Matt Bierner 已提交
941 942
	$registerUriOpener(id: string, schemes: readonly string[], extensionId: ExtensionIdentifier, label: string): Promise<void>;
	$unregisterUriOpener(id: string): Promise<void>;
943 944 945
}

export interface ExtHostUriOpenersShape {
M
Matt Bierner 已提交
946
	$canOpenUri(id: string, uri: UriComponents, token: CancellationToken): Promise<modes.ExternalUriOpenerPriority>;
947
	$openUri(id: string, context: { resolvedUri: UriComponents, sourceUri: UriComponents }, token: CancellationToken): Promise<void>;
948 949
}

950 951 952 953
export interface ITextSearchComplete {
	limitHit?: boolean;
}

954
export interface MainThreadWorkspaceShape extends IDisposable {
955
	$startFileSearch(includePattern: string | null, includeFolder: UriComponents | null, excludePatternOrDisregardExcludes: string | false | null, maxResults: number | null, token: CancellationToken): Promise<UriComponents[] | null>;
956
	$startTextSearch(query: search.IPatternInfo, folder: UriComponents | null, options: ITextQueryBuilderOptions, requestId: number, token: CancellationToken): Promise<ITextSearchComplete | null>;
957
	$checkExists(folders: readonly UriComponents[], includes: string[], token: CancellationToken): Promise<boolean>;
J
Johannes Rieken 已提交
958
	$saveAll(includeUntitled?: boolean): Promise<boolean>;
959
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string; }[]): Promise<void>;
960
	$resolveProxy(url: string): Promise<string | undefined>;
S
SteVen Batten 已提交
961
	$requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<boolean>;
962
}
963

J
Johannes Rieken 已提交
964 965
export interface IFileChangeDto {
	resource: UriComponents;
J
Johannes Rieken 已提交
966
	type: files.FileChangeType;
J
Johannes Rieken 已提交
967 968
}

969
export interface MainThreadFileSystemShape extends IDisposable {
970
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: files.FileSystemProviderCapabilities): Promise<void>;
971
	$unregisterProvider(handle: number): void;
J
Johannes Rieken 已提交
972
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
973 974 975 976

	$stat(uri: UriComponents): Promise<files.IStat>;
	$readdir(resource: UriComponents): Promise<[string, files.FileType][]>;
	$readFile(resource: UriComponents): Promise<VSBuffer>;
977
	$writeFile(resource: UriComponents, content: VSBuffer): Promise<void>;
978 979 980 981
	$rename(resource: UriComponents, target: UriComponents, opts: files.FileOverwriteOptions): Promise<void>;
	$copy(resource: UriComponents, target: UriComponents, opts: files.FileOverwriteOptions): Promise<void>;
	$mkdir(resource: UriComponents): Promise<void>;
	$delete(resource: UriComponents, opts: files.FileDeleteOptions): Promise<void>;
982
}
J
Johannes Rieken 已提交
983

984 985 986 987 988
export interface MainThreadLabelServiceShape extends IDisposable {
	$registerResourceLabelFormatter(handle: number, formatter: ResourceLabelFormatter): void;
	$unregisterResourceLabelFormatter(handle: number): void;
}

989
export interface MainThreadSearchShape extends IDisposable {
990 991
	$registerFileSearchProvider(handle: number, scheme: string): void;
	$registerTextSearchProvider(handle: number, scheme: string): void;
992
	$unregisterProvider(handle: number): void;
993
	$handleFileMatch(handle: number, session: number, data: UriComponents[]): void;
J
Johannes Rieken 已提交
994
	$handleTextMatch(handle: number, session: number, data: search.IRawFileMatch2[]): void;
995
	$handleTelemetry(eventName: string, data: any): void;
996 997
}

998
export interface MainThreadTaskShape extends IDisposable {
J
Johannes Rieken 已提交
999
	$createTaskId(task: tasks.TaskDTO): Promise<string>;
1000
	$registerTaskProvider(handle: number, type: string): Promise<void>;
J
Johannes Rieken 已提交
1001
	$unregisterTaskProvider(handle: number): Promise<void>;
J
Johannes Rieken 已提交
1002
	$fetchTasks(filter?: tasks.TaskFilterDTO): Promise<tasks.TaskDTO[]>;
1003
	$getTaskExecution(value: tasks.TaskHandleDTO | tasks.TaskDTO): Promise<tasks.TaskExecutionDTO>;
J
Johannes Rieken 已提交
1004
	$executeTask(task: tasks.TaskHandleDTO | tasks.TaskDTO): Promise<tasks.TaskExecutionDTO>;
J
Johannes Rieken 已提交
1005
	$terminateTask(id: string): Promise<void>;
J
Johannes Rieken 已提交
1006
	$registerTaskSystem(scheme: string, info: tasks.TaskSystemInfoDTO): void;
G
Gabriel DeBacker 已提交
1007
	$customExecutionComplete(id: string, result?: number): Promise<void>;
1008
	$registerSupportedExecutions(custom?: boolean, shell?: boolean, process?: boolean): Promise<void>;
1009 1010
}

1011
export interface MainThreadExtensionServiceShape extends IDisposable {
1012
	$activateExtension(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise<void>;
1013
	$onWillActivateExtension(extensionId: ExtensionIdentifier): Promise<void>;
1014
	$onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void;
1015
	$onExtensionActivationError(extensionId: ExtensionIdentifier, error: ExtensionActivationError): Promise<void>;
1016
	$onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void;
1017
	$setPerformanceMarks(marks: performance.PerformanceMark[]): Promise<void>;
1018 1019
}

J
Joao Moreno 已提交
1020
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
1021 1022
	hasQuickDiffProvider?: boolean;
	count?: number;
1023 1024
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
J
Johannes Rieken 已提交
1025
	statusBarCommands?: ICommandDto[];
J
Joao Moreno 已提交
1026 1027 1028 1029
}

export interface SCMGroupFeatures {
	hideWhenEmpty?: boolean;
J
Joao Moreno 已提交
1030 1031
}

J
Joao Moreno 已提交
1032
export type SCMRawResource = [
1033
	number /*handle*/,
1034
	UriComponents /*resourceUri*/,
1035
	UriComponents[] /*icons: light, dark*/,
1036
	string /*tooltip*/,
1037
	boolean /*strike through*/,
1038
	boolean /*faded*/,
1039 1040
	string /*context value*/,
	ICommandDto | undefined /*command*/
J
Joao Moreno 已提交
1041
];
1042

1043 1044 1045
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
1046 1047 1048
	SCMRawResource[]
];

1049 1050 1051 1052 1053
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

1054
export interface MainThreadSCMShape extends IDisposable {
1055
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
1056 1057
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
1058

1059
	$registerGroups(sourceControlHandle: number, groups: [number /*handle*/, string /*id*/, string /*label*/, SCMGroupFeatures][], splices: SCMRawResourceSplices[]): void;
1060 1061 1062
	$updateGroup(sourceControlHandle: number, handle: number, features: SCMGroupFeatures): void;
	$updateGroupLabel(sourceControlHandle: number, handle: number, label: string): void;
	$unregisterGroup(sourceControlHandle: number, handle: number): void;
J
Joao Moreno 已提交
1063

1064
	$spliceResourceStates(sourceControlHandle: number, splices: SCMRawResourceSplices[]): void;
J
Joao 已提交
1065

J
Joao Moreno 已提交
1066
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
1067
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
1068
	$setInputBoxVisibility(sourceControlHandle: number, visible: boolean): void;
1069 1070
	$setInputBoxFocus(sourceControlHandle: number): void;
	$showValidationMessage(sourceControlHandle: number, message: string, type: InputValidationType): void;
1071
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
1072 1073
}

1074 1075
export type DebugSessionUUID = string;

1076 1077 1078 1079 1080 1081 1082
export interface IDebugConfiguration {
	type: string;
	name: string;
	request: string;
	[key: string]: any;
}

1083 1084 1085
export interface IStartDebuggingOptions {
	parentSessionID?: DebugSessionUUID;
	repl?: IDebugSessionReplMode;
I
isidor 已提交
1086
	noDebug?: boolean;
1087
	compact?: boolean;
1088 1089
}

1090
export interface MainThreadDebugServiceShape extends IDisposable {
A
Alex Dima 已提交
1091
	$registerDebugTypes(debugTypes: string[]): void;
1092
	$sessionCached(sessionID: string): void;
A
Alex Dima 已提交
1093
	$acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void;
1094 1095
	$acceptDAError(handle: number, name: string, message: string, stack: string | undefined): void;
	$acceptDAExit(handle: number, code: number | undefined, signal: string | undefined): void;
1096
	$registerDebugConfigurationProvider(type: string, triggerKind: DebugConfigurationProviderTriggerKind, hasProvideMethod: boolean, hasResolveMethod: boolean, hasResolve2Method: boolean, handle: number): Promise<void>;
J
Johannes Rieken 已提交
1097
	$registerDebugAdapterDescriptorFactory(type: string, handle: number): Promise<void>;
1098
	$unregisterDebugConfigurationProvider(handle: number): void;
A
Andre Weinand 已提交
1099
	$unregisterDebugAdapterDescriptorFactory(handle: number): void;
I
isidor 已提交
1100
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | IDebugConfiguration, options: IStartDebuggingOptions): Promise<boolean>;
1101
	$stopDebugging(sessionId: DebugSessionUUID | undefined): Promise<void>;
1102
	$setDebugSessionName(id: DebugSessionUUID, name: string): void;
J
Johannes Rieken 已提交
1103
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): Promise<any>;
1104
	$getDebugProtocolBreakpoint(id: DebugSessionUUID, breakpoinId: string): Promise<DebugProtocol.Breakpoint | undefined>;
1105 1106
	$appendDebugConsole(value: string): void;
	$startBreakpointEvents(): void;
I
isidor 已提交
1107 1108
	$registerBreakpoints(breakpoints: Array<ISourceMultiBreakpointDto | IFunctionBreakpointDto | IDataBreakpointDto>): Promise<void>;
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[], dataBreakpointIds: string[]): Promise<void>;
1109 1110
}

1111 1112
export interface IOpenUriOptions {
	readonly allowTunneling?: boolean;
1113
	readonly allowContributedOpeners?: boolean | string;
1114 1115
}

1116
export interface MainThreadWindowShape extends IDisposable {
J
Johannes Rieken 已提交
1117
	$getWindowVisibility(): Promise<boolean>;
1118
	$openUri(uri: UriComponents, uriString: string | undefined, options: IOpenUriOptions): Promise<boolean>;
1119
	$asExternalUri(uri: UriComponents, options: IOpenUriOptions): Promise<UriComponents>;
1120 1121
}

1122 1123 1124 1125 1126 1127
export enum CandidatePortSource {
	None = 0,
	Process = 1,
	Output = 2
}

1128 1129 1130
export interface PortAttributesProviderSelector {
	pid?: number;
	portRange?: [number, number];
1131
	commandMatcher?: RegExp;
1132 1133
}

A
Alex Ross 已提交
1134
export interface MainThreadTunnelServiceShape extends IDisposable {
1135
	$openTunnel(tunnelOptions: TunnelOptions, source: string | undefined): Promise<TunnelDto | undefined>;
1136
	$closeTunnel(remote: { host: string, port: number }): Promise<void>;
1137
	$getTunnels(): Promise<TunnelDescription[]>;
1138
	$setTunnelProvider(features: TunnelProviderFeatures): Promise<void>;
1139
	$setRemoteTunnelService(processId: number): Promise<void>;
1140
	$setCandidateFilter(): Promise<void>;
1141
	$onFoundNewCandidates(candidates: CandidatePort[]): Promise<void>;
1142
	$setCandidatePortSource(source: CandidatePortSource): Promise<void>;
1143 1144
	$registerPortsAttributesProvider(selector: PortAttributesProviderSelector, providerHandle: number): Promise<void>;
	$unregisterPortsAttributesProvider(providerHandle: number): Promise<void>;
A
Alex Ross 已提交
1145 1146
}

1147
export interface MainThreadTimelineShape extends IDisposable {
1148 1149
	$registerTimelineProvider(provider: TimelineProviderDescriptor): void;
	$unregisterTimelineProvider(source: string): void;
E
Eric Amodio 已提交
1150
	$emitTimelineChangeEvent(e: TimelineChangeEvent | undefined): void;
1151 1152
}

1153 1154
// -- extension host

1155
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
1156
	$executeContributedCommand<T>(id: string, ...args: any[]): Promise<T>;
1157
	$getContributedCommandHandlerDescriptions(): Promise<{ [id: string]: string | ICommandHandlerDescription; }>;
1158 1159
}

1160
export interface ExtHostConfigurationShape {
1161
	$initializeConfiguration(data: IConfigurationInitData): void;
1162
	$acceptConfigurationChanged(data: IConfigurationInitData, change: IConfigurationChange): void;
1163 1164
}

1165
export interface ExtHostDiagnosticsShape {
J
Johannes Rieken 已提交
1166
	$acceptMarkersChange(data: [UriComponents, IMarkerData[]][]): void;
1167 1168
}

1169
export interface ExtHostDocumentContentProvidersShape {
M
Matt Bierner 已提交
1170
	$provideTextDocumentContent(handle: number, uri: UriComponents): Promise<string | null | undefined>;
1171 1172
}

1173
export interface IModelAddedData {
1174
	uri: UriComponents;
1175
	versionId: number;
1176 1177
	lines: string[];
	EOL: string;
1178 1179 1180
	modeId: string;
	isDirty: boolean;
}
1181
export interface ExtHostDocumentsShape {
1182
	$acceptModelModeChanged(strURL: UriComponents, newModeId: string): void;
1183 1184 1185
	$acceptModelSaved(strURL: UriComponents): void;
	$acceptDirtyStateChanged(strURL: UriComponents, isDirty: boolean): void;
	$acceptModelChanged(strURL: UriComponents, e: IModelChangedEvent, isDirty: boolean): void;
1186 1187
}

1188
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
1189
	$participateInSave(resource: UriComponents, reason: SaveReason): Promise<boolean[]>;
1190 1191
}

1192 1193
export interface ITextEditorAddData {
	id: string;
1194
	documentUri: UriComponents;
1195
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
1196
	selections: ISelection[];
1197
	visibleRanges: IRange[];
1198
	editorPosition: EditorGroupColumn | undefined;
1199 1200
}
export interface ITextEditorPositionData {
1201
	[id: string]: EditorGroupColumn;
1202
}
1203 1204 1205
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
1206
	visibleRanges: IRange[] | null;
1207 1208 1209 1210 1211 1212
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

1213
export interface ExtHostEditorsShape {
1214
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
1215
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
1216 1217
}

J
Johannes Rieken 已提交
1218
export interface IDocumentsAndEditorsDelta {
1219
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
1220 1221 1222
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
A
Alex Dima 已提交
1223
	newActiveEditor?: string | null;
J
Johannes Rieken 已提交
1224 1225
}

1226 1227
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
1228 1229
}

1230
export interface ExtHostTreeViewsShape {
J
Johannes Rieken 已提交
1231
	$getChildren(treeViewId: string, treeItemHandle?: string): Promise<ITreeItem[]>;
1232
	$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void;
1233
	$setSelection(treeViewId: string, treeItemHandles: string[]): void;
1234
	$setVisible(treeViewId: string, visible: boolean): void;
A
Alex Ross 已提交
1235
	$hasResolve(treeViewId: string): Promise<boolean>;
1236
	$resolve(treeViewId: string, treeItemHandle: string, token: CancellationToken): Promise<ITreeItem | undefined>;
S
Sandeep Somavarapu 已提交
1237 1238
}

1239
export interface ExtHostWorkspaceShape {
S
SteVen Batten 已提交
1240
	$initializeWorkspace(workspace: IWorkspaceData | null, trusted: boolean): void;
1241
	$acceptWorkspaceData(workspace: IWorkspaceData | null): void;
J
Johannes Rieken 已提交
1242
	$handleTextSearchResult(result: search.IRawFileMatch2, requestId: number): void;
1243
	$onDidGrantWorkspaceTrust(): void;
1244
}
1245

1246 1247 1248 1249
export interface ExtHostFileSystemInfoShape {
	$acceptProviderInfos(scheme: string, capabilities: number | null): void;
}

1250
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
1251 1252
	$stat(handle: number, resource: UriComponents): Promise<files.IStat>;
	$readdir(handle: number, resource: UriComponents): Promise<[string, files.FileType][]>;
1253 1254
	$readFile(handle: number, resource: UriComponents): Promise<VSBuffer>;
	$writeFile(handle: number, resource: UriComponents, content: VSBuffer, opts: files.FileWriteOptions): Promise<void>;
J
Johannes Rieken 已提交
1255 1256
	$rename(handle: number, resource: UriComponents, target: UriComponents, opts: files.FileOverwriteOptions): Promise<void>;
	$copy(handle: number, resource: UriComponents, target: UriComponents, opts: files.FileOverwriteOptions): Promise<void>;
J
Johannes Rieken 已提交
1257
	$mkdir(handle: number, resource: UriComponents): Promise<void>;
J
Johannes Rieken 已提交
1258 1259
	$delete(handle: number, resource: UriComponents, opts: files.FileDeleteOptions): Promise<void>;
	$watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void;
1260
	$unwatch(handle: number, session: number): void;
J
Johannes Rieken 已提交
1261
	$open(handle: number, resource: UriComponents, opts: files.FileOpenOptions): Promise<number>;
J
Johannes Rieken 已提交
1262
	$close(handle: number, fd: number): Promise<void>;
1263 1264
	$read(handle: number, fd: number, pos: number, length: number): Promise<VSBuffer>;
	$write(handle: number, fd: number, pos: number, data: VSBuffer): Promise<number>;
1265
}
1266

1267 1268 1269 1270
export interface ExtHostLabelServiceShape {
	$registerResourceLabelFormatter(formatter: ResourceLabelFormatter): IDisposable;
}

1271
export interface ExtHostAuthenticationShape {
1272
	$getSessions(id: string, scopes?: string[]): Promise<ReadonlyArray<modes.AuthenticationSession>>;
1273 1274
	$createSession(id: string, scopes: string[]): Promise<modes.AuthenticationSession>;
	$removeSession(id: string, sessionId: string): Promise<void>;
1275
	$onDidChangeAuthenticationSessions(id: string, label: string): Promise<void>;
1276
	$onDidChangeAuthenticationProviders(added: modes.AuthenticationProviderInformation[], removed: modes.AuthenticationProviderInformation[]): Promise<void>;
1277
	$setProviders(providers: modes.AuthenticationProviderInformation[]): Promise<void>;
1278 1279 1280
}

export interface ExtHostSecretStateShape {
1281
	$onDidChangePassword(e: { extensionId: string, key: string }): Promise<void>;
1282 1283
}

1284
export interface ExtHostSearchShape {
J
Johannes Rieken 已提交
1285 1286
	$provideFileSearchResults(handle: number, session: number, query: search.IRawQuery, token: CancellationToken): Promise<search.ISearchCompleteStats>;
	$provideTextSearchResults(handle: number, session: number, query: search.IRawTextQuery, token: CancellationToken): Promise<search.ISearchCompleteStats>;
J
Johannes Rieken 已提交
1287
	$clearCache(cacheKey: string): Promise<void>;
1288 1289
}

A
Tweaks  
Alex Dima 已提交
1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300
export interface IResolveAuthorityErrorResult {
	type: 'error';
	error: {
		message: string | undefined;
		code: RemoteAuthorityResolverErrorCode;
		detail: any;
	};
}

export interface IResolveAuthorityOKResult {
	type: 'ok';
1301
	value: ResolverResult;
A
Tweaks  
Alex Dima 已提交
1302 1303 1304 1305
}

export type IResolveAuthorityResult = IResolveAuthorityErrorResult | IResolveAuthorityOKResult;

1306
export interface ExtHostExtensionServiceShape {
A
Tweaks  
Alex Dima 已提交
1307
	$resolveAuthority(remoteAuthority: string, resolveAttempt: number): Promise<IResolveAuthorityResult>;
1308
	$startExtensionHost(enabledExtensionIds: ExtensionIdentifier[]): Promise<void>;
1309 1310
	$extensionTestsExecute(): Promise<number>;
	$extensionTestsExit(code: number): Promise<void>;
1311
	$activateByEvent(activationEvent: string, activationKind: ActivationKind): Promise<void>;
1312
	$activate(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise<boolean>;
1313
	$setRemoteEnvironment(env: { [key: string]: string | null; }): Promise<void>;
1314
	$updateRemoteConnectionData(connectionData: IRemoteConnectionData): Promise<void>;
1315

1316
	$deltaExtensions(toAdd: IExtensionDescription[], toRemove: ExtensionIdentifier[]): Promise<void>;
1317 1318

	$test_latency(n: number): Promise<number>;
1319 1320
	$test_up(b: VSBuffer): Promise<number>;
	$test_down(size: number): Promise<VSBuffer>;
1321 1322 1323
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
1324 1325 1326
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
1327
}
1328

1329 1330 1331 1332 1333
export interface SourceTargetPair {
	source?: UriComponents;
	target: UriComponents;
}

1334 1335 1336 1337 1338
export interface IWillRunFileOperationParticipation {
	edit: IWorkspaceEditDto;
	extensionNames: string[]
}

1339
export interface ExtHostFileSystemEventServiceShape {
1340
	$onFileEvent(events: FileSystemEvents): void;
1341
	$onWillRunFileOperation(operation: files.FileOperation, files: SourceTargetPair[], timeout: number, token: CancellationToken): Promise<IWillRunFileOperationParticipation | undefined>;
1342
	$onDidRunFileOperation(operation: files.FileOperation, files: SourceTargetPair[]): void;
1343 1344
}

J
Johannes Rieken 已提交
1345
export interface ObjectIdentifier {
1346
	$ident?: number;
J
Johannes Rieken 已提交
1347 1348 1349
}

export namespace ObjectIdentifier {
1350
	export const name = '$ident';
J
Johannes Rieken 已提交
1351
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
1352
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
1353 1354
		return <T & ObjectIdentifier>obj;
	}
1355 1356
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
1357 1358 1359
	}
}

1360 1361
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
1362
}
1363
export interface IRawColorInfo {
J
Joao Moreno 已提交
1364
	color: [number, number, number, number];
1365 1366 1367
	range: IRange;
}

1368 1369 1370 1371 1372 1373 1374 1375 1376
export class IdObject {
	_id?: number;
	private static _n = 0;
	static mixin<T extends object>(object: T): T & IdObject {
		(<any>object)._id = IdObject._n++;
		return <any>object;
	}
}

1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391
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',
P
label2  
Pine Wu 已提交
1392 1393 1394

	// to merge into label
	label2 = 'o',
1395 1396
}

J
Johannes Rieken 已提交
1397
export interface ISuggestDataDto {
P
label2  
Pine Wu 已提交
1398 1399
	[ISuggestDataDtoField.label]: string;
	[ISuggestDataDtoField.label2]?: string | modes.CompletionItemLabel;
1400
	[ISuggestDataDtoField.kind]?: modes.CompletionItemKind;
1401 1402 1403 1404
	[ISuggestDataDtoField.detail]?: string;
	[ISuggestDataDtoField.documentation]?: string | IMarkdownString;
	[ISuggestDataDtoField.sortText]?: string;
	[ISuggestDataDtoField.filterText]?: string;
1405
	[ISuggestDataDtoField.preselect]?: true;
1406 1407
	[ISuggestDataDtoField.insertText]?: string;
	[ISuggestDataDtoField.insertTextRules]?: modes.CompletionItemInsertTextRule;
1408
	[ISuggestDataDtoField.range]?: IRange | { insert: IRange, replace: IRange; };
1409 1410 1411 1412
	[ISuggestDataDtoField.commitCharacters]?: string[];
	[ISuggestDataDtoField.additionalTextEdits]?: ISingleEditOperation[];
	[ISuggestDataDtoField.command]?: modes.Command;
	[ISuggestDataDtoField.kindModifier]?: modes.CompletionItemTag[];
J
Johannes Rieken 已提交
1413
	// not-standard
1414
	x?: ChainedCacheId;
J
Johannes Rieken 已提交
1415 1416
}

1417 1418 1419
export const enum ISuggestResultDtoField {
	defaultRanges = 'a',
	completions = 'b',
1420 1421
	isIncomplete = 'c',
	duration = 'd',
1422 1423
}

J
Johannes Rieken 已提交
1424
export interface ISuggestResultDto {
1425 1426 1427
	[ISuggestResultDtoField.defaultRanges]: { insert: IRange, replace: IRange; };
	[ISuggestResultDtoField.completions]: ISuggestDataDto[];
	[ISuggestResultDtoField.isIncomplete]: undefined | true;
1428
	[ISuggestResultDtoField.duration]: number;
1429
	x?: number;
1430 1431
}

J
Johannes Rieken 已提交
1432
export interface ISignatureHelpDto {
1433 1434 1435 1436 1437 1438
	id: CacheId;
	signatures: modes.SignatureInformation[];
	activeSignature: number;
	activeParameter: number;
}

J
Johannes Rieken 已提交
1439
export interface ISignatureHelpContextDto {
1440 1441 1442
	readonly triggerKind: modes.SignatureHelpTriggerKind;
	readonly triggerCharacter?: string;
	readonly isRetrigger: boolean;
J
Johannes Rieken 已提交
1443
	readonly activeSignatureHelp?: ISignatureHelpDto;
1444 1445
}

K
kingwl 已提交
1446
export interface IInlineHintDto {
W
Wenlu Wang 已提交
1447 1448
	text: string;
	range: IRange;
1449
	kind: modes.InlineHintKind;
W
Wenlu Wang 已提交
1450 1451
	whitespaceBefore?: boolean;
	whitespaceAfter?: boolean;
1452
	hoverMessage?: string;
K
WIP  
kingwl 已提交
1453 1454
}

K
kingwl 已提交
1455 1456
export interface IInlineHintsDto {
	hints: IInlineHintDto[]
K
WIP  
kingwl 已提交
1457 1458
}

J
Johannes Rieken 已提交
1459
export interface ILocationDto {
1460 1461
	uri: UriComponents;
	range: IRange;
1462 1463
}

J
Johannes Rieken 已提交
1464
export interface IDefinitionLinkDto {
J
Johannes Rieken 已提交
1465
	originSelectionRange?: IRange;
M
Matt Bierner 已提交
1466 1467
	uri: UriComponents;
	range: IRange;
J
Johannes Rieken 已提交
1468
	targetSelectionRange?: IRange;
M
Matt Bierner 已提交
1469 1470
}

J
Johannes Rieken 已提交
1471
export interface IWorkspaceSymbolDto extends IdObject {
1472 1473 1474
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
J
Johannes Rieken 已提交
1475
	location: ILocationDto;
1476 1477
}

J
Johannes Rieken 已提交
1478 1479
export interface IWorkspaceSymbolsDto extends IdObject {
	symbols: IWorkspaceSymbolDto[];
1480 1481
}

1482 1483 1484 1485 1486 1487 1488
export interface IWorkspaceEditEntryMetadataDto {
	needsConfirmation: boolean;
	label: string;
	description?: string;
	iconPath?: { id: string } | UriComponents | { light: UriComponents, dark: UriComponents };
}

1489 1490 1491
export const enum WorkspaceEditType {
	File = 1,
	Text = 2,
1492
	Cell = 3,
1493 1494
}

1495
export interface IWorkspaceFileEditDto {
1496
	_type: WorkspaceEditType.File;
M
Matt Bierner 已提交
1497 1498
	oldUri?: UriComponents;
	newUri?: UriComponents;
1499
	options?: modes.WorkspaceFileEditOptions
1500
	metadata?: IWorkspaceEditEntryMetadataDto;
1501 1502
}

1503
export interface IWorkspaceTextEditDto {
1504
	_type: WorkspaceEditType.Text;
1505
	resource: UriComponents;
1506
	edit: modes.TextEdit;
1507
	modelVersionId?: number;
1508
	metadata?: IWorkspaceEditEntryMetadataDto;
1509 1510
}

1511 1512 1513
export interface IWorkspaceCellEditDto {
	_type: WorkspaceEditType.Cell;
	resource: UriComponents;
1514
	edit: ICellEditOperation;
1515
	notebookVersionId?: number;
1516 1517 1518
	metadata?: IWorkspaceEditEntryMetadataDto;
}

J
Johannes Rieken 已提交
1519
export interface IWorkspaceEditDto {
1520
	edits: Array<IWorkspaceFileEditDto | IWorkspaceTextEditDto | IWorkspaceCellEditDto>;
1521 1522
}

J
Johannes Rieken 已提交
1523
export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): modes.WorkspaceEdit {
1524 1525
	if (data && data.edits) {
		for (const edit of data.edits) {
1526 1527
			if (typeof (<IWorkspaceTextEditDto>edit).resource === 'object') {
				(<IWorkspaceTextEditDto>edit).resource = URI.revive((<IWorkspaceTextEditDto>edit).resource);
1528
			} else {
1529 1530
				(<IWorkspaceFileEditDto>edit).newUri = URI.revive((<IWorkspaceFileEditDto>edit).newUri);
				(<IWorkspaceFileEditDto>edit).oldUri = URI.revive((<IWorkspaceFileEditDto>edit).oldUri);
1531
			}
1532 1533 1534
			if (edit.metadata && edit.metadata.iconPath) {
				edit.metadata = revive(edit.metadata);
			}
1535 1536 1537 1538 1539
		}
	}
	return <modes.WorkspaceEdit>data;
}

J
Johannes Rieken 已提交
1540
export type ICommandDto = ObjectIdentifier & modes.Command;
1541

J
Johannes Rieken 已提交
1542
export interface ICodeActionDto {
1543
	cacheId?: ChainedCacheId;
1544
	title: string;
J
Johannes Rieken 已提交
1545
	edit?: IWorkspaceEditDto;
1546
	diagnostics?: IMarkerData[];
J
Johannes Rieken 已提交
1547
	command?: ICommandDto;
J
Johannes Rieken 已提交
1548
	kind?: string;
1549
	isPreferred?: boolean;
M
Matt Bierner 已提交
1550
	disabled?: string;
1551
}
1552

J
Johannes Rieken 已提交
1553
export interface ICodeActionListDto {
1554
	cacheId: CacheId;
J
Johannes Rieken 已提交
1555
	actions: ReadonlyArray<ICodeActionDto>;
1556 1557
}

1558 1559 1560 1561 1562
export interface ICodeActionProviderMetadataDto {
	readonly providedKinds?: readonly string[];
	readonly documentation?: ReadonlyArray<{ readonly kind: string, readonly command: ICommandDto }>;
}

1563 1564 1565
export type CacheId = number;
export type ChainedCacheId = [CacheId, CacheId];

J
Johannes Rieken 已提交
1566
export interface ILinksListDto {
1567
	id?: CacheId;
J
Johannes Rieken 已提交
1568
	links: ILinkDto[];
1569 1570
}

J
Johannes Rieken 已提交
1571
export interface ILinkDto {
1572
	cacheId?: ChainedCacheId;
M
Martin Aeschlimann 已提交
1573 1574
	range: IRange;
	url?: string | UriComponents;
1575
	tooltip?: string;
M
Martin Aeschlimann 已提交
1576
}
1577

J
Johannes Rieken 已提交
1578
export interface ICodeLensListDto {
1579
	cacheId?: number;
J
Johannes Rieken 已提交
1580
	lenses: ICodeLensDto[];
1581 1582
}

J
Johannes Rieken 已提交
1583
export interface ICodeLensDto {
1584
	cacheId?: ChainedCacheId;
1585
	range: IRange;
J
Johannes Rieken 已提交
1586
	command?: ICommandDto;
1587
}
1588

J
Johannes Rieken 已提交
1589
export type ICallHierarchyItemDto = Dto<CallHierarchyItem>;
1590

1591 1592 1593 1594 1595 1596 1597 1598 1599 1600
export interface IIncomingCallDto {
	from: ICallHierarchyItemDto;
	fromRanges: IRange[];
}

export interface IOutgoingCallDto {
	fromRanges: IRange[];
	to: ICallHierarchyItemDto;
}

A
Alex Dima 已提交
1601 1602 1603 1604 1605 1606
export interface ILanguageWordDefinitionDto {
	languageId: string;
	regexSource: string;
	regexFlags: string
}

1607
export interface ILinkedEditingRangesDto {
M
Martin Aeschlimann 已提交
1608 1609 1610 1611
	ranges: IRange[];
	wordPattern?: IRegExpDto;
}

1612
export interface IInlineValueContextDto {
1613
	frameId: number;
1614 1615 1616
	stoppedLocation: IRange;
}

1617
export interface ExtHostLanguageFeaturesShape {
1618
	$provideDocumentSymbols(handle: number, resource: UriComponents, token: CancellationToken): Promise<modes.DocumentSymbol[] | undefined>;
J
Johannes Rieken 已提交
1619 1620
	$provideCodeLenses(handle: number, resource: UriComponents, token: CancellationToken): Promise<ICodeLensListDto | undefined>;
	$resolveCodeLens(handle: number, symbol: ICodeLensDto, token: CancellationToken): Promise<ICodeLensDto | undefined>;
1621
	$releaseCodeLenses(handle: number, id: number): void;
J
Johannes Rieken 已提交
1622 1623 1624 1625
	$provideDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<IDefinitionLinkDto[]>;
	$provideDeclaration(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<IDefinitionLinkDto[]>;
	$provideImplementation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<IDefinitionLinkDto[]>;
	$provideTypeDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<IDefinitionLinkDto[]>;
1626
	$provideHover(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.Hover | undefined>;
1627
	$provideEvaluatableExpression(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.EvaluatableExpression | undefined>;
1628
	$provideInlineValues(handle: number, resource: UriComponents, range: IRange, context: modes.InlineValueContext, token: CancellationToken): Promise<modes.InlineValue[] | undefined>;
1629
	$provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.DocumentHighlight[] | undefined>;
1630
	$provideLinkedEditingRanges(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<ILinkedEditingRangesDto | undefined>;
J
Johannes Rieken 已提交
1631 1632
	$provideReferences(handle: number, resource: UriComponents, position: IPosition, context: modes.ReferenceContext, token: CancellationToken): Promise<ILocationDto[] | undefined>;
	$provideCodeActions(handle: number, resource: UriComponents, rangeOrSelection: IRange | ISelection, context: modes.CodeActionContext, token: CancellationToken): Promise<ICodeActionListDto | undefined>;
1633
	$resolveCodeAction(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<IWorkspaceEditDto | undefined>;
1634
	$releaseCodeActions(handle: number, cacheId: number): void;
1635 1636 1637
	$provideDocumentFormattingEdits(handle: number, resource: UriComponents, options: modes.FormattingOptions, token: CancellationToken): Promise<ISingleEditOperation[] | undefined>;
	$provideDocumentRangeFormattingEdits(handle: number, resource: UriComponents, range: IRange, options: modes.FormattingOptions, token: CancellationToken): Promise<ISingleEditOperation[] | undefined>;
	$provideOnTypeFormattingEdits(handle: number, resource: UriComponents, position: IPosition, ch: string, options: modes.FormattingOptions, token: CancellationToken): Promise<ISingleEditOperation[] | undefined>;
J
Johannes Rieken 已提交
1638 1639
	$provideWorkspaceSymbols(handle: number, search: string, token: CancellationToken): Promise<IWorkspaceSymbolsDto>;
	$resolveWorkspaceSymbol(handle: number, symbol: IWorkspaceSymbolDto, token: CancellationToken): Promise<IWorkspaceSymbolDto | undefined>;
1640
	$releaseWorkspaceSymbols(handle: number, id: number): void;
J
Johannes Rieken 已提交
1641
	$provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string, token: CancellationToken): Promise<IWorkspaceEditDto & { rejectReason?: string } | undefined>;
1642
	$resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.RenameLocation | undefined>;
1643 1644 1645
	$provideDocumentSemanticTokens(handle: number, resource: UriComponents, previousResultId: number, token: CancellationToken): Promise<VSBuffer | null>;
	$releaseDocumentSemanticTokens(handle: number, semanticColoringResultId: number): void;
	$provideDocumentRangeSemanticTokens(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise<VSBuffer | null>;
J
Johannes Rieken 已提交
1646
	$provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.CompletionContext, token: CancellationToken): Promise<ISuggestResultDto | undefined>;
1647
	$resolveCompletionItem(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<ISuggestDataDto | undefined>;
1648
	$releaseCompletionItems(handle: number, id: number): void;
J
Johannes Rieken 已提交
1649
	$provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition, context: modes.SignatureHelpContext, token: CancellationToken): Promise<ISignatureHelpDto | undefined>;
1650
	$releaseSignatureHelp(handle: number, id: number): void;
K
kingwl 已提交
1651
	$provideInlineHints(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise<IInlineHintsDto | undefined>
J
Johannes Rieken 已提交
1652 1653
	$provideDocumentLinks(handle: number, resource: UriComponents, token: CancellationToken): Promise<ILinksListDto | undefined>;
	$resolveDocumentLink(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<ILinkDto | undefined>;
1654
	$releaseDocumentLinks(handle: number, id: number): void;
J
Johannes Rieken 已提交
1655
	$provideDocumentColors(handle: number, resource: UriComponents, token: CancellationToken): Promise<IRawColorInfo[]>;
M
Matt Bierner 已提交
1656 1657
	$provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise<modes.IColorPresentation[] | undefined>;
	$provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext, token: CancellationToken): Promise<modes.FoldingRange[] | undefined>;
1658
	$provideSelectionRanges(handle: number, resource: UriComponents, positions: IPosition[], token: CancellationToken): Promise<modes.SelectionRange[][]>;
1659
	$prepareCallHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<ICallHierarchyItemDto[] | undefined>;
1660 1661
	$provideCallHierarchyIncomingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<IIncomingCallDto[] | undefined>;
	$provideCallHierarchyOutgoingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<IOutgoingCallDto[] | undefined>;
1662
	$releaseCallHierarchy(handle: number, sessionId: string): void;
A
Alex Dima 已提交
1663
	$setWordDefinitions(wordDefinitions: ILanguageWordDefinitionDto[]): void;
1664 1665
}

1666 1667
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
M
Matt Bierner 已提交
1668
	$validateInput(input: string): Promise<string | null | undefined>;
1669 1670 1671
	$onDidChangeActive(sessionId: number, handles: number[]): void;
	$onDidChangeSelection(sessionId: number, handles: number[]): void;
	$onDidAccept(sessionId: number): void;
1672
	$onDidChangeValue(sessionId: number, value: string): void;
C
Christof Marti 已提交
1673
	$onDidTriggerButton(sessionId: number, handle: number): void;
1674
	$onDidHide(sessionId: number): void;
1675 1676
}

1677 1678 1679 1680 1681
export interface ExtHostTelemetryShape {
	$initializeTelemetryEnabled(enabled: boolean): void;
	$onDidChangeTelemetryEnabled(enabled: boolean): void;
}

D
Daniel Imms 已提交
1682 1683 1684 1685 1686
export interface IShellAndArgsDto {
	shell: string;
	args: string[] | string | undefined;
}

1687
export interface ITerminalLinkDto {
D
Daniel Imms 已提交
1688 1689
	/** The ID of the link to enable activation and disposal. */
	id: number;
1690 1691 1692 1693 1694 1695 1696 1697
	/** 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;
}

1698 1699 1700 1701 1702
export interface ITerminalDimensionsDto {
	columns: number;
	rows: number;
}

1703
export interface ExtHostTerminalServiceShape {
D
Daniel Imms 已提交
1704
	$acceptTerminalClosed(id: number, exitCode: number | undefined): void;
1705
	$acceptTerminalOpened(id: number, extHostTerminalId: string | undefined, name: string, shellLaunchConfig: IShellLaunchConfigDto): void;
1706
	$acceptActiveTerminalChanged(id: number | null): void;
1707
	$acceptTerminalProcessId(id: number, processId: number): void;
A
Alex Dima 已提交
1708
	$acceptTerminalProcessData(id: number, data: string): void;
1709
	$acceptTerminalTitleChange(id: number, name: string): void;
1710
	$acceptTerminalDimensions(id: number, cols: number, rows: number): void;
1711
	$acceptTerminalMaximumDimensions(id: number, cols: number, rows: number): void;
1712
	$startExtensionTerminal(id: number, initialDimensions: ITerminalDimensionsDto | undefined): Promise<ITerminalLaunchError | undefined>;
D
Daniel Imms 已提交
1713
	$acceptProcessAckDataEvent(id: number, charCount: number): void;
D
Daniel Imms 已提交
1714 1715
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
1716
	$acceptProcessShutdown(id: number, immediate: boolean): void;
1717 1718
	$acceptProcessRequestInitialCwd(id: number): void;
	$acceptProcessRequestCwd(id: number): void;
1719
	$acceptProcessRequestLatency(id: number): number;
1720
	$getAvailableProfiles(configuredProfilesOnly: boolean): Promise<ITerminalProfile[]>;
1721
	$getDefaultShellAndArgs(useAutomationShell: boolean): Promise<IShellAndArgsDto>;
1722
	$provideLinks(id: number, line: string): Promise<ITerminalLinkDto[]>;
D
Daniel Imms 已提交
1723
	$activateLink(id: number, linkId: number): void;
1724
	$initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void;
1725 1726
}

1727
export interface ExtHostSCMShape {
M
Matt Bierner 已提交
1728
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise<UriComponents | null>;
A
Alex Dima 已提交
1729
	$onInputBoxValueChange(sourceControlHandle: number, value: string): void;
J
João Moreno 已提交
1730
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number, preserveFocus: boolean): Promise<void>;
J
Johannes Rieken 已提交
1731
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): Promise<[string, number] | undefined>;
J
João Moreno 已提交
1732
	$setSelectedSourceControl(selectedSourceControlHandle: number | undefined): Promise<void>;
J
Joao Moreno 已提交
1733 1734
}

1735
export interface ExtHostTaskShape {
J
Johannes Rieken 已提交
1736
	$provideTasks(handle: number, validTypes: { [key: string]: boolean; }): Thenable<tasks.TaskSetDTO>;
1737
	$resolveTask(handle: number, taskDTO: tasks.TaskDTO): Thenable<tasks.TaskDTO | undefined>;
1738
	$onDidStartTask(execution: tasks.TaskExecutionDTO, terminalId: number, resolvedDefinition: tasks.TaskDefinitionDTO): void;
J
Johannes Rieken 已提交
1739 1740 1741
	$onDidStartTaskProcess(value: tasks.TaskProcessStartedDTO): void;
	$onDidEndTaskProcess(value: tasks.TaskProcessEndedDTO): void;
	$OnDidEndTask(execution: tasks.TaskExecutionDTO): void;
1742 1743
	$resolveVariables(workspaceFolder: UriComponents, toResolve: { process?: { name: string; cwd?: string; }, variables: string[]; }): Promise<{ process?: string; variables: { [key: string]: string; }; }>;
	$getDefaultShellAndArgs(): Thenable<{ shell: string, args: string[] | string | undefined; }>;
A
Alex Ross 已提交
1744
	$jsonTasksSupported(): Thenable<boolean>;
1745
	$findExecutable(command: string, cwd?: string, paths?: string[]): Promise<string | undefined>;
1746 1747
}

1748 1749
export interface IBreakpointDto {
	type: string;
1750
	id?: string;
1751 1752 1753
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
1754 1755 1756 1757 1758
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
1759
	functionName: string;
1760 1761
}

I
isidor 已提交
1762 1763 1764 1765 1766
export interface IDataBreakpointDto extends IBreakpointDto {
	type: 'data';
	dataId: string;
	canPersist: boolean;
	label: string;
1767
	accessTypes?: DebugProtocol.DataBreakpointAccessType[];
1768
	accessType: DebugProtocol.DataBreakpointAccessType;
I
isidor 已提交
1769 1770
}

1771
export interface ISourceBreakpointDto extends IBreakpointDto {
1772
	type: 'source';
1773
	uri: UriComponents;
1774 1775
	line: number;
	character: number;
1776 1777
}

1778
export interface IBreakpointsDeltaDto {
I
isidor 已提交
1779
	added?: Array<ISourceBreakpointDto | IFunctionBreakpointDto | IDataBreakpointDto>;
1780
	removed?: string[];
I
isidor 已提交
1781
	changed?: Array<ISourceBreakpointDto | IFunctionBreakpointDto | IDataBreakpointDto>;
1782 1783
}

1784 1785 1786 1787
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
1788
		id: string;
1789 1790 1791
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
1792
		logMessage?: string;
1793 1794 1795
		line: number;
		character: number;
	}[];
1796 1797
}

A
Andre Weinand 已提交
1798
export interface IDebugSessionFullDto {
1799 1800 1801
	id: DebugSessionUUID;
	type: string;
	name: string;
1802
	folderUri: UriComponents | undefined;
A
Andre Weinand 已提交
1803
	configuration: IConfig;
1804 1805
}

A
Andre Weinand 已提交
1806 1807
export type IDebugSessionDto = IDebugSessionFullDto | DebugSessionUUID;

1808
export interface ExtHostDebugServiceShape {
J
Johannes Rieken 已提交
1809
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): Promise<IConfig>;
1810
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, sessionId: string): Promise<number | undefined>;
J
Johannes Rieken 已提交
1811 1812
	$startDASession(handle: number, session: IDebugSessionDto): Promise<void>;
	$stopDASession(handle: number): Promise<void>;
1813
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void;
1814
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise<IConfig | null | undefined>;
1815
	$resolveDebugConfigurationWithSubstitutedVariables(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise<IConfig | null | undefined>;
1816
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined, token: CancellationToken): Promise<IConfig[]>;
J
Johannes Rieken 已提交
1817
	$provideDebugAdapter(handle: number, session: IDebugSessionDto): Promise<IAdapterDescriptor>;
1818 1819
	$acceptDebugSessionStarted(session: IDebugSessionDto): void;
	$acceptDebugSessionTerminated(session: IDebugSessionDto): void;
1820
	$acceptDebugSessionActiveChanged(session: IDebugSessionDto | undefined): void;
1821 1822
	$acceptDebugSessionCustomEvent(session: IDebugSessionDto, event: any): void;
	$acceptBreakpointsDelta(delta: IBreakpointsDeltaDto): void;
1823
	$acceptDebugSessionNameChanged(session: IDebugSessionDto, name: string): void;
1824 1825
}

1826

1827 1828 1829 1830 1831
export interface DecorationRequest {
	readonly id: number;
	readonly uri: UriComponents;
}

1832
export type DecorationData = [boolean, string, string, ThemeColor];
1833
export type DecorationReply = { [id: number]: DecorationData; };
1834 1835

export interface ExtHostDecorationsShape {
1836
	$provideDecorations(handle: number, requests: DecorationRequest[], token: CancellationToken): Promise<DecorationReply>;
1837 1838
}

1839 1840
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
1841 1842
}

S
Sandeep Somavarapu 已提交
1843
export interface ExtHostLogServiceShape {
A
Alex Dima 已提交
1844
	$setLevel(level: LogLevel): void;
S
Sandeep Somavarapu 已提交
1845 1846
}

J
Johannes Rieken 已提交
1847 1848 1849 1850
export interface MainThreadLogShape {
	$log(file: UriComponents, level: LogLevel, args: any[]): void;
}

1851 1852 1853 1854
export interface ExtHostOutputServiceShape {
	$setVisibleChannel(channelId: string | null): void;
}

1855 1856 1857 1858
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

M
Matt Bierner 已提交
1859
export interface ExtHostCommentsShape {
P
Peng Lyu 已提交
1860
	$createCommentThreadTemplate(commentControllerHandle: number, uriComponents: UriComponents, range: IRange): void;
1861
	$updateCommentThreadTemplate(commentControllerHandle: number, threadHandle: number, range: IRange): Promise<void>;
1862
	$deleteCommentThread(commentControllerHandle: number, commentThreadHandle: number): void;
P
Peng Lyu 已提交
1863
	$provideCommentingRanges(commentControllerHandle: number, uriComponents: UriComponents, token: CancellationToken): Promise<IRange[] | undefined>;
P
Peng Lyu 已提交
1864
	$toggleReaction(commentControllerHandle: number, threadHandle: number, uri: UriComponents, comment: modes.Comment, reaction: modes.CommentReaction): Promise<void>;
M
Matt Bierner 已提交
1865 1866
}

R
rebornix 已提交
1867
export interface INotebookSelectionChangeEvent {
R
rebornix 已提交
1868
	selections: ICellRange[];
R
rebornix 已提交
1869 1870
}

1871
export interface INotebookVisibleRangesEvent {
1872
	ranges: ICellRange[];
1873 1874
}

R
rebornix 已提交
1875
export interface INotebookEditorPropertiesChangeData {
1876 1877
	visibleRanges?: INotebookVisibleRangesEvent;
	selections?: INotebookSelectionChangeEvent;
1878 1879 1880
}

export interface INotebookDocumentPropertiesChangeData {
1881
	metadata?: NotebookDocumentMetadata;
R
rebornix 已提交
1882 1883
}

R
rebornix 已提交
1884 1885
export interface INotebookModelAddedData {
	uri: UriComponents;
R
rebornix 已提交
1886 1887
	versionId: number;
	cells: IMainCellDto[],
R
rebornix 已提交
1888
	viewType: string;
R
rebornix 已提交
1889
	metadata?: NotebookDocumentMetadata;
R
rebornix 已提交
1890 1891
}

R
rebornix 已提交
1892 1893 1894
export interface INotebookEditorAddData {
	id: string;
	documentUri: UriComponents;
R
rebornix 已提交
1895
	selections: ICellRange[];
1896
	visibleRanges: ICellRange[];
1897
	viewColumn?: number
R
rebornix 已提交
1898 1899 1900 1901 1902
}

export interface INotebookDocumentsAndEditorsDelta {
	removedDocuments?: UriComponents[];
	addedDocuments?: INotebookModelAddedData[];
R
rebornix 已提交
1903 1904 1905
	removedEditors?: string[];
	addedEditors?: INotebookEditorAddData[];
	newActiveEditor?: string | null;
R
rebornix 已提交
1906
	visibleEditors?: string[];
R
rebornix 已提交
1907 1908
}

1909 1910 1911 1912 1913 1914 1915 1916 1917 1918
export interface INotebookKernelInfoDto2 {
	id?: string;
	friendlyId: string;
	label: string;
	extension: ExtensionIdentifier;
	extensionLocation: UriComponents;
	providerHandle?: number;
	description?: string;
	detail?: string;
	isPreferred?: boolean;
1919
	preloads?: { uri: UriComponents; provides: string[] }[];
1920
	supportedLanguages?: string[]
R
Rob Lourens 已提交
1921
	implementsInterrupt?: boolean;
1922 1923
}

1924
export interface ExtHostNotebookShape extends ExtHostNotebookDocumentsAndEditorsShape, ExtHostNotebookDocumentsShape, ExtHostNotebookEditorsShape {
R
Rob Lourens 已提交
1925 1926
	$provideNotebookCellStatusBarItems(handle: number, uri: UriComponents, index: number, token: CancellationToken): Promise<INotebookCellStatusBarListDto | undefined>;
	$releaseNotebookCellStatusBarItems(id: number): void;
1927

1928
	$openNotebook(viewType: string, uri: UriComponents, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, token: CancellationToken): Promise<NotebookDataDto>;
R
rebornix 已提交
1929
	$saveNotebook(viewType: string, uri: UriComponents, token: CancellationToken): Promise<boolean>;
R
saveAs  
rebornix 已提交
1930
	$saveNotebookAs(viewType: string, uri: UriComponents, target: UriComponents, token: CancellationToken): Promise<boolean>;
J
Johannes Rieken 已提交
1931
	$backupNotebook(viewType: string, uri: UriComponents, cancellation: CancellationToken): Promise<string>;
1932

1933 1934
	$dataToNotebook(handle: number, data: VSBuffer, token: CancellationToken): Promise<NotebookDataDto>;
	$notebookToData(handle: number, data: NotebookDataDto, token: CancellationToken): Promise<VSBuffer>;
1935 1936 1937 1938 1939
}

export interface ExtHostNotebookDocumentsAndEditorsShape {
	$acceptDocumentAndEditorsDelta(delta: INotebookDocumentsAndEditorsDelta): void;
}
1940

1941
export interface ExtHostNotebookDocumentsShape {
R
rebornix 已提交
1942
	$acceptModelChanged(uriComponents: UriComponents, event: NotebookCellsChangedEventDto, isDirty: boolean): void;
1943
	$acceptDirtyStateChanged(uriComponents: UriComponents, isDirty: boolean): void;
1944
	$acceptModelSaved(uriComponents: UriComponents): void;
1945
	$acceptDocumentPropertiesChanged(uriComponents: UriComponents, data: INotebookDocumentPropertiesChangeData): void;
1946 1947
}

1948 1949
export type INotebookEditorViewColumnInfo = Record<string, number>;

1950
export interface ExtHostNotebookEditorsShape {
J
Johannes Rieken 已提交
1951
	$acceptEditorPropertiesChanged(id: string, data: INotebookEditorPropertiesChangeData): void;
1952
	$acceptEditorViewColumns(data: INotebookEditorViewColumnInfo): void;
R
rebornix 已提交
1953 1954
}

1955
export interface ExtHostNotebookKernelsShape {
1956
	$acceptSelection(handle: number, uri: UriComponents, value: boolean): void;
1957 1958
	$executeCells(handle: number, uri: UriComponents, handles: number[]): Promise<void>;
	$cancelCells(handle: number, uri: UriComponents, handles: number[]): Promise<void>;
1959
	$acceptRendererMessage(handle: number, editorId: string, message: any): void;
1960 1961
}

1962
export interface ExtHostStorageShape {
1963
	$acceptValue(shared: boolean, key: string, value: object | undefined): void;
1964 1965
}

M
Martin Aeschlimann 已提交
1966 1967 1968 1969 1970 1971
export interface ExtHostThemingShape {
	$onColorThemeChange(themeType: string): void;
}

export interface MainThreadThemingShape extends IDisposable {
}
1972 1973

export interface ExtHostTunnelServiceShape {
1974
	$forwardPort(tunnelOptions: TunnelOptions, tunnelCreationOptions: TunnelCreationOptions): Promise<TunnelDto | undefined>;
1975
	$closeTunnel(remote: { host: string, port: number }, silent?: boolean): Promise<void>;
A
Alex Ross 已提交
1976
	$onDidTunnelsChange(): Promise<void>;
1977
	$registerCandidateFinder(enable: boolean): Promise<void>;
1978
	$applyCandidateFilter(candidates: CandidatePort[]): Promise<CandidatePort[]>;
1979
	$providePortAttributes(handles: number[], ports: number[], pid: number | undefined, commandline: string | undefined, cancellationToken: CancellationToken): Promise<ProvidedPortAttributes[]>;
1980 1981
}

1982
export interface ExtHostTimelineShape {
1983
	$getTimeline(source: string, uri: UriComponents, options: TimelineOptions, token: CancellationToken, internalOptions?: InternalTimelineOptions): Promise<Timeline | undefined>;
1984 1985
}

C
Connor Peet 已提交
1986 1987 1988 1989 1990 1991
export const enum ExtHostTestingResource {
	Workspace,
	TextDocument
}

export interface ExtHostTestingShape {
1992
	$runTestsForProvider(req: RunTestForProviderRequest, token: CancellationToken): Promise<void>;
C
Connor Peet 已提交
1993 1994
	$subscribeToTests(resource: ExtHostTestingResource, uri: UriComponents): void;
	$unsubscribeFromTests(resource: ExtHostTestingResource, uri: UriComponents): void;
1995
	$lookupTest(test: TestIdWithSrc): Promise<InternalTestItem | undefined>;
C
Connor Peet 已提交
1996
	$acceptDiff(resource: ExtHostTestingResource, uri: UriComponents, diff: TestsDiff): void;
1997
	$publishTestResults(results: ISerializedTestResults[]): void;
1998
	$expandTest(src: TestIdWithSrc, levels: number): Promise<void>;
C
Connor Peet 已提交
1999 2000 2001
}

export interface MainThreadTestingShape {
2002
	/** Registeres that there's a test controller with the given ID */
2003
	$registerTestController(id: string): void;
2004
	/** Diposes of the test controller with the given ID */
2005
	$unregisterTestController(id: string): void;
2006
	/** Requests tests from the given resource/uri, from the observer API. */
C
Connor Peet 已提交
2007
	$subscribeToDiffs(resource: ExtHostTestingResource, uri: UriComponents): void;
2008
	/** Stops requesting tests from the given resource/uri, from the observer API. */
C
Connor Peet 已提交
2009
	$unsubscribeFromDiffs(resource: ExtHostTestingResource, uri: UriComponents): void;
2010
	/** Publishes that new tests were available on the given source. */
C
Connor Peet 已提交
2011
	$publishDiff(resource: ExtHostTestingResource, uri: UriComponents, diff: TestsDiff): void;
2012
	/** Request by an extension to run tests. */
2013
	$runTests(req: RunTestsRequest, token: CancellationToken): Promise<string>;
2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034

	// --- test run handling:
	/**
	 * 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(runId: string, tests: ITestItem[]): 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. */
	$appendTestMessageInRun(runId: string, taskId: string, testId: string, message: ITestMessage): void;
	/** Appends raw output to the test run.. */
	$appendOutputToRun(runId: string, taskId: string, output: VSBuffer): 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;
C
Connor Peet 已提交
2035 2036
}

2037 2038 2039
// --- proxy identifiers

export const MainContext = {
2040
	MainThreadAuthentication: createMainId<MainThreadAuthenticationShape>('MainThreadAuthentication'),
2041
	MainThreadBulkEdits: createMainId<MainThreadBulkEditsShape>('MainThreadBulkEdits'),
2042 2043
	MainThreadClipboard: createMainId<MainThreadClipboardShape>('MainThreadClipboard'),
	MainThreadCommands: createMainId<MainThreadCommandsShape>('MainThreadCommands'),
M
Matt Bierner 已提交
2044
	MainThreadComments: createMainId<MainThreadCommentsShape>('MainThreadComments'),
2045
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
2046
	MainThreadConsole: createMainId<MainThreadConsoleShape>('MainThreadConsole'),
2047
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
2048 2049 2050 2051
	MainThreadDecorations: createMainId<MainThreadDecorationsShape>('MainThreadDecorations'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDialogs: createMainId<MainThreadDiaglogsShape>('MainThreadDiaglogs'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
2052
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
2053
	MainThreadTextEditors: createMainId<MainThreadTextEditorsShape>('MainThreadTextEditors'),
2054
	MainThreadEditorInsets: createMainId<MainThreadEditorInsetsShape>('MainThreadEditorInsets'),
2055
	MainThreadEditorTabs: createMainId<MainThreadEditorTabsShape>('MainThreadEditorTabs'),
2056 2057
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
2058
	MainThreadDownloadService: createMainId<MainThreadDownloadServiceShape>('MainThreadDownloadService'),
A
Alex Dima 已提交
2059
	MainThreadKeytar: createMainId<MainThreadKeytarShape>('MainThreadKeytar'),
2060
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
2061
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
J
Johannes Rieken 已提交
2062
	MainThreadLog: createMainId<MainThreadLogShape>('MainThread'),
2063
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
2064 2065
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
2066
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
2067
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
2068
	MainThreadSecretState: createMainId<MainThreadSecretStateShape>('MainThreadSecretState'),
2069
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
2070
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
2071
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
M
Matt Bierner 已提交
2072
	MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'),
2073
	MainThreadWebviewPanels: createMainId<MainThreadWebviewPanelsShape>('MainThreadWebviewPanels'),
2074 2075
	MainThreadWebviewViews: createMainId<MainThreadWebviewViewsShape>('MainThreadWebviewViews'),
	MainThreadCustomEditors: createMainId<MainThreadCustomEditorsShape>('MainThreadCustomEditors'),
J
Joao Moreno 已提交
2076
	MainThreadUrls: createMainId<MainThreadUrlsShape>('MainThreadUrls'),
2077
	MainThreadUriOpeners: createMainId<MainThreadUriOpenersShape>('MainThreadUriOpeners'),
2078
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
2079
	MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'),
2080
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
J
Joao Moreno 已提交
2081
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
2082
	MainThreadSearch: createMainId<MainThreadSearchShape>('MainThreadSearch'),
2083
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
2084
	MainThreadWindow: createMainId<MainThreadWindowShape>('MainThreadWindow'),
M
Martin Aeschlimann 已提交
2085
	MainThreadLabelService: createMainId<MainThreadLabelServiceShape>('MainThreadLabelService'),
2086
	MainThreadNotebook: createMainId<MainThreadNotebookShape>('MainThreadNotebook'),
2087 2088
	MainThreadNotebookDocuments: createMainId<MainThreadNotebookDocumentsShape>('MainThreadNotebookDocumentsShape'),
	MainThreadNotebookEditors: createMainId<MainThreadNotebookEditorsShape>('MainThreadNotebookEditorsShape'),
2089
	MainThreadNotebookKernels: createMainId<MainThreadNotebookKernelsShape>('MainThreadNotebookKernels'),
2090
	MainThreadTheming: createMainId<MainThreadThemingShape>('MainThreadTheming'),
2091
	MainThreadTunnelService: createMainId<MainThreadTunnelServiceShape>('MainThreadTunnelService'),
C
Connor Peet 已提交
2092 2093
	MainThreadTimeline: createMainId<MainThreadTimelineShape>('MainThreadTimeline'),
	MainThreadTesting: createMainId<MainThreadTestingShape>('MainThreadTesting'),
2094 2095 2096
};

export const ExtHostContext = {
2097
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
2098
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
2099
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
2100
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
J
Johannes Rieken 已提交
2101
	ExtHostDecorations: createExtId<ExtHostDecorationsShape>('ExtHostDecorations'),
2102
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
2103
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
J
Johannes Rieken 已提交
2104
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
J
Johannes Rieken 已提交
2105
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
J
Johannes Rieken 已提交
2106
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
2107
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
J
Johannes Rieken 已提交
2108
	ExtHostFileSystem: createExtId<ExtHostFileSystemShape>('ExtHostFileSystem'),
2109
	ExtHostFileSystemInfo: createExtId<ExtHostFileSystemInfoShape>('ExtHostFileSystemInfo'),
J
Johannes Rieken 已提交
2110
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
2111
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
2112 2113
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
2114
	ExtHostLogService: createExtId<ExtHostLogServiceShape>('ExtHostLogService'),
2115
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
J
Joao Moreno 已提交
2116
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
2117
	ExtHostSearch: createExtId<ExtHostSearchShape>('ExtHostSearch'),
2118
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
2119
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
2120
	ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'),
2121
	ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'),
2122
	ExtHostWebviewPanels: createExtId<ExtHostWebviewPanelsShape>('ExtHostWebviewPanels'),
2123
	ExtHostCustomEditors: createExtId<ExtHostCustomEditorsShape>('ExtHostCustomEditors'),
2124
	ExtHostWebviewViews: createExtId<ExtHostWebviewViewsShape>('ExtHostWebviewViews'),
2125
	ExtHostEditorInsets: createExtId<ExtHostEditorInsetsShape>('ExtHostEditorInsets'),
2126
	ExtHostEditorTabs: createExtId<IExtHostEditorTabsShape>('ExtHostEditorTabs'),
M
Matt Bierner 已提交
2127
	ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress'),
2128
	ExtHostComments: createMainId<ExtHostCommentsShape>('ExtHostComments'),
2129
	ExtHostSecretState: createMainId<ExtHostSecretStateShape>('ExtHostSecretState'),
2130
	ExtHostStorage: createMainId<ExtHostStorageShape>('ExtHostStorage'),
2131
	ExtHostUrls: createExtId<ExtHostUrlsShape>('ExtHostUrls'),
2132
	ExtHostUriOpeners: createExtId<ExtHostUriOpenersShape>('ExtHostUriOpeners'),
2133
	ExtHostOutputService: createMainId<ExtHostOutputServiceShape>('ExtHostOutputService'),
R
rebornix 已提交
2134
	ExtHosLabelService: createMainId<ExtHostLabelServiceShape>('ExtHostLabelService'),
2135
	ExtHostNotebook: createMainId<ExtHostNotebookShape>('ExtHostNotebook'),
2136
	ExtHostNotebookKernels: createMainId<ExtHostNotebookKernelsShape>('ExtHostNotebookKernels'),
2137
	ExtHostTheming: createMainId<ExtHostThemingShape>('ExtHostTheming'),
2138
	ExtHostTunnelService: createMainId<ExtHostTunnelServiceShape>('ExtHostTunnelService'),
2139
	ExtHostAuthentication: createMainId<ExtHostAuthenticationShape>('ExtHostAuthentication'),
C
Connor Peet 已提交
2140 2141
	ExtHostTimeline: createMainId<ExtHostTimelineShape>('ExtHostTimeline'),
	ExtHostTesting: createMainId<ExtHostTestingShape>('ExtHostTesting'),
2142
	ExtHostTelemetry: createMainId<ExtHostTelemetryShape>('ExtHostTelemetry'),
2143
};