extHost.protocol.ts 101.0 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 { VSBuffer } from 'vs/base/common/buffer';
A
Alex Dima 已提交
7
import { CancellationToken } from 'vs/base/common/cancellation';
8
import { IRemoteConsoleLog } from 'vs/base/common/console';
R
Rob Lourens 已提交
9
import { SerializedError } from 'vs/base/common/errors';
10 11
import { IRelativePattern } from 'vs/base/common/glob';
import { IMarkdownString } from 'vs/base/common/htmlContent';
R
Rob Lourens 已提交
12
import { IDisposable } from 'vs/base/common/lifecycle';
13 14
import { revive } from 'vs/base/common/marshalling';
import * as performance from 'vs/base/common/performance';
15
import Severity from 'vs/base/common/severity';
16
import { Dto } from 'vs/base/common/types';
17
import { URI, UriComponents } from 'vs/base/common/uri';
18
import { RenderLineNumbersType, TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
19 20
import { IPosition } from 'vs/editor/common/core/position';
import { IRange } from 'vs/editor/common/core/range';
21
import { ISelection, Selection } from 'vs/editor/common/core/selection';
R
Rob Lourens 已提交
22
import * as editorCommon from 'vs/editor/common/editorCommon';
23
import { EndOfLineSequence, ISingleEditOperation } from 'vs/editor/common/model';
R
Rob Lourens 已提交
24 25 26
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';
27
import { ILanguageStatus } from 'vs/workbench/services/languageStatus/common/languageStatusService';
28
import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility';
29
import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands';
30
import { ConfigurationTarget, IConfigurationChange, IConfigurationData, IConfigurationOverrides } from 'vs/platform/configuration/common/configuration';
R
Rob Lourens 已提交
31
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
32
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
J
Johannes Rieken 已提交
33
import * as files from 'vs/platform/files/common/files';
34
import { ResourceLabelFormatter } from 'vs/platform/label/common/label';
S
Sandeep Somavarapu 已提交
35
import { LogLevel } from 'vs/platform/log/common/log';
R
Rob Lourens 已提交
36
import { IMarkerData } from 'vs/platform/markers/common/markers';
37
import { IProgressOptions, IProgressStep } from 'vs/platform/progress/common/progress';
J
Johannes Rieken 已提交
38
import * as quickInput from 'vs/platform/quickinput/common/quickInput';
39 40
import { IRemoteConnectionData, RemoteAuthorityResolverErrorCode, ResolverResult, TunnelDescription } from 'vs/platform/remote/common/remoteAuthorityResolver';
import { ProvidedPortAttributes, TunnelCreationOptions, TunnelOptions, TunnelProviderFeatures } from 'vs/platform/remote/common/tunnel';
41
import { ClassifiedEvent, GDPRClassification, StrictPropertyCheck } from 'vs/platform/telemetry/common/gdprTypings';
R
Rob Lourens 已提交
42
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
43
import { ICreateContributedTerminalProfileOptions, IShellLaunchConfig, IShellLaunchConfigDto, ITerminalDimensions, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, TerminalLocation } from 'vs/platform/terminal/common/terminal';
M
Megan Rogge 已提交
44
import { ThemeColor, ThemeIcon } from 'vs/platform/theme/common/themeService';
45 46 47
import { IExtensionIdWithVersion } from 'vs/platform/userDataSync/common/extensionsStorageSync';
import { WorkspaceTrustRequestOptions } from 'vs/platform/workspace/common/workspaceTrust';
import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtensionActivator';
48
import { ExtHostInteractive } from 'vs/workbench/api/common/extHostInteractive';
49
import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService';
C
Connor Peet 已提交
50
import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/api/common/extHostTypes';
51
import * as tasks from 'vs/workbench/api/common/shared/tasks';
C
Connor Peet 已提交
52
import { TreeDataTransferDTO } from 'vs/workbench/api/common/shared/treeDataTransfer';
53
import { SaveReason } from 'vs/workbench/common/editor';
54
import { IRevealOptions, ITreeItem } from 'vs/workbench/common/views';
55
import { CallHierarchyItem } from 'vs/workbench/contrib/callHierarchy/common/callHierarchy';
56
import { IAdapterDescriptor, IConfig, IDebugSessionReplMode } from 'vs/workbench/contrib/debug/common/debug';
57
import * as notebookCommon from 'vs/workbench/contrib/notebook/common/notebookCommon';
R
Rob Lourens 已提交
58
import { CellExecutionUpdateType, ICellExecutionComplete, ICellExecutionStateUpdate } from 'vs/workbench/contrib/notebook/common/notebookExecutionService';
R
rebornix 已提交
59
import { ICellRange } from 'vs/workbench/contrib/notebook/common/notebookRange';
60 61
import { InputValidationType } from 'vs/workbench/contrib/scm/common/scm';
import { ITextQueryBuilderOptions } from 'vs/workbench/contrib/search/common/queryBuilder';
62
import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
63
import { CoverageDetails, ExtensionRunTestsRequest, IFileCoverage, ISerializedTestResults, ITestItem, ITestMessage, ITestRunProfile, ITestRunTask, ResolvedTestRunRequest, RunTestForControllerRequest, TestResultState, TestsDiff } from 'vs/workbench/contrib/testing/common/testCollection';
64
import { InternalTimelineOptions, Timeline, TimelineChangeEvent, TimelineOptions, TimelineProviderDescriptor } from 'vs/workbench/contrib/timeline/common/timeline';
Y
Yan Zhang 已提交
65
import { TypeHierarchyItem } from 'vs/workbench/contrib/typeHierarchy/common/typeHierarchy';
66
import { EditorGroupColumn } from 'vs/workbench/services/editor/common/editorGroupColumn';
67
import { ActivationKind, ExtensionHostKind, MissingExtensionDependency } from 'vs/workbench/services/extensions/common/extensions';
68
import { createExtHostContextProxyIdentifier as createExtId, createMainContextProxyIdentifier as createMainId, IRPCProtocol, SerializableObjectWithBuffers } from 'vs/workbench/services/extensions/common/proxyIdentifier';
69 70 71
import { CandidatePort } from 'vs/workbench/services/remote/common/remoteExplorerService';
import * as search from 'vs/workbench/services/search/common/search';
import * as statusbar from 'vs/workbench/services/statusbar/common/statusbar';
S
Sandeep Somavarapu 已提交
72

73
export interface IEnvironment {
74
	isExtensionDevelopmentDebug: boolean;
75
	appName: string;
L
Logan Ramos 已提交
76
	embedderIdentifier: string;
77
	appRoot?: URI;
78 79
	appLanguage: string;
	appUriScheme: string;
80
	extensionDevelopmentLocationURI?: URI[];
81
	extensionTestsLocationURI?: URI;
A
Alex Dima 已提交
82
	globalStorageHome: URI;
83
	workspaceStorageHome: URI;
84
	useHostProxy?: boolean;
85
	skipWorkspaceStorageLock?: boolean;
86 87
}

88
export interface IStaticWorkspaceData {
89
	id: string;
90
	name: string;
A
Alex Dima 已提交
91
	configuration?: UriComponents | null;
92
	isUntitled?: boolean | null;
93 94
}

95
export interface IWorkspaceData extends IStaticWorkspaceData {
96
	folders: { uri: UriComponents, name: string, index: number; }[];
97 98
}

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

S
Sandeep Somavarapu 已提交
117
export interface IConfigurationInitData extends IConfigurationData {
S
Sandeep Somavarapu 已提交
118
	configurationScopes: [string, ConfigurationScope | undefined][];
S
Sandeep Somavarapu 已提交
119 120
}

A
Alex Dima 已提交
121
export interface IExtHostContext extends IRPCProtocol {
122 123
	readonly remoteAuthority: string | null;
	readonly extensionHostKind: ExtensionHostKind;
124 125
}

A
Alex Dima 已提交
126
export interface IMainContext extends IRPCProtocol {
127 128
}

129 130 131 132 133
export enum UIKind {
	Desktop = 1,
	Web = 2
}

134 135
// --- main thread

136 137 138 139 140
export interface MainThreadClipboardShape extends IDisposable {
	$readText(): Promise<string>;
	$writeText(value: string): Promise<void>;
}

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

R
rebornix 已提交
148
export interface CommentProviderFeatures {
P
Peng Lyu 已提交
149
	reactionGroup?: modes.CommentReaction[];
P
Peng Lyu 已提交
150
	reactionHandler?: boolean;
151
	options?: modes.CommentOptions;
R
rebornix 已提交
152 153
}

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

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

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

182
export interface MainThreadSecretStateShape extends IDisposable {
183 184 185
	$getPassword(extensionId: string, key: string): Promise<string | undefined>;
	$setPassword(extensionId: string, key: string, value: string): Promise<void>;
	$deletePassword(extensionId: string, key: string): Promise<void>;
186 187
}

188
export interface MainThreadConfigurationShape extends IDisposable {
S
Sandeep Somavarapu 已提交
189 190
	$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>;
191 192
}

193
export interface MainThreadDiagnosticsShape extends IDisposable {
194
	$changeMany(owner: string, entries: [UriComponents, IMarkerData[] | undefined][]): void;
195
	$clear(owner: string): void;
196 197
}

198
export interface MainThreadDialogOpenOptions {
199
	defaultUri?: UriComponents;
200
	openLabel?: string;
201 202 203
	canSelectFiles?: boolean;
	canSelectFolders?: boolean;
	canSelectMany?: boolean;
204
	filters?: { [name: string]: string[]; };
205
	title?: string;
206 207
}

208
export interface MainThreadDialogSaveOptions {
209
	defaultUri?: UriComponents;
210
	saveLabel?: string;
211
	filters?: { [name: string]: string[]; };
212
	title?: string;
213 214
}

215
export interface MainThreadDiaglogsShape extends IDisposable {
216 217
	$showOpenDialog(options?: MainThreadDialogOpenOptions): Promise<UriComponents[] | undefined>;
	$showSaveDialog(options?: MainThreadDialogSaveOptions): Promise<UriComponents | undefined>;
218 219
}

220 221 222
export interface MainThreadDecorationsShape extends IDisposable {
	$registerDecorationProvider(handle: number, label: string): void;
	$unregisterDecorationProvider(handle: number): void;
223
	$onDidChange(handle: number, resources: UriComponents[] | null): void;
224 225
}

226
export interface MainThreadDocumentContentProvidersShape extends IDisposable {
227 228
	$registerTextContentProvider(handle: number, scheme: string): void;
	$unregisterTextContentProvider(handle: number): void;
229
	$onVirtualDocumentChange(uri: UriComponents, value: string): void;
230 231
}

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

238 239 240 241
export interface ITextEditorConfigurationUpdate {
	tabSize?: number | 'auto';
	insertSpaces?: boolean | 'auto';
	cursorStyle?: TextEditorCursorStyle;
242
	lineNumbers?: RenderLineNumbersType;
243 244 245 246 247 248
}

export interface IResolvedTextEditorConfiguration {
	tabSize: number;
	insertSpaces: boolean;
	cursorStyle: TextEditorCursorStyle;
249
	lineNumbers: RenderLineNumbersType;
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
}

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 已提交
265
	setEndOfLine?: EndOfLineSequence;
266 267
}

268
export interface ITextDocumentShowOptions {
269
	position?: EditorGroupColumn;
270 271
	preserveFocus?: boolean;
	pinned?: boolean;
272
	selection?: IRange;
273 274
}

275
export interface MainThreadBulkEditsShape extends IDisposable {
276
	$tryApplyWorkspaceEdit(workspaceEditDto: IWorkspaceEditDto, undoRedoGroupId?: number): Promise<boolean>;
277 278
}

279
export interface MainThreadTextEditorsShape extends IDisposable {
280
	$tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): Promise<string | undefined>;
281
	$registerTextEditorDecorationType(extensionId: ExtensionIdentifier, key: string, options: editorCommon.IDecorationRenderOptions): void;
282
	$removeTextEditorDecorationType(key: string): void;
283
	$tryShowEditor(id: string, position: EditorGroupColumn): Promise<void>;
J
Johannes Rieken 已提交
284 285 286 287 288 289 290
	$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 已提交
291
	$tryInsertSnippet(id: string, template: string, selections: readonly IRange[], opts: IUndoStopOptions): Promise<boolean>;
J
Johannes Rieken 已提交
292
	$getDiffInformation(id: string): Promise<editorCommon.ILineChange[]>;
293 294
}

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

303 304 305 306
export interface MainThreadDownloadServiceShape extends IDisposable {
	$download(uri: UriComponents, to: UriComponents): Promise<void>;
}

307
export interface MainThreadErrorsShape extends IDisposable {
308
	$onUnexpectedError(err: any | SerializedError): void;
309 310
}

311
export interface MainThreadConsoleShape extends IDisposable {
312
	$logExtensionHostMessage(msg: IRemoteConsoleLog): void;
313 314
}

A
Alex Dima 已提交
315 316 317 318 319
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>;
320
	$findCredentials(service: string): Promise<Array<{ account: string, password: string; }>>;
A
Alex Dima 已提交
321 322
}

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

363
export type GlobPattern = string | { base: string; pattern: string; };
364

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

J
Johannes Rieken 已提交
373
export interface ISignatureHelpProviderMetadataDto {
374 375
	readonly triggerCharacters: readonly string[];
	readonly retriggerCharacters: readonly string[];
376 377
}

378 379 380 381 382 383 384 385
export interface IdentifiableInlineCompletions extends modes.InlineCompletions<IdentifiableInlineCompletion> {
	pid: number;
}

export interface IdentifiableInlineCompletion extends modes.InlineCompletion {
	idx: number;
}

386
export interface MainThreadLanguageFeaturesShape extends IDisposable {
387
	$unregister(handle: number): void;
J
Johannes Rieken 已提交
388 389
	$registerDocumentSymbolProvider(handle: number, selector: IDocumentFilterDto[], label: string): void;
	$registerCodeLensSupport(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
390
	$emitCodeLensEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
391 392 393 394 395
	$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;
396
	$registerEvaluatableExpressionProvider(handle: number, selector: IDocumentFilterDto[]): void;
397 398
	$registerInlineValuesProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
	$emitInlineValuesEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
399
	$registerDocumentHighlightProvider(handle: number, selector: IDocumentFilterDto[]): void;
400
	$registerLinkedEditingRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
J
Johannes Rieken 已提交
401
	$registerReferenceSupport(handle: number, selector: IDocumentFilterDto[]): void;
402
	$registerQuickFixSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, supportsResolve: boolean): void;
J
Johannes Rieken 已提交
403 404 405
	$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;
406
	$registerNavigateTypeSupport(handle: number): void;
J
Johannes Rieken 已提交
407
	$registerRenameSupport(handle: number, selector: IDocumentFilterDto[], supportsResolveInitialValues: boolean): void;
408 409
	$registerDocumentSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: modes.SemanticTokensLegend, eventHandle: number | undefined): void;
	$emitDocumentSemanticTokensEvent(eventHandle: number): void;
410
	$registerDocumentRangeSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: modes.SemanticTokensLegend): void;
411
	$registerSuggestSupport(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, displayName: string): void;
412
	$registerInlineCompletionsSupport(handle: number, selector: IDocumentFilterDto[]): void;
J
Johannes Rieken 已提交
413
	$registerSignatureHelpProvider(handle: number, selector: IDocumentFilterDto[], metadata: ISignatureHelpProviderMetadataDto): void;
414 415
	$registerInlayHintsProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
	$emitInlayHintsEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
416 417
	$registerDocumentLinkProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean): void;
	$registerDocumentColorProvider(handle: number, selector: IDocumentFilterDto[]): void;
418 419
	$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
	$emitFoldingRangeEvent(eventHandle: number, event?: any): void;
J
Johannes Rieken 已提交
420 421
	$registerSelectionRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
	$registerCallHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void;
Y
Yan Zhang 已提交
422
	$registerTypeHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void;
J
Johannes Rieken 已提交
423
	$setLanguageConfiguration(handle: number, languageId: string, configuration: ILanguageConfigurationDto): void;
424 425
}

426
export interface MainThreadLanguagesShape extends IDisposable {
J
Johannes Rieken 已提交
427 428
	$getLanguages(): Promise<string[]>;
	$changeLanguage(resource: UriComponents, languageId: string): Promise<void>;
429
	$tokensAtPosition(resource: UriComponents, position: IPosition): Promise<undefined | { type: modes.StandardTokenType, range: IRange }>;
430 431
	$setLanguageStatus(handle: number, status: ILanguageStatus): void;
	$removeLanguageStatus(handle: number): void;
432 433
}

434
export interface MainThreadMessageOptions {
435
	extension?: IExtensionDescription;
436
	modal?: boolean;
437
	detail?: string;
438
	useCustom?: boolean;
439 440
}

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

445
export interface MainThreadOutputServiceShape extends IDisposable {
S
Sandeep Somavarapu 已提交
446
	$register(label: string, log: boolean, file?: UriComponents, extensionId?: string): Promise<string>;
447 448 449 450 451 452
	$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;
453 454
}

455
export interface MainThreadProgressShape extends IDisposable {
456

B
Benjamin Pasero 已提交
457
	$startProgress(handle: number, options: IProgressOptions, extension?: IExtensionDescription): void;
458 459
	$progressReport(handle: number, message: IProgressStep): void;
	$progressEnd(handle: number): void;
460 461
}

462 463 464 465 466 467 468 469
/**
 * 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.
 */
470
export type ExtHostTerminalIdentifier = number | string;
471

D
Daniel Imms 已提交
472 473 474 475 476
export interface TerminalLaunchConfig {
	name?: string;
	shellPath?: string;
	shellArgs?: string[] | string;
	cwd?: string | UriComponents;
477
	env?: ITerminalEnvironment;
M
Megan Rogge 已提交
478
	icon?: URI | { light: URI; dark: URI } | ThemeIcon;
479
	color?: string;
D
Daniel Imms 已提交
480
	initialText?: string;
D
Daniel Imms 已提交
481 482 483
	waitOnExit?: boolean;
	strictEnv?: boolean;
	hideFromUser?: boolean;
M
meganrogge 已提交
484
	isExtensionCustomPtyTerminal?: boolean;
R
Rob Lourens 已提交
485
	isFeatureTerminal?: boolean;
486
	isExtensionOwnedTerminal?: boolean;
487
	useShellEnvironment?: boolean;
488
	location?: TerminalLocation | { viewColumn: number, preserveFocus?: boolean } | { parentTerminal: ExtHostTerminalIdentifier } | { splitActiveTerminal: boolean };
D
Daniel Imms 已提交
489 490
}

491
export interface MainThreadTerminalServiceShape extends IDisposable {
492
	$createTerminal(extHostTerminalId: string, config: TerminalLaunchConfig): Promise<void>;
493 494 495 496
	$dispose(id: ExtHostTerminalIdentifier): void;
	$hide(id: ExtHostTerminalIdentifier): void;
	$sendText(id: ExtHostTerminalIdentifier, text: string, addNewLine: boolean): void;
	$show(id: ExtHostTerminalIdentifier, preserveFocus: boolean): void;
497 498
	$startSendingDataEvents(): void;
	$stopSendingDataEvents(): void;
499 500
	$startLinkProvider(): void;
	$stopLinkProvider(): void;
D
Daniel Imms 已提交
501
	$registerProcessSupport(isSupported: boolean): void;
502
	$registerProfileProvider(id: string, extensionIdentifier: string): void;
D
Daniel Imms 已提交
503
	$unregisterProfileProvider(id: string): void;
504
	$setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined): void;
505

506
	// Process
507 508
	$sendProcessTitle(terminalId: number, title: string): void;
	$sendProcessData(terminalId: number, data: string): void;
D
Daniel Imms 已提交
509
	$sendProcessReady(terminalId: number, pid: number, cwd: string): void;
D
Daniel Imms 已提交
510
	$sendProcessExit(terminalId: number, exitCode: number | undefined): void;
511 512
	$sendProcessInitialCwd(terminalId: number, cwd: string): void;
	$sendProcessCwd(terminalId: number, initialCwd: string): void;
513
	$sendOverrideDimensions(terminalId: number, dimensions: ITerminalDimensions | undefined): void;
514
	$sendResolvedLaunchConfig(terminalId: number, shellLaunchConfig: IShellLaunchConfig): void;
D
Daniel Imms 已提交
515 516
}

J
Johannes Rieken 已提交
517
export interface TransferQuickPickItems extends quickInput.IQuickPickItem {
518
	handle: number;
519
	buttons?: TransferQuickInputButton[];
520
}
C
Christof Marti 已提交
521

522
export interface TransferQuickInputButton extends quickInput.IQuickInputButton {
523 524
	handle: number;
}
525 526 527 528 529

export type TransferQuickInput = TransferQuickPick | TransferInputBox;

export interface BaseTransferQuickInput {

530 531
	[key: string]: any;

532 533
	id: number;

534 535
	title?: string;

536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552
	type?: 'quickPick' | 'inputBox';

	enabled?: boolean;

	busy?: boolean;

	visible?: boolean;
}

export interface TransferQuickPick extends BaseTransferQuickInput {

	type?: 'quickPick';

	value?: string;

	placeholder?: string;

C
Christof Marti 已提交
553
	buttons?: TransferQuickInputButton[];
554

C
Christof Marti 已提交
555
	items?: TransferQuickPickItems[];
556

557 558 559 560
	activeItems?: number[];

	selectedItems?: number[];

561 562 563 564 565 566 567
	canSelectMany?: boolean;

	ignoreFocusOut?: boolean;

	matchOnDescription?: boolean;

	matchOnDetail?: boolean;
568 569

	sortByLabel?: boolean;
570 571 572 573 574 575 576 577 578 579 580 581
}

export interface TransferInputBox extends BaseTransferQuickInput {

	type?: 'inputBox';

	value?: string;

	placeholder?: string;

	password?: boolean;

C
Christof Marti 已提交
582
	buttons?: TransferQuickInputButton[];
583 584 585 586 587 588

	prompt?: string;

	validationMessage?: string;
}

589
export interface IInputBoxOptions {
590
	title?: string;
591 592 593 594 595 596 597 598
	value?: string;
	valueSelection?: [number, number];
	prompt?: string;
	placeHolder?: string;
	password?: boolean;
	ignoreFocusOut?: boolean;
}

599
export interface MainThreadQuickOpenShape extends IDisposable {
J
Johannes Rieken 已提交
600
	$show(instance: number, options: quickInput.IPickOptions<TransferQuickPickItems>, token: CancellationToken): Promise<number | number[] | undefined>;
J
Johannes Rieken 已提交
601 602
	$setItems(instance: number, items: TransferQuickPickItems[]): Promise<void>;
	$setError(instance: number, error: Error): Promise<void>;
603
	$input(options: IInputBoxOptions | undefined, validateInput: boolean, token: CancellationToken): Promise<string | undefined>;
J
Johannes Rieken 已提交
604 605
	$createOrUpdate(params: TransferQuickInput): Promise<void>;
	$dispose(id: number): Promise<void>;
606 607
}

608
export interface MainThreadStatusBarShape extends IDisposable {
609
	$setEntry(id: number, statusId: string, statusName: string, text: string, tooltip: IMarkdownString | string | undefined, command: ICommandDto | undefined, color: string | ThemeColor | undefined, backgroundColor: string | ThemeColor | undefined, alignment: statusbar.StatusbarAlignment, priority: number | undefined, accessibilityInformation: IAccessibilityInformation | undefined): void;
610
	$dispose(id: number): void;
611 612
}

613
export interface MainThreadStorageShape extends IDisposable {
614
	$getValue<T>(shared: boolean, key: string): Promise<T | undefined>;
J
Johannes Rieken 已提交
615
	$setValue(shared: boolean, key: string, value: object): Promise<void>;
616
	$registerExtensionStorageKeysToSync(extension: IExtensionIdWithVersion, keys: string[]): void;
617 618
}

619
export interface MainThreadTelemetryShape extends IDisposable {
620
	$publicLog(eventName: string, data?: any): void;
621
	$publicLog2<E extends ClassifiedEvent<T> = never, T extends GDPRClassification<T> = never>(eventName: string, data?: StrictPropertyCheck<T, E>): void;
622 623
}

624
export interface MainThreadEditorInsetsShape extends IDisposable {
625
	$createEditorInset(handle: number, id: string, uri: UriComponents, line: number, height: number, options: IWebviewOptions, extensionId: ExtensionIdentifier, extensionLocation: UriComponents): Promise<void>;
626 627 628
	$disposeEditorInset(handle: number): void;

	$setHtml(handle: number, value: string): void;
629
	$setOptions(handle: number, options: IWebviewOptions): void;
630 631
	$postMessage(handle: number, value: any): Promise<boolean>;
}
M
Matt Bierner 已提交
632

633 634 635 636 637 638 639
export interface ExtHostEditorInsetsShape {
	$onDidDispose(handle: number): void;
	$onDidReceiveMessage(handle: number, message: any): void;
}

//#region --- open editors model

640
export interface MainThreadEditorTabsShape extends IDisposable {
641 642
	// manage tabs: move, close, rearrange etc
}
643

644 645 646
export interface IEditorTabDto {
	group: number;
	name: string;
647 648
	resource: UriComponents;
	isActive: boolean;
649 650
}

651 652
export interface IExtHostEditorTabsShape {
	$acceptEditorTabs(tabs: IEditorTabDto[]): void;
653 654
}

655 656
//#endregion

657
export type WebviewHandle = string;
658

M
Matt Bierner 已提交
659
export interface WebviewPanelShowOptions {
660
	readonly viewColumn?: EditorGroupColumn;
M
Matt Bierner 已提交
661 662 663
	readonly preserveFocus?: boolean;
}

664 665 666 667 668
export interface WebviewExtensionDescription {
	readonly id: ExtensionIdentifier;
	readonly location: UriComponents;
}

R
rebornix 已提交
669 670
export interface NotebookExtensionDescription {
	readonly id: ExtensionIdentifier;
671
	readonly location: UriComponents | undefined;
R
rebornix 已提交
672 673
}

674
export enum WebviewEditorCapabilities {
M
Matt Bierner 已提交
675
	Editable,
676
	SupportsHotExit,
677 678
}

679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695
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;
}

696 697 698 699
export interface CustomTextEditorCapabilities {
	readonly supportsMove?: boolean;
}

700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728
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 已提交
729
export interface MainThreadWebviewsShape extends IDisposable {
730
	$setHtml(handle: WebviewHandle, value: string): void;
731
	$setOptions(handle: WebviewHandle, options: IWebviewOptions): void;
M
Matt Bierner 已提交
732
	$postMessage(handle: WebviewHandle, value: string, ...buffers: VSBuffer[]): Promise<boolean>
733
}
734

735
export interface MainThreadWebviewPanelsShape extends IDisposable {
736 737 738 739 740 741 742 743
	$createWebviewPanel(
		extension: WebviewExtensionDescription,
		handle: WebviewHandle,
		viewType: string,
		initData: {
			title: string;
			webviewOptions: IWebviewOptions;
			panelOptions: IWebviewPanelOptions;
744
			serializeBuffersForPostMessage: boolean;
745 746 747
		},
		showOptions: WebviewPanelShowOptions,
	): void;
748 749 750 751
	$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;
752

753
	$registerSerializer(viewType: string, options: { serializeBuffersForPostMessage: boolean }): void;
754
	$unregisterSerializer(viewType: string): void;
755
}
756

757
export interface MainThreadCustomEditorsShape extends IDisposable {
758 759
	$registerTextEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, capabilities: CustomTextEditorCapabilities, serializeBuffersForPostMessage: boolean): void;
	$registerCustomEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, supportsMultipleEditorsPerDocument: boolean, serializeBuffersForPostMessage: boolean): void;
760
	$unregisterEditorProvider(viewType: string): void;
761

762
	$onDidEdit(resource: UriComponents, viewType: string, editId: number, label: string | undefined): void;
763
	$onContentChange(resource: UriComponents, viewType: string): void;
764
}
765

766
export interface MainThreadWebviewViewsShape extends IDisposable {
767
	$registerWebviewViewProvider(extension: WebviewExtensionDescription, viewType: string, options: { retainContextWhenHidden?: boolean, serializeBuffersForPostMessage: boolean }): void;
768
	$unregisterWebviewViewProvider(viewType: string): void;
769

770
	$setWebviewViewTitle(handle: WebviewHandle, value: string | undefined): void;
M
Matt Bierner 已提交
771
	$setWebviewViewDescription(handle: WebviewHandle, value: string | undefined): void;
M
Matt Bierner 已提交
772 773

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

776 777 778 779
export interface WebviewPanelViewStateData {
	[handle: string]: {
		readonly active: boolean;
		readonly visible: boolean;
780
		readonly position: EditorGroupColumn;
781
	};
M
Matt Bierner 已提交
782 783
}

M
Matt Bierner 已提交
784
export interface ExtHostWebviewsShape {
785
	$onMessage(handle: WebviewHandle, jsonSerializedMessage: string, ...buffers: VSBuffer[]): void;
786
	$onMissingCsp(handle: WebviewHandle, extensionId: string): void;
787
}
788

789
export interface ExtHostWebviewPanelsShape {
790
	$onDidChangeWebviewPanelViewStates(newState: WebviewPanelViewStateData): void;
791
	$onDidDisposeWebviewPanel(handle: WebviewHandle): Promise<void>;
792 793 794 795 796 797 798 799 800 801 802
	$deserializeWebviewPanel(
		newWebviewHandle: WebviewHandle,
		viewType: string,
		initData: {
			title: string;
			state: any;
			webviewOptions: IWebviewOptions;
			panelOptions: IWebviewPanelOptions;
		},
		position: EditorGroupColumn,
	): Promise<void>;
803
}
804

805
export interface ExtHostCustomEditorsShape {
806 807 808 809 810 811 812 813 814 815 816 817
	$resolveWebviewEditor(
		resource: UriComponents,
		newWebviewHandle: WebviewHandle,
		viewType: string,
		initData: {
			title: string;
			webviewOptions: IWebviewOptions;
			panelOptions: IWebviewPanelOptions;
		},
		position: EditorGroupColumn,
		cancellation: CancellationToken
	): Promise<void>;
818
	$createCustomDocument(resource: UriComponents, viewType: string, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, cancellation: CancellationToken): Promise<{ editable: boolean }>;
M
Matt Bierner 已提交
819
	$disposeCustomDocument(resource: UriComponents, viewType: string): Promise<void>;
820

M
Matt Bierner 已提交
821 822 823
	$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>;
824 825
	$disposeEdits(resourceComponents: UriComponents, viewType: string, editIds: number[]): void;

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

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

831
	$onMoveCustomEditor(handle: WebviewHandle, newResource: UriComponents, viewType: string): Promise<void>;
832
}
833

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

837
	$onDidChangeWebviewViewVisibility(webviewHandle: WebviewHandle, visible: boolean): void;
838

839
	$disposeWebviewView(webviewHandle: WebviewHandle): void;
M
Matt Bierner 已提交
840 841
}

R
rebornix 已提交
842 843 844 845 846 847
export enum CellOutputKind {
	Text = 1,
	Error = 2,
	Rich = 3
}

R
rebornix 已提交
848 849 850 851
export enum NotebookEditorRevealType {
	Default = 0,
	InCenter = 1,
	InCenterIfOutsideViewport = 2,
R
rebornix 已提交
852
	AtTop = 3
R
rebornix 已提交
853 854
}

R
rebornix 已提交
855 856 857 858
export interface INotebookDocumentShowOptions {
	position?: EditorGroupColumn;
	preserveFocus?: boolean;
	pinned?: boolean;
859
	selections?: ICellRange[];
R
rebornix 已提交
860 861
}

862
export type INotebookCellStatusBarEntryDto = Dto<notebookCommon.INotebookCellStatusBarItem>;
R
Rob Lourens 已提交
863 864 865 866 867

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

R
rebornix 已提交
869
export interface MainThreadNotebookShape extends IDisposable {
870 871
	$registerNotebookProvider(extension: NotebookExtensionDescription, viewType: string, options: notebookCommon.TransientOptions, registration: notebookCommon.INotebookContributionData | undefined): Promise<void>;
	$updateNotebookProviderOptions(viewType: string, options?: { transientOutputs: boolean; transientCellMetadata: notebookCommon.TransientCellMetadata; transientDocumentMetadata: notebookCommon.TransientDocumentMetadata; }): Promise<void>;
R
rebornix 已提交
872
	$unregisterNotebookProvider(viewType: string): Promise<void>;
873

874
	$registerNotebookSerializer(handle: number, extension: NotebookExtensionDescription, viewType: string, options: notebookCommon.TransientOptions, registration: notebookCommon.INotebookContributionData | undefined): void;
875 876
	$unregisterNotebookSerializer(handle: number): void;

877
	$registerNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined, viewType: string): Promise<void>;
R
Rob Lourens 已提交
878 879
	$unregisterNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined): Promise<void>;
	$emitCellStatusBarEvent(eventHandle: number): void;
880 881 882
}

export interface MainThreadNotebookEditorsShape extends IDisposable {
R
rebornix 已提交
883
	$tryShowNotebookDocument(uriComponents: UriComponents, viewType: string, options: INotebookDocumentShowOptions): Promise<string>;
R
rebornix 已提交
884
	$tryRevealRange(id: string, range: ICellRange, revealType: NotebookEditorRevealType): Promise<void>;
885
	$registerNotebookEditorDecorationType(key: string, options: notebookCommon.INotebookDecorationRenderOptions): void;
R
rebornix 已提交
886
	$removeNotebookEditorDecorationType(key: string): void;
887
	$trySetSelections(id: string, range: ICellRange[]): void;
R
rebornix 已提交
888
	$trySetDecorations(id: string, range: ICellRange, decorationKey: string): void;
889
	$tryApplyEdits(editorId: string, modelVersionId: number, cellEdits: ICellEditOperationDto[]): Promise<boolean>
890 891 892
}

export interface MainThreadNotebookDocumentsShape extends IDisposable {
893
	$tryCreateNotebook(options: { viewType: string, content?: NotebookDataDto }): Promise<UriComponents>;
894 895
	$tryOpenNotebook(uriComponents: UriComponents): Promise<UriComponents>;
	$trySaveNotebook(uri: UriComponents): Promise<boolean>;
M
Matt Bierner 已提交
896 897
}

898 899
export interface INotebookKernelDto2 {
	id: string;
900
	notebookType: string;
901
	extensionId: ExtensionIdentifier;
902
	extensionLocation: UriComponents;
903
	label: string;
J
Johannes Rieken 已提交
904
	detail?: string;
905
	description?: string;
906
	supportedLanguages?: string[];
907
	supportsInterrupt?: boolean;
908
	supportsExecutionOrder?: boolean;
909
	preloads?: { uri: UriComponents; provides: string[] }[];
910 911
}

R
Rob Lourens 已提交
912 913 914 915
export interface ICellExecuteOutputEditDto {
	editType: CellExecutionUpdateType.Output;
	executionHandle: number;
	cellHandle: number;
916 917 918 919
	append?: boolean;
	outputs: NotebookOutputDto[]
}

R
Rob Lourens 已提交
920 921 922
export interface ICellExecuteOutputItemEditDto {
	editType: CellExecutionUpdateType.OutputItems;
	executionHandle: number;
923 924 925 926 927
	append?: boolean;
	outputId: string;
	items: NotebookOutputItemDto[]
}

R
Rob Lourens 已提交
928 929 930 931 932 933 934 935 936
export interface ICellExecutionStateUpdateDto extends ICellExecutionStateUpdate {
	executionHandle: number;
}

export interface ICellExecutionCompleteDto extends ICellExecutionComplete {
	executionHandle: number;
}

export type ICellExecuteUpdateDto = ICellExecuteOutputEditDto | ICellExecuteOutputItemEditDto | ICellExecutionStateUpdateDto | ICellExecutionCompleteDto;
937

938
export interface MainThreadNotebookKernelsShape extends IDisposable {
939
	$postMessage(handle: number, editorId: string | undefined, message: any): Promise<boolean>;
940
	$addKernel(handle: number, data: INotebookKernelDto2): Promise<void>;
941 942
	$updateKernel(handle: number, data: Partial<INotebookKernelDto2>): void;
	$removeKernel(handle: number): void;
943
	$updateNotebookPriority(handle: number, uri: UriComponents, value: number | undefined): void;
944

R
Rob Lourens 已提交
945
	$addExecution(handle: number, uri: UriComponents, cellHandle: number): void;
946
	$updateExecutions(data: SerializableObjectWithBuffers<ICellExecuteUpdateDto[]>): void;
R
Rob Lourens 已提交
947
	$removeExecution(handle: number): void;
948 949
}

950
export interface MainThreadNotebookRenderersShape extends IDisposable {
951
	$postMessage(editorId: string | undefined, rendererId: string, message: unknown): Promise<boolean>;
952 953
}

954 955 956
export interface MainThreadInteractiveShape extends IDisposable {
}

J
Joao Moreno 已提交
957
export interface MainThreadUrlsShape extends IDisposable {
958
	$registerUriHandler(handle: number, extensionId: ExtensionIdentifier): Promise<void>;
J
Johannes Rieken 已提交
959
	$unregisterUriHandler(handle: number): Promise<void>;
960
	$createAppUri(uri: UriComponents): Promise<UriComponents>;
J
Joao Moreno 已提交
961 962 963
}

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

967
export interface MainThreadUriOpenersShape extends IDisposable {
M
Matt Bierner 已提交
968 969
	$registerUriOpener(id: string, schemes: readonly string[], extensionId: ExtensionIdentifier, label: string): Promise<void>;
	$unregisterUriOpener(id: string): Promise<void>;
970 971 972
}

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

977 978 979 980
export interface ITextSearchComplete {
	limitHit?: boolean;
}

981
export interface MainThreadWorkspaceShape extends IDisposable {
982
	$startFileSearch(includePattern: string | null, includeFolder: UriComponents | null, excludePatternOrDisregardExcludes: string | false | null, maxResults: number | null, token: CancellationToken): Promise<UriComponents[] | null>;
983
	$startTextSearch(query: search.IPatternInfo, folder: UriComponents | null, options: ITextQueryBuilderOptions, requestId: number, token: CancellationToken): Promise<ITextSearchComplete | null>;
984
	$checkExists(folders: readonly UriComponents[], includes: string[], token: CancellationToken): Promise<boolean>;
J
Johannes Rieken 已提交
985
	$saveAll(includeUntitled?: boolean): Promise<boolean>;
986
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string; }[]): Promise<void>;
987
	$resolveProxy(url: string): Promise<string | undefined>;
988
	$requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<boolean | undefined>;
989
}
990

J
Johannes Rieken 已提交
991 992
export interface IFileChangeDto {
	resource: UriComponents;
J
Johannes Rieken 已提交
993
	type: files.FileChangeType;
J
Johannes Rieken 已提交
994 995
}

996
export interface MainThreadFileSystemShape extends IDisposable {
997
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: files.FileSystemProviderCapabilities): Promise<void>;
998
	$unregisterProvider(handle: number): void;
J
Johannes Rieken 已提交
999
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
1000 1001 1002 1003

	$stat(uri: UriComponents): Promise<files.IStat>;
	$readdir(resource: UriComponents): Promise<[string, files.FileType][]>;
	$readFile(resource: UriComponents): Promise<VSBuffer>;
1004
	$writeFile(resource: UriComponents, content: VSBuffer): Promise<void>;
1005 1006 1007 1008
	$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>;
1009
}
J
Johannes Rieken 已提交
1010

1011 1012 1013 1014 1015
export interface MainThreadLabelServiceShape extends IDisposable {
	$registerResourceLabelFormatter(handle: number, formatter: ResourceLabelFormatter): void;
	$unregisterResourceLabelFormatter(handle: number): void;
}

1016
export interface MainThreadSearchShape extends IDisposable {
1017 1018
	$registerFileSearchProvider(handle: number, scheme: string): void;
	$registerTextSearchProvider(handle: number, scheme: string): void;
1019
	$unregisterProvider(handle: number): void;
1020
	$handleFileMatch(handle: number, session: number, data: UriComponents[]): void;
J
Johannes Rieken 已提交
1021
	$handleTextMatch(handle: number, session: number, data: search.IRawFileMatch2[]): void;
1022
	$handleTelemetry(eventName: string, data: any): void;
1023 1024
}

1025
export interface MainThreadTaskShape extends IDisposable {
J
Johannes Rieken 已提交
1026
	$createTaskId(task: tasks.TaskDTO): Promise<string>;
1027
	$registerTaskProvider(handle: number, type: string): Promise<void>;
J
Johannes Rieken 已提交
1028
	$unregisterTaskProvider(handle: number): Promise<void>;
J
Johannes Rieken 已提交
1029
	$fetchTasks(filter?: tasks.TaskFilterDTO): Promise<tasks.TaskDTO[]>;
1030
	$getTaskExecution(value: tasks.TaskHandleDTO | tasks.TaskDTO): Promise<tasks.TaskExecutionDTO>;
J
Johannes Rieken 已提交
1031
	$executeTask(task: tasks.TaskHandleDTO | tasks.TaskDTO): Promise<tasks.TaskExecutionDTO>;
J
Johannes Rieken 已提交
1032
	$terminateTask(id: string): Promise<void>;
J
Johannes Rieken 已提交
1033
	$registerTaskSystem(scheme: string, info: tasks.TaskSystemInfoDTO): void;
G
Gabriel DeBacker 已提交
1034
	$customExecutionComplete(id: string, result?: number): Promise<void>;
1035
	$registerSupportedExecutions(custom?: boolean, shell?: boolean, process?: boolean): Promise<void>;
1036 1037
}

1038
export interface MainThreadExtensionServiceShape extends IDisposable {
1039
	$activateExtension(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise<void>;
1040
	$onWillActivateExtension(extensionId: ExtensionIdentifier): Promise<void>;
1041
	$onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void;
1042
	$onExtensionActivationError(extensionId: ExtensionIdentifier, error: SerializedError, missingExtensionDependency: MissingExtensionDependency | null): Promise<void>;
1043
	$onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void;
1044
	$setPerformanceMarks(marks: performance.PerformanceMark[]): Promise<void>;
1045 1046
}

J
Joao Moreno 已提交
1047
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
1048 1049
	hasQuickDiffProvider?: boolean;
	count?: number;
1050 1051
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
J
Johannes Rieken 已提交
1052
	statusBarCommands?: ICommandDto[];
J
Joao Moreno 已提交
1053 1054 1055 1056
}

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

J
Joao Moreno 已提交
1059
export type SCMRawResource = [
1060
	number /*handle*/,
1061
	UriComponents /*resourceUri*/,
1062
	[UriComponents | ThemeIcon | undefined, UriComponents | ThemeIcon | undefined] /*icons: light, dark*/,
1063
	string /*tooltip*/,
1064
	boolean /*strike through*/,
1065
	boolean /*faded*/,
1066 1067
	string /*context value*/,
	ICommandDto | undefined /*command*/
J
Joao Moreno 已提交
1068
];
1069

1070 1071 1072
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
1073 1074 1075
	SCMRawResource[]
];

1076 1077 1078 1079 1080
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

1081
export interface MainThreadSCMShape extends IDisposable {
1082
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
1083 1084
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
1085

1086
	$registerGroups(sourceControlHandle: number, groups: [number /*handle*/, string /*id*/, string /*label*/, SCMGroupFeatures][], splices: SCMRawResourceSplices[]): void;
1087 1088 1089
	$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 已提交
1090

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

J
Joao Moreno 已提交
1093
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
1094
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
1095
	$setInputBoxVisibility(sourceControlHandle: number, visible: boolean): void;
1096
	$setInputBoxFocus(sourceControlHandle: number): void;
1097
	$showValidationMessage(sourceControlHandle: number, message: string | IMarkdownString, type: InputValidationType): void;
1098
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
1099 1100
}

1101 1102
export type DebugSessionUUID = string;

1103 1104 1105 1106 1107 1108 1109
export interface IDebugConfiguration {
	type: string;
	name: string;
	request: string;
	[key: string]: any;
}

1110 1111
export interface IStartDebuggingOptions {
	parentSessionID?: DebugSessionUUID;
1112
	lifecycleManagedByParent?: boolean;
1113
	repl?: IDebugSessionReplMode;
I
isidor 已提交
1114
	noDebug?: boolean;
1115
	compact?: boolean;
1116 1117 1118
	debugUI?: {
		simple?: boolean;
	};
1119 1120
}

1121
export interface MainThreadDebugServiceShape extends IDisposable {
A
Alex Dima 已提交
1122
	$registerDebugTypes(debugTypes: string[]): void;
1123
	$sessionCached(sessionID: string): void;
A
Alex Dima 已提交
1124
	$acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void;
1125 1126
	$acceptDAError(handle: number, name: string, message: string, stack: string | undefined): void;
	$acceptDAExit(handle: number, code: number | undefined, signal: string | undefined): void;
1127
	$registerDebugConfigurationProvider(type: string, triggerKind: DebugConfigurationProviderTriggerKind, hasProvideMethod: boolean, hasResolveMethod: boolean, hasResolve2Method: boolean, handle: number): Promise<void>;
J
Johannes Rieken 已提交
1128
	$registerDebugAdapterDescriptorFactory(type: string, handle: number): Promise<void>;
1129
	$unregisterDebugConfigurationProvider(handle: number): void;
A
Andre Weinand 已提交
1130
	$unregisterDebugAdapterDescriptorFactory(handle: number): void;
I
isidor 已提交
1131
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | IDebugConfiguration, options: IStartDebuggingOptions): Promise<boolean>;
1132
	$stopDebugging(sessionId: DebugSessionUUID | undefined): Promise<void>;
1133
	$setDebugSessionName(id: DebugSessionUUID, name: string): void;
J
Johannes Rieken 已提交
1134
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): Promise<any>;
1135
	$getDebugProtocolBreakpoint(id: DebugSessionUUID, breakpoinId: string): Promise<DebugProtocol.Breakpoint | undefined>;
1136 1137
	$appendDebugConsole(value: string): void;
	$startBreakpointEvents(): void;
I
isidor 已提交
1138 1139
	$registerBreakpoints(breakpoints: Array<ISourceMultiBreakpointDto | IFunctionBreakpointDto | IDataBreakpointDto>): Promise<void>;
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[], dataBreakpointIds: string[]): Promise<void>;
1140 1141
}

1142 1143
export interface IOpenUriOptions {
	readonly allowTunneling?: boolean;
1144
	readonly allowContributedOpeners?: boolean | string;
1145 1146
}

1147
export interface MainThreadWindowShape extends IDisposable {
J
Johannes Rieken 已提交
1148
	$getWindowVisibility(): Promise<boolean>;
1149
	$openUri(uri: UriComponents, uriString: string | undefined, options: IOpenUriOptions): Promise<boolean>;
1150
	$asExternalUri(uri: UriComponents, options: IOpenUriOptions): Promise<UriComponents>;
1151 1152
}

1153 1154 1155 1156 1157 1158
export enum CandidatePortSource {
	None = 0,
	Process = 1,
	Output = 2
}

1159 1160 1161
export interface PortAttributesProviderSelector {
	pid?: number;
	portRange?: [number, number];
1162
	commandMatcher?: RegExp;
1163 1164
}

A
Alex Ross 已提交
1165
export interface MainThreadTunnelServiceShape extends IDisposable {
1166
	$openTunnel(tunnelOptions: TunnelOptions, source: string | undefined): Promise<TunnelDto | undefined>;
1167
	$closeTunnel(remote: { host: string, port: number }): Promise<void>;
1168
	$getTunnels(): Promise<TunnelDescription[]>;
1169
	$setTunnelProvider(features: TunnelProviderFeatures): Promise<void>;
1170
	$setRemoteTunnelService(processId: number): Promise<void>;
1171
	$setCandidateFilter(): Promise<void>;
1172
	$onFoundNewCandidates(candidates: CandidatePort[]): Promise<void>;
1173
	$setCandidatePortSource(source: CandidatePortSource): Promise<void>;
1174 1175
	$registerPortsAttributesProvider(selector: PortAttributesProviderSelector, providerHandle: number): Promise<void>;
	$unregisterPortsAttributesProvider(providerHandle: number): Promise<void>;
A
Alex Ross 已提交
1176 1177
}

1178
export interface MainThreadTimelineShape extends IDisposable {
1179 1180
	$registerTimelineProvider(provider: TimelineProviderDescriptor): void;
	$unregisterTimelineProvider(source: string): void;
E
Eric Amodio 已提交
1181
	$emitTimelineChangeEvent(e: TimelineChangeEvent | undefined): void;
1182 1183
}

1184 1185
// -- extension host

1186
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
1187
	$executeContributedCommand<T>(id: string, ...args: any[]): Promise<T>;
1188
	$getContributedCommandHandlerDescriptions(): Promise<{ [id: string]: string | ICommandHandlerDescription; }>;
1189 1190
}

1191
export interface ExtHostConfigurationShape {
1192
	$initializeConfiguration(data: IConfigurationInitData): void;
1193
	$acceptConfigurationChanged(data: IConfigurationInitData, change: IConfigurationChange): void;
1194 1195
}

1196
export interface ExtHostDiagnosticsShape {
J
Johannes Rieken 已提交
1197
	$acceptMarkersChange(data: [UriComponents, IMarkerData[]][]): void;
1198 1199
}

1200
export interface ExtHostDocumentContentProvidersShape {
M
Matt Bierner 已提交
1201
	$provideTextDocumentContent(handle: number, uri: UriComponents): Promise<string | null | undefined>;
1202 1203
}

1204
export interface IModelAddedData {
1205
	uri: UriComponents;
1206
	versionId: number;
1207 1208
	lines: string[];
	EOL: string;
1209 1210 1211
	modeId: string;
	isDirty: boolean;
}
1212
export interface ExtHostDocumentsShape {
1213
	$acceptModelModeChanged(strURL: UriComponents, newModeId: string): void;
1214 1215 1216
	$acceptModelSaved(strURL: UriComponents): void;
	$acceptDirtyStateChanged(strURL: UriComponents, isDirty: boolean): void;
	$acceptModelChanged(strURL: UriComponents, e: IModelChangedEvent, isDirty: boolean): void;
1217 1218
}

1219
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
1220
	$participateInSave(resource: UriComponents, reason: SaveReason): Promise<boolean[]>;
1221 1222
}

1223 1224
export interface ITextEditorAddData {
	id: string;
1225
	documentUri: UriComponents;
1226
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
1227
	selections: ISelection[];
1228
	visibleRanges: IRange[];
1229
	editorPosition: EditorGroupColumn | undefined;
1230 1231
}
export interface ITextEditorPositionData {
1232
	[id: string]: EditorGroupColumn;
1233
}
1234 1235 1236
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
1237
	visibleRanges: IRange[] | null;
1238 1239 1240 1241 1242 1243
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

1244
export interface ExtHostEditorsShape {
1245
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
1246
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
1247 1248
}

J
Johannes Rieken 已提交
1249
export interface IDocumentsAndEditorsDelta {
1250
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
1251 1252 1253
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
A
Alex Dima 已提交
1254
	newActiveEditor?: string | null;
J
Johannes Rieken 已提交
1255 1256
}

1257 1258
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
1259 1260
}

1261
export interface ExtHostTreeViewsShape {
1262
	$getChildren(treeViewId: string, treeItemHandle?: string): Promise<ITreeItem[] | undefined>;
A
Alex Ross 已提交
1263
	$onDrop(treeViewId: string, treeDataTransfer: TreeDataTransferDTO, newParentTreeItemHandle: string): Promise<void>;
1264
	$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void;
1265
	$setSelection(treeViewId: string, treeItemHandles: string[]): void;
1266
	$setVisible(treeViewId: string, visible: boolean): void;
A
Alex Ross 已提交
1267
	$hasResolve(treeViewId: string): Promise<boolean>;
1268
	$resolve(treeViewId: string, treeItemHandle: string, token: CancellationToken): Promise<ITreeItem | undefined>;
S
Sandeep Somavarapu 已提交
1269 1270
}

1271
export interface ExtHostWorkspaceShape {
S
SteVen Batten 已提交
1272
	$initializeWorkspace(workspace: IWorkspaceData | null, trusted: boolean): void;
1273
	$acceptWorkspaceData(workspace: IWorkspaceData | null): void;
J
Johannes Rieken 已提交
1274
	$handleTextSearchResult(result: search.IRawFileMatch2, requestId: number): void;
1275
	$onDidGrantWorkspaceTrust(): void;
1276
}
1277

1278 1279 1280 1281
export interface ExtHostFileSystemInfoShape {
	$acceptProviderInfos(scheme: string, capabilities: number | null): void;
}

1282
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
1283 1284
	$stat(handle: number, resource: UriComponents): Promise<files.IStat>;
	$readdir(handle: number, resource: UriComponents): Promise<[string, files.FileType][]>;
1285 1286
	$readFile(handle: number, resource: UriComponents): Promise<VSBuffer>;
	$writeFile(handle: number, resource: UriComponents, content: VSBuffer, opts: files.FileWriteOptions): Promise<void>;
J
Johannes Rieken 已提交
1287 1288
	$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 已提交
1289
	$mkdir(handle: number, resource: UriComponents): Promise<void>;
J
Johannes Rieken 已提交
1290 1291
	$delete(handle: number, resource: UriComponents, opts: files.FileDeleteOptions): Promise<void>;
	$watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void;
1292
	$unwatch(handle: number, session: number): void;
J
Johannes Rieken 已提交
1293
	$open(handle: number, resource: UriComponents, opts: files.FileOpenOptions): Promise<number>;
J
Johannes Rieken 已提交
1294
	$close(handle: number, fd: number): Promise<void>;
1295 1296
	$read(handle: number, fd: number, pos: number, length: number): Promise<VSBuffer>;
	$write(handle: number, fd: number, pos: number, data: VSBuffer): Promise<number>;
1297
}
1298

1299 1300 1301 1302
export interface ExtHostLabelServiceShape {
	$registerResourceLabelFormatter(formatter: ResourceLabelFormatter): IDisposable;
}

1303
export interface ExtHostAuthenticationShape {
1304
	$getSessions(id: string, scopes?: string[]): Promise<ReadonlyArray<modes.AuthenticationSession>>;
1305 1306
	$createSession(id: string, scopes: string[]): Promise<modes.AuthenticationSession>;
	$removeSession(id: string, sessionId: string): Promise<void>;
1307
	$onDidChangeAuthenticationSessions(id: string, label: string): Promise<void>;
1308
	$setProviders(providers: modes.AuthenticationProviderInformation[]): Promise<void>;
1309 1310 1311
}

export interface ExtHostSecretStateShape {
1312
	$onDidChangePassword(e: { extensionId: string, key: string }): Promise<void>;
1313 1314
}

1315
export interface ExtHostSearchShape {
1316
	$enableExtensionHostSearch(): void;
J
Johannes Rieken 已提交
1317 1318
	$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 已提交
1319
	$clearCache(cacheKey: string): Promise<void>;
1320 1321
}

A
Tweaks  
Alex Dima 已提交
1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332
export interface IResolveAuthorityErrorResult {
	type: 'error';
	error: {
		message: string | undefined;
		code: RemoteAuthorityResolverErrorCode;
		detail: any;
	};
}

export interface IResolveAuthorityOKResult {
	type: 'ok';
1333
	value: ResolverResult;
A
Tweaks  
Alex Dima 已提交
1334 1335 1336 1337
}

export type IResolveAuthorityResult = IResolveAuthorityErrorResult | IResolveAuthorityOKResult;

1338
export interface ExtHostExtensionServiceShape {
A
Tweaks  
Alex Dima 已提交
1339
	$resolveAuthority(remoteAuthority: string, resolveAttempt: number): Promise<IResolveAuthorityResult>;
1340
	$getCanonicalURI(remoteAuthority: string, uri: UriComponents): Promise<UriComponents>;
1341
	$startExtensionHost(enabledExtensionIds: ExtensionIdentifier[]): Promise<void>;
1342 1343
	$extensionTestsExecute(): Promise<number>;
	$extensionTestsExit(code: number): Promise<void>;
1344
	$activateByEvent(activationEvent: string, activationKind: ActivationKind): Promise<void>;
1345
	$activate(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise<boolean>;
1346
	$setRemoteEnvironment(env: { [key: string]: string | null; }): Promise<void>;
1347
	$updateRemoteConnectionData(connectionData: IRemoteConnectionData): Promise<void>;
1348

1349
	$deltaExtensions(toAdd: IExtensionDescription[], toRemove: ExtensionIdentifier[]): Promise<void>;
1350 1351

	$test_latency(n: number): Promise<number>;
1352 1353
	$test_up(b: VSBuffer): Promise<number>;
	$test_down(size: number): Promise<VSBuffer>;
1354 1355 1356
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
1357 1358 1359
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
1360
}
1361

1362 1363 1364 1365 1366
export interface SourceTargetPair {
	source?: UriComponents;
	target: UriComponents;
}

1367 1368 1369 1370 1371
export interface IWillRunFileOperationParticipation {
	edit: IWorkspaceEditDto;
	extensionNames: string[]
}

1372
export interface ExtHostFileSystemEventServiceShape {
1373
	$onFileEvent(events: FileSystemEvents): void;
1374 1375
	$onWillRunFileOperation(operation: files.FileOperation, files: readonly SourceTargetPair[], timeout: number, token: CancellationToken): Promise<IWillRunFileOperationParticipation | undefined>;
	$onDidRunFileOperation(operation: files.FileOperation, files: readonly SourceTargetPair[]): void;
1376 1377
}

J
Johannes Rieken 已提交
1378
export interface ObjectIdentifier {
1379
	$ident?: number;
J
Johannes Rieken 已提交
1380 1381 1382
}

export namespace ObjectIdentifier {
1383
	export const name = '$ident';
J
Johannes Rieken 已提交
1384
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
1385
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
1386 1387
		return <T & ObjectIdentifier>obj;
	}
1388 1389
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
1390 1391 1392
	}
}

1393 1394
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
1395
}
1396
export interface IRawColorInfo {
J
Joao Moreno 已提交
1397
	color: [number, number, number, number];
1398 1399 1400
	range: IRange;
}

1401 1402 1403 1404 1405 1406 1407 1408 1409
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;
	}
}

1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426
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',
}

J
Johannes Rieken 已提交
1427
export interface ISuggestDataDto {
1428
	[ISuggestDataDtoField.label]: string | modes.CompletionItemLabel;
1429
	[ISuggestDataDtoField.kind]?: modes.CompletionItemKind;
1430 1431 1432 1433
	[ISuggestDataDtoField.detail]?: string;
	[ISuggestDataDtoField.documentation]?: string | IMarkdownString;
	[ISuggestDataDtoField.sortText]?: string;
	[ISuggestDataDtoField.filterText]?: string;
1434
	[ISuggestDataDtoField.preselect]?: true;
1435 1436
	[ISuggestDataDtoField.insertText]?: string;
	[ISuggestDataDtoField.insertTextRules]?: modes.CompletionItemInsertTextRule;
1437
	[ISuggestDataDtoField.range]?: IRange | { insert: IRange, replace: IRange; };
1438 1439 1440 1441
	[ISuggestDataDtoField.commitCharacters]?: string[];
	[ISuggestDataDtoField.additionalTextEdits]?: ISingleEditOperation[];
	[ISuggestDataDtoField.command]?: modes.Command;
	[ISuggestDataDtoField.kindModifier]?: modes.CompletionItemTag[];
J
Johannes Rieken 已提交
1442
	// not-standard
1443
	x?: ChainedCacheId;
J
Johannes Rieken 已提交
1444 1445
}

1446 1447 1448
export const enum ISuggestResultDtoField {
	defaultRanges = 'a',
	completions = 'b',
1449 1450
	isIncomplete = 'c',
	duration = 'd',
1451 1452
}

J
Johannes Rieken 已提交
1453
export interface ISuggestResultDto {
1454 1455 1456
	[ISuggestResultDtoField.defaultRanges]: { insert: IRange, replace: IRange; };
	[ISuggestResultDtoField.completions]: ISuggestDataDto[];
	[ISuggestResultDtoField.isIncomplete]: undefined | true;
1457
	[ISuggestResultDtoField.duration]: number;
1458
	x?: number;
1459 1460
}

J
Johannes Rieken 已提交
1461
export interface ISignatureHelpDto {
1462 1463 1464 1465 1466 1467
	id: CacheId;
	signatures: modes.SignatureInformation[];
	activeSignature: number;
	activeParameter: number;
}

J
Johannes Rieken 已提交
1468
export interface ISignatureHelpContextDto {
1469 1470 1471
	readonly triggerKind: modes.SignatureHelpTriggerKind;
	readonly triggerCharacter?: string;
	readonly isRetrigger: boolean;
J
Johannes Rieken 已提交
1472
	readonly activeSignatureHelp?: ISignatureHelpDto;
1473 1474
}

1475
export interface IInlayHintDto {
W
Wenlu Wang 已提交
1476
	text: string;
1477 1478
	position: IPosition;
	kind: modes.InlayHintKind;
W
Wenlu Wang 已提交
1479 1480
	whitespaceBefore?: boolean;
	whitespaceAfter?: boolean;
K
WIP  
kingwl 已提交
1481 1482
}

1483 1484
export interface IInlayHintsDto {
	hints: IInlayHintDto[]
K
WIP  
kingwl 已提交
1485 1486
}

J
Johannes Rieken 已提交
1487
export interface ILocationDto {
1488 1489
	uri: UriComponents;
	range: IRange;
1490 1491
}

J
Johannes Rieken 已提交
1492
export interface IDefinitionLinkDto {
J
Johannes Rieken 已提交
1493
	originSelectionRange?: IRange;
M
Matt Bierner 已提交
1494 1495
	uri: UriComponents;
	range: IRange;
J
Johannes Rieken 已提交
1496
	targetSelectionRange?: IRange;
M
Matt Bierner 已提交
1497 1498
}

J
Johannes Rieken 已提交
1499
export interface IWorkspaceSymbolDto extends IdObject {
1500 1501 1502
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
J
Johannes Rieken 已提交
1503
	location: ILocationDto;
1504 1505
}

J
Johannes Rieken 已提交
1506 1507
export interface IWorkspaceSymbolsDto extends IdObject {
	symbols: IWorkspaceSymbolDto[];
1508 1509
}

1510 1511 1512 1513 1514 1515 1516
export interface IWorkspaceEditEntryMetadataDto {
	needsConfirmation: boolean;
	label: string;
	description?: string;
	iconPath?: { id: string } | UriComponents | { light: UriComponents, dark: UriComponents };
}

1517 1518 1519
export const enum WorkspaceEditType {
	File = 1,
	Text = 2,
1520
	Cell = 3,
1521 1522
}

1523
export interface IWorkspaceFileEditDto {
1524
	_type: WorkspaceEditType.File;
M
Matt Bierner 已提交
1525 1526
	oldUri?: UriComponents;
	newUri?: UriComponents;
1527
	options?: modes.WorkspaceFileEditOptions
1528
	metadata?: IWorkspaceEditEntryMetadataDto;
1529 1530
}

1531
export interface IWorkspaceTextEditDto {
1532
	_type: WorkspaceEditType.Text;
1533
	resource: UriComponents;
1534
	edit: modes.TextEdit;
1535
	modelVersionId?: number;
1536
	metadata?: IWorkspaceEditEntryMetadataDto;
1537 1538
}

1539 1540 1541 1542 1543 1544 1545 1546 1547 1548
export type ICellEditOperationDto =
	notebookCommon.ICellPartialMetadataEdit
	| notebookCommon.IDocumentMetadataEdit
	| {
		editType: notebookCommon.CellEditType.Replace,
		index: number,
		count: number,
		cells: NotebookCellDataDto[]
	};

1549 1550 1551
export interface IWorkspaceCellEditDto {
	_type: WorkspaceEditType.Cell;
	resource: UriComponents;
1552
	notebookVersionId?: number;
1553
	metadata?: IWorkspaceEditEntryMetadataDto;
1554
	edit: ICellEditOperationDto;
1555 1556
}

J
Johannes Rieken 已提交
1557
export interface IWorkspaceEditDto {
1558
	edits: Array<IWorkspaceFileEditDto | IWorkspaceTextEditDto | IWorkspaceCellEditDto>;
1559 1560
}

J
Johannes Rieken 已提交
1561
export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): modes.WorkspaceEdit {
1562 1563
	if (data && data.edits) {
		for (const edit of data.edits) {
1564 1565
			if (typeof (<IWorkspaceTextEditDto>edit).resource === 'object') {
				(<IWorkspaceTextEditDto>edit).resource = URI.revive((<IWorkspaceTextEditDto>edit).resource);
1566
			} else {
1567 1568
				(<IWorkspaceFileEditDto>edit).newUri = URI.revive((<IWorkspaceFileEditDto>edit).newUri);
				(<IWorkspaceFileEditDto>edit).oldUri = URI.revive((<IWorkspaceFileEditDto>edit).oldUri);
1569
			}
1570 1571 1572
			if (edit.metadata && edit.metadata.iconPath) {
				edit.metadata = revive(edit.metadata);
			}
1573 1574 1575 1576 1577
		}
	}
	return <modes.WorkspaceEdit>data;
}

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

J
Johannes Rieken 已提交
1580
export interface ICodeActionDto {
1581
	cacheId?: ChainedCacheId;
1582
	title: string;
J
Johannes Rieken 已提交
1583
	edit?: IWorkspaceEditDto;
1584
	diagnostics?: IMarkerData[];
J
Johannes Rieken 已提交
1585
	command?: ICommandDto;
J
Johannes Rieken 已提交
1586
	kind?: string;
1587
	isPreferred?: boolean;
M
Matt Bierner 已提交
1588
	disabled?: string;
1589
}
1590

J
Johannes Rieken 已提交
1591
export interface ICodeActionListDto {
1592
	cacheId: CacheId;
J
Johannes Rieken 已提交
1593
	actions: ReadonlyArray<ICodeActionDto>;
1594 1595
}

1596 1597 1598 1599 1600
export interface ICodeActionProviderMetadataDto {
	readonly providedKinds?: readonly string[];
	readonly documentation?: ReadonlyArray<{ readonly kind: string, readonly command: ICommandDto }>;
}

1601 1602 1603
export type CacheId = number;
export type ChainedCacheId = [CacheId, CacheId];

J
Johannes Rieken 已提交
1604
export interface ILinksListDto {
1605
	id?: CacheId;
J
Johannes Rieken 已提交
1606
	links: ILinkDto[];
1607 1608
}

J
Johannes Rieken 已提交
1609
export interface ILinkDto {
1610
	cacheId?: ChainedCacheId;
M
Martin Aeschlimann 已提交
1611 1612
	range: IRange;
	url?: string | UriComponents;
1613
	tooltip?: string;
M
Martin Aeschlimann 已提交
1614
}
1615

J
Johannes Rieken 已提交
1616
export interface ICodeLensListDto {
1617
	cacheId?: number;
J
Johannes Rieken 已提交
1618
	lenses: ICodeLensDto[];
1619 1620
}

J
Johannes Rieken 已提交
1621
export interface ICodeLensDto {
1622
	cacheId?: ChainedCacheId;
1623
	range: IRange;
J
Johannes Rieken 已提交
1624
	command?: ICommandDto;
1625
}
1626

J
Johannes Rieken 已提交
1627
export type ICallHierarchyItemDto = Dto<CallHierarchyItem>;
1628

1629 1630 1631 1632 1633 1634 1635 1636 1637 1638
export interface IIncomingCallDto {
	from: ICallHierarchyItemDto;
	fromRanges: IRange[];
}

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

A
Alex Dima 已提交
1639 1640 1641 1642 1643 1644
export interface ILanguageWordDefinitionDto {
	languageId: string;
	regexSource: string;
	regexFlags: string
}

1645
export interface ILinkedEditingRangesDto {
M
Martin Aeschlimann 已提交
1646 1647 1648 1649
	ranges: IRange[];
	wordPattern?: IRegExpDto;
}

1650
export interface IInlineValueContextDto {
1651
	frameId: number;
1652 1653 1654
	stoppedLocation: IRange;
}

Y
Yan Zhang 已提交
1655 1656
export type ITypeHierarchyItemDto = Dto<TypeHierarchyItem>;

1657
export interface ExtHostLanguageFeaturesShape {
1658
	$provideDocumentSymbols(handle: number, resource: UriComponents, token: CancellationToken): Promise<modes.DocumentSymbol[] | undefined>;
J
Johannes Rieken 已提交
1659 1660
	$provideCodeLenses(handle: number, resource: UriComponents, token: CancellationToken): Promise<ICodeLensListDto | undefined>;
	$resolveCodeLens(handle: number, symbol: ICodeLensDto, token: CancellationToken): Promise<ICodeLensDto | undefined>;
1661
	$releaseCodeLenses(handle: number, id: number): void;
J
Johannes Rieken 已提交
1662 1663 1664 1665
	$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[]>;
1666
	$provideHover(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.Hover | undefined>;
1667
	$provideEvaluatableExpression(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.EvaluatableExpression | undefined>;
1668
	$provideInlineValues(handle: number, resource: UriComponents, range: IRange, context: modes.InlineValueContext, token: CancellationToken): Promise<modes.InlineValue[] | undefined>;
1669
	$provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.DocumentHighlight[] | undefined>;
1670
	$provideLinkedEditingRanges(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<ILinkedEditingRangesDto | undefined>;
J
Johannes Rieken 已提交
1671 1672
	$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>;
1673
	$resolveCodeAction(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<IWorkspaceEditDto | undefined>;
1674
	$releaseCodeActions(handle: number, cacheId: number): void;
1675 1676 1677
	$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 已提交
1678 1679
	$provideWorkspaceSymbols(handle: number, search: string, token: CancellationToken): Promise<IWorkspaceSymbolsDto>;
	$resolveWorkspaceSymbol(handle: number, symbol: IWorkspaceSymbolDto, token: CancellationToken): Promise<IWorkspaceSymbolDto | undefined>;
1680
	$releaseWorkspaceSymbols(handle: number, id: number): void;
J
Johannes Rieken 已提交
1681
	$provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string, token: CancellationToken): Promise<IWorkspaceEditDto & { rejectReason?: string } | undefined>;
1682
	$resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<modes.RenameLocation | undefined>;
1683 1684 1685
	$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 已提交
1686
	$provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.CompletionContext, token: CancellationToken): Promise<ISuggestResultDto | undefined>;
1687
	$resolveCompletionItem(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<ISuggestDataDto | undefined>;
1688
	$releaseCompletionItems(handle: number, id: number): void;
1689 1690 1691
	$provideInlineCompletions(handle: number, resource: UriComponents, position: IPosition, context: modes.InlineCompletionContext, token: CancellationToken): Promise<IdentifiableInlineCompletions | undefined>;
	$handleInlineCompletionDidShow(handle: number, pid: number, idx: number): void;
	$freeInlineCompletionsList(handle: number, pid: number): void;
J
Johannes Rieken 已提交
1692
	$provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition, context: modes.SignatureHelpContext, token: CancellationToken): Promise<ISignatureHelpDto | undefined>;
1693
	$releaseSignatureHelp(handle: number, id: number): void;
1694
	$provideInlayHints(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise<IInlayHintsDto | undefined>
J
Johannes Rieken 已提交
1695 1696
	$provideDocumentLinks(handle: number, resource: UriComponents, token: CancellationToken): Promise<ILinksListDto | undefined>;
	$resolveDocumentLink(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<ILinkDto | undefined>;
1697
	$releaseDocumentLinks(handle: number, id: number): void;
J
Johannes Rieken 已提交
1698
	$provideDocumentColors(handle: number, resource: UriComponents, token: CancellationToken): Promise<IRawColorInfo[]>;
M
Matt Bierner 已提交
1699 1700
	$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>;
1701
	$provideSelectionRanges(handle: number, resource: UriComponents, positions: IPosition[], token: CancellationToken): Promise<modes.SelectionRange[][]>;
1702
	$prepareCallHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<ICallHierarchyItemDto[] | undefined>;
1703 1704
	$provideCallHierarchyIncomingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<IIncomingCallDto[] | undefined>;
	$provideCallHierarchyOutgoingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<IOutgoingCallDto[] | undefined>;
1705
	$releaseCallHierarchy(handle: number, sessionId: string): void;
A
Alex Dima 已提交
1706
	$setWordDefinitions(wordDefinitions: ILanguageWordDefinitionDto[]): void;
Y
Yan Zhang 已提交
1707 1708 1709 1710
	$prepareTypeHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise<ITypeHierarchyItemDto[] | undefined>;
	$provideTypeHierarchySupertypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<ITypeHierarchyItemDto[] | undefined>;
	$provideTypeHierarchySubtypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<ITypeHierarchyItemDto[] | undefined>;
	$releaseTypeHierarchy(handle: number, sessionId: string): void;
1711 1712
}

1713 1714
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
M
Matt Bierner 已提交
1715
	$validateInput(input: string): Promise<string | null | undefined>;
1716 1717 1718
	$onDidChangeActive(sessionId: number, handles: number[]): void;
	$onDidChangeSelection(sessionId: number, handles: number[]): void;
	$onDidAccept(sessionId: number): void;
1719
	$onDidChangeValue(sessionId: number, value: string): void;
C
Christof Marti 已提交
1720
	$onDidTriggerButton(sessionId: number, handle: number): void;
1721
	$onDidTriggerItemButton(sessionId: number, itemHandle: number, buttonHandle: number): void;
1722
	$onDidHide(sessionId: number): void;
1723 1724
}

1725 1726 1727 1728 1729
export interface ExtHostTelemetryShape {
	$initializeTelemetryEnabled(enabled: boolean): void;
	$onDidChangeTelemetryEnabled(enabled: boolean): void;
}

1730
export interface ITerminalLinkDto {
D
Daniel Imms 已提交
1731 1732
	/** The ID of the link to enable activation and disposal. */
	id: number;
1733 1734 1735 1736 1737 1738 1739 1740
	/** 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;
}

1741 1742 1743 1744 1745
export interface ITerminalDimensionsDto {
	columns: number;
	rows: number;
}

1746
export interface ExtHostTerminalServiceShape {
D
Daniel Imms 已提交
1747
	$acceptTerminalClosed(id: number, exitCode: number | undefined): void;
1748
	$acceptTerminalOpened(id: number, extHostTerminalId: string | undefined, name: string, shellLaunchConfig: IShellLaunchConfigDto): void;
1749
	$acceptActiveTerminalChanged(id: number | null): void;
1750
	$acceptTerminalProcessId(id: number, processId: number): void;
A
Alex Dima 已提交
1751
	$acceptTerminalProcessData(id: number, data: string): void;
1752
	$acceptTerminalTitleChange(id: number, name: string): void;
1753
	$acceptTerminalDimensions(id: number, cols: number, rows: number): void;
1754
	$acceptTerminalMaximumDimensions(id: number, cols: number, rows: number): void;
1755
	$acceptTerminalInteraction(id: number): void;
1756
	$startExtensionTerminal(id: number, initialDimensions: ITerminalDimensionsDto | undefined): Promise<ITerminalLaunchError | undefined>;
D
Daniel Imms 已提交
1757
	$acceptProcessAckDataEvent(id: number, charCount: number): void;
D
Daniel Imms 已提交
1758 1759
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
1760
	$acceptProcessShutdown(id: number, immediate: boolean): void;
1761 1762
	$acceptProcessRequestInitialCwd(id: number): void;
	$acceptProcessRequestCwd(id: number): void;
1763
	$acceptProcessRequestLatency(id: number): number;
1764
	$provideLinks(id: number, line: string): Promise<ITerminalLinkDto[]>;
D
Daniel Imms 已提交
1765
	$activateLink(id: number, linkId: number): void;
1766
	$initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void;
1767
	$acceptDefaultProfile(profile: ITerminalProfile, automationProfile: ITerminalProfile): void;
1768
	$createContributedProfileTerminal(id: string, options: ICreateContributedTerminalProfileOptions): Promise<void>;
1769 1770
}

1771
export interface ExtHostSCMShape {
M
Matt Bierner 已提交
1772
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise<UriComponents | null>;
A
Alex Dima 已提交
1773
	$onInputBoxValueChange(sourceControlHandle: number, value: string): void;
J
João Moreno 已提交
1774
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number, preserveFocus: boolean): Promise<void>;
1775
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): Promise<[string | IMarkdownString, number] | undefined>;
J
João Moreno 已提交
1776
	$setSelectedSourceControl(selectedSourceControlHandle: number | undefined): Promise<void>;
J
Joao Moreno 已提交
1777 1778
}

1779
export interface ExtHostTaskShape {
J
Johannes Rieken 已提交
1780
	$provideTasks(handle: number, validTypes: { [key: string]: boolean; }): Thenable<tasks.TaskSetDTO>;
1781
	$resolveTask(handle: number, taskDTO: tasks.TaskDTO): Thenable<tasks.TaskDTO | undefined>;
1782
	$onDidStartTask(execution: tasks.TaskExecutionDTO, terminalId: number, resolvedDefinition: tasks.TaskDefinitionDTO): void;
J
Johannes Rieken 已提交
1783 1784 1785
	$onDidStartTaskProcess(value: tasks.TaskProcessStartedDTO): void;
	$onDidEndTaskProcess(value: tasks.TaskProcessEndedDTO): void;
	$OnDidEndTask(execution: tasks.TaskExecutionDTO): void;
1786
	$resolveVariables(workspaceFolder: UriComponents, toResolve: { process?: { name: string; cwd?: string; }, variables: string[]; }): Promise<{ process?: string; variables: { [key: string]: string; }; }>;
A
Alex Ross 已提交
1787
	$jsonTasksSupported(): Thenable<boolean>;
1788
	$findExecutable(command: string, cwd?: string, paths?: string[]): Promise<string | undefined>;
1789 1790
}

1791 1792
export interface IBreakpointDto {
	type: string;
1793
	id?: string;
1794 1795 1796
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
1797 1798 1799 1800 1801
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
1802
	functionName: string;
1803 1804
}

I
isidor 已提交
1805 1806 1807 1808 1809
export interface IDataBreakpointDto extends IBreakpointDto {
	type: 'data';
	dataId: string;
	canPersist: boolean;
	label: string;
1810
	accessTypes?: DebugProtocol.DataBreakpointAccessType[];
1811
	accessType: DebugProtocol.DataBreakpointAccessType;
I
isidor 已提交
1812 1813
}

1814
export interface ISourceBreakpointDto extends IBreakpointDto {
1815
	type: 'source';
1816
	uri: UriComponents;
1817 1818
	line: number;
	character: number;
1819 1820
}

1821
export interface IBreakpointsDeltaDto {
I
isidor 已提交
1822
	added?: Array<ISourceBreakpointDto | IFunctionBreakpointDto | IDataBreakpointDto>;
1823
	removed?: string[];
I
isidor 已提交
1824
	changed?: Array<ISourceBreakpointDto | IFunctionBreakpointDto | IDataBreakpointDto>;
1825 1826
}

1827 1828 1829 1830
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
1831
		id: string;
1832 1833 1834
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
1835
		logMessage?: string;
1836 1837 1838
		line: number;
		character: number;
	}[];
1839 1840
}

A
Andre Weinand 已提交
1841
export interface IDebugSessionFullDto {
1842 1843 1844
	id: DebugSessionUUID;
	type: string;
	name: string;
1845
	parent: DebugSessionUUID | undefined;
1846
	folderUri: UriComponents | undefined;
A
Andre Weinand 已提交
1847
	configuration: IConfig;
1848 1849
}

A
Andre Weinand 已提交
1850 1851
export type IDebugSessionDto = IDebugSessionFullDto | DebugSessionUUID;

1852
export interface ExtHostDebugServiceShape {
J
Johannes Rieken 已提交
1853
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): Promise<IConfig>;
1854
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, sessionId: string): Promise<number | undefined>;
J
Johannes Rieken 已提交
1855 1856
	$startDASession(handle: number, session: IDebugSessionDto): Promise<void>;
	$stopDASession(handle: number): Promise<void>;
1857
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void;
1858
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise<IConfig | null | undefined>;
1859
	$resolveDebugConfigurationWithSubstitutedVariables(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise<IConfig | null | undefined>;
1860
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined, token: CancellationToken): Promise<IConfig[]>;
J
Johannes Rieken 已提交
1861
	$provideDebugAdapter(handle: number, session: IDebugSessionDto): Promise<IAdapterDescriptor>;
1862 1863
	$acceptDebugSessionStarted(session: IDebugSessionDto): void;
	$acceptDebugSessionTerminated(session: IDebugSessionDto): void;
1864
	$acceptDebugSessionActiveChanged(session: IDebugSessionDto | undefined): void;
1865 1866
	$acceptDebugSessionCustomEvent(session: IDebugSessionDto, event: any): void;
	$acceptBreakpointsDelta(delta: IBreakpointsDeltaDto): void;
1867
	$acceptDebugSessionNameChanged(session: IDebugSessionDto, name: string): void;
1868 1869
}

1870

1871 1872 1873 1874 1875
export interface DecorationRequest {
	readonly id: number;
	readonly uri: UriComponents;
}

1876
export type DecorationData = [boolean, string, string, ThemeColor];
1877
export type DecorationReply = { [id: number]: DecorationData; };
1878 1879

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

1883 1884
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
1885 1886
}

S
Sandeep Somavarapu 已提交
1887
export interface ExtHostLogServiceShape {
A
Alex Dima 已提交
1888
	$setLevel(level: LogLevel): void;
S
Sandeep Somavarapu 已提交
1889 1890
}

J
Johannes Rieken 已提交
1891 1892 1893 1894
export interface MainThreadLogShape {
	$log(file: UriComponents, level: LogLevel, args: any[]): void;
}

1895 1896 1897 1898
export interface ExtHostOutputServiceShape {
	$setVisibleChannel(channelId: string | null): void;
}

1899 1900 1901 1902
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

M
Matt Bierner 已提交
1903
export interface ExtHostCommentsShape {
P
Peng Lyu 已提交
1904
	$createCommentThreadTemplate(commentControllerHandle: number, uriComponents: UriComponents, range: IRange): void;
1905
	$updateCommentThreadTemplate(commentControllerHandle: number, threadHandle: number, range: IRange): Promise<void>;
1906
	$deleteCommentThread(commentControllerHandle: number, commentThreadHandle: number): void;
P
Peng Lyu 已提交
1907
	$provideCommentingRanges(commentControllerHandle: number, uriComponents: UriComponents, token: CancellationToken): Promise<IRange[] | undefined>;
P
Peng Lyu 已提交
1908
	$toggleReaction(commentControllerHandle: number, threadHandle: number, uri: UriComponents, comment: modes.Comment, reaction: modes.CommentReaction): Promise<void>;
M
Matt Bierner 已提交
1909 1910
}

R
rebornix 已提交
1911
export interface INotebookSelectionChangeEvent {
R
rebornix 已提交
1912
	selections: ICellRange[];
R
rebornix 已提交
1913 1914
}

1915
export interface INotebookVisibleRangesEvent {
1916
	ranges: ICellRange[];
1917 1918
}

R
rebornix 已提交
1919
export interface INotebookEditorPropertiesChangeData {
1920 1921
	visibleRanges?: INotebookVisibleRangesEvent;
	selections?: INotebookSelectionChangeEvent;
1922 1923 1924
}

export interface INotebookDocumentPropertiesChangeData {
1925
	metadata?: notebookCommon.NotebookDocumentMetadata;
R
rebornix 已提交
1926 1927
}

R
rebornix 已提交
1928 1929
export interface INotebookModelAddedData {
	uri: UriComponents;
R
rebornix 已提交
1930
	versionId: number;
1931
	cells: NotebookCellDto[],
R
rebornix 已提交
1932
	viewType: string;
1933
	metadata?: notebookCommon.NotebookDocumentMetadata;
R
rebornix 已提交
1934 1935
}

R
rebornix 已提交
1936 1937 1938
export interface INotebookEditorAddData {
	id: string;
	documentUri: UriComponents;
R
rebornix 已提交
1939
	selections: ICellRange[];
1940
	visibleRanges: ICellRange[];
1941
	viewColumn?: number
R
rebornix 已提交
1942 1943 1944 1945 1946
}

export interface INotebookDocumentsAndEditorsDelta {
	removedDocuments?: UriComponents[];
	addedDocuments?: INotebookModelAddedData[];
R
rebornix 已提交
1947 1948 1949
	removedEditors?: string[];
	addedEditors?: INotebookEditorAddData[];
	newActiveEditor?: string | null;
R
rebornix 已提交
1950
	visibleEditors?: string[];
R
rebornix 已提交
1951 1952
}

1953 1954
export interface NotebookOutputItemDto {
	readonly mime: string;
1955
	readonly valueBytes: VSBuffer;
1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966
}

export interface NotebookOutputDto {
	items: NotebookOutputItemDto[];
	outputId: string;
	metadata?: Record<string, any>;
}

export interface NotebookCellDataDto {
	source: string;
	language: string;
1967
	mime: string | undefined;
1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984
	cellKind: notebookCommon.CellKind;
	outputs: NotebookOutputDto[];
	metadata?: notebookCommon.NotebookCellMetadata;
	internalMetadata?: notebookCommon.NotebookCellInternalMetadata;
}

export interface NotebookDataDto {
	readonly cells: NotebookCellDataDto[];
	readonly metadata: notebookCommon.NotebookDocumentMetadata;
}

export interface NotebookCellDto {
	handle: number;
	uri: UriComponents;
	eol: string;
	source: string[];
	language: string;
1985
	mime?: string;
1986 1987 1988 1989 1990 1991
	cellKind: notebookCommon.CellKind;
	outputs: NotebookOutputDto[];
	metadata?: notebookCommon.NotebookCellMetadata;
	internalMetadata?: notebookCommon.NotebookCellInternalMetadata;
}

1992
export interface ExtHostNotebookShape extends ExtHostNotebookDocumentsAndEditorsShape {
R
Rob Lourens 已提交
1993 1994
	$provideNotebookCellStatusBarItems(handle: number, uri: UriComponents, index: number, token: CancellationToken): Promise<INotebookCellStatusBarListDto | undefined>;
	$releaseNotebookCellStatusBarItems(id: number): void;
1995

1996
	$openNotebook(viewType: string, uri: UriComponents, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, token: CancellationToken): Promise<SerializableObjectWithBuffers<NotebookDataDto>>;
R
rebornix 已提交
1997
	$saveNotebook(viewType: string, uri: UriComponents, token: CancellationToken): Promise<boolean>;
R
saveAs  
rebornix 已提交
1998
	$saveNotebookAs(viewType: string, uri: UriComponents, target: UriComponents, token: CancellationToken): Promise<boolean>;
J
Johannes Rieken 已提交
1999
	$backupNotebook(viewType: string, uri: UriComponents, cancellation: CancellationToken): Promise<string>;
2000

2001 2002
	$dataToNotebook(handle: number, data: VSBuffer, token: CancellationToken): Promise<SerializableObjectWithBuffers<NotebookDataDto>>;
	$notebookToData(handle: number, data: SerializableObjectWithBuffers<NotebookDataDto>, token: CancellationToken): Promise<VSBuffer>;
2003 2004
}

2005 2006 2007 2008
export interface ExtHostNotebookRenderersShape {
	$postRendererMessage(editorId: string, rendererId: string, message: unknown): void;
}

2009
export interface ExtHostNotebookDocumentsAndEditorsShape {
2010
	$acceptDocumentAndEditorsDelta(delta: SerializableObjectWithBuffers<INotebookDocumentsAndEditorsDelta>): void;
2011
}
2012

2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038
export type NotebookRawContentEventDto =
	// notebookCommon.NotebookCellsInitializeEvent<NotebookCellDto>
	| {

		readonly kind: notebookCommon.NotebookCellsChangeType.ModelChange;
		readonly changes: notebookCommon.NotebookCellTextModelSplice<NotebookCellDto>[];
	}
	| {
		readonly kind: notebookCommon.NotebookCellsChangeType.Move;
		readonly index: number;
		readonly length: number;
		readonly newIdx: number;
	}
	| {
		readonly kind: notebookCommon.NotebookCellsChangeType.Output;
		readonly index: number;
		readonly outputs: NotebookOutputDto[];
	}
	| {
		readonly kind: notebookCommon.NotebookCellsChangeType.OutputItem;
		readonly index: number;
		readonly outputId: string;
		readonly outputItems: NotebookOutputItemDto[];
		readonly append: boolean;
	}
	| notebookCommon.NotebookCellsChangeLanguageEvent
2039
	| notebookCommon.NotebookCellsChangeMimeEvent
2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051
	| notebookCommon.NotebookCellsChangeMetadataEvent
	| notebookCommon.NotebookCellsChangeInternalMetadataEvent
	// | notebookCommon.NotebookDocumentChangeMetadataEvent
	// | notebookCommon.NotebookCellContentChangeEvent
	// | notebookCommon.NotebookDocumentUnknownChangeEvent
	;

export type NotebookCellsChangedEventDto = {
	readonly rawEvents: NotebookRawContentEventDto[];
	readonly versionId: number;
};

2052
export interface ExtHostNotebookDocumentsShape {
2053
	$acceptModelChanged(uriComponents: UriComponents, event: SerializableObjectWithBuffers<NotebookCellsChangedEventDto>, isDirty: boolean): void;
2054
	$acceptDirtyStateChanged(uriComponents: UriComponents, isDirty: boolean): void;
2055
	$acceptModelSaved(uriComponents: UriComponents): void;
2056
	$acceptDocumentPropertiesChanged(uriComponents: UriComponents, data: INotebookDocumentPropertiesChangeData): void;
2057 2058
}

2059 2060
export type INotebookEditorViewColumnInfo = Record<string, number>;

2061
export interface ExtHostNotebookEditorsShape {
J
Johannes Rieken 已提交
2062
	$acceptEditorPropertiesChanged(id: string, data: INotebookEditorPropertiesChangeData): void;
2063
	$acceptEditorViewColumns(data: INotebookEditorViewColumnInfo): void;
R
rebornix 已提交
2064 2065
}

2066
export interface ExtHostNotebookKernelsShape {
J
Johannes Rieken 已提交
2067
	$acceptNotebookAssociation(handle: number, uri: UriComponents, value: boolean): void;
2068 2069
	$executeCells(handle: number, uri: UriComponents, handles: number[]): Promise<void>;
	$cancelCells(handle: number, uri: UriComponents, handles: number[]): Promise<void>;
2070
	$acceptKernelMessageFromRenderer(handle: number, editorId: string, message: any): void;
2071 2072
}

2073
export interface ExtHostInteractiveShape {
2074 2075
	$willAddInteractiveDocument(uri: UriComponents, eol: string, modeId: string, notebookUri: UriComponents): void;
	$willRemoveInteractiveDocument(uri: UriComponents, notebookUri: UriComponents): void;
2076 2077
}

2078
export interface ExtHostStorageShape {
2079
	$acceptValue(shared: boolean, key: string, value: object | undefined): void;
2080 2081
}

M
Martin Aeschlimann 已提交
2082 2083 2084 2085 2086 2087
export interface ExtHostThemingShape {
	$onColorThemeChange(themeType: string): void;
}

export interface MainThreadThemingShape extends IDisposable {
}
2088 2089

export interface ExtHostTunnelServiceShape {
2090
	$forwardPort(tunnelOptions: TunnelOptions, tunnelCreationOptions: TunnelCreationOptions): Promise<TunnelDto | undefined>;
2091
	$closeTunnel(remote: { host: string, port: number }, silent?: boolean): Promise<void>;
A
Alex Ross 已提交
2092
	$onDidTunnelsChange(): Promise<void>;
2093
	$registerCandidateFinder(enable: boolean): Promise<void>;
2094
	$applyCandidateFilter(candidates: CandidatePort[]): Promise<CandidatePort[]>;
2095
	$providePortAttributes(handles: number[], ports: number[], pid: number | undefined, commandline: string | undefined, cancellationToken: CancellationToken): Promise<ProvidedPortAttributes[]>;
2096 2097
}

2098
export interface ExtHostTimelineShape {
2099
	$getTimeline(source: string, uri: UriComponents, options: TimelineOptions, token: CancellationToken, internalOptions?: InternalTimelineOptions): Promise<Timeline | undefined>;
2100 2101
}

C
Connor Peet 已提交
2102 2103 2104 2105 2106 2107
export const enum ExtHostTestingResource {
	Workspace,
	TextDocument
}

export interface ExtHostTestingShape {
2108
	$runControllerTests(req: RunTestForControllerRequest, token: CancellationToken): Promise<void>;
2109
	$cancelExtensionTestRun(runId: string | undefined): void;
2110 2111 2112
	/** Handles a diff of tests, as a result of a subscribeToDiffs() call */
	$acceptDiff(diff: TestsDiff): void;
	/** Publishes that a test run finished. */
2113
	$publishTestResults(results: ISerializedTestResults[]): void;
2114
	/** Expands a test item's children, by the given number of levels. */
C
Connor Peet 已提交
2115
	$expandTest(testId: string, levels: number): Promise<void>;
2116 2117 2118 2119 2120 2121 2122
	/** Requests file coverage for a test run. Errors if not available. */
	$provideFileCoverage(runId: string, taskId: string, token: CancellationToken): Promise<IFileCoverage[]>;
	/**
	 * Requests coverage details for the file index in coverage data for the run.
	 * Requires file coverage to have been previously requested via $provideFileCoverage.
	 */
	$resolveFileCoverage(runId: string, taskId: string, fileIndex: number, token: CancellationToken): Promise<CoverageDetails[]>;
2123
	/** Configures a test run config. */
C
Connor Peet 已提交
2124
	$configureRunProfile(controllerId: string, configId: number): void;
C
Connor Peet 已提交
2125 2126 2127
}

export interface MainThreadTestingShape {
2128 2129
	// --- test lifecycle:

2130 2131 2132 2133
	/** Registers that there's a test controller with the given ID */
	$registerTestController(controllerId: string, label: string): void;
	/** Updates the label of an existing test controller. */
	$updateControllerLabel(controllerId: string, label: string): void;
2134
	/** Diposes of the test controller with the given ID */
2135 2136 2137 2138 2139
	$unregisterTestController(controllerId: string): void;
	/** Requests tests published to VS Code. */
	$subscribeToDiffs(): void;
	/** Stops requesting tests published to VS Code. */
	$unsubscribeFromDiffs(): void;
2140
	/** Publishes that new tests were available on the given source. */
2141
	$publishDiff(controllerId: string, diff: TestsDiff): void;
2142 2143 2144 2145

	// --- test run configurations:

	/** Called when a new test run configuration is available */
C
Connor Peet 已提交
2146
	$publishTestRunProfile(config: ITestRunProfile): void;
2147
	/** Updates an existing test run configuration */
C
Connor Peet 已提交
2148
	$updateTestRunConfig(controllerId: string, configId: number, update: Partial<ITestRunProfile>): void;
2149
	/** Removes a previously-published test run config */
C
Connor Peet 已提交
2150
	$removeTestProfile(controllerId: string, configId: number): void;
2151

2152 2153

	// --- test run handling:
2154

2155 2156
	/** Request by an extension to run tests. */
	$runTests(req: ResolvedTestRunRequest, token: CancellationToken): Promise<string>;
2157 2158 2159 2160
	/**
	 * 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.
	 */
2161
	$addTestsToRun(controllerId: string, runId: string, tests: ITestItem[]): void;
2162 2163 2164
	/** 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. */
C
Connor Peet 已提交
2165
	$appendTestMessagesInRun(runId: string, taskId: string, testId: string, messages: ITestMessage[]): void;
2166
	/** Appends raw output to the test run.. */
2167
	$appendOutputToRun(runId: string, taskId: string, output: VSBuffer, location?: ILocationDto, testId?: string): void;
2168 2169
	/** Triggered when coverage is added to test results. */
	$signalCoverageAvailable(runId: string, taskId: string): void;
2170 2171 2172 2173 2174 2175 2176 2177
	/** 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 已提交
2178 2179
}

2180 2181 2182
// --- proxy identifiers

export const MainContext = {
2183
	MainThreadAuthentication: createMainId<MainThreadAuthenticationShape>('MainThreadAuthentication'),
2184
	MainThreadBulkEdits: createMainId<MainThreadBulkEditsShape>('MainThreadBulkEdits'),
2185 2186
	MainThreadClipboard: createMainId<MainThreadClipboardShape>('MainThreadClipboard'),
	MainThreadCommands: createMainId<MainThreadCommandsShape>('MainThreadCommands'),
M
Matt Bierner 已提交
2187
	MainThreadComments: createMainId<MainThreadCommentsShape>('MainThreadComments'),
2188
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
2189
	MainThreadConsole: createMainId<MainThreadConsoleShape>('MainThreadConsole'),
2190
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
2191 2192 2193 2194
	MainThreadDecorations: createMainId<MainThreadDecorationsShape>('MainThreadDecorations'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDialogs: createMainId<MainThreadDiaglogsShape>('MainThreadDiaglogs'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
2195
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
2196
	MainThreadTextEditors: createMainId<MainThreadTextEditorsShape>('MainThreadTextEditors'),
2197
	MainThreadEditorInsets: createMainId<MainThreadEditorInsetsShape>('MainThreadEditorInsets'),
2198
	MainThreadEditorTabs: createMainId<MainThreadEditorTabsShape>('MainThreadEditorTabs'),
2199 2200
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
2201
	MainThreadDownloadService: createMainId<MainThreadDownloadServiceShape>('MainThreadDownloadService'),
A
Alex Dima 已提交
2202
	MainThreadKeytar: createMainId<MainThreadKeytarShape>('MainThreadKeytar'),
2203
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
2204
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
J
Johannes Rieken 已提交
2205
	MainThreadLog: createMainId<MainThreadLogShape>('MainThread'),
2206
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
2207 2208
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
2209
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
2210
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
2211
	MainThreadSecretState: createMainId<MainThreadSecretStateShape>('MainThreadSecretState'),
2212
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
2213
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
2214
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
M
Matt Bierner 已提交
2215
	MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'),
2216
	MainThreadWebviewPanels: createMainId<MainThreadWebviewPanelsShape>('MainThreadWebviewPanels'),
2217 2218
	MainThreadWebviewViews: createMainId<MainThreadWebviewViewsShape>('MainThreadWebviewViews'),
	MainThreadCustomEditors: createMainId<MainThreadCustomEditorsShape>('MainThreadCustomEditors'),
J
Joao Moreno 已提交
2219
	MainThreadUrls: createMainId<MainThreadUrlsShape>('MainThreadUrls'),
2220
	MainThreadUriOpeners: createMainId<MainThreadUriOpenersShape>('MainThreadUriOpeners'),
2221
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
2222
	MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'),
2223
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
J
Joao Moreno 已提交
2224
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
2225
	MainThreadSearch: createMainId<MainThreadSearchShape>('MainThreadSearch'),
2226
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
2227
	MainThreadWindow: createMainId<MainThreadWindowShape>('MainThreadWindow'),
M
Martin Aeschlimann 已提交
2228
	MainThreadLabelService: createMainId<MainThreadLabelServiceShape>('MainThreadLabelService'),
2229
	MainThreadNotebook: createMainId<MainThreadNotebookShape>('MainThreadNotebook'),
2230 2231
	MainThreadNotebookDocuments: createMainId<MainThreadNotebookDocumentsShape>('MainThreadNotebookDocumentsShape'),
	MainThreadNotebookEditors: createMainId<MainThreadNotebookEditorsShape>('MainThreadNotebookEditorsShape'),
2232
	MainThreadNotebookKernels: createMainId<MainThreadNotebookKernelsShape>('MainThreadNotebookKernels'),
2233
	MainThreadNotebookRenderers: createMainId<MainThreadNotebookRenderersShape>('MainThreadNotebookRenderers'),
2234
	MainThreadInteractive: createMainId<MainThreadInteractiveShape>('MainThreadInteractive'),
2235
	MainThreadTheming: createMainId<MainThreadThemingShape>('MainThreadTheming'),
2236
	MainThreadTunnelService: createMainId<MainThreadTunnelServiceShape>('MainThreadTunnelService'),
C
Connor Peet 已提交
2237 2238
	MainThreadTimeline: createMainId<MainThreadTimelineShape>('MainThreadTimeline'),
	MainThreadTesting: createMainId<MainThreadTestingShape>('MainThreadTesting'),
2239 2240 2241
};

export const ExtHostContext = {
2242
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
2243
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
2244
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
2245
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
J
Johannes Rieken 已提交
2246
	ExtHostDecorations: createExtId<ExtHostDecorationsShape>('ExtHostDecorations'),
2247
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
2248
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
J
Johannes Rieken 已提交
2249
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
J
Johannes Rieken 已提交
2250
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
J
Johannes Rieken 已提交
2251
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
2252
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
J
Johannes Rieken 已提交
2253
	ExtHostFileSystem: createExtId<ExtHostFileSystemShape>('ExtHostFileSystem'),
2254
	ExtHostFileSystemInfo: createExtId<ExtHostFileSystemInfoShape>('ExtHostFileSystemInfo'),
J
Johannes Rieken 已提交
2255
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
2256
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
2257 2258
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
2259
	ExtHostLogService: createExtId<ExtHostLogServiceShape>('ExtHostLogService'),
2260
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
J
Joao Moreno 已提交
2261
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
2262
	ExtHostSearch: createExtId<ExtHostSearchShape>('ExtHostSearch'),
2263
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
2264
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
2265
	ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'),
2266
	ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'),
2267
	ExtHostWebviewPanels: createExtId<ExtHostWebviewPanelsShape>('ExtHostWebviewPanels'),
2268
	ExtHostCustomEditors: createExtId<ExtHostCustomEditorsShape>('ExtHostCustomEditors'),
2269
	ExtHostWebviewViews: createExtId<ExtHostWebviewViewsShape>('ExtHostWebviewViews'),
2270
	ExtHostEditorInsets: createExtId<ExtHostEditorInsetsShape>('ExtHostEditorInsets'),
2271
	ExtHostEditorTabs: createExtId<IExtHostEditorTabsShape>('ExtHostEditorTabs'),
M
Matt Bierner 已提交
2272
	ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress'),
2273
	ExtHostComments: createMainId<ExtHostCommentsShape>('ExtHostComments'),
2274
	ExtHostSecretState: createMainId<ExtHostSecretStateShape>('ExtHostSecretState'),
2275
	ExtHostStorage: createMainId<ExtHostStorageShape>('ExtHostStorage'),
2276
	ExtHostUrls: createExtId<ExtHostUrlsShape>('ExtHostUrls'),
2277
	ExtHostUriOpeners: createExtId<ExtHostUriOpenersShape>('ExtHostUriOpeners'),
2278
	ExtHostOutputService: createMainId<ExtHostOutputServiceShape>('ExtHostOutputService'),
R
rebornix 已提交
2279
	ExtHosLabelService: createMainId<ExtHostLabelServiceShape>('ExtHostLabelService'),
2280
	ExtHostNotebook: createMainId<ExtHostNotebookShape>('ExtHostNotebook'),
2281
	ExtHostNotebookDocuments: createMainId<ExtHostNotebookDocumentsShape>('ExtHostNotebookDocuments'),
2282
	ExtHostNotebookEditors: createMainId<ExtHostNotebookEditorsShape>('ExtHostNotebookEditors'),
2283
	ExtHostNotebookKernels: createMainId<ExtHostNotebookKernelsShape>('ExtHostNotebookKernels'),
2284
	ExtHostNotebookRenderers: createMainId<ExtHostNotebookRenderersShape>('ExtHostNotebookRenderers'),
2285
	ExtHostInteractive: createMainId<ExtHostInteractive>('ExtHostInteractive'),
2286
	ExtHostTheming: createMainId<ExtHostThemingShape>('ExtHostTheming'),
2287
	ExtHostTunnelService: createMainId<ExtHostTunnelServiceShape>('ExtHostTunnelService'),
2288
	ExtHostAuthentication: createMainId<ExtHostAuthenticationShape>('ExtHostAuthentication'),
C
Connor Peet 已提交
2289 2290
	ExtHostTimeline: createMainId<ExtHostTimelineShape>('ExtHostTimeline'),
	ExtHostTesting: createMainId<ExtHostTestingShape>('ExtHostTesting'),
2291
	ExtHostTelemetry: createMainId<ExtHostTelemetryShape>('ExtHostTelemetry'),
2292
};