Path: blob/main/extensions/copilot/src/extension/prompts/node/test/fixtures/extHost.api.impl.ts
13406 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { CancellationTokenSource } from 'vs/base/common/cancellation';6import * as errors from 'vs/base/common/errors';7import { Emitter, Event } from 'vs/base/common/event';8import { combinedDisposable } from 'vs/base/common/lifecycle';9import { Schemas } from 'vs/base/common/network';10import Severity from 'vs/base/common/severity';11import { URI } from 'vs/base/common/uri';12import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';13import { score } from 'vs/editor/common/languageSelector';14import * as languageConfiguration from 'vs/editor/common/languages/languageConfiguration';15import { OverviewRulerLane } from 'vs/editor/common/model';16import { ExtensionIdentifierSet, IExtensionDescription } from 'vs/platform/extensions/common/extensions';17import * as files from 'vs/platform/files/common/files';18import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';19import { ILogService, ILoggerService, LogLevel } from 'vs/platform/log/common/log';20import { matchesScheme } from 'vs/platform/opener/common/opener';21import { getRemoteName } from 'vs/platform/remote/common/remoteHosts';22import { TelemetryTrustedValue } from 'vs/platform/telemetry/common/telemetryUtils';23import { EditSessionIdentityMatch } from 'vs/platform/workspace/common/editSessions';24import { CandidatePortSource, ExtHostContext, ExtHostLogLevelServiceShape, MainContext } from 'vs/workbench/api/common/extHost.protocol';25import { ExtHostApiCommands } from 'vs/workbench/api/common/extHostApiCommands';26import { IExtHostApiDeprecationService } from 'vs/workbench/api/common/extHostApiDeprecationService';27import { ExtHostAuthentication } from 'vs/workbench/api/common/extHostAuthentication';28import { ExtHostBulkEdits } from 'vs/workbench/api/common/extHostBulkEdits';29import { ExtHostClipboard } from 'vs/workbench/api/common/extHostClipboard';30import { ExtHostEditorInsets } from 'vs/workbench/api/common/extHostCodeInsets';31import { IExtHostCommands } from 'vs/workbench/api/common/extHostCommands';32import { createExtHostComments } from 'vs/workbench/api/common/extHostComments';33import { ExtHostConfigProvider, IExtHostConfiguration } from 'vs/workbench/api/common/extHostConfiguration';34import { ExtHostCustomEditors } from 'vs/workbench/api/common/extHostCustomEditors';35import { IExtHostDebugService } from 'vs/workbench/api/common/extHostDebugService';36import { IExtHostDecorations } from 'vs/workbench/api/common/extHostDecorations';37import { ExtHostDiagnostics } from 'vs/workbench/api/common/extHostDiagnostics';38import { ExtHostDialogs } from 'vs/workbench/api/common/extHostDialogs';39import { ExtHostDocumentContentProvider } from 'vs/workbench/api/common/extHostDocumentContentProviders';40import { ExtHostDocumentSaveParticipant } from 'vs/workbench/api/common/extHostDocumentSaveParticipant';41import { ExtHostDocuments } from 'vs/workbench/api/common/extHostDocuments';42import { IExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';43import { IExtHostEditorTabs } from 'vs/workbench/api/common/extHostEditorTabs';44import { Extension, IExtHostExtensionService } from 'vs/workbench/api/common/extHostExtensionService';45import { ExtHostFileSystem } from 'vs/workbench/api/common/extHostFileSystem';46import { IExtHostConsumerFileSystem } from 'vs/workbench/api/common/extHostFileSystemConsumer';47import { ExtHostFileSystemEventService } from 'vs/workbench/api/common/extHostFileSystemEventService';48import { IExtHostFileSystemInfo } from 'vs/workbench/api/common/extHostFileSystemInfo';49import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService';50import { ExtHostInteractive } from 'vs/workbench/api/common/extHostInteractive';51import { ExtHostInteractiveEditor } from 'vs/workbench/api/common/extHostInteractiveEditor';52import { ExtHostInteractiveSession } from 'vs/workbench/api/common/extHostInteractiveSession';53import { ExtHostLabelService } from 'vs/workbench/api/common/extHostLabelService';54import { ExtHostLanguageFeatures } from 'vs/workbench/api/common/extHostLanguageFeatures';55import { ExtHostLanguages } from 'vs/workbench/api/common/extHostLanguages';56import { IExtHostLocalizationService } from 'vs/workbench/api/common/extHostLocalizationService';57import { ExtHostMessageService } from 'vs/workbench/api/common/extHostMessageService';58import { ExtHostNotebookController } from 'vs/workbench/api/common/extHostNotebook';59import { ExtHostNotebookDocumentSaveParticipant } from 'vs/workbench/api/common/extHostNotebookDocumentSaveParticipant';60import { ExtHostNotebookDocuments } from 'vs/workbench/api/common/extHostNotebookDocuments';61import { ExtHostNotebookEditors } from 'vs/workbench/api/common/extHostNotebookEditors';62import { ExtHostNotebookKernels } from 'vs/workbench/api/common/extHostNotebookKernels';63import { ExtHostNotebookRenderers } from 'vs/workbench/api/common/extHostNotebookRenderers';64import { IExtHostOutputService } from 'vs/workbench/api/common/extHostOutput';65import { ExtHostProfileContentHandlers } from 'vs/workbench/api/common/extHostProfileContentHandler';66import { ExtHostProgress } from 'vs/workbench/api/common/extHostProgress';67import { ExtHostQuickDiff } from 'vs/workbench/api/common/extHostQuickDiff';68import { createExtHostQuickOpen } from 'vs/workbench/api/common/extHostQuickOpen';69import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';70import { ExtHostSCM } from 'vs/workbench/api/common/extHostSCM';71import { IExtHostSearch } from 'vs/workbench/api/common/extHostSearch';72import { IExtHostSecretState } from 'vs/workbench/api/common/extHostSecretState';73import { ExtHostStatusBar } from 'vs/workbench/api/common/extHostStatusBar';74import { IExtHostStorage } from 'vs/workbench/api/common/extHostStorage';75import { IExtensionStoragePaths } from 'vs/workbench/api/common/extHostStoragePaths';76import { IExtHostTask } from 'vs/workbench/api/common/extHostTask';77import { ExtHostTelemetryLogger, IExtHostTelemetry, isNewAppInstall } from 'vs/workbench/api/common/extHostTelemetry';78import { IExtHostTerminalService } from 'vs/workbench/api/common/extHostTerminalService';79import { ExtHostTesting } from 'vs/workbench/api/common/extHostTesting';80import { ExtHostEditors } from 'vs/workbench/api/common/extHostTextEditors';81import { ExtHostTheming } from 'vs/workbench/api/common/extHostTheming';82import { ExtHostTimeline } from 'vs/workbench/api/common/extHostTimeline';83import { ExtHostTreeViews } from 'vs/workbench/api/common/extHostTreeViews';84import { IExtHostTunnelService } from 'vs/workbench/api/common/extHostTunnelService';85import * as typeConverters from 'vs/workbench/api/common/extHostTypeConverters';86import * as extHostTypes from 'vs/workbench/api/common/extHostTypes';87import { ExtHostUriOpeners } from 'vs/workbench/api/common/extHostUriOpener';88import { IURITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService';89import { ExtHostUrls } from 'vs/workbench/api/common/extHostUrls';90import { ExtHostWebviews } from 'vs/workbench/api/common/extHostWebview';91import { ExtHostWebviewPanels } from 'vs/workbench/api/common/extHostWebviewPanels';92import { ExtHostWebviewViews } from 'vs/workbench/api/common/extHostWebviewView';93import { IExtHostWindow } from 'vs/workbench/api/common/extHostWindow';94import { IExtHostWorkspace } from 'vs/workbench/api/common/extHostWorkspace';95import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/contrib/debug/common/debug';96import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry';97import { UIKind } from 'vs/workbench/services/extensions/common/extensionHostProtocol';98import { checkProposedApiEnabled, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';99import { ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier';100import { TextSearchCompleteMessageType } from 'vs/workbench/services/search/common/searchExtTypes';101import type * as vscode from 'vscode';102103export interface IExtensionRegistries {104mine: ExtensionDescriptionRegistry;105all: ExtensionDescriptionRegistry;106}107108export interface IExtensionApiFactory {109(extension: IExtensionDescription, extensionInfo: IExtensionRegistries, configProvider: ExtHostConfigProvider): typeof vscode;110}111112/**113* This method instantiates and returns the extension API surface114*/115export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): IExtensionApiFactory {116117// services118const initData = accessor.get(IExtHostInitDataService);119const extHostFileSystemInfo = accessor.get(IExtHostFileSystemInfo);120const extHostConsumerFileSystem = accessor.get(IExtHostConsumerFileSystem);121const extensionService = accessor.get(IExtHostExtensionService);122const extHostWorkspace = accessor.get(IExtHostWorkspace);123const extHostTelemetry = accessor.get(IExtHostTelemetry);124const extHostConfiguration = accessor.get(IExtHostConfiguration);125const uriTransformer = accessor.get(IURITransformerService);126const rpcProtocol = accessor.get(IExtHostRpcService);127const extHostStorage = accessor.get(IExtHostStorage);128const extensionStoragePaths = accessor.get(IExtensionStoragePaths);129const extHostLoggerService = accessor.get(ILoggerService);130const extHostLogService = accessor.get(ILogService);131const extHostTunnelService = accessor.get(IExtHostTunnelService);132const extHostApiDeprecation = accessor.get(IExtHostApiDeprecationService);133const extHostWindow = accessor.get(IExtHostWindow);134const extHostSecretState = accessor.get(IExtHostSecretState);135const extHostEditorTabs = accessor.get(IExtHostEditorTabs);136137// register addressable instances138rpcProtocol.set(ExtHostContext.ExtHostFileSystemInfo, extHostFileSystemInfo);139rpcProtocol.set(ExtHostContext.ExtHostLogLevelServiceShape, <ExtHostLogLevelServiceShape><any>extHostLoggerService);140rpcProtocol.set(ExtHostContext.ExtHostWorkspace, extHostWorkspace);141rpcProtocol.set(ExtHostContext.ExtHostConfiguration, extHostConfiguration);142rpcProtocol.set(ExtHostContext.ExtHostExtensionService, extensionService);143rpcProtocol.set(ExtHostContext.ExtHostStorage, extHostStorage);144rpcProtocol.set(ExtHostContext.ExtHostTunnelService, extHostTunnelService);145rpcProtocol.set(ExtHostContext.ExtHostWindow, extHostWindow);146rpcProtocol.set(ExtHostContext.ExtHostSecretState, extHostSecretState);147rpcProtocol.set(ExtHostContext.ExtHostTelemetry, extHostTelemetry);148rpcProtocol.set(ExtHostContext.ExtHostEditorTabs, extHostEditorTabs);149150// automatically create and register addressable instances151const extHostDecorations = rpcProtocol.set(ExtHostContext.ExtHostDecorations, accessor.get(IExtHostDecorations));152const extHostDocumentsAndEditors = rpcProtocol.set(ExtHostContext.ExtHostDocumentsAndEditors, accessor.get(IExtHostDocumentsAndEditors));153const extHostCommands = rpcProtocol.set(ExtHostContext.ExtHostCommands, accessor.get(IExtHostCommands));154const extHostTerminalService = rpcProtocol.set(ExtHostContext.ExtHostTerminalService, accessor.get(IExtHostTerminalService));155const extHostDebugService = rpcProtocol.set(ExtHostContext.ExtHostDebugService, accessor.get(IExtHostDebugService));156const extHostSearch = rpcProtocol.set(ExtHostContext.ExtHostSearch, accessor.get(IExtHostSearch));157const extHostTask = rpcProtocol.set(ExtHostContext.ExtHostTask, accessor.get(IExtHostTask));158const extHostOutputService = rpcProtocol.set(ExtHostContext.ExtHostOutputService, accessor.get(IExtHostOutputService));159const extHostLocalization = rpcProtocol.set(ExtHostContext.ExtHostLocalization, accessor.get(IExtHostLocalizationService));160161// manually create and register addressable instances162const extHostUrls = rpcProtocol.set(ExtHostContext.ExtHostUrls, new ExtHostUrls(rpcProtocol));163const extHostDocuments = rpcProtocol.set(ExtHostContext.ExtHostDocuments, new ExtHostDocuments(rpcProtocol, extHostDocumentsAndEditors));164const extHostDocumentContentProviders = rpcProtocol.set(ExtHostContext.ExtHostDocumentContentProviders, new ExtHostDocumentContentProvider(rpcProtocol, extHostDocumentsAndEditors, extHostLogService));165const extHostDocumentSaveParticipant = rpcProtocol.set(ExtHostContext.ExtHostDocumentSaveParticipant, new ExtHostDocumentSaveParticipant(extHostLogService, extHostDocuments, rpcProtocol.getProxy(MainContext.MainThreadBulkEdits)));166const extHostNotebook = rpcProtocol.set(ExtHostContext.ExtHostNotebook, new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, extHostDocuments));167const extHostNotebookDocuments = rpcProtocol.set(ExtHostContext.ExtHostNotebookDocuments, new ExtHostNotebookDocuments(extHostNotebook));168const extHostNotebookEditors = rpcProtocol.set(ExtHostContext.ExtHostNotebookEditors, new ExtHostNotebookEditors(extHostLogService, extHostNotebook));169const extHostNotebookKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookKernels, new ExtHostNotebookKernels(rpcProtocol, initData, extHostNotebook, extHostCommands, extHostLogService));170const extHostNotebookRenderers = rpcProtocol.set(ExtHostContext.ExtHostNotebookRenderers, new ExtHostNotebookRenderers(rpcProtocol, extHostNotebook));171const extHostNotebookDocumentSaveParticipant = rpcProtocol.set(ExtHostContext.ExtHostNotebookDocumentSaveParticipant, new ExtHostNotebookDocumentSaveParticipant(extHostLogService, extHostNotebook, rpcProtocol.getProxy(MainContext.MainThreadBulkEdits)));172const extHostEditors = rpcProtocol.set(ExtHostContext.ExtHostEditors, new ExtHostEditors(rpcProtocol, extHostDocumentsAndEditors));173const extHostTreeViews = rpcProtocol.set(ExtHostContext.ExtHostTreeViews, new ExtHostTreeViews(rpcProtocol.getProxy(MainContext.MainThreadTreeViews), extHostCommands, extHostLogService));174const extHostEditorInsets = rpcProtocol.set(ExtHostContext.ExtHostEditorInsets, new ExtHostEditorInsets(rpcProtocol.getProxy(MainContext.MainThreadEditorInsets), extHostEditors, initData.remote));175const extHostDiagnostics = rpcProtocol.set(ExtHostContext.ExtHostDiagnostics, new ExtHostDiagnostics(rpcProtocol, extHostLogService, extHostFileSystemInfo, extHostDocumentsAndEditors));176const extHostLanguages = rpcProtocol.set(ExtHostContext.ExtHostLanguages, new ExtHostLanguages(rpcProtocol, extHostDocuments, extHostCommands.converter, uriTransformer));177const extHostLanguageFeatures = rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, new ExtHostLanguageFeatures(rpcProtocol, uriTransformer, extHostDocuments, extHostCommands, extHostDiagnostics, extHostLogService, extHostApiDeprecation, extHostTelemetry));178const extHostFileSystem = rpcProtocol.set(ExtHostContext.ExtHostFileSystem, new ExtHostFileSystem(rpcProtocol, extHostLanguageFeatures));179const extHostFileSystemEvent = rpcProtocol.set(ExtHostContext.ExtHostFileSystemEventService, new ExtHostFileSystemEventService(rpcProtocol, extHostLogService, extHostDocumentsAndEditors));180const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, createExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands));181const extHostSCM = rpcProtocol.set(ExtHostContext.ExtHostSCM, new ExtHostSCM(rpcProtocol, extHostCommands, extHostLogService));182const extHostQuickDiff = rpcProtocol.set(ExtHostContext.ExtHostQuickDiff, new ExtHostQuickDiff(rpcProtocol, uriTransformer));183const extHostComment = rpcProtocol.set(ExtHostContext.ExtHostComments, createExtHostComments(rpcProtocol, extHostCommands, extHostDocuments));184const extHostProgress = rpcProtocol.set(ExtHostContext.ExtHostProgress, new ExtHostProgress(rpcProtocol.getProxy(MainContext.MainThreadProgress)));185const extHostLabelService = rpcProtocol.set(ExtHostContext.ExtHosLabelService, new ExtHostLabelService(rpcProtocol));186const extHostTheming = rpcProtocol.set(ExtHostContext.ExtHostTheming, new ExtHostTheming(rpcProtocol));187const extHostAuthentication = rpcProtocol.set(ExtHostContext.ExtHostAuthentication, new ExtHostAuthentication(rpcProtocol));188const extHostTimeline = rpcProtocol.set(ExtHostContext.ExtHostTimeline, new ExtHostTimeline(rpcProtocol, extHostCommands));189const extHostWebviews = rpcProtocol.set(ExtHostContext.ExtHostWebviews, new ExtHostWebviews(rpcProtocol, initData.remote, extHostWorkspace, extHostLogService, extHostApiDeprecation));190const extHostWebviewPanels = rpcProtocol.set(ExtHostContext.ExtHostWebviewPanels, new ExtHostWebviewPanels(rpcProtocol, extHostWebviews, extHostWorkspace));191const extHostCustomEditors = rpcProtocol.set(ExtHostContext.ExtHostCustomEditors, new ExtHostCustomEditors(rpcProtocol, extHostDocuments, extensionStoragePaths, extHostWebviews, extHostWebviewPanels));192const extHostWebviewViews = rpcProtocol.set(ExtHostContext.ExtHostWebviewViews, new ExtHostWebviewViews(rpcProtocol, extHostWebviews));193const extHostTesting = rpcProtocol.set(ExtHostContext.ExtHostTesting, new ExtHostTesting(rpcProtocol, extHostCommands, extHostDocumentsAndEditors));194const extHostUriOpeners = rpcProtocol.set(ExtHostContext.ExtHostUriOpeners, new ExtHostUriOpeners(rpcProtocol));195const extHostProfileContentHandlers = rpcProtocol.set(ExtHostContext.ExtHostProfileContentHandlers, new ExtHostProfileContentHandlers(rpcProtocol));196rpcProtocol.set(ExtHostContext.ExtHostInteractive, new ExtHostInteractive(rpcProtocol, extHostNotebook, extHostDocumentsAndEditors, extHostCommands, extHostLogService));197const extHostInteractiveEditor = rpcProtocol.set(ExtHostContext.ExtHostInteractiveEditor, new ExtHostInteractiveEditor(rpcProtocol, extHostDocuments, extHostLogService, extHostCommands));198const extHostInteractiveSession = rpcProtocol.set(ExtHostContext.ExtHostInteractiveSession, new ExtHostInteractiveSession(rpcProtocol, extHostLogService));199200// Check that no named customers are missing201const expected = Object.values<ProxyIdentifier<any>>(ExtHostContext);202rpcProtocol.assertRegistered(expected);203204// Other instances205const extHostBulkEdits = new ExtHostBulkEdits(rpcProtocol, extHostDocumentsAndEditors);206const extHostClipboard = new ExtHostClipboard(rpcProtocol);207const extHostMessageService = new ExtHostMessageService(rpcProtocol, extHostLogService);208const extHostDialogs = new ExtHostDialogs(rpcProtocol);209const extHostStatusBar = new ExtHostStatusBar(rpcProtocol, extHostCommands.converter);210211// Register API-ish commands212ExtHostApiCommands.register(extHostCommands);213214return function (extension: IExtensionDescription, extensionInfo: IExtensionRegistries, configProvider: ExtHostConfigProvider): typeof vscode {215216// Check document selectors for being overly generic. Technically this isn't a problem but217// in practice many extensions say they support `fooLang` but need fs-access to do so. Those218// extension should specify then the `file`-scheme, e.g. `{ scheme: 'fooLang', language: 'fooLang' }`219// We only inform once, it is not a warning because we just want to raise awareness and because220// we cannot say if the extension is doing it right or wrong...221const checkSelector = (function () {222let done = !extension.isUnderDevelopment;223function informOnce() {224if (!done) {225extHostLogService.info(`Extension '${extension.identifier.value}' uses a document selector without scheme. Learn more about this: https://go.microsoft.com/fwlink/?linkid=872305`);226done = true;227}228}229return function perform(selector: vscode.DocumentSelector): vscode.DocumentSelector {230if (Array.isArray(selector)) {231selector.forEach(perform);232} else if (typeof selector === 'string') {233informOnce();234} else {235const filter = selector as vscode.DocumentFilter; // TODO: microsoft/TypeScript#42768236if (typeof filter.scheme === 'undefined') {237informOnce();238}239if (typeof filter.exclusive === 'boolean') {240checkProposedApiEnabled(extension, 'documentFiltersExclusive');241}242}243return selector;244};245})();246247const authentication: typeof vscode.authentication = {248getSession(providerId: string, scopes: readonly string[], options?: vscode.AuthenticationGetSessionOptions) {249return extHostAuthentication.getSession(extension, providerId, scopes, options as any);250},251getSessions(providerId: string, scopes: readonly string[]) {252checkProposedApiEnabled(extension, 'getSessions');253return extHostAuthentication.getSessions(extension, providerId, scopes);254},255// TODO: remove this after GHPR and Codespaces move off of it256async hasSession(providerId: string, scopes: readonly string[]) {257checkProposedApiEnabled(extension, 'authSession');258return !!(await extHostAuthentication.getSession(extension, providerId, scopes, { silent: true } as any));259},260get onDidChangeSessions(): Event<vscode.AuthenticationSessionsChangeEvent> {261return extHostAuthentication.onDidChangeSessions;262},263registerAuthenticationProvider(id: string, label: string, provider: vscode.AuthenticationProvider, options?: vscode.AuthenticationProviderOptions): vscode.Disposable {264return extHostAuthentication.registerAuthenticationProvider(id, label, provider, options);265}266};267268// namespace: commands269const commands: typeof vscode.commands = {270registerCommand(id: string, command: <T>(...args: any[]) => T | Thenable<T>, thisArgs?: any): vscode.Disposable {271return extHostCommands.registerCommand(true, id, command, thisArgs, undefined, extension);272},273registerTextEditorCommand(id: string, callback: (textEditor: vscode.TextEditor, edit: vscode.TextEditorEdit, ...args: any[]) => void, thisArg?: any): vscode.Disposable {274return extHostCommands.registerCommand(true, id, (...args: any[]): any => {275const activeTextEditor = extHostEditors.getActiveTextEditor();276if (!activeTextEditor) {277extHostLogService.warn('Cannot execute ' + id + ' because there is no active text editor.');278return undefined;279}280281return activeTextEditor.edit((edit: vscode.TextEditorEdit) => {282callback.apply(thisArg, [activeTextEditor, edit, ...args]);283284}).then((result) => {285if (!result) {286extHostLogService.warn('Edits from command ' + id + ' were not applied.');287}288}, (err) => {289extHostLogService.warn('An error occurred while running command ' + id, err);290});291}, undefined, undefined, extension);292},293registerDiffInformationCommand: (id: string, callback: (diff: vscode.LineChange[], ...args: any[]) => any, thisArg?: any): vscode.Disposable => {294checkProposedApiEnabled(extension, 'diffCommand');295return extHostCommands.registerCommand(true, id, async (...args: any[]): Promise<any> => {296const activeTextEditor = extHostDocumentsAndEditors.activeEditor(true);297if (!activeTextEditor) {298extHostLogService.warn('Cannot execute ' + id + ' because there is no active text editor.');299return undefined;300}301302const diff = await extHostEditors.getDiffInformation(activeTextEditor.id);303callback.apply(thisArg, [diff, ...args]);304}, undefined, undefined, extension);305},306executeCommand<T>(id: string, ...args: any[]): Thenable<T> {307return extHostCommands.executeCommand<T>(id, ...args);308},309getCommands(filterInternal: boolean = false): Thenable<string[]> {310return extHostCommands.getCommands(filterInternal);311}312};313314// namespace: env315const env: typeof vscode.env = {316get machineId() { return initData.telemetryInfo.machineId; },317get sessionId() { return initData.telemetryInfo.sessionId; },318get language() { return initData.environment.appLanguage; },319get appName() { return initData.environment.appName; },320get appRoot() { return initData.environment.appRoot?.fsPath ?? ''; },321get appHost() { return initData.environment.appHost; },322get uriScheme() { return initData.environment.appUriScheme; },323get clipboard(): vscode.Clipboard { return extHostClipboard.value; },324get shell() {325return extHostTerminalService.getDefaultShell(false);326},327get onDidChangeShell() {328checkProposedApiEnabled(extension, 'envShellEvent');329return extHostTerminalService.onDidChangeShell;330},331get isTelemetryEnabled() {332return extHostTelemetry.getTelemetryConfiguration();333},334get onDidChangeTelemetryEnabled(): Event<boolean> {335return extHostTelemetry.onDidChangeTelemetryEnabled;336},337get telemetryConfiguration(): vscode.TelemetryConfiguration {338checkProposedApiEnabled(extension, 'telemetry');339return extHostTelemetry.getTelemetryDetails();340},341get onDidChangeTelemetryConfiguration(): Event<vscode.TelemetryConfiguration> {342checkProposedApiEnabled(extension, 'telemetry');343return extHostTelemetry.onDidChangeTelemetryConfiguration;344},345get isNewAppInstall() {346return isNewAppInstall(initData.telemetryInfo.firstSessionDate);347},348createTelemetryLogger(sender: vscode.TelemetrySender, options?: vscode.TelemetryLoggerOptions): vscode.TelemetryLogger {349ExtHostTelemetryLogger.validateSender(sender);350return extHostTelemetry.instantiateLogger(extension, sender, options);351},352openExternal(uri: URI, options?: { allowContributedOpeners?: boolean | string }) {353return extHostWindow.openUri(uri, {354allowTunneling: !!initData.remote.authority,355allowContributedOpeners: options?.allowContributedOpeners,356});357},358async asExternalUri(uri: URI) {359if (uri.scheme === initData.environment.appUriScheme) {360return extHostUrls.createAppUri(uri);361}362363try {364return await extHostWindow.asExternalUri(uri, { allowTunneling: !!initData.remote.authority });365} catch (err) {366if (matchesScheme(uri, Schemas.http) || matchesScheme(uri, Schemas.https)) {367return uri;368}369370throw err;371}372},373get remoteName() {374return getRemoteName(initData.remote.authority);375},376get remoteAuthority() {377checkProposedApiEnabled(extension, 'resolvers');378return initData.remote.authority;379},380get uiKind() {381return initData.uiKind;382},383get logLevel() {384return extHostLogService.getLevel();385},386get onDidChangeLogLevel() {387return extHostLogService.onDidChangeLogLevel;388}389};390if (!initData.environment.extensionTestsLocationURI) {391// allow to patch env-function when running tests392Object.freeze(env);393}394395// namespace: tests396const tests: typeof vscode.tests = {397createTestController(provider, label, refreshHandler?: (token: vscode.CancellationToken) => Thenable<void> | void) {398return extHostTesting.createTestController(extension, provider, label, refreshHandler);399},400createTestObserver() {401checkProposedApiEnabled(extension, 'testObserver');402return extHostTesting.createTestObserver();403},404runTests(provider) {405checkProposedApiEnabled(extension, 'testObserver');406return extHostTesting.runTests(provider);407},408get onDidChangeTestResults() {409checkProposedApiEnabled(extension, 'testObserver');410return extHostTesting.onResultsChanged;411},412get testResults() {413checkProposedApiEnabled(extension, 'testObserver');414return extHostTesting.results;415},416};417418// namespace: extensions419const extensionKind = initData.remote.isRemote420? extHostTypes.ExtensionKind.Workspace421: extHostTypes.ExtensionKind.UI;422423const extensions: typeof vscode.extensions = {424getExtension(extensionId: string, includeFromDifferentExtensionHosts?: boolean): vscode.Extension<any> | undefined {425if (!isProposedApiEnabled(extension, 'extensionsAny')) {426includeFromDifferentExtensionHosts = false;427}428const mine = extensionInfo.mine.getExtensionDescription(extensionId);429if (mine) {430return new Extension(extensionService, extension.identifier, mine, extensionKind, false);431}432if (includeFromDifferentExtensionHosts) {433const foreign = extensionInfo.all.getExtensionDescription(extensionId);434if (foreign) {435return new Extension(extensionService, extension.identifier, foreign, extensionKind /* TODO@alexdima THIS IS WRONG */, true);436}437}438return undefined;439},440get all(): vscode.Extension<any>[] {441const result: vscode.Extension<any>[] = [];442for (const desc of extensionInfo.mine.getAllExtensionDescriptions()) {443result.push(new Extension(extensionService, extension.identifier, desc, extensionKind, false));444}445return result;446},447get allAcrossExtensionHosts(): vscode.Extension<any>[] {448checkProposedApiEnabled(extension, 'extensionsAny');449const local = new ExtensionIdentifierSet(extensionInfo.mine.getAllExtensionDescriptions().map(desc => desc.identifier));450const result: vscode.Extension<any>[] = [];451for (const desc of extensionInfo.all.getAllExtensionDescriptions()) {452const isFromDifferentExtensionHost = !local.has(desc.identifier);453result.push(new Extension(extensionService, extension.identifier, desc, extensionKind /* TODO@alexdima THIS IS WRONG */, isFromDifferentExtensionHost));454}455return result;456},457get onDidChange() {458if (isProposedApiEnabled(extension, 'extensionsAny')) {459return Event.any(extensionInfo.mine.onDidChange, extensionInfo.all.onDidChange);460}461return extensionInfo.mine.onDidChange;462}463};464465// namespace: languages466const languages: typeof vscode.languages = {467createDiagnosticCollection(name?: string): vscode.DiagnosticCollection {468return extHostDiagnostics.createDiagnosticCollection(extension.identifier, name);469},470get onDidChangeDiagnostics() {471return extHostDiagnostics.onDidChangeDiagnostics;472},473getDiagnostics: (resource?: vscode.Uri) => {474return <any>extHostDiagnostics.getDiagnostics(resource);475},476getLanguages(): Thenable<string[]> {477return extHostLanguages.getLanguages();478},479setTextDocumentLanguage(document: vscode.TextDocument, languageId: string): Thenable<vscode.TextDocument> {480return extHostLanguages.changeLanguage(document.uri, languageId);481},482match(selector: vscode.DocumentSelector, document: vscode.TextDocument): number {483const notebook = extHostDocuments.getDocumentData(document.uri)?.notebook;484return score(typeConverters.LanguageSelector.from(selector), document.uri, document.languageId, true, notebook?.uri, notebook?.notebookType);485},486registerCodeActionsProvider(selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider, metadata?: vscode.CodeActionProviderMetadata): vscode.Disposable {487return extHostLanguageFeatures.registerCodeActionProvider(extension, checkSelector(selector), provider, metadata);488},489registerDocumentPasteEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentPasteEditProvider, metadata: vscode.DocumentPasteProviderMetadata): vscode.Disposable {490checkProposedApiEnabled(extension, 'documentPaste');491return extHostLanguageFeatures.registerDocumentPasteEditProvider(extension, checkSelector(selector), provider, metadata);492},493registerCodeLensProvider(selector: vscode.DocumentSelector, provider: vscode.CodeLensProvider): vscode.Disposable {494return extHostLanguageFeatures.registerCodeLensProvider(extension, checkSelector(selector), provider);495},496registerDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.DefinitionProvider): vscode.Disposable {497return extHostLanguageFeatures.registerDefinitionProvider(extension, checkSelector(selector), provider);498},499registerDeclarationProvider(selector: vscode.DocumentSelector, provider: vscode.DeclarationProvider): vscode.Disposable {500return extHostLanguageFeatures.registerDeclarationProvider(extension, checkSelector(selector), provider);501},502registerImplementationProvider(selector: vscode.DocumentSelector, provider: vscode.ImplementationProvider): vscode.Disposable {503return extHostLanguageFeatures.registerImplementationProvider(extension, checkSelector(selector), provider);504},505registerTypeDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.TypeDefinitionProvider): vscode.Disposable {506return extHostLanguageFeatures.registerTypeDefinitionProvider(extension, checkSelector(selector), provider);507},508registerHoverProvider(selector: vscode.DocumentSelector, provider: vscode.HoverProvider): vscode.Disposable {509return extHostLanguageFeatures.registerHoverProvider(extension, checkSelector(selector), provider, extension.identifier);510},511registerEvaluatableExpressionProvider(selector: vscode.DocumentSelector, provider: vscode.EvaluatableExpressionProvider): vscode.Disposable {512return extHostLanguageFeatures.registerEvaluatableExpressionProvider(extension, checkSelector(selector), provider, extension.identifier);513},514registerInlineValuesProvider(selector: vscode.DocumentSelector, provider: vscode.InlineValuesProvider): vscode.Disposable {515return extHostLanguageFeatures.registerInlineValuesProvider(extension, checkSelector(selector), provider, extension.identifier);516},517registerDocumentHighlightProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentHighlightProvider): vscode.Disposable {518return extHostLanguageFeatures.registerDocumentHighlightProvider(extension, checkSelector(selector), provider);519},520registerLinkedEditingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.LinkedEditingRangeProvider): vscode.Disposable {521return extHostLanguageFeatures.registerLinkedEditingRangeProvider(extension, checkSelector(selector), provider);522},523registerReferenceProvider(selector: vscode.DocumentSelector, provider: vscode.ReferenceProvider): vscode.Disposable {524return extHostLanguageFeatures.registerReferenceProvider(extension, checkSelector(selector), provider);525},526registerRenameProvider(selector: vscode.DocumentSelector, provider: vscode.RenameProvider): vscode.Disposable {527return extHostLanguageFeatures.registerRenameProvider(extension, checkSelector(selector), provider);528},529registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider, metadata?: vscode.DocumentSymbolProviderMetadata): vscode.Disposable {530return extHostLanguageFeatures.registerDocumentSymbolProvider(extension, checkSelector(selector), provider, metadata);531},532registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): vscode.Disposable {533return extHostLanguageFeatures.registerWorkspaceSymbolProvider(extension, provider);534},535registerDocumentFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentFormattingEditProvider): vscode.Disposable {536return extHostLanguageFeatures.registerDocumentFormattingEditProvider(extension, checkSelector(selector), provider);537},538registerDocumentRangeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeFormattingEditProvider): vscode.Disposable {539return extHostLanguageFeatures.registerDocumentRangeFormattingEditProvider(extension, checkSelector(selector), provider);540},541registerOnTypeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacters: string[]): vscode.Disposable {542return extHostLanguageFeatures.registerOnTypeFormattingEditProvider(extension, checkSelector(selector), provider, [firstTriggerCharacter].concat(moreTriggerCharacters));543},544registerDocumentSemanticTokensProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSemanticTokensProvider, legend: vscode.SemanticTokensLegend): vscode.Disposable {545return extHostLanguageFeatures.registerDocumentSemanticTokensProvider(extension, checkSelector(selector), provider, legend);546},547registerDocumentRangeSemanticTokensProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeSemanticTokensProvider, legend: vscode.SemanticTokensLegend): vscode.Disposable {548return extHostLanguageFeatures.registerDocumentRangeSemanticTokensProvider(extension, checkSelector(selector), provider, legend);549},550registerSignatureHelpProvider(selector: vscode.DocumentSelector, provider: vscode.SignatureHelpProvider, firstItem?: string | vscode.SignatureHelpProviderMetadata, ...remaining: string[]): vscode.Disposable {551if (typeof firstItem === 'object') {552return extHostLanguageFeatures.registerSignatureHelpProvider(extension, checkSelector(selector), provider, firstItem);553}554return extHostLanguageFeatures.registerSignatureHelpProvider(extension, checkSelector(selector), provider, typeof firstItem === 'undefined' ? [] : [firstItem, ...remaining]);555},556registerCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.CompletionItemProvider, ...triggerCharacters: string[]): vscode.Disposable {557return extHostLanguageFeatures.registerCompletionItemProvider(extension, checkSelector(selector), provider, triggerCharacters);558},559registerInlineCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.InlineCompletionItemProvider): vscode.Disposable {560if (provider.handleDidShowCompletionItem) {561checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');562}563if (provider.handleDidPartiallyAcceptCompletionItem) {564checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');565}566return extHostLanguageFeatures.registerInlineCompletionsProvider(extension, checkSelector(selector), provider);567},568registerDocumentLinkProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentLinkProvider): vscode.Disposable {569return extHostLanguageFeatures.registerDocumentLinkProvider(extension, checkSelector(selector), provider);570},571registerColorProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentColorProvider): vscode.Disposable {572return extHostLanguageFeatures.registerColorProvider(extension, checkSelector(selector), provider);573},574registerFoldingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): vscode.Disposable {575return extHostLanguageFeatures.registerFoldingRangeProvider(extension, checkSelector(selector), provider);576},577registerSelectionRangeProvider(selector: vscode.DocumentSelector, provider: vscode.SelectionRangeProvider): vscode.Disposable {578return extHostLanguageFeatures.registerSelectionRangeProvider(extension, selector, provider);579},580registerCallHierarchyProvider(selector: vscode.DocumentSelector, provider: vscode.CallHierarchyProvider): vscode.Disposable {581return extHostLanguageFeatures.registerCallHierarchyProvider(extension, selector, provider);582},583registerTypeHierarchyProvider(selector: vscode.DocumentSelector, provider: vscode.TypeHierarchyProvider): vscode.Disposable {584return extHostLanguageFeatures.registerTypeHierarchyProvider(extension, selector, provider);585},586setLanguageConfiguration: (language: string, configuration: vscode.LanguageConfiguration): vscode.Disposable => {587return extHostLanguageFeatures.setLanguageConfiguration(extension, language, configuration);588},589getTokenInformationAtPosition(doc: vscode.TextDocument, pos: vscode.Position) {590checkProposedApiEnabled(extension, 'tokenInformation');591return extHostLanguages.tokenAtPosition(doc, pos);592},593registerInlayHintsProvider(selector: vscode.DocumentSelector, provider: vscode.InlayHintsProvider): vscode.Disposable {594return extHostLanguageFeatures.registerInlayHintsProvider(extension, selector, provider);595},596createLanguageStatusItem(id: string, selector: vscode.DocumentSelector): vscode.LanguageStatusItem {597return extHostLanguages.createLanguageStatusItem(extension, id, selector);598},599registerDocumentDropEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentDropEditProvider): vscode.Disposable {600return extHostLanguageFeatures.registerDocumentOnDropEditProvider(extension, selector, provider);601}602};603604// namespace: window605const window: typeof vscode.window = {606get activeTextEditor() {607return extHostEditors.getActiveTextEditor();608},609get visibleTextEditors() {610return extHostEditors.getVisibleTextEditors();611},612get activeTerminal() {613return extHostTerminalService.activeTerminal;614},615get terminals() {616return extHostTerminalService.terminals;617},618async showTextDocument(documentOrUri: vscode.TextDocument | vscode.Uri, columnOrOptions?: vscode.ViewColumn | vscode.TextDocumentShowOptions, preserveFocus?: boolean): Promise<vscode.TextEditor> {619const document = await (URI.isUri(documentOrUri)620? Promise.resolve(workspace.openTextDocument(documentOrUri))621: Promise.resolve(<vscode.TextDocument>documentOrUri));622623return extHostEditors.showTextDocument(document, columnOrOptions, preserveFocus);624},625createTextEditorDecorationType(options: vscode.DecorationRenderOptions): vscode.TextEditorDecorationType {626return extHostEditors.createTextEditorDecorationType(extension, options);627},628onDidChangeActiveTextEditor(listener, thisArg?, disposables?) {629return extHostEditors.onDidChangeActiveTextEditor(listener, thisArg, disposables);630},631onDidChangeVisibleTextEditors(listener, thisArg, disposables) {632return extHostEditors.onDidChangeVisibleTextEditors(listener, thisArg, disposables);633},634onDidChangeTextEditorSelection(listener: (e: vscode.TextEditorSelectionChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {635return extHostEditors.onDidChangeTextEditorSelection(listener, thisArgs, disposables);636},637onDidChangeTextEditorOptions(listener: (e: vscode.TextEditorOptionsChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {638return extHostEditors.onDidChangeTextEditorOptions(listener, thisArgs, disposables);639},640onDidChangeTextEditorVisibleRanges(listener: (e: vscode.TextEditorVisibleRangesChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {641return extHostEditors.onDidChangeTextEditorVisibleRanges(listener, thisArgs, disposables);642},643onDidChangeTextEditorViewColumn(listener, thisArg?, disposables?) {644return extHostEditors.onDidChangeTextEditorViewColumn(listener, thisArg, disposables);645},646onDidCloseTerminal(listener, thisArg?, disposables?) {647return extHostTerminalService.onDidCloseTerminal(listener, thisArg, disposables);648},649onDidOpenTerminal(listener, thisArg?, disposables?) {650return extHostTerminalService.onDidOpenTerminal(listener, thisArg, disposables);651},652onDidChangeActiveTerminal(listener, thisArg?, disposables?) {653return extHostTerminalService.onDidChangeActiveTerminal(listener, thisArg, disposables);654},655onDidChangeTerminalDimensions(listener, thisArg?, disposables?) {656checkProposedApiEnabled(extension, 'terminalDimensions');657return extHostTerminalService.onDidChangeTerminalDimensions(listener, thisArg, disposables);658},659onDidChangeTerminalState(listener, thisArg?, disposables?) {660return extHostTerminalService.onDidChangeTerminalState(listener, thisArg, disposables);661},662onDidWriteTerminalData(listener, thisArg?, disposables?) {663checkProposedApiEnabled(extension, 'terminalDataWriteEvent');664return extHostTerminalService.onDidWriteTerminalData(listener, thisArg, disposables);665},666get state() {667return extHostWindow.state;668},669onDidChangeWindowState(listener, thisArg?, disposables?) {670return extHostWindow.onDidChangeWindowState(listener, thisArg, disposables);671},672showInformationMessage(message: string, ...rest: Array<vscode.MessageOptions | string | vscode.MessageItem>) {673return <Thenable<any>>extHostMessageService.showMessage(extension, Severity.Info, message, rest[0], <Array<string | vscode.MessageItem>>rest.slice(1));674},675showWarningMessage(message: string, ...rest: Array<vscode.MessageOptions | string | vscode.MessageItem>) {676return <Thenable<any>>extHostMessageService.showMessage(extension, Severity.Warning, message, rest[0], <Array<string | vscode.MessageItem>>rest.slice(1));677},678showErrorMessage(message: string, ...rest: Array<vscode.MessageOptions | string | vscode.MessageItem>) {679return <Thenable<any>>extHostMessageService.showMessage(extension, Severity.Error, message, rest[0], <Array<string | vscode.MessageItem>>rest.slice(1));680},681showQuickPick(items: any, options?: vscode.QuickPickOptions, token?: vscode.CancellationToken): any {682return extHostQuickOpen.showQuickPick(extension, items, options, token);683},684showWorkspaceFolderPick(options?: vscode.WorkspaceFolderPickOptions) {685return extHostQuickOpen.showWorkspaceFolderPick(options);686},687showInputBox(options?: vscode.InputBoxOptions, token?: vscode.CancellationToken) {688return extHostQuickOpen.showInput(options, token);689},690showOpenDialog(options) {691return extHostDialogs.showOpenDialog(extension, options);692},693showSaveDialog(options) {694return extHostDialogs.showSaveDialog(options);695},696createStatusBarItem(alignmentOrId?: vscode.StatusBarAlignment | string, priorityOrAlignment?: number | vscode.StatusBarAlignment, priorityArg?: number): vscode.StatusBarItem {697let id: string | undefined;698let alignment: number | undefined;699let priority: number | undefined;700701if (typeof alignmentOrId === 'string') {702id = alignmentOrId;703alignment = priorityOrAlignment;704priority = priorityArg;705} else {706alignment = alignmentOrId;707priority = priorityOrAlignment;708}709710return extHostStatusBar.createStatusBarEntry(extension, id, alignment, priority);711},712setStatusBarMessage(text: string, timeoutOrThenable?: number | Thenable<any>): vscode.Disposable {713return extHostStatusBar.setStatusBarMessage(text, timeoutOrThenable);714},715withScmProgress<R>(task: (progress: vscode.Progress<number>) => Thenable<R>) {716extHostApiDeprecation.report('window.withScmProgress', extension,717`Use 'withProgress' instead.`);718719return extHostProgress.withProgress(extension, { location: extHostTypes.ProgressLocation.SourceControl }, (progress, token) => task({ report(n: number) { /*noop*/ } }));720},721withProgress<R>(options: vscode.ProgressOptions, task: (progress: vscode.Progress<{ message?: string; worked?: number }>, token: vscode.CancellationToken) => Thenable<R>) {722return extHostProgress.withProgress(extension, options, task);723},724createOutputChannel(name: string, options: string | { log: true } | undefined): any {725return extHostOutputService.createOutputChannel(name, options, extension);726},727createWebviewPanel(viewType: string, title: string, showOptions: vscode.ViewColumn | { viewColumn: vscode.ViewColumn; preserveFocus?: boolean }, options?: vscode.WebviewPanelOptions & vscode.WebviewOptions): vscode.WebviewPanel {728return extHostWebviewPanels.createWebviewPanel(extension, viewType, title, showOptions, options);729},730createWebviewTextEditorInset(editor: vscode.TextEditor, line: number, height: number, options?: vscode.WebviewOptions): vscode.WebviewEditorInset {731checkProposedApiEnabled(extension, 'editorInsets');732return extHostEditorInsets.createWebviewEditorInset(editor, line, height, options, extension);733},734createTerminal(nameOrOptions?: vscode.TerminalOptions | vscode.ExtensionTerminalOptions | string, shellPath?: string, shellArgs?: readonly string[] | string): vscode.Terminal {735if (typeof nameOrOptions === 'object') {736if ('pty' in nameOrOptions) {737return extHostTerminalService.createExtensionTerminal(nameOrOptions);738}739return extHostTerminalService.createTerminalFromOptions(nameOrOptions);740}741return extHostTerminalService.createTerminal(nameOrOptions, shellPath, shellArgs);742},743registerTerminalLinkProvider(provider: vscode.TerminalLinkProvider): vscode.Disposable {744return extHostTerminalService.registerLinkProvider(provider);745},746registerTerminalProfileProvider(id: string, provider: vscode.TerminalProfileProvider): vscode.Disposable {747return extHostTerminalService.registerProfileProvider(extension, id, provider);748},749registerTerminalQuickFixProvider(id: string, provider: vscode.TerminalQuickFixProvider): vscode.Disposable {750checkProposedApiEnabled(extension, 'terminalQuickFixProvider');751return extHostTerminalService.registerTerminalQuickFixProvider(id, extension.identifier.value, provider);752},753registerTreeDataProvider(viewId: string, treeDataProvider: vscode.TreeDataProvider<any>): vscode.Disposable {754return extHostTreeViews.registerTreeDataProvider(viewId, treeDataProvider, extension);755},756createTreeView(viewId: string, options: { treeDataProvider: vscode.TreeDataProvider<any> }): vscode.TreeView<any> {757return extHostTreeViews.createTreeView(viewId, options, extension);758},759registerWebviewPanelSerializer: (viewType: string, serializer: vscode.WebviewPanelSerializer) => {760return extHostWebviewPanels.registerWebviewPanelSerializer(extension, viewType, serializer);761},762registerCustomEditorProvider: (viewType: string, provider: vscode.CustomTextEditorProvider | vscode.CustomReadonlyEditorProvider, options: { webviewOptions?: vscode.WebviewPanelOptions; supportsMultipleEditorsPerDocument?: boolean } = {}) => {763return extHostCustomEditors.registerCustomEditorProvider(extension, viewType, provider, options);764},765registerFileDecorationProvider(provider: vscode.FileDecorationProvider) {766return extHostDecorations.registerFileDecorationProvider(provider, extension);767},768registerUriHandler(handler: vscode.UriHandler) {769return extHostUrls.registerUriHandler(extension.identifier, handler);770},771createQuickPick<T extends vscode.QuickPickItem>(): vscode.QuickPick<T> {772return extHostQuickOpen.createQuickPick(extension);773},774createInputBox(): vscode.InputBox {775return extHostQuickOpen.createInputBox(extension);776},777get activeColorTheme(): vscode.ColorTheme {778return extHostTheming.activeColorTheme;779},780onDidChangeActiveColorTheme(listener, thisArg?, disposables?) {781return extHostTheming.onDidChangeActiveColorTheme(listener, thisArg, disposables);782},783registerWebviewViewProvider(viewId: string, provider: vscode.WebviewViewProvider, options?: {784webviewOptions?: {785retainContextWhenHidden?: boolean;786};787}) {788return extHostWebviewViews.registerWebviewViewProvider(extension, viewId, provider, options?.webviewOptions);789},790get activeNotebookEditor(): vscode.NotebookEditor | undefined {791return extHostNotebook.activeNotebookEditor;792},793onDidChangeActiveNotebookEditor(listener, thisArgs?, disposables?) {794return extHostNotebook.onDidChangeActiveNotebookEditor(listener, thisArgs, disposables);795},796get visibleNotebookEditors() {797return extHostNotebook.visibleNotebookEditors;798},799get onDidChangeVisibleNotebookEditors() {800return extHostNotebook.onDidChangeVisibleNotebookEditors;801},802onDidChangeNotebookEditorSelection(listener, thisArgs?, disposables?) {803return extHostNotebookEditors.onDidChangeNotebookEditorSelection(listener, thisArgs, disposables);804},805onDidChangeNotebookEditorVisibleRanges(listener, thisArgs?, disposables?) {806return extHostNotebookEditors.onDidChangeNotebookEditorVisibleRanges(listener, thisArgs, disposables);807},808showNotebookDocument(document, options?) {809return extHostNotebook.showNotebookDocument(document, options);810},811registerExternalUriOpener(id: string, opener: vscode.ExternalUriOpener, metadata: vscode.ExternalUriOpenerMetadata) {812checkProposedApiEnabled(extension, 'externalUriOpener');813return extHostUriOpeners.registerExternalUriOpener(extension.identifier, id, opener, metadata);814},815registerProfileContentHandler(id: string, handler: vscode.ProfileContentHandler) {816checkProposedApiEnabled(extension, 'profileContentHandlers');817return extHostProfileContentHandlers.registrProfileContentHandler(extension, id, handler);818},819registerQuickDiffProvider(selector: vscode.DocumentSelector, quickDiffProvider: vscode.QuickDiffProvider, label: string, rootUri?: vscode.Uri): vscode.Disposable {820checkProposedApiEnabled(extension, 'quickDiffProvider');821return extHostQuickDiff.registerQuickDiffProvider(checkSelector(selector), quickDiffProvider, label, rootUri);822},823get tabGroups(): vscode.TabGroups {824return extHostEditorTabs.tabGroups;825}826};827828// namespace: workspace829830const workspace: typeof vscode.workspace = {831get rootPath() {832extHostApiDeprecation.report('workspace.rootPath', extension,833`Please use 'workspace.workspaceFolders' instead. More details: https://aka.ms/vscode-eliminating-rootpath`);834835return extHostWorkspace.getPath();836},837set rootPath(value) {838throw errors.readonly();839},840getWorkspaceFolder(resource) {841return extHostWorkspace.getWorkspaceFolder(resource);842},843get workspaceFolders() {844return extHostWorkspace.getWorkspaceFolders();845},846get name() {847return extHostWorkspace.name;848},849set name(value) {850throw errors.readonly();851},852get workspaceFile() {853return extHostWorkspace.workspaceFile;854},855set workspaceFile(value) {856throw errors.readonly();857},858updateWorkspaceFolders: (index, deleteCount, ...workspaceFoldersToAdd) => {859return extHostWorkspace.updateWorkspaceFolders(extension, index, deleteCount || 0, ...workspaceFoldersToAdd);860},861onDidChangeWorkspaceFolders: function (listener, thisArgs?, disposables?) {862return extHostWorkspace.onDidChangeWorkspace(listener, thisArgs, disposables);863},864asRelativePath: (pathOrUri, includeWorkspace?) => {865return extHostWorkspace.getRelativePath(pathOrUri, includeWorkspace);866},867findFiles: (include, exclude, maxResults?, token?) => {868// Note, undefined/null have different meanings on "exclude"869return extHostWorkspace.findFiles(include, exclude, maxResults, extension.identifier, token);870},871findTextInFiles: (query: vscode.TextSearchQuery, optionsOrCallback: vscode.FindTextInFilesOptions | ((result: vscode.TextSearchResult) => void), callbackOrToken?: vscode.CancellationToken | ((result: vscode.TextSearchResult) => void), token?: vscode.CancellationToken) => {872checkProposedApiEnabled(extension, 'findTextInFiles');873let options: vscode.FindTextInFilesOptions;874let callback: (result: vscode.TextSearchResult) => void;875876if (typeof optionsOrCallback === 'object') {877options = optionsOrCallback;878callback = callbackOrToken as (result: vscode.TextSearchResult) => void;879} else {880options = {};881callback = optionsOrCallback;882token = callbackOrToken as vscode.CancellationToken;883}884885return extHostWorkspace.findTextInFiles(query, options || {}, callback, extension.identifier, token);886},887saveAll: (includeUntitled?) => {888return extHostWorkspace.saveAll(includeUntitled);889},890applyEdit(edit: vscode.WorkspaceEdit, metadata?: vscode.WorkspaceEditMetadata): Thenable<boolean> {891return extHostBulkEdits.applyWorkspaceEdit(edit, extension, metadata);892},893createFileSystemWatcher: (pattern, ignoreCreate, ignoreChange, ignoreDelete): vscode.FileSystemWatcher => {894return extHostFileSystemEvent.createFileSystemWatcher(extHostWorkspace, extension, pattern, ignoreCreate, ignoreChange, ignoreDelete);895},896get textDocuments() {897return extHostDocuments.getAllDocumentData().map(data => data.document);898},899set textDocuments(value) {900throw errors.readonly();901},902openTextDocument(uriOrFileNameOrOptions?: vscode.Uri | string | { language?: string; content?: string }) {903let uriPromise: Thenable<URI>;904905const options = uriOrFileNameOrOptions as { language?: string; content?: string };906if (typeof uriOrFileNameOrOptions === 'string') {907uriPromise = Promise.resolve(URI.file(uriOrFileNameOrOptions));908} else if (URI.isUri(uriOrFileNameOrOptions)) {909uriPromise = Promise.resolve(uriOrFileNameOrOptions);910} else if (!options || typeof options === 'object') {911uriPromise = extHostDocuments.createDocumentData(options);912} else {913throw new Error('illegal argument - uriOrFileNameOrOptions');914}915916return uriPromise.then(uri => {917return extHostDocuments.ensureDocumentData(uri).then(documentData => {918return documentData.document;919});920});921},922onDidOpenTextDocument: (listener, thisArgs?, disposables?) => {923return extHostDocuments.onDidAddDocument(listener, thisArgs, disposables);924},925onDidCloseTextDocument: (listener, thisArgs?, disposables?) => {926return extHostDocuments.onDidRemoveDocument(listener, thisArgs, disposables);927},928onDidChangeTextDocument: (listener, thisArgs?, disposables?) => {929return extHostDocuments.onDidChangeDocument(listener, thisArgs, disposables);930},931onDidSaveTextDocument: (listener, thisArgs?, disposables?) => {932return extHostDocuments.onDidSaveDocument(listener, thisArgs, disposables);933},934onWillSaveTextDocument: (listener, thisArgs?, disposables?) => {935return extHostDocumentSaveParticipant.getOnWillSaveTextDocumentEvent(extension)(listener, thisArgs, disposables);936},937get notebookDocuments(): vscode.NotebookDocument[] {938return extHostNotebook.notebookDocuments.map(d => d.apiNotebook);939},940async openNotebookDocument(uriOrType?: URI | string, content?: vscode.NotebookData) {941let uri: URI;942if (URI.isUri(uriOrType)) {943uri = uriOrType;944await extHostNotebook.openNotebookDocument(uriOrType);945} else if (typeof uriOrType === 'string') {946uri = URI.revive(await extHostNotebook.newNotebookDocument({ viewType: uriOrType, content }));947} else {948throw new Error('Invalid arguments');949}950return extHostNotebook.getNotebookDocument(uri).apiNotebook;951},952onDidSaveNotebookDocument(listener, thisArg, disposables) {953return extHostNotebookDocuments.onDidSaveNotebookDocument(listener, thisArg, disposables);954},955onDidChangeNotebookDocument(listener, thisArg, disposables) {956return extHostNotebookDocuments.onDidChangeNotebookDocument(listener, thisArg, disposables);957},958onWillSaveNotebookDocument(listener, thisArg, disposables) {959checkProposedApiEnabled(extension, 'notebookDocumentWillSave');960return extHostNotebookDocumentSaveParticipant.getOnWillSaveNotebookDocumentEvent(extension)(listener, thisArg, disposables);961},962get onDidOpenNotebookDocument(): Event<vscode.NotebookDocument> {963return extHostNotebook.onDidOpenNotebookDocument;964},965get onDidCloseNotebookDocument(): Event<vscode.NotebookDocument> {966return extHostNotebook.onDidCloseNotebookDocument;967},968registerNotebookSerializer(viewType: string, serializer: vscode.NotebookSerializer, options?: vscode.NotebookDocumentContentOptions, registration?: vscode.NotebookRegistrationData) {969return extHostNotebook.registerNotebookSerializer(extension, viewType, serializer, options, isProposedApiEnabled(extension, 'notebookLiveShare') ? registration : undefined);970},971onDidChangeConfiguration: (listener: (_: any) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) => {972return configProvider.onDidChangeConfiguration(listener, thisArgs, disposables);973},974getConfiguration(section?: string, scope?: vscode.ConfigurationScope | null): vscode.WorkspaceConfiguration {975scope = arguments.length === 1 ? undefined : scope;976return configProvider.getConfiguration(section, scope, extension);977},978registerTextDocumentContentProvider(scheme: string, provider: vscode.TextDocumentContentProvider) {979return extHostDocumentContentProviders.registerTextDocumentContentProvider(scheme, provider);980},981registerTaskProvider: (type: string, provider: vscode.TaskProvider) => {982extHostApiDeprecation.report('window.registerTaskProvider', extension,983`Use the corresponding function on the 'tasks' namespace instead`);984985return extHostTask.registerTaskProvider(extension, type, provider);986},987registerFileSystemProvider(scheme, provider, options) {988return combinedDisposable(989extHostFileSystem.registerFileSystemProvider(extension, scheme, provider, options),990extHostConsumerFileSystem.addFileSystemProvider(scheme, provider)991);992},993get fs() {994return extHostConsumerFileSystem.value;995},996registerFileSearchProvider: (scheme: string, provider: vscode.FileSearchProvider) => {997checkProposedApiEnabled(extension, 'fileSearchProvider');998return extHostSearch.registerFileSearchProvider(scheme, provider);999},1000registerTextSearchProvider: (scheme: string, provider: vscode.TextSearchProvider) => {1001checkProposedApiEnabled(extension, 'textSearchProvider');1002return extHostSearch.registerTextSearchProvider(scheme, provider);1003},1004registerRemoteAuthorityResolver: (authorityPrefix: string, resolver: vscode.RemoteAuthorityResolver) => {1005checkProposedApiEnabled(extension, 'resolvers');1006return extensionService.registerRemoteAuthorityResolver(authorityPrefix, resolver);1007},1008registerResourceLabelFormatter: (formatter: vscode.ResourceLabelFormatter) => {1009checkProposedApiEnabled(extension, 'resolvers');1010return extHostLabelService.$registerResourceLabelFormatter(formatter);1011},1012onDidCreateFiles: (listener, thisArg, disposables) => {1013return extHostFileSystemEvent.onDidCreateFile(listener, thisArg, disposables);1014},1015onDidDeleteFiles: (listener, thisArg, disposables) => {1016return extHostFileSystemEvent.onDidDeleteFile(listener, thisArg, disposables);1017},1018onDidRenameFiles: (listener, thisArg, disposables) => {1019return extHostFileSystemEvent.onDidRenameFile(listener, thisArg, disposables);1020},1021onWillCreateFiles: (listener: (e: vscode.FileWillCreateEvent) => any, thisArg?: any, disposables?: vscode.Disposable[]) => {1022return extHostFileSystemEvent.getOnWillCreateFileEvent(extension)(listener, thisArg, disposables);1023},1024onWillDeleteFiles: (listener: (e: vscode.FileWillDeleteEvent) => any, thisArg?: any, disposables?: vscode.Disposable[]) => {1025return extHostFileSystemEvent.getOnWillDeleteFileEvent(extension)(listener, thisArg, disposables);1026},1027onWillRenameFiles: (listener: (e: vscode.FileWillRenameEvent) => any, thisArg?: any, disposables?: vscode.Disposable[]) => {1028return extHostFileSystemEvent.getOnWillRenameFileEvent(extension)(listener, thisArg, disposables);1029},1030openTunnel: (forward: vscode.TunnelOptions) => {1031checkProposedApiEnabled(extension, 'tunnels');1032return extHostTunnelService.openTunnel(extension, forward).then(value => {1033if (!value) {1034throw new Error('cannot open tunnel');1035}1036return value;1037});1038},1039get tunnels() {1040checkProposedApiEnabled(extension, 'tunnels');1041return extHostTunnelService.getTunnels();1042},1043onDidChangeTunnels: (listener, thisArg?, disposables?) => {1044checkProposedApiEnabled(extension, 'tunnels');1045return extHostTunnelService.onDidChangeTunnels(listener, thisArg, disposables);1046},1047registerPortAttributesProvider: (portSelector: { pid?: number; portRange?: [number, number]; commandMatcher?: RegExp }, provider: vscode.PortAttributesProvider) => {1048checkProposedApiEnabled(extension, 'portsAttributes');1049return extHostTunnelService.registerPortsAttributesProvider(portSelector, provider);1050},1051registerTimelineProvider: (scheme: string | string[], provider: vscode.TimelineProvider) => {1052checkProposedApiEnabled(extension, 'timeline');1053return extHostTimeline.registerTimelineProvider(scheme, provider, extension.identifier, extHostCommands.converter);1054},1055get isTrusted() {1056return extHostWorkspace.trusted;1057},1058requestWorkspaceTrust: (options?: vscode.WorkspaceTrustRequestOptions) => {1059checkProposedApiEnabled(extension, 'workspaceTrust');1060return extHostWorkspace.requestWorkspaceTrust(options);1061},1062onDidGrantWorkspaceTrust: (listener, thisArgs?, disposables?) => {1063return extHostWorkspace.onDidGrantWorkspaceTrust(listener, thisArgs, disposables);1064},1065registerEditSessionIdentityProvider: (scheme: string, provider: vscode.EditSessionIdentityProvider) => {1066checkProposedApiEnabled(extension, 'editSessionIdentityProvider');1067return extHostWorkspace.registerEditSessionIdentityProvider(scheme, provider);1068},1069onWillCreateEditSessionIdentity: (listener, thisArgs?, disposables?) => {1070checkProposedApiEnabled(extension, 'editSessionIdentityProvider');1071return extHostWorkspace.getOnWillCreateEditSessionIdentityEvent(extension)(listener, thisArgs, disposables);1072},1073};10741075// namespace: scm1076const scm: typeof vscode.scm = {1077get inputBox() {1078extHostApiDeprecation.report('scm.inputBox', extension,1079`Use 'SourceControl.inputBox' instead`);10801081return extHostSCM.getLastInputBox(extension)!; // Strict null override - Deprecated api1082},1083createSourceControl(id: string, label: string, rootUri?: vscode.Uri) {1084return extHostSCM.createSourceControl(extension, id, label, rootUri);1085}1086};10871088// namespace: comments1089const comments: typeof vscode.comments = {1090createCommentController(id: string, label: string) {1091return extHostComment.createCommentController(extension, id, label);1092}1093};10941095// namespace: debug1096const debug: typeof vscode.debug = {1097get activeDebugSession() {1098return extHostDebugService.activeDebugSession;1099},1100get activeDebugConsole() {1101return extHostDebugService.activeDebugConsole;1102},1103get breakpoints() {1104return extHostDebugService.breakpoints;1105},1106onDidStartDebugSession(listener, thisArg?, disposables?) {1107return extHostDebugService.onDidStartDebugSession(listener, thisArg, disposables);1108},1109onDidTerminateDebugSession(listener, thisArg?, disposables?) {1110return extHostDebugService.onDidTerminateDebugSession(listener, thisArg, disposables);1111},1112onDidChangeActiveDebugSession(listener, thisArg?, disposables?) {1113return extHostDebugService.onDidChangeActiveDebugSession(listener, thisArg, disposables);1114},1115onDidReceiveDebugSessionCustomEvent(listener, thisArg?, disposables?) {1116return extHostDebugService.onDidReceiveDebugSessionCustomEvent(listener, thisArg, disposables);1117},1118onDidChangeBreakpoints(listener, thisArgs?, disposables?) {1119return extHostDebugService.onDidChangeBreakpoints(listener, thisArgs, disposables);1120},1121registerDebugConfigurationProvider(debugType: string, provider: vscode.DebugConfigurationProvider, triggerKind?: vscode.DebugConfigurationProviderTriggerKind) {1122return extHostDebugService.registerDebugConfigurationProvider(debugType, provider, triggerKind || DebugConfigurationProviderTriggerKind.Initial);1123},1124registerDebugAdapterDescriptorFactory(debugType: string, factory: vscode.DebugAdapterDescriptorFactory) {1125return extHostDebugService.registerDebugAdapterDescriptorFactory(extension, debugType, factory);1126},1127registerDebugAdapterTrackerFactory(debugType: string, factory: vscode.DebugAdapterTrackerFactory) {1128return extHostDebugService.registerDebugAdapterTrackerFactory(debugType, factory);1129},1130startDebugging(folder: vscode.WorkspaceFolder | undefined, nameOrConfig: string | vscode.DebugConfiguration, parentSessionOrOptions?: vscode.DebugSession | vscode.DebugSessionOptions) {1131if (!parentSessionOrOptions || (typeof parentSessionOrOptions === 'object' && 'configuration' in parentSessionOrOptions)) {1132return extHostDebugService.startDebugging(folder, nameOrConfig, { parentSession: parentSessionOrOptions });1133}1134return extHostDebugService.startDebugging(folder, nameOrConfig, parentSessionOrOptions || {});1135},1136stopDebugging(session?: vscode.DebugSession) {1137return extHostDebugService.stopDebugging(session);1138},1139addBreakpoints(breakpoints: readonly vscode.Breakpoint[]) {1140return extHostDebugService.addBreakpoints(breakpoints);1141},1142removeBreakpoints(breakpoints: readonly vscode.Breakpoint[]) {1143return extHostDebugService.removeBreakpoints(breakpoints);1144},1145asDebugSourceUri(source: vscode.DebugProtocolSource, session?: vscode.DebugSession): vscode.Uri {1146return extHostDebugService.asDebugSourceUri(source, session);1147}1148};11491150const tasks: typeof vscode.tasks = {1151registerTaskProvider: (type: string, provider: vscode.TaskProvider) => {1152return extHostTask.registerTaskProvider(extension, type, provider);1153},1154fetchTasks: (filter?: vscode.TaskFilter): Thenable<vscode.Task[]> => {1155return extHostTask.fetchTasks(filter);1156},1157executeTask: (task: vscode.Task): Thenable<vscode.TaskExecution> => {1158return extHostTask.executeTask(extension, task);1159},1160get taskExecutions(): vscode.TaskExecution[] {1161return extHostTask.taskExecutions;1162},1163onDidStartTask: (listeners, thisArgs?, disposables?) => {1164return extHostTask.onDidStartTask(listeners, thisArgs, disposables);1165},1166onDidEndTask: (listeners, thisArgs?, disposables?) => {1167return extHostTask.onDidEndTask(listeners, thisArgs, disposables);1168},1169onDidStartTaskProcess: (listeners, thisArgs?, disposables?) => {1170return extHostTask.onDidStartTaskProcess(listeners, thisArgs, disposables);1171},1172onDidEndTaskProcess: (listeners, thisArgs?, disposables?) => {1173return extHostTask.onDidEndTaskProcess(listeners, thisArgs, disposables);1174}1175};11761177// namespace: notebook1178const notebooks: typeof vscode.notebooks = {1179newNotebookController(id: string, notebookType: string, label: string, handler?, rendererScripts?: vscode.NotebookRendererScript[]) {1180return extHostNotebookKernels.newNotebookController(extension, id, notebookType, label, handler, isProposedApiEnabled(extension, 'notebookMessaging') ? rendererScripts : undefined);1181},1182registerNotebookCellStatusBarItemProvider: (notebookType: string, provider: vscode.NotebookCellStatusBarItemProvider) => {1183return extHostNotebook.registerNotebookCellStatusBarItemProvider(extension, notebookType, provider);1184},1185createRendererMessaging(rendererId) {1186return extHostNotebookRenderers.createRendererMessaging(extension, rendererId);1187},1188newNotebookControllerDetectionTask(notebookType: string) {1189checkProposedApiEnabled(extension, 'notebookKernelSource');1190return extHostNotebookKernels.newNotebookControllerDetectionTask(extension, notebookType);1191},1192registerKernelSourceActionProvider(notebookType: string, provider: vscode.NotebookKernelSourceActionProvider) {1193checkProposedApiEnabled(extension, 'notebookKernelSource');1194return extHostNotebookKernels.registerKernelSourceActionProvider(extension, notebookType, provider);1195},1196onDidChangeNotebookCellExecutionState(listener, thisArgs?, disposables?) {1197checkProposedApiEnabled(extension, 'notebookCellExecutionState');1198return extHostNotebookKernels.onDidChangeNotebookCellExecutionState(listener, thisArgs, disposables);1199}1200};12011202// namespace: l10n1203const l10n: typeof vscode.l10n = {1204t(...params: [message: string, ...args: Array<string | number | boolean>] | [message: string, args: Record<string, any>] | [{ message: string; args?: Array<string | number | boolean> | Record<string, any>; comment: string | string[] }]): string {1205if (typeof params[0] === 'string') {1206const key = params.shift() as string;12071208// We have either rest args which are Array<string | number | boolean> or an array with a single Record<string, any>.1209// This ensures we get a Record<string | number, any> which will be formatted correctly.1210const argsFormatted = !params || typeof params[0] !== 'object' ? params : params[0];1211return extHostLocalization.getMessage(extension.identifier.value, { message: key, args: argsFormatted as Record<string | number, any> | undefined });1212}12131214return extHostLocalization.getMessage(extension.identifier.value, params[0]);1215},1216get bundle() {1217return extHostLocalization.getBundle(extension.identifier.value);1218},1219get uri() {1220return extHostLocalization.getBundleUri(extension.identifier.value);1221}1222};12231224// namespace: interactive1225const interactive: typeof vscode.interactive = {1226// IMPORTANT1227// this needs to be updated whenever the API proposal changes1228_version: 1,12291230registerInteractiveEditorSessionProvider(provider: vscode.InteractiveEditorSessionProvider) {1231checkProposedApiEnabled(extension, 'interactive');1232return extHostInteractiveEditor.registerProvider(extension, provider);1233},1234registerInteractiveSessionProvider(id: string, provider: vscode.InteractiveSessionProvider) {1235checkProposedApiEnabled(extension, 'interactive');1236return extHostInteractiveSession.registerInteractiveSessionProvider(extension, id, provider);1237},1238addInteractiveRequest(context: vscode.InteractiveSessionRequestArgs) {1239checkProposedApiEnabled(extension, 'interactive');1240return extHostInteractiveSession.addInteractiveSessionRequest(context);1241},1242sendInteractiveRequestToProvider(providerId: string, message: vscode.InteractiveSessionDynamicRequest) {1243checkProposedApiEnabled(extension, 'interactive');1244return extHostInteractiveSession.sendInteractiveRequestToProvider(providerId, message);1245},1246get onDidPerformUserAction() {1247return extHostInteractiveSession.onDidPerformUserAction;1248}1249};12501251return <typeof vscode>{1252version: initData.version,1253// namespaces1254authentication,1255commands,1256comments,1257debug,1258env,1259extensions,1260interactive,1261l10n,1262languages,1263notebooks,1264scm,1265tasks,1266tests,1267window,1268workspace,1269// types1270Breakpoint: extHostTypes.Breakpoint,1271TerminalOutputAnchor: extHostTypes.TerminalOutputAnchor,1272CallHierarchyIncomingCall: extHostTypes.CallHierarchyIncomingCall,1273CallHierarchyItem: extHostTypes.CallHierarchyItem,1274CallHierarchyOutgoingCall: extHostTypes.CallHierarchyOutgoingCall,1275CancellationError: errors.CancellationError,1276CancellationTokenSource: CancellationTokenSource,1277CandidatePortSource: CandidatePortSource,1278CodeAction: extHostTypes.CodeAction,1279CodeActionKind: extHostTypes.CodeActionKind,1280CodeActionTriggerKind: extHostTypes.CodeActionTriggerKind,1281CodeLens: extHostTypes.CodeLens,1282Color: extHostTypes.Color,1283ColorInformation: extHostTypes.ColorInformation,1284ColorPresentation: extHostTypes.ColorPresentation,1285ColorThemeKind: extHostTypes.ColorThemeKind,1286CommentMode: extHostTypes.CommentMode,1287CommentThreadCollapsibleState: extHostTypes.CommentThreadCollapsibleState,1288CommentThreadState: extHostTypes.CommentThreadState,1289CompletionItem: extHostTypes.CompletionItem,1290CompletionItemKind: extHostTypes.CompletionItemKind,1291CompletionItemTag: extHostTypes.CompletionItemTag,1292CompletionList: extHostTypes.CompletionList,1293CompletionTriggerKind: extHostTypes.CompletionTriggerKind,1294ConfigurationTarget: extHostTypes.ConfigurationTarget,1295CustomExecution: extHostTypes.CustomExecution,1296DebugAdapterExecutable: extHostTypes.DebugAdapterExecutable,1297DebugAdapterInlineImplementation: extHostTypes.DebugAdapterInlineImplementation,1298DebugAdapterNamedPipeServer: extHostTypes.DebugAdapterNamedPipeServer,1299DebugAdapterServer: extHostTypes.DebugAdapterServer,1300DebugConfigurationProviderTriggerKind: DebugConfigurationProviderTriggerKind,1301DebugConsoleMode: extHostTypes.DebugConsoleMode,1302DecorationRangeBehavior: extHostTypes.DecorationRangeBehavior,1303Diagnostic: extHostTypes.Diagnostic,1304DiagnosticRelatedInformation: extHostTypes.DiagnosticRelatedInformation,1305DiagnosticSeverity: extHostTypes.DiagnosticSeverity,1306DiagnosticTag: extHostTypes.DiagnosticTag,1307Disposable: extHostTypes.Disposable,1308DocumentHighlight: extHostTypes.DocumentHighlight,1309DocumentHighlightKind: extHostTypes.DocumentHighlightKind,1310DocumentLink: extHostTypes.DocumentLink,1311DocumentSymbol: extHostTypes.DocumentSymbol,1312EndOfLine: extHostTypes.EndOfLine,1313EnvironmentVariableMutatorType: extHostTypes.EnvironmentVariableMutatorType,1314EvaluatableExpression: extHostTypes.EvaluatableExpression,1315InlineValueText: extHostTypes.InlineValueText,1316InlineValueVariableLookup: extHostTypes.InlineValueVariableLookup,1317InlineValueEvaluatableExpression: extHostTypes.InlineValueEvaluatableExpression,1318InlineCompletionTriggerKind: extHostTypes.InlineCompletionTriggerKind,1319EventEmitter: Emitter,1320ExtensionKind: extHostTypes.ExtensionKind,1321ExtensionMode: extHostTypes.ExtensionMode,1322ExternalUriOpenerPriority: extHostTypes.ExternalUriOpenerPriority,1323FileChangeType: extHostTypes.FileChangeType,1324FileDecoration: extHostTypes.FileDecoration,1325FileDecoration2: extHostTypes.FileDecoration,1326FileSystemError: extHostTypes.FileSystemError,1327FileType: files.FileType,1328FilePermission: files.FilePermission,1329FoldingRange: extHostTypes.FoldingRange,1330FoldingRangeKind: extHostTypes.FoldingRangeKind,1331FunctionBreakpoint: extHostTypes.FunctionBreakpoint,1332InlineCompletionItem: extHostTypes.InlineSuggestion,1333InlineCompletionList: extHostTypes.InlineSuggestionList,1334Hover: extHostTypes.Hover,1335IndentAction: languageConfiguration.IndentAction,1336Location: extHostTypes.Location,1337MarkdownString: extHostTypes.MarkdownString,1338OverviewRulerLane: OverviewRulerLane,1339ParameterInformation: extHostTypes.ParameterInformation,1340PortAutoForwardAction: extHostTypes.PortAutoForwardAction,1341Position: extHostTypes.Position,1342ProcessExecution: extHostTypes.ProcessExecution,1343ProgressLocation: extHostTypes.ProgressLocation,1344QuickInputButtons: extHostTypes.QuickInputButtons,1345Range: extHostTypes.Range,1346RelativePattern: extHostTypes.RelativePattern,1347Selection: extHostTypes.Selection,1348SelectionRange: extHostTypes.SelectionRange,1349SemanticTokens: extHostTypes.SemanticTokens,1350SemanticTokensBuilder: extHostTypes.SemanticTokensBuilder,1351SemanticTokensEdit: extHostTypes.SemanticTokensEdit,1352SemanticTokensEdits: extHostTypes.SemanticTokensEdits,1353SemanticTokensLegend: extHostTypes.SemanticTokensLegend,1354ShellExecution: extHostTypes.ShellExecution,1355ShellQuoting: extHostTypes.ShellQuoting,1356SignatureHelp: extHostTypes.SignatureHelp,1357SignatureHelpTriggerKind: extHostTypes.SignatureHelpTriggerKind,1358SignatureInformation: extHostTypes.SignatureInformation,1359SnippetString: extHostTypes.SnippetString,1360SourceBreakpoint: extHostTypes.SourceBreakpoint,1361StandardTokenType: extHostTypes.StandardTokenType,1362StatusBarAlignment: extHostTypes.StatusBarAlignment,1363SymbolInformation: extHostTypes.SymbolInformation,1364SymbolKind: extHostTypes.SymbolKind,1365SymbolTag: extHostTypes.SymbolTag,1366Task: extHostTypes.Task,1367TaskGroup: extHostTypes.TaskGroup,1368TaskPanelKind: extHostTypes.TaskPanelKind,1369TaskRevealKind: extHostTypes.TaskRevealKind,1370TaskScope: extHostTypes.TaskScope,1371TerminalLink: extHostTypes.TerminalLink,1372TerminalQuickFixCommand: extHostTypes.TerminalQuickFixCommand,1373TerminalQuickFixOpener: extHostTypes.TerminalQuickFixOpener,1374TerminalLocation: extHostTypes.TerminalLocation,1375TerminalProfile: extHostTypes.TerminalProfile,1376TerminalExitReason: extHostTypes.TerminalExitReason,1377TerminalQuickFixType: extHostTypes.TerminalQuickFixType,1378TextDocumentSaveReason: extHostTypes.TextDocumentSaveReason,1379TextEdit: extHostTypes.TextEdit,1380SnippetTextEdit: extHostTypes.SnippetTextEdit,1381TextEditorCursorStyle: TextEditorCursorStyle,1382TextEditorLineNumbersStyle: extHostTypes.TextEditorLineNumbersStyle,1383TextEditorRevealType: extHostTypes.TextEditorRevealType,1384TextEditorSelectionChangeKind: extHostTypes.TextEditorSelectionChangeKind,1385TextDocumentChangeReason: extHostTypes.TextDocumentChangeReason,1386ThemeColor: extHostTypes.ThemeColor,1387ThemeIcon: extHostTypes.ThemeIcon,1388TreeItem: extHostTypes.TreeItem,1389TreeItem2: extHostTypes.TreeItem,1390TreeItemCheckboxState: extHostTypes.TreeItemCheckboxState,1391TreeItemCollapsibleState: extHostTypes.TreeItemCollapsibleState,1392TypeHierarchyItem: extHostTypes.TypeHierarchyItem,1393UIKind: UIKind,1394Uri: URI,1395ViewColumn: extHostTypes.ViewColumn,1396WorkspaceEdit: extHostTypes.WorkspaceEdit,1397// proposed api types1398DocumentDropEdit: extHostTypes.DocumentDropEdit,1399DocumentPasteEdit: extHostTypes.DocumentPasteEdit,1400InlayHint: extHostTypes.InlayHint,1401InlayHintLabelPart: extHostTypes.InlayHintLabelPart,1402InlayHintKind: extHostTypes.InlayHintKind,1403RemoteAuthorityResolverError: extHostTypes.RemoteAuthorityResolverError,1404ResolvedAuthority: extHostTypes.ResolvedAuthority,1405SourceControlInputBoxValidationType: extHostTypes.SourceControlInputBoxValidationType,1406ExtensionRuntime: extHostTypes.ExtensionRuntime,1407TimelineItem: extHostTypes.TimelineItem,1408NotebookRange: extHostTypes.NotebookRange,1409NotebookCellKind: extHostTypes.NotebookCellKind,1410NotebookCellExecutionState: extHostTypes.NotebookCellExecutionState,1411NotebookCellData: extHostTypes.NotebookCellData,1412NotebookData: extHostTypes.NotebookData,1413NotebookRendererScript: extHostTypes.NotebookRendererScript,1414NotebookCellStatusBarAlignment: extHostTypes.NotebookCellStatusBarAlignment,1415NotebookEditorRevealType: extHostTypes.NotebookEditorRevealType,1416NotebookCellOutput: extHostTypes.NotebookCellOutput,1417NotebookCellOutputItem: extHostTypes.NotebookCellOutputItem,1418NotebookCellStatusBarItem: extHostTypes.NotebookCellStatusBarItem,1419NotebookControllerAffinity: extHostTypes.NotebookControllerAffinity,1420NotebookControllerAffinity2: extHostTypes.NotebookControllerAffinity2,1421NotebookDocumentSaveReason: extHostTypes.NotebookDocumentSaveReason,1422NotebookEdit: extHostTypes.NotebookEdit,1423NotebookKernelSourceAction: extHostTypes.NotebookKernelSourceAction,1424PortAttributes: extHostTypes.PortAttributes,1425LinkedEditingRanges: extHostTypes.LinkedEditingRanges,1426TestResultState: extHostTypes.TestResultState,1427TestRunRequest: extHostTypes.TestRunRequest,1428TestRunRequest2: extHostTypes.TestRunRequest2,1429TestMessage: extHostTypes.TestMessage,1430TestTag: extHostTypes.TestTag,1431TestRunProfileKind: extHostTypes.TestRunProfileKind,1432TextSearchCompleteMessageType: TextSearchCompleteMessageType,1433DataTransfer: extHostTypes.DataTransfer,1434DataTransferItem: extHostTypes.DataTransferItem,1435CoveredCount: extHostTypes.CoveredCount,1436FileCoverage: extHostTypes.FileCoverage,1437StatementCoverage: extHostTypes.StatementCoverage,1438BranchCoverage: extHostTypes.BranchCoverage,1439FunctionCoverage: extHostTypes.FunctionCoverage,1440WorkspaceTrustState: extHostTypes.WorkspaceTrustState,1441LanguageStatusSeverity: extHostTypes.LanguageStatusSeverity,1442QuickPickItemKind: extHostTypes.QuickPickItemKind,1443InputBoxValidationSeverity: extHostTypes.InputBoxValidationSeverity,1444TabInputText: extHostTypes.TextTabInput,1445TabInputTextDiff: extHostTypes.TextDiffTabInput,1446TabInputTextMerge: extHostTypes.TextMergeTabInput,1447TabInputCustom: extHostTypes.CustomEditorTabInput,1448TabInputNotebook: extHostTypes.NotebookEditorTabInput,1449TabInputNotebookDiff: extHostTypes.NotebookDiffEditorTabInput,1450TabInputWebview: extHostTypes.WebviewEditorTabInput,1451TabInputTerminal: extHostTypes.TerminalEditorTabInput,1452TabInputInteractiveWindow: extHostTypes.InteractiveWindowInput,1453TelemetryTrustedValue: TelemetryTrustedValue,1454LogLevel: LogLevel,1455EditSessionIdentityMatch: EditSessionIdentityMatch,1456InteractiveSessionVoteDirection: extHostTypes.InteractiveSessionVoteDirection,1457InteractiveSessionCopyKind: extHostTypes.InteractiveSessionCopyKind,1458};1459};1460}146114621463