Path: blob/main/src/vs/workbench/api/common/extHost.api.impl.ts
5236 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 type * as vscode from 'vscode';6import { CancellationTokenSource } from '../../../base/common/cancellation.js';7import * as errors from '../../../base/common/errors.js';8import { Emitter, Event } from '../../../base/common/event.js';9import { combinedDisposable } from '../../../base/common/lifecycle.js';10import { Schemas, matchesScheme } from '../../../base/common/network.js';11import Severity from '../../../base/common/severity.js';12import { URI } from '../../../base/common/uri.js';13import { TextEditorCursorStyle } from '../../../editor/common/config/editorOptions.js';14import { score, targetsNotebooks } from '../../../editor/common/languageSelector.js';15import * as languageConfiguration from '../../../editor/common/languages/languageConfiguration.js';16import { OverviewRulerLane } from '../../../editor/common/model.js';17import { ExtensionError, ExtensionIdentifierSet, IExtensionDescription } from '../../../platform/extensions/common/extensions.js';18import * as files from '../../../platform/files/common/files.js';19import { ServicesAccessor } from '../../../platform/instantiation/common/instantiation.js';20import { ILogService, ILoggerService, LogLevel } from '../../../platform/log/common/log.js';21import { getRemoteName } from '../../../platform/remote/common/remoteHosts.js';22import { TelemetryTrustedValue } from '../../../platform/telemetry/common/telemetryUtils.js';23import { EditSessionIdentityMatch } from '../../../platform/workspace/common/editSessions.js';24import { DebugConfigurationProviderTriggerKind } from '../../contrib/debug/common/debug.js';25import { PromptsType } from '../../contrib/chat/common/promptSyntax/promptTypes.js';26import { ExtensionDescriptionRegistry } from '../../services/extensions/common/extensionDescriptionRegistry.js';27import { UIKind } from '../../services/extensions/common/extensionHostProtocol.js';28import { checkProposedApiEnabled, isProposedApiEnabled } from '../../services/extensions/common/extensions.js';29import { ProxyIdentifier } from '../../services/extensions/common/proxyIdentifier.js';30import { AISearchKeyword, ExcludeSettingOptions, TextSearchCompleteMessageType, TextSearchContext2, TextSearchMatch2 } from '../../services/search/common/searchExtTypes.js';31import { CandidatePortSource, ExtHostContext, ExtHostLogLevelServiceShape, MainContext } from './extHost.protocol.js';32import { ExtHostRelatedInformation } from './extHostAiRelatedInformation.js';33import { ExtHostAiSettingsSearch } from './extHostAiSettingsSearch.js';34import { ExtHostApiCommands } from './extHostApiCommands.js';35import { IExtHostApiDeprecationService } from './extHostApiDeprecationService.js';36import { IExtHostAuthentication } from './extHostAuthentication.js';37import { ExtHostBulkEdits } from './extHostBulkEdits.js';38import { ExtHostChatAgents2 } from './extHostChatAgents2.js';39import { ExtHostChatOutputRenderer } from './extHostChatOutputRenderer.js';40import { ExtHostChatSessions } from './extHostChatSessions.js';41import { ExtHostChatStatus } from './extHostChatStatus.js';42import { ExtHostClipboard } from './extHostClipboard.js';43import { ExtHostEditorInsets } from './extHostCodeInsets.js';44import { ExtHostCodeMapper } from './extHostCodeMapper.js';45import { IExtHostCommands } from './extHostCommands.js';46import { createExtHostComments } from './extHostComments.js';47import { ExtHostConfigProvider, IExtHostConfiguration } from './extHostConfiguration.js';48import { ExtHostCustomEditors } from './extHostCustomEditors.js';49import { IExtHostDataChannels } from './extHostDataChannels.js';50import { IExtHostDebugService } from './extHostDebugService.js';51import { IExtHostDecorations } from './extHostDecorations.js';52import { ExtHostDiagnostics } from './extHostDiagnostics.js';53import { ExtHostDialogs } from './extHostDialogs.js';54import { ExtHostDocumentContentProvider } from './extHostDocumentContentProviders.js';55import { ExtHostDocumentSaveParticipant } from './extHostDocumentSaveParticipant.js';56import { ExtHostDocuments } from './extHostDocuments.js';57import { IExtHostDocumentsAndEditors } from './extHostDocumentsAndEditors.js';58import { IExtHostEditorTabs } from './extHostEditorTabs.js';59import { ExtHostEmbeddings } from './extHostEmbedding.js';60import { ExtHostAiEmbeddingVector } from './extHostEmbeddingVector.js';61import { Extension, IExtHostExtensionService } from './extHostExtensionService.js';62import { ExtHostFileSystem } from './extHostFileSystem.js';63import { IExtHostConsumerFileSystem } from './extHostFileSystemConsumer.js';64import { ExtHostFileSystemEventService, FileSystemWatcherCreateOptions } from './extHostFileSystemEventService.js';65import { IExtHostFileSystemInfo } from './extHostFileSystemInfo.js';66import { IExtHostInitDataService } from './extHostInitDataService.js';67import { IExtHostHooks } from './extHostHooks.js';68import { ExtHostInteractive } from './extHostInteractive.js';69import { ExtHostLabelService } from './extHostLabelService.js';70import { ExtHostLanguageFeatures } from './extHostLanguageFeatures.js';71import { ExtHostLanguageModelTools } from './extHostLanguageModelTools.js';72import { IExtHostLanguageModels } from './extHostLanguageModels.js';73import { ExtHostLanguages } from './extHostLanguages.js';74import { IExtHostLocalizationService } from './extHostLocalizationService.js';75import { IExtHostManagedSockets } from './extHostManagedSockets.js';76import { IExtHostMpcService } from './extHostMcp.js';77import { ExtHostMessageService } from './extHostMessageService.js';78import { ExtHostNotebookController } from './extHostNotebook.js';79import { ExtHostNotebookDocumentSaveParticipant } from './extHostNotebookDocumentSaveParticipant.js';80import { ExtHostNotebookDocuments } from './extHostNotebookDocuments.js';81import { ExtHostNotebookEditors } from './extHostNotebookEditors.js';82import { ExtHostNotebookKernels } from './extHostNotebookKernels.js';83import { ExtHostNotebookRenderers } from './extHostNotebookRenderers.js';84import { IExtHostOutputService } from './extHostOutput.js';85import { ExtHostProfileContentHandlers } from './extHostProfileContentHandler.js';86import { IExtHostProgress } from './extHostProgress.js';87import { ExtHostQuickDiff } from './extHostQuickDiff.js';88import { createExtHostQuickOpen } from './extHostQuickOpen.js';89import { IExtHostRpcService } from './extHostRpcService.js';90import { ExtHostSCM } from './extHostSCM.js';91import { IExtHostSearch } from './extHostSearch.js';92import { IExtHostSecretState } from './extHostSecretState.js';93import { ExtHostShare } from './extHostShare.js';94import { ExtHostSpeech } from './extHostSpeech.js';95import { ExtHostStatusBar } from './extHostStatusBar.js';96import { IExtHostStorage } from './extHostStorage.js';97import { IExtensionStoragePaths } from './extHostStoragePaths.js';98import { IExtHostTask } from './extHostTask.js';99import { ExtHostTelemetryLogger, IExtHostTelemetry, isNewAppInstall } from './extHostTelemetry.js';100import { IExtHostTerminalService } from './extHostTerminalService.js';101import { IExtHostTerminalShellIntegration } from './extHostTerminalShellIntegration.js';102import { IExtHostTesting } from './extHostTesting.js';103import { ExtHostEditors } from './extHostTextEditors.js';104import { ExtHostTheming } from './extHostTheming.js';105import { ExtHostTimeline } from './extHostTimeline.js';106import { ExtHostTreeViews } from './extHostTreeViews.js';107import { IExtHostTunnelService } from './extHostTunnelService.js';108import * as typeConverters from './extHostTypeConverters.js';109import * as extHostTypes from './extHostTypes.js';110import { ExtHostUriOpeners } from './extHostUriOpener.js';111import { IURITransformerService } from './extHostUriTransformerService.js';112import { IExtHostUrlsService } from './extHostUrls.js';113import { ExtHostWebviews } from './extHostWebview.js';114import { ExtHostWebviewPanels } from './extHostWebviewPanels.js';115import { ExtHostWebviewViews } from './extHostWebviewView.js';116import { IExtHostWindow } from './extHostWindow.js';117import { IExtHostPower } from './extHostPower.js';118import { IExtHostWorkspace } from './extHostWorkspace.js';119import { ExtHostChatContext } from './extHostChatContext.js';120import { IExtHostMeteredConnection } from './extHostMeteredConnection.js';121122export interface IExtensionRegistries {123mine: ExtensionDescriptionRegistry;124all: ExtensionDescriptionRegistry;125}126127export interface IExtensionApiFactory {128(extension: IExtensionDescription, extensionInfo: IExtensionRegistries, configProvider: ExtHostConfigProvider): typeof vscode;129}130131/**132* This method instantiates and returns the extension API surface133*/134export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): IExtensionApiFactory {135136// services137const initData = accessor.get(IExtHostInitDataService);138const extHostFileSystemInfo = accessor.get(IExtHostFileSystemInfo);139const extHostConsumerFileSystem = accessor.get(IExtHostConsumerFileSystem);140const extensionService = accessor.get(IExtHostExtensionService);141const extHostWorkspace = accessor.get(IExtHostWorkspace);142const extHostTelemetry = accessor.get(IExtHostTelemetry);143const extHostConfiguration = accessor.get(IExtHostConfiguration);144const uriTransformer = accessor.get(IURITransformerService);145const rpcProtocol = accessor.get(IExtHostRpcService);146const extHostStorage = accessor.get(IExtHostStorage);147const extensionStoragePaths = accessor.get(IExtensionStoragePaths);148const extHostLoggerService = accessor.get(ILoggerService);149const extHostLogService = accessor.get(ILogService);150const extHostTunnelService = accessor.get(IExtHostTunnelService);151const extHostApiDeprecation = accessor.get(IExtHostApiDeprecationService);152const extHostWindow = accessor.get(IExtHostWindow);153const extHostPower = accessor.get(IExtHostPower);154const extHostUrls = accessor.get(IExtHostUrlsService);155const extHostSecretState = accessor.get(IExtHostSecretState);156const extHostEditorTabs = accessor.get(IExtHostEditorTabs);157const extHostManagedSockets = accessor.get(IExtHostManagedSockets);158const extHostProgress = accessor.get(IExtHostProgress);159const extHostAuthentication = accessor.get(IExtHostAuthentication);160const extHostLanguageModels = accessor.get(IExtHostLanguageModels);161const extHostMcp = accessor.get(IExtHostMpcService);162const extHostDataChannels = accessor.get(IExtHostDataChannels);163const extHostMeteredConnection = accessor.get(IExtHostMeteredConnection);164165// register addressable instances166rpcProtocol.set(ExtHostContext.ExtHostFileSystemInfo, extHostFileSystemInfo);167// eslint-disable-next-line local/code-no-any-casts168rpcProtocol.set(ExtHostContext.ExtHostLogLevelServiceShape, <ExtHostLogLevelServiceShape><any>extHostLoggerService);169rpcProtocol.set(ExtHostContext.ExtHostWorkspace, extHostWorkspace);170rpcProtocol.set(ExtHostContext.ExtHostConfiguration, extHostConfiguration);171rpcProtocol.set(ExtHostContext.ExtHostExtensionService, extensionService);172rpcProtocol.set(ExtHostContext.ExtHostStorage, extHostStorage);173rpcProtocol.set(ExtHostContext.ExtHostTunnelService, extHostTunnelService);174rpcProtocol.set(ExtHostContext.ExtHostWindow, extHostWindow);175rpcProtocol.set(ExtHostContext.ExtHostPower, extHostPower);176rpcProtocol.set(ExtHostContext.ExtHostUrls, extHostUrls);177rpcProtocol.set(ExtHostContext.ExtHostSecretState, extHostSecretState);178rpcProtocol.set(ExtHostContext.ExtHostTelemetry, extHostTelemetry);179rpcProtocol.set(ExtHostContext.ExtHostEditorTabs, extHostEditorTabs);180rpcProtocol.set(ExtHostContext.ExtHostManagedSockets, extHostManagedSockets);181rpcProtocol.set(ExtHostContext.ExtHostProgress, extHostProgress);182rpcProtocol.set(ExtHostContext.ExtHostAuthentication, extHostAuthentication);183rpcProtocol.set(ExtHostContext.ExtHostChatProvider, extHostLanguageModels);184rpcProtocol.set(ExtHostContext.ExtHostDataChannels, extHostDataChannels);185rpcProtocol.set(ExtHostContext.ExtHostMeteredConnection, extHostMeteredConnection);186187// automatically create and register addressable instances188const extHostDecorations = rpcProtocol.set(ExtHostContext.ExtHostDecorations, accessor.get(IExtHostDecorations));189const extHostDocumentsAndEditors = rpcProtocol.set(ExtHostContext.ExtHostDocumentsAndEditors, accessor.get(IExtHostDocumentsAndEditors));190const extHostCommands = rpcProtocol.set(ExtHostContext.ExtHostCommands, accessor.get(IExtHostCommands));191const extHostTerminalService = rpcProtocol.set(ExtHostContext.ExtHostTerminalService, accessor.get(IExtHostTerminalService));192const extHostTerminalShellIntegration = rpcProtocol.set(ExtHostContext.ExtHostTerminalShellIntegration, accessor.get(IExtHostTerminalShellIntegration));193const extHostDebugService = rpcProtocol.set(ExtHostContext.ExtHostDebugService, accessor.get(IExtHostDebugService));194const extHostSearch = rpcProtocol.set(ExtHostContext.ExtHostSearch, accessor.get(IExtHostSearch));195const extHostTask = rpcProtocol.set(ExtHostContext.ExtHostTask, accessor.get(IExtHostTask));196const extHostOutputService = rpcProtocol.set(ExtHostContext.ExtHostOutputService, accessor.get(IExtHostOutputService));197const extHostLocalization = rpcProtocol.set(ExtHostContext.ExtHostLocalization, accessor.get(IExtHostLocalizationService));198199// manually create and register addressable instances200const extHostDocuments = rpcProtocol.set(ExtHostContext.ExtHostDocuments, new ExtHostDocuments(rpcProtocol, extHostDocumentsAndEditors));201const extHostDocumentContentProviders = rpcProtocol.set(ExtHostContext.ExtHostDocumentContentProviders, new ExtHostDocumentContentProvider(rpcProtocol, extHostDocumentsAndEditors, extHostLogService));202const extHostDocumentSaveParticipant = rpcProtocol.set(ExtHostContext.ExtHostDocumentSaveParticipant, new ExtHostDocumentSaveParticipant(extHostLogService, extHostDocuments, rpcProtocol.getProxy(MainContext.MainThreadBulkEdits)));203const extHostNotebook = rpcProtocol.set(ExtHostContext.ExtHostNotebook, new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, extHostDocuments, extHostConsumerFileSystem, extHostSearch, extHostLogService));204const extHostNotebookDocuments = rpcProtocol.set(ExtHostContext.ExtHostNotebookDocuments, new ExtHostNotebookDocuments(extHostNotebook));205const extHostNotebookEditors = rpcProtocol.set(ExtHostContext.ExtHostNotebookEditors, new ExtHostNotebookEditors(extHostLogService, extHostNotebook));206const extHostNotebookKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookKernels, new ExtHostNotebookKernels(rpcProtocol, initData, extHostNotebook, extHostCommands, extHostLogService));207const extHostNotebookRenderers = rpcProtocol.set(ExtHostContext.ExtHostNotebookRenderers, new ExtHostNotebookRenderers(rpcProtocol, extHostNotebook));208const extHostNotebookDocumentSaveParticipant = rpcProtocol.set(ExtHostContext.ExtHostNotebookDocumentSaveParticipant, new ExtHostNotebookDocumentSaveParticipant(extHostLogService, extHostNotebook, rpcProtocol.getProxy(MainContext.MainThreadBulkEdits)));209const extHostEditors = rpcProtocol.set(ExtHostContext.ExtHostEditors, new ExtHostEditors(rpcProtocol, extHostDocumentsAndEditors));210const extHostTreeViews = rpcProtocol.set(ExtHostContext.ExtHostTreeViews, new ExtHostTreeViews(rpcProtocol.getProxy(MainContext.MainThreadTreeViews), extHostCommands, extHostLogService));211const extHostEditorInsets = rpcProtocol.set(ExtHostContext.ExtHostEditorInsets, new ExtHostEditorInsets(rpcProtocol.getProxy(MainContext.MainThreadEditorInsets), extHostEditors, initData.remote));212const extHostDiagnostics = rpcProtocol.set(ExtHostContext.ExtHostDiagnostics, new ExtHostDiagnostics(rpcProtocol, extHostLogService, extHostFileSystemInfo, extHostDocumentsAndEditors));213const extHostLanguages = rpcProtocol.set(ExtHostContext.ExtHostLanguages, new ExtHostLanguages(rpcProtocol, extHostDocuments, extHostCommands.converter, uriTransformer));214const extHostLanguageFeatures = rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, new ExtHostLanguageFeatures(rpcProtocol, uriTransformer, extHostDocuments, extHostCommands, extHostDiagnostics, extHostLogService, extHostApiDeprecation, extHostTelemetry));215const extHostCodeMapper = rpcProtocol.set(ExtHostContext.ExtHostCodeMapper, new ExtHostCodeMapper(rpcProtocol));216const extHostFileSystem = rpcProtocol.set(ExtHostContext.ExtHostFileSystem, new ExtHostFileSystem(rpcProtocol, extHostLanguageFeatures));217const extHostFileSystemEvent = rpcProtocol.set(ExtHostContext.ExtHostFileSystemEventService, new ExtHostFileSystemEventService(rpcProtocol, extHostLogService, extHostDocumentsAndEditors));218const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, createExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands));219const extHostSCM = rpcProtocol.set(ExtHostContext.ExtHostSCM, new ExtHostSCM(rpcProtocol, extHostCommands, extHostDocuments, extHostLogService));220const extHostQuickDiff = rpcProtocol.set(ExtHostContext.ExtHostQuickDiff, new ExtHostQuickDiff(rpcProtocol, uriTransformer));221const extHostShare = rpcProtocol.set(ExtHostContext.ExtHostShare, new ExtHostShare(rpcProtocol, uriTransformer));222const extHostComment = rpcProtocol.set(ExtHostContext.ExtHostComments, createExtHostComments(rpcProtocol, extHostCommands, extHostDocuments));223const extHostLabelService = rpcProtocol.set(ExtHostContext.ExtHostLabelService, new ExtHostLabelService(rpcProtocol));224const extHostTheming = rpcProtocol.set(ExtHostContext.ExtHostTheming, new ExtHostTheming(rpcProtocol));225const extHostTimeline = rpcProtocol.set(ExtHostContext.ExtHostTimeline, new ExtHostTimeline(rpcProtocol, extHostCommands));226const extHostWebviews = rpcProtocol.set(ExtHostContext.ExtHostWebviews, new ExtHostWebviews(rpcProtocol, initData.remote, extHostWorkspace, extHostLogService, extHostApiDeprecation));227const extHostWebviewPanels = rpcProtocol.set(ExtHostContext.ExtHostWebviewPanels, new ExtHostWebviewPanels(rpcProtocol, extHostWebviews, extHostWorkspace));228const extHostCustomEditors = rpcProtocol.set(ExtHostContext.ExtHostCustomEditors, new ExtHostCustomEditors(rpcProtocol, extHostDocuments, extensionStoragePaths, extHostWebviews, extHostWebviewPanels));229const extHostWebviewViews = rpcProtocol.set(ExtHostContext.ExtHostWebviewViews, new ExtHostWebviewViews(rpcProtocol, extHostWebviews));230const extHostTesting = rpcProtocol.set(ExtHostContext.ExtHostTesting, accessor.get(IExtHostTesting));231const extHostUriOpeners = rpcProtocol.set(ExtHostContext.ExtHostUriOpeners, new ExtHostUriOpeners(rpcProtocol));232const extHostProfileContentHandlers = rpcProtocol.set(ExtHostContext.ExtHostProfileContentHandlers, new ExtHostProfileContentHandlers(rpcProtocol));233const extHostChatOutputRenderer = rpcProtocol.set(ExtHostContext.ExtHostChatOutputRenderer, new ExtHostChatOutputRenderer(rpcProtocol, extHostWebviews));234rpcProtocol.set(ExtHostContext.ExtHostInteractive, new ExtHostInteractive(rpcProtocol, extHostNotebook, extHostDocumentsAndEditors, extHostCommands, extHostLogService));235const extHostLanguageModelTools = rpcProtocol.set(ExtHostContext.ExtHostLanguageModelTools, new ExtHostLanguageModelTools(rpcProtocol, extHostLanguageModels));236const extHostChatSessions = rpcProtocol.set(ExtHostContext.ExtHostChatSessions, new ExtHostChatSessions(extHostCommands, extHostLanguageModels, rpcProtocol, extHostLogService));237const extHostChatAgents2 = rpcProtocol.set(ExtHostContext.ExtHostChatAgents2, new ExtHostChatAgents2(rpcProtocol, extHostLogService, extHostCommands, extHostDocuments, extHostDocumentsAndEditors, extHostLanguageModels, extHostDiagnostics, extHostLanguageModelTools));238const extHostChatContext = rpcProtocol.set(ExtHostContext.ExtHostChatContext, new ExtHostChatContext(rpcProtocol, extHostCommands));239const extHostAiRelatedInformation = rpcProtocol.set(ExtHostContext.ExtHostAiRelatedInformation, new ExtHostRelatedInformation(rpcProtocol));240const extHostAiEmbeddingVector = rpcProtocol.set(ExtHostContext.ExtHostAiEmbeddingVector, new ExtHostAiEmbeddingVector(rpcProtocol));241const extHostAiSettingsSearch = rpcProtocol.set(ExtHostContext.ExtHostAiSettingsSearch, new ExtHostAiSettingsSearch(rpcProtocol));242const extHostStatusBar = rpcProtocol.set(ExtHostContext.ExtHostStatusBar, new ExtHostStatusBar(rpcProtocol, extHostCommands.converter));243const extHostSpeech = rpcProtocol.set(ExtHostContext.ExtHostSpeech, new ExtHostSpeech(rpcProtocol));244const extHostEmbeddings = rpcProtocol.set(ExtHostContext.ExtHostEmbeddings, new ExtHostEmbeddings(rpcProtocol));245246rpcProtocol.set(ExtHostContext.ExtHostMcp, accessor.get(IExtHostMpcService));247rpcProtocol.set(ExtHostContext.ExtHostHooks, accessor.get(IExtHostHooks));248249// Check that no named customers are missing250const expected = Object.values<ProxyIdentifier<any>>(ExtHostContext);251rpcProtocol.assertRegistered(expected);252253// Other instances254const extHostBulkEdits = new ExtHostBulkEdits(rpcProtocol, extHostDocumentsAndEditors);255const extHostClipboard = new ExtHostClipboard(rpcProtocol);256const extHostMessageService = new ExtHostMessageService(rpcProtocol, extHostLogService);257const extHostDialogs = new ExtHostDialogs(rpcProtocol);258const extHostChatStatus = new ExtHostChatStatus(rpcProtocol);259const extHostHooks = accessor.get(IExtHostHooks);260261// Register API-ish commands262ExtHostApiCommands.register(extHostCommands);263264return function (extension: IExtensionDescription, extensionInfo: IExtensionRegistries, configProvider: ExtHostConfigProvider): typeof vscode {265266// Wraps an event with error handling and telemetry so that we know what extension fails267// handling events. This will prevent us from reporting this as "our" error-telemetry and268// allows for better blaming269function _asExtensionEvent<T>(actual: vscode.Event<T>): vscode.Event<T> {270return (listener, thisArgs, disposables) => {271const handle = actual(e => {272try {273listener.call(thisArgs, e);274} catch (err) {275errors.onUnexpectedExternalError(new ExtensionError(extension.identifier, err, 'FAILED to handle event'));276}277});278disposables?.push(handle);279return handle;280};281}282283284// Check document selectors for being overly generic. Technically this isn't a problem but285// in practice many extensions say they support `fooLang` but need fs-access to do so. Those286// extension should specify then the `file`-scheme, e.g. `{ scheme: 'fooLang', language: 'fooLang' }`287// We only inform once, it is not a warning because we just want to raise awareness and because288// we cannot say if the extension is doing it right or wrong...289const checkSelector = (function () {290let done = !extension.isUnderDevelopment;291function informOnce() {292if (!done) {293extHostLogService.info(`Extension '${extension.identifier.value}' uses a document selector without scheme. Learn more about this: https://go.microsoft.com/fwlink/?linkid=872305`);294done = true;295}296}297return function perform(selector: vscode.DocumentSelector): vscode.DocumentSelector {298if (Array.isArray(selector)) {299selector.forEach(perform);300} else if (typeof selector === 'string') {301informOnce();302} else {303const filter = selector as vscode.DocumentFilter; // TODO: microsoft/TypeScript#42768304if (typeof filter.scheme === 'undefined') {305informOnce();306}307if (typeof filter.exclusive === 'boolean') {308checkProposedApiEnabled(extension, 'documentFiltersExclusive');309}310}311return selector;312};313})();314315const authentication: typeof vscode.authentication = {316getSession(providerId: string, scopesOrChallenge: readonly string[] | vscode.AuthenticationWwwAuthenticateRequest, options?: vscode.AuthenticationGetSessionOptions) {317if (318(typeof options?.forceNewSession === 'object' && options.forceNewSession.learnMore) ||319(typeof options?.createIfNone === 'object' && options.createIfNone.learnMore)320) {321checkProposedApiEnabled(extension, 'authLearnMore');322}323if (options?.authorizationServer) {324checkProposedApiEnabled(extension, 'authIssuers');325}326// eslint-disable-next-line local/code-no-any-casts327return extHostAuthentication.getSession(extension, providerId, scopesOrChallenge, options as any);328},329getAccounts(providerId: string) {330return extHostAuthentication.getAccounts(providerId);331},332// TODO: remove this after GHPR and Codespaces move off of it333async hasSession(providerId: string, scopes: readonly string[]) {334checkProposedApiEnabled(extension, 'authSession');335// eslint-disable-next-line local/code-no-any-casts336return !!(await extHostAuthentication.getSession(extension, providerId, scopes, { silent: true } as any));337},338get onDidChangeSessions(): vscode.Event<vscode.AuthenticationSessionsChangeEvent> {339return _asExtensionEvent(extHostAuthentication.getExtensionScopedSessionsEvent(extension.identifier.value));340},341registerAuthenticationProvider(id: string, label: string, provider: vscode.AuthenticationProvider, options?: vscode.AuthenticationProviderOptions): vscode.Disposable {342if (options?.supportedAuthorizationServers) {343checkProposedApiEnabled(extension, 'authIssuers');344}345return extHostAuthentication.registerAuthenticationProvider(id, label, provider, options);346}347};348349// namespace: commands350const commands: typeof vscode.commands = {351registerCommand(id: string, command: <T>(...args: any[]) => T | Thenable<T>, thisArgs?: any): vscode.Disposable {352return extHostCommands.registerCommand(true, id, command, thisArgs, undefined, extension);353},354registerTextEditorCommand(id: string, callback: (textEditor: vscode.TextEditor, edit: vscode.TextEditorEdit, ...args: any[]) => void, thisArg?: any): vscode.Disposable {355return extHostCommands.registerCommand(true, id, (...args: any[]): any => {356const activeTextEditor = extHostEditors.getActiveTextEditor();357if (!activeTextEditor) {358extHostLogService.warn('Cannot execute ' + id + ' because there is no active text editor.');359return undefined;360}361362return activeTextEditor.edit((edit: vscode.TextEditorEdit) => {363callback.apply(thisArg, [activeTextEditor, edit, ...args]);364365}).then((result) => {366if (!result) {367extHostLogService.warn('Edits from command ' + id + ' were not applied.');368}369}, (err) => {370extHostLogService.warn('An error occurred while running command ' + id, err);371});372}, undefined, undefined, extension);373},374registerDiffInformationCommand: (id: string, callback: (diff: vscode.LineChange[], ...args: any[]) => any, thisArg?: any): vscode.Disposable => {375checkProposedApiEnabled(extension, 'diffCommand');376return extHostCommands.registerCommand(true, id, async (...args: any[]): Promise<any> => {377const activeTextEditor = extHostDocumentsAndEditors.activeEditor(true);378if (!activeTextEditor) {379extHostLogService.warn('Cannot execute ' + id + ' because there is no active text editor.');380return undefined;381}382383const diff = await extHostEditors.getDiffInformation(activeTextEditor.id);384callback.apply(thisArg, [diff, ...args]);385}, undefined, undefined, extension);386},387executeCommand<T>(id: string, ...args: any[]): Thenable<T> {388return extHostCommands.executeCommand<T>(id, ...args);389},390getCommands(filterInternal: boolean = false): Thenable<string[]> {391return extHostCommands.getCommands(filterInternal);392}393};394395// namespace: env396const env: typeof vscode.env = {397get machineId() { return initData.telemetryInfo.machineId; },398get devDeviceId() {399checkProposedApiEnabled(extension, 'devDeviceId');400return initData.telemetryInfo.devDeviceId ?? initData.telemetryInfo.machineId;401},402get isAppPortable() {403checkProposedApiEnabled(extension, 'envIsAppPortable');404return initData.environment.isPortable ?? false;405},406get sessionId() { return initData.telemetryInfo.sessionId; },407get language() { return initData.environment.appLanguage; },408get appName() { return initData.environment.appName; },409get appRoot() { return initData.environment.appRoot?.fsPath ?? ''; },410get appHost() { return initData.environment.appHost; },411get uriScheme() { return initData.environment.appUriScheme; },412get clipboard(): vscode.Clipboard { return extHostClipboard.value; },413get shell() {414return extHostTerminalService.getDefaultShell(false);415},416get onDidChangeShell() {417return _asExtensionEvent(extHostTerminalService.onDidChangeShell);418},419get isTelemetryEnabled() {420return extHostTelemetry.getTelemetryConfiguration();421},422get onDidChangeTelemetryEnabled(): vscode.Event<boolean> {423return _asExtensionEvent(extHostTelemetry.onDidChangeTelemetryEnabled);424},425get telemetryConfiguration(): vscode.TelemetryConfiguration {426checkProposedApiEnabled(extension, 'telemetry');427return extHostTelemetry.getTelemetryDetails();428},429get onDidChangeTelemetryConfiguration(): vscode.Event<vscode.TelemetryConfiguration> {430checkProposedApiEnabled(extension, 'telemetry');431return _asExtensionEvent(extHostTelemetry.onDidChangeTelemetryConfiguration);432},433get isMeteredConnection(): boolean {434checkProposedApiEnabled(extension, 'envIsConnectionMetered');435return extHostMeteredConnection.isConnectionMetered;436},437get onDidChangeMeteredConnection(): vscode.Event<boolean> {438checkProposedApiEnabled(extension, 'envIsConnectionMetered');439return _asExtensionEvent(extHostMeteredConnection.onDidChangeIsConnectionMetered);440},441get isNewAppInstall() {442return isNewAppInstall(initData.telemetryInfo.firstSessionDate);443},444createTelemetryLogger(sender: vscode.TelemetrySender, options?: vscode.TelemetryLoggerOptions): vscode.TelemetryLogger {445ExtHostTelemetryLogger.validateSender(sender);446return extHostTelemetry.instantiateLogger(extension, sender, options);447},448async openExternal(uri: URI, options?: { allowContributedOpeners?: boolean | string }) {449return extHostWindow.openUri(uri, {450allowTunneling: initData.remote.isRemote ?? (initData.remote.authority ? await extHostTunnelService.hasTunnelProvider() : false),451allowContributedOpeners: options?.allowContributedOpeners,452});453},454async asExternalUri(uri: URI) {455if (uri.scheme === initData.environment.appUriScheme) {456return extHostUrls.createAppUri(uri);457}458459try {460return await extHostWindow.asExternalUri(uri, { allowTunneling: !!initData.remote.authority });461} catch (err) {462if (matchesScheme(uri, Schemas.http) || matchesScheme(uri, Schemas.https)) {463return uri;464}465466throw err;467}468},469get remoteName() {470return getRemoteName(initData.remote.authority);471},472get remoteAuthority() {473checkProposedApiEnabled(extension, 'resolvers');474return initData.remote.authority;475},476get uiKind() {477return initData.uiKind;478},479get logLevel() {480return extHostLogService.getLevel();481},482get onDidChangeLogLevel() {483return _asExtensionEvent(extHostLogService.onDidChangeLogLevel);484},485get appQuality(): string | undefined {486checkProposedApiEnabled(extension, 'resolvers');487return initData.quality;488},489get appCommit(): string | undefined {490checkProposedApiEnabled(extension, 'resolvers');491return initData.commit;492},493getDataChannel<T>(channelId: string): vscode.DataChannel<T> {494checkProposedApiEnabled(extension, 'dataChannels');495return extHostDataChannels.createDataChannel(extension, channelId);496},497get power(): typeof vscode.env.power {498checkProposedApiEnabled(extension, 'environmentPower');499return {500get onDidSuspend() {501return _asExtensionEvent(extHostPower.onDidSuspend);502},503get onDidResume() {504return _asExtensionEvent(extHostPower.onDidResume);505},506get onDidChangeOnBatteryPower() {507return _asExtensionEvent(extHostPower.onDidChangeOnBatteryPower);508},509get onDidChangeThermalState() {510return _asExtensionEvent(extHostPower.onDidChangeThermalState);511},512get onDidChangeSpeedLimit() {513return _asExtensionEvent(extHostPower.onDidChangeSpeedLimit);514},515get onWillShutdown() {516return _asExtensionEvent(extHostPower.onWillShutdown);517},518get onDidLockScreen() {519return _asExtensionEvent(extHostPower.onDidLockScreen);520},521get onDidUnlockScreen() {522return _asExtensionEvent(extHostPower.onDidUnlockScreen);523},524getSystemIdleState(idleThresholdSeconds: number) {525return extHostPower.getSystemIdleState(idleThresholdSeconds);526},527getSystemIdleTime() {528return extHostPower.getSystemIdleTime();529},530getCurrentThermalState() {531return extHostPower.getCurrentThermalState();532},533isOnBatteryPower() {534return extHostPower.isOnBatteryPower();535},536async startPowerSaveBlocker(type: vscode.env.power.PowerSaveBlockerType): Promise<vscode.env.power.PowerSaveBlocker> {537const blocker = await extHostPower.startPowerSaveBlocker(type);538return {539id: blocker.id,540get isStarted() {541return blocker.isStarted;542},543dispose() {544blocker.dispose();545}546};547}548};549}550};551if (!initData.environment.extensionTestsLocationURI) {552// allow to patch env-function when running tests553Object.freeze(env);554}555556// namespace: tests557const tests: typeof vscode.tests = {558createTestController(provider, label, refreshHandler?: (token: vscode.CancellationToken) => Thenable<void> | void) {559return extHostTesting.createTestController(extension, provider, label, refreshHandler);560},561createTestObserver() {562checkProposedApiEnabled(extension, 'testObserver');563return extHostTesting.createTestObserver();564},565runTests(provider) {566checkProposedApiEnabled(extension, 'testObserver');567return extHostTesting.runTests(provider);568},569registerTestFollowupProvider(provider) {570checkProposedApiEnabled(extension, 'testObserver');571return extHostTesting.registerTestFollowupProvider(provider);572},573get onDidChangeTestResults() {574checkProposedApiEnabled(extension, 'testObserver');575return _asExtensionEvent(extHostTesting.onResultsChanged);576},577get testResults() {578checkProposedApiEnabled(extension, 'testObserver');579return extHostTesting.results;580},581};582583// namespace: extensions584const extensionKind = initData.remote.isRemote585? extHostTypes.ExtensionKind.Workspace586: extHostTypes.ExtensionKind.UI;587588const extensions: typeof vscode.extensions = {589getExtension(extensionId: string, includeFromDifferentExtensionHosts?: boolean): vscode.Extension<any> | undefined {590if (!isProposedApiEnabled(extension, 'extensionsAny')) {591includeFromDifferentExtensionHosts = false;592}593const mine = extensionInfo.mine.getExtensionDescription(extensionId);594if (mine) {595return new Extension(extensionService, extension.identifier, mine, extensionKind, false);596}597if (includeFromDifferentExtensionHosts) {598const foreign = extensionInfo.all.getExtensionDescription(extensionId);599if (foreign) {600return new Extension(extensionService, extension.identifier, foreign, extensionKind /* TODO@alexdima THIS IS WRONG */, true);601}602}603return undefined;604},605get all(): vscode.Extension<any>[] {606const result: vscode.Extension<any>[] = [];607for (const desc of extensionInfo.mine.getAllExtensionDescriptions()) {608result.push(new Extension(extensionService, extension.identifier, desc, extensionKind, false));609}610return result;611},612get allAcrossExtensionHosts(): vscode.Extension<any>[] {613checkProposedApiEnabled(extension, 'extensionsAny');614const local = new ExtensionIdentifierSet(extensionInfo.mine.getAllExtensionDescriptions().map(desc => desc.identifier));615const result: vscode.Extension<any>[] = [];616for (const desc of extensionInfo.all.getAllExtensionDescriptions()) {617const isFromDifferentExtensionHost = !local.has(desc.identifier);618result.push(new Extension(extensionService, extension.identifier, desc, extensionKind /* TODO@alexdima THIS IS WRONG */, isFromDifferentExtensionHost));619}620return result;621},622get onDidChange() {623if (isProposedApiEnabled(extension, 'extensionsAny')) {624return _asExtensionEvent(Event.any(extensionInfo.mine.onDidChange, extensionInfo.all.onDidChange));625}626return _asExtensionEvent(extensionInfo.mine.onDidChange);627}628};629630// namespace: languages631const languages: typeof vscode.languages = {632createDiagnosticCollection(name?: string): vscode.DiagnosticCollection {633return extHostDiagnostics.createDiagnosticCollection(extension.identifier, name);634},635get onDidChangeDiagnostics() {636return _asExtensionEvent(extHostDiagnostics.onDidChangeDiagnostics);637},638getDiagnostics: (resource?: vscode.Uri) => {639// eslint-disable-next-line local/code-no-any-casts640return <any>extHostDiagnostics.getDiagnostics(resource);641},642getLanguages(): Thenable<string[]> {643return extHostLanguages.getLanguages();644},645setTextDocumentLanguage(document: vscode.TextDocument, languageId: string): Thenable<vscode.TextDocument> {646return extHostLanguages.changeLanguage(document.uri, languageId);647},648match(selector: vscode.DocumentSelector, document: vscode.TextDocument): number {649const interalSelector = typeConverters.LanguageSelector.from(selector);650let notebook: vscode.NotebookDocument | undefined;651if (targetsNotebooks(interalSelector)) {652notebook = extHostNotebook.notebookDocuments.find(value => value.apiNotebook.getCells().find(c => c.document === document))?.apiNotebook;653}654return score(interalSelector, document.uri, document.languageId, true, notebook?.uri, notebook?.notebookType);655},656registerCodeActionsProvider(selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider, metadata?: vscode.CodeActionProviderMetadata): vscode.Disposable {657return extHostLanguageFeatures.registerCodeActionProvider(extension, checkSelector(selector), provider, metadata);658},659registerDocumentPasteEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentPasteEditProvider, metadata: vscode.DocumentPasteProviderMetadata): vscode.Disposable {660return extHostLanguageFeatures.registerDocumentPasteEditProvider(extension, checkSelector(selector), provider, metadata);661},662registerCodeLensProvider(selector: vscode.DocumentSelector, provider: vscode.CodeLensProvider): vscode.Disposable {663return extHostLanguageFeatures.registerCodeLensProvider(extension, checkSelector(selector), provider);664},665registerDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.DefinitionProvider): vscode.Disposable {666return extHostLanguageFeatures.registerDefinitionProvider(extension, checkSelector(selector), provider);667},668registerDeclarationProvider(selector: vscode.DocumentSelector, provider: vscode.DeclarationProvider): vscode.Disposable {669return extHostLanguageFeatures.registerDeclarationProvider(extension, checkSelector(selector), provider);670},671registerImplementationProvider(selector: vscode.DocumentSelector, provider: vscode.ImplementationProvider): vscode.Disposable {672return extHostLanguageFeatures.registerImplementationProvider(extension, checkSelector(selector), provider);673},674registerTypeDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.TypeDefinitionProvider): vscode.Disposable {675return extHostLanguageFeatures.registerTypeDefinitionProvider(extension, checkSelector(selector), provider);676},677registerHoverProvider(selector: vscode.DocumentSelector, provider: vscode.HoverProvider): vscode.Disposable {678return extHostLanguageFeatures.registerHoverProvider(extension, checkSelector(selector), provider, extension.identifier);679},680registerEvaluatableExpressionProvider(selector: vscode.DocumentSelector, provider: vscode.EvaluatableExpressionProvider): vscode.Disposable {681return extHostLanguageFeatures.registerEvaluatableExpressionProvider(extension, checkSelector(selector), provider, extension.identifier);682},683registerInlineValuesProvider(selector: vscode.DocumentSelector, provider: vscode.InlineValuesProvider): vscode.Disposable {684return extHostLanguageFeatures.registerInlineValuesProvider(extension, checkSelector(selector), provider, extension.identifier);685},686registerDocumentHighlightProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentHighlightProvider): vscode.Disposable {687return extHostLanguageFeatures.registerDocumentHighlightProvider(extension, checkSelector(selector), provider);688},689registerMultiDocumentHighlightProvider(selector: vscode.DocumentSelector, provider: vscode.MultiDocumentHighlightProvider): vscode.Disposable {690return extHostLanguageFeatures.registerMultiDocumentHighlightProvider(extension, checkSelector(selector), provider);691},692registerLinkedEditingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.LinkedEditingRangeProvider): vscode.Disposable {693return extHostLanguageFeatures.registerLinkedEditingRangeProvider(extension, checkSelector(selector), provider);694},695registerReferenceProvider(selector: vscode.DocumentSelector, provider: vscode.ReferenceProvider): vscode.Disposable {696return extHostLanguageFeatures.registerReferenceProvider(extension, checkSelector(selector), provider);697},698registerRenameProvider(selector: vscode.DocumentSelector, provider: vscode.RenameProvider): vscode.Disposable {699return extHostLanguageFeatures.registerRenameProvider(extension, checkSelector(selector), provider);700},701registerNewSymbolNamesProvider(selector: vscode.DocumentSelector, provider: vscode.NewSymbolNamesProvider): vscode.Disposable {702checkProposedApiEnabled(extension, 'newSymbolNamesProvider');703return extHostLanguageFeatures.registerNewSymbolNamesProvider(extension, checkSelector(selector), provider);704},705registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider, metadata?: vscode.DocumentSymbolProviderMetadata): vscode.Disposable {706return extHostLanguageFeatures.registerDocumentSymbolProvider(extension, checkSelector(selector), provider, metadata);707},708registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): vscode.Disposable {709return extHostLanguageFeatures.registerWorkspaceSymbolProvider(extension, provider);710},711registerDocumentFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentFormattingEditProvider): vscode.Disposable {712return extHostLanguageFeatures.registerDocumentFormattingEditProvider(extension, checkSelector(selector), provider);713},714registerDocumentRangeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeFormattingEditProvider): vscode.Disposable {715return extHostLanguageFeatures.registerDocumentRangeFormattingEditProvider(extension, checkSelector(selector), provider);716},717registerOnTypeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacters: string[]): vscode.Disposable {718return extHostLanguageFeatures.registerOnTypeFormattingEditProvider(extension, checkSelector(selector), provider, [firstTriggerCharacter].concat(moreTriggerCharacters));719},720registerDocumentSemanticTokensProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSemanticTokensProvider, legend: vscode.SemanticTokensLegend): vscode.Disposable {721return extHostLanguageFeatures.registerDocumentSemanticTokensProvider(extension, checkSelector(selector), provider, legend);722},723registerDocumentRangeSemanticTokensProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeSemanticTokensProvider, legend: vscode.SemanticTokensLegend): vscode.Disposable {724return extHostLanguageFeatures.registerDocumentRangeSemanticTokensProvider(extension, checkSelector(selector), provider, legend);725},726registerSignatureHelpProvider(selector: vscode.DocumentSelector, provider: vscode.SignatureHelpProvider, firstItem?: string | vscode.SignatureHelpProviderMetadata, ...remaining: string[]): vscode.Disposable {727if (typeof firstItem === 'object') {728return extHostLanguageFeatures.registerSignatureHelpProvider(extension, checkSelector(selector), provider, firstItem);729}730return extHostLanguageFeatures.registerSignatureHelpProvider(extension, checkSelector(selector), provider, typeof firstItem === 'undefined' ? [] : [firstItem, ...remaining]);731},732registerCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.CompletionItemProvider, ...triggerCharacters: string[]): vscode.Disposable {733return extHostLanguageFeatures.registerCompletionItemProvider(extension, checkSelector(selector), provider, triggerCharacters);734},735registerInlineCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.InlineCompletionItemProvider, metadata?: vscode.InlineCompletionItemProviderMetadata): vscode.Disposable {736if (provider.handleDidShowCompletionItem) {737checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');738}739if (provider.handleDidPartiallyAcceptCompletionItem) {740checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');741}742if (metadata) {743checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');744}745return extHostLanguageFeatures.registerInlineCompletionsProvider(extension, checkSelector(selector), provider, metadata);746},747get inlineCompletionsUnificationState() {748checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');749return extHostLanguageFeatures.inlineCompletionsUnificationState;750},751onDidChangeCompletionsUnificationState(listener, thisArg?, disposables?) {752checkProposedApiEnabled(extension, 'inlineCompletionsAdditions');753return _asExtensionEvent(extHostLanguageFeatures.onDidChangeInlineCompletionsUnificationState)(listener, thisArg, disposables);754},755registerDocumentLinkProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentLinkProvider): vscode.Disposable {756return extHostLanguageFeatures.registerDocumentLinkProvider(extension, checkSelector(selector), provider);757},758registerColorProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentColorProvider): vscode.Disposable {759return extHostLanguageFeatures.registerColorProvider(extension, checkSelector(selector), provider);760},761registerFoldingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): vscode.Disposable {762return extHostLanguageFeatures.registerFoldingRangeProvider(extension, checkSelector(selector), provider);763},764registerSelectionRangeProvider(selector: vscode.DocumentSelector, provider: vscode.SelectionRangeProvider): vscode.Disposable {765return extHostLanguageFeatures.registerSelectionRangeProvider(extension, selector, provider);766},767registerCallHierarchyProvider(selector: vscode.DocumentSelector, provider: vscode.CallHierarchyProvider): vscode.Disposable {768return extHostLanguageFeatures.registerCallHierarchyProvider(extension, selector, provider);769},770registerTypeHierarchyProvider(selector: vscode.DocumentSelector, provider: vscode.TypeHierarchyProvider): vscode.Disposable {771return extHostLanguageFeatures.registerTypeHierarchyProvider(extension, selector, provider);772},773setLanguageConfiguration: (language: string, configuration: vscode.LanguageConfiguration): vscode.Disposable => {774return extHostLanguageFeatures.setLanguageConfiguration(extension, language, configuration);775},776getTokenInformationAtPosition(doc: vscode.TextDocument, pos: vscode.Position) {777checkProposedApiEnabled(extension, 'tokenInformation');778return extHostLanguages.tokenAtPosition(doc, pos);779},780registerInlayHintsProvider(selector: vscode.DocumentSelector, provider: vscode.InlayHintsProvider): vscode.Disposable {781return extHostLanguageFeatures.registerInlayHintsProvider(extension, selector, provider);782},783createLanguageStatusItem(id: string, selector: vscode.DocumentSelector): vscode.LanguageStatusItem {784return extHostLanguages.createLanguageStatusItem(extension, id, selector);785},786registerDocumentDropEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentDropEditProvider, metadata?: vscode.DocumentDropEditProviderMetadata): vscode.Disposable {787return extHostLanguageFeatures.registerDocumentOnDropEditProvider(extension, selector, provider, metadata);788}789};790791// namespace: window792const window: typeof vscode.window = {793get activeTextEditor() {794return extHostEditors.getActiveTextEditor();795},796get visibleTextEditors() {797return extHostEditors.getVisibleTextEditors();798},799get activeTerminal() {800return extHostTerminalService.activeTerminal;801},802get terminals() {803return extHostTerminalService.terminals;804},805async showTextDocument(documentOrUri: vscode.TextDocument | vscode.Uri, columnOrOptions?: vscode.ViewColumn | vscode.TextDocumentShowOptions, preserveFocus?: boolean): Promise<vscode.TextEditor> {806if (URI.isUri(documentOrUri) && documentOrUri.scheme === Schemas.vscodeRemote && !documentOrUri.authority) {807extHostApiDeprecation.report('workspace.showTextDocument', extension, `A URI of 'vscode-remote' scheme requires an authority.`);808}809const document = await (URI.isUri(documentOrUri)810? Promise.resolve(workspace.openTextDocument(documentOrUri))811: Promise.resolve(<vscode.TextDocument>documentOrUri));812813return extHostEditors.showTextDocument(document, columnOrOptions, preserveFocus);814},815createTextEditorDecorationType(options: vscode.DecorationRenderOptions): vscode.TextEditorDecorationType {816return extHostEditors.createTextEditorDecorationType(extension, options);817},818onDidChangeActiveTextEditor(listener, thisArg?, disposables?) {819return _asExtensionEvent(extHostEditors.onDidChangeActiveTextEditor)(listener, thisArg, disposables);820},821onDidChangeVisibleTextEditors(listener, thisArg, disposables) {822return _asExtensionEvent(extHostEditors.onDidChangeVisibleTextEditors)(listener, thisArg, disposables);823},824onDidChangeTextEditorSelection(listener: (e: vscode.TextEditorSelectionChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {825return _asExtensionEvent(extHostEditors.onDidChangeTextEditorSelection)(listener, thisArgs, disposables);826},827onDidChangeTextEditorOptions(listener: (e: vscode.TextEditorOptionsChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {828return _asExtensionEvent(extHostEditors.onDidChangeTextEditorOptions)(listener, thisArgs, disposables);829},830onDidChangeTextEditorVisibleRanges(listener: (e: vscode.TextEditorVisibleRangesChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {831return _asExtensionEvent(extHostEditors.onDidChangeTextEditorVisibleRanges)(listener, thisArgs, disposables);832},833onDidChangeTextEditorViewColumn(listener, thisArg?, disposables?) {834return _asExtensionEvent(extHostEditors.onDidChangeTextEditorViewColumn)(listener, thisArg, disposables);835},836onDidChangeTextEditorDiffInformation(listener, thisArg?, disposables?) {837checkProposedApiEnabled(extension, 'textEditorDiffInformation');838return _asExtensionEvent(extHostEditors.onDidChangeTextEditorDiffInformation)(listener, thisArg, disposables);839},840onDidCloseTerminal(listener, thisArg?, disposables?) {841return _asExtensionEvent(extHostTerminalService.onDidCloseTerminal)(listener, thisArg, disposables);842},843onDidOpenTerminal(listener, thisArg?, disposables?) {844return _asExtensionEvent(extHostTerminalService.onDidOpenTerminal)(listener, thisArg, disposables);845},846onDidChangeActiveTerminal(listener, thisArg?, disposables?) {847return _asExtensionEvent(extHostTerminalService.onDidChangeActiveTerminal)(listener, thisArg, disposables);848},849onDidChangeTerminalDimensions(listener, thisArg?, disposables?) {850checkProposedApiEnabled(extension, 'terminalDimensions');851return _asExtensionEvent(extHostTerminalService.onDidChangeTerminalDimensions)(listener, thisArg, disposables);852},853onDidChangeTerminalState(listener, thisArg?, disposables?) {854return _asExtensionEvent(extHostTerminalService.onDidChangeTerminalState)(listener, thisArg, disposables);855},856onDidWriteTerminalData(listener, thisArg?, disposables?) {857checkProposedApiEnabled(extension, 'terminalDataWriteEvent');858return _asExtensionEvent(extHostTerminalService.onDidWriteTerminalData)(listener, thisArg, disposables);859},860onDidExecuteTerminalCommand(listener, thisArg?, disposables?) {861checkProposedApiEnabled(extension, 'terminalExecuteCommandEvent');862return _asExtensionEvent(extHostTerminalService.onDidExecuteTerminalCommand)(listener, thisArg, disposables);863},864onDidChangeTerminalShellIntegration(listener, thisArg?, disposables?) {865return _asExtensionEvent(extHostTerminalShellIntegration.onDidChangeTerminalShellIntegration)(listener, thisArg, disposables);866},867onDidStartTerminalShellExecution(listener, thisArg?, disposables?) {868return _asExtensionEvent(extHostTerminalShellIntegration.onDidStartTerminalShellExecution)(listener, thisArg, disposables);869},870onDidEndTerminalShellExecution(listener, thisArg?, disposables?) {871return _asExtensionEvent(extHostTerminalShellIntegration.onDidEndTerminalShellExecution)(listener, thisArg, disposables);872},873get state() {874return extHostWindow.getState();875},876onDidChangeWindowState(listener, thisArg?, disposables?) {877return _asExtensionEvent(extHostWindow.onDidChangeWindowState)(listener, thisArg, disposables);878},879showInformationMessage(message: string, ...rest: Array<vscode.MessageOptions | string | vscode.MessageItem>) {880return <Thenable<any>>extHostMessageService.showMessage(extension, Severity.Info, message, rest[0], <Array<string | vscode.MessageItem>>rest.slice(1));881},882showWarningMessage(message: string, ...rest: Array<vscode.MessageOptions | string | vscode.MessageItem>) {883return <Thenable<any>>extHostMessageService.showMessage(extension, Severity.Warning, message, rest[0], <Array<string | vscode.MessageItem>>rest.slice(1));884},885showErrorMessage(message: string, ...rest: Array<vscode.MessageOptions | string | vscode.MessageItem>) {886return <Thenable<any>>extHostMessageService.showMessage(extension, Severity.Error, message, rest[0], <Array<string | vscode.MessageItem>>rest.slice(1));887},888showQuickPick(items: any, options?: vscode.QuickPickOptions, token?: vscode.CancellationToken): any {889return extHostQuickOpen.showQuickPick(extension, items, options, token);890},891showWorkspaceFolderPick(options?: vscode.WorkspaceFolderPickOptions) {892return extHostQuickOpen.showWorkspaceFolderPick(options);893},894showInputBox(options?: vscode.InputBoxOptions, token?: vscode.CancellationToken) {895return extHostQuickOpen.showInput(options, token);896},897showOpenDialog(options) {898return extHostDialogs.showOpenDialog(options);899},900showSaveDialog(options) {901return extHostDialogs.showSaveDialog(options);902},903createStatusBarItem(alignmentOrId?: vscode.StatusBarAlignment | string, priorityOrAlignment?: number | vscode.StatusBarAlignment, priorityArg?: number): vscode.StatusBarItem {904let id: string | undefined;905let alignment: number | undefined;906let priority: number | undefined;907908if (typeof alignmentOrId === 'string') {909id = alignmentOrId;910alignment = priorityOrAlignment;911priority = priorityArg;912} else {913alignment = alignmentOrId;914priority = priorityOrAlignment;915}916917return extHostStatusBar.createStatusBarEntry(extension, id, alignment, priority);918},919setStatusBarMessage(text: string, timeoutOrThenable?: number | Thenable<any>): vscode.Disposable {920return extHostStatusBar.setStatusBarMessage(text, timeoutOrThenable);921},922withScmProgress<R>(task: (progress: vscode.Progress<number>) => Thenable<R>) {923extHostApiDeprecation.report('window.withScmProgress', extension,924`Use 'withProgress' instead.`);925926return extHostProgress.withProgress(extension, { location: extHostTypes.ProgressLocation.SourceControl }, (progress, token) => task({ report(n: number) { /*noop*/ } }));927},928withProgress<R>(options: vscode.ProgressOptions, task: (progress: vscode.Progress<{ message?: string; worked?: number }>, token: vscode.CancellationToken) => Thenable<R>) {929return extHostProgress.withProgress(extension, options, task);930},931createOutputChannel(name: string, options: string | { log: true } | undefined): any {932return extHostOutputService.createOutputChannel(name, options, extension);933},934createWebviewPanel(viewType: string, title: string, showOptions: vscode.ViewColumn | { viewColumn: vscode.ViewColumn; preserveFocus?: boolean }, options?: vscode.WebviewPanelOptions & vscode.WebviewOptions): vscode.WebviewPanel {935return extHostWebviewPanels.createWebviewPanel(extension, viewType, title, showOptions, options);936},937createWebviewTextEditorInset(editor: vscode.TextEditor, line: number, height: number, options?: vscode.WebviewOptions): vscode.WebviewEditorInset {938checkProposedApiEnabled(extension, 'editorInsets');939return extHostEditorInsets.createWebviewEditorInset(editor, line, height, options, extension);940},941createTerminal(nameOrOptions?: vscode.TerminalOptions | vscode.ExtensionTerminalOptions | string, shellPath?: string, shellArgs?: readonly string[] | string): vscode.Terminal {942if (typeof nameOrOptions === 'object') {943if ('pty' in nameOrOptions) {944return extHostTerminalService.createExtensionTerminal(nameOrOptions);945}946return extHostTerminalService.createTerminalFromOptions(nameOrOptions);947}948return extHostTerminalService.createTerminal(nameOrOptions, shellPath, shellArgs);949},950registerTerminalLinkProvider(provider: vscode.TerminalLinkProvider): vscode.Disposable {951return extHostTerminalService.registerLinkProvider(provider);952},953registerTerminalProfileProvider(id: string, provider: vscode.TerminalProfileProvider): vscode.Disposable {954return extHostTerminalService.registerProfileProvider(extension, id, provider);955},956registerTerminalCompletionProvider(provider: vscode.TerminalCompletionProvider<vscode.TerminalCompletionItem>, ...triggerCharacters: string[]): vscode.Disposable {957checkProposedApiEnabled(extension, 'terminalCompletionProvider');958return extHostTerminalService.registerTerminalCompletionProvider(extension, provider, ...triggerCharacters);959},960registerTerminalQuickFixProvider(id: string, provider: vscode.TerminalQuickFixProvider): vscode.Disposable {961checkProposedApiEnabled(extension, 'terminalQuickFixProvider');962return extHostTerminalService.registerTerminalQuickFixProvider(id, extension.identifier.value, provider);963},964registerTreeDataProvider(viewId: string, treeDataProvider: vscode.TreeDataProvider<any>): vscode.Disposable {965return extHostTreeViews.registerTreeDataProvider(viewId, treeDataProvider, extension);966},967createTreeView(viewId: string, options: { treeDataProvider: vscode.TreeDataProvider<any> }): vscode.TreeView<any> {968return extHostTreeViews.createTreeView(viewId, options, extension);969},970registerWebviewPanelSerializer: (viewType: string, serializer: vscode.WebviewPanelSerializer) => {971return extHostWebviewPanels.registerWebviewPanelSerializer(extension, viewType, serializer);972},973registerCustomEditorProvider: (viewType: string, provider: vscode.CustomTextEditorProvider | vscode.CustomReadonlyEditorProvider, options: { webviewOptions?: vscode.WebviewPanelOptions; supportsMultipleEditorsPerDocument?: boolean } = {}) => {974return extHostCustomEditors.registerCustomEditorProvider(extension, viewType, provider, options);975},976registerFileDecorationProvider(provider: vscode.FileDecorationProvider) {977return extHostDecorations.registerFileDecorationProvider(provider, extension);978},979registerUriHandler(handler: vscode.UriHandler) {980return extHostUrls.registerUriHandler(extension, handler);981},982createQuickPick<T extends vscode.QuickPickItem>(): vscode.QuickPick<T> {983return extHostQuickOpen.createQuickPick(extension);984},985createInputBox(): vscode.InputBox {986return extHostQuickOpen.createInputBox(extension);987},988get activeColorTheme(): vscode.ColorTheme {989return extHostTheming.activeColorTheme;990},991onDidChangeActiveColorTheme(listener, thisArg?, disposables?) {992return _asExtensionEvent(extHostTheming.onDidChangeActiveColorTheme)(listener, thisArg, disposables);993},994registerWebviewViewProvider(viewId: string, provider: vscode.WebviewViewProvider, options?: {995webviewOptions?: {996retainContextWhenHidden?: boolean;997};998}) {999return extHostWebviewViews.registerWebviewViewProvider(extension, viewId, provider, options?.webviewOptions);1000},1001get activeNotebookEditor(): vscode.NotebookEditor | undefined {1002return extHostNotebook.activeNotebookEditor;1003},1004onDidChangeActiveNotebookEditor(listener, thisArgs?, disposables?) {1005return _asExtensionEvent(extHostNotebook.onDidChangeActiveNotebookEditor)(listener, thisArgs, disposables);1006},1007get visibleNotebookEditors() {1008return extHostNotebook.visibleNotebookEditors;1009},1010get onDidChangeVisibleNotebookEditors() {1011return _asExtensionEvent(extHostNotebook.onDidChangeVisibleNotebookEditors);1012},1013onDidChangeNotebookEditorSelection(listener, thisArgs?, disposables?) {1014return _asExtensionEvent(extHostNotebookEditors.onDidChangeNotebookEditorSelection)(listener, thisArgs, disposables);1015},1016onDidChangeNotebookEditorVisibleRanges(listener, thisArgs?, disposables?) {1017return _asExtensionEvent(extHostNotebookEditors.onDidChangeNotebookEditorVisibleRanges)(listener, thisArgs, disposables);1018},1019showNotebookDocument(document, options?) {1020return extHostNotebook.showNotebookDocument(document, options);1021},1022registerExternalUriOpener(id: string, opener: vscode.ExternalUriOpener, metadata: vscode.ExternalUriOpenerMetadata) {1023checkProposedApiEnabled(extension, 'externalUriOpener');1024return extHostUriOpeners.registerExternalUriOpener(extension.identifier, id, opener, metadata);1025},1026registerProfileContentHandler(id: string, handler: vscode.ProfileContentHandler) {1027checkProposedApiEnabled(extension, 'profileContentHandlers');1028return extHostProfileContentHandlers.registerProfileContentHandler(extension, id, handler);1029},1030registerQuickDiffProvider(selector: vscode.DocumentSelector, quickDiffProvider: vscode.QuickDiffProvider, id: string, label: string, rootUri?: vscode.Uri): vscode.Disposable {1031checkProposedApiEnabled(extension, 'quickDiffProvider');1032return extHostQuickDiff.registerQuickDiffProvider(extension, checkSelector(selector), quickDiffProvider, id, label, rootUri);1033},1034get tabGroups(): vscode.TabGroups {1035return extHostEditorTabs.tabGroups;1036},1037registerShareProvider(selector: vscode.DocumentSelector, provider: vscode.ShareProvider): vscode.Disposable {1038checkProposedApiEnabled(extension, 'shareProvider');1039return extHostShare.registerShareProvider(checkSelector(selector), provider);1040},1041get nativeHandle(): Uint8Array | undefined {1042checkProposedApiEnabled(extension, 'nativeWindowHandle');1043return extHostWindow.nativeHandle;1044},1045createChatStatusItem: (id: string) => {1046checkProposedApiEnabled(extension, 'chatStatusItem');1047return extHostChatStatus.createChatStatusItem(extension, id);1048},1049};10501051// namespace: workspace10521053const workspace: typeof vscode.workspace = {1054get rootPath() {1055extHostApiDeprecation.report('workspace.rootPath', extension,1056`Please use 'workspace.workspaceFolders' instead. More details: https://aka.ms/vscode-eliminating-rootpath`);10571058return extHostWorkspace.getPath();1059},1060set rootPath(value) {1061throw new errors.ReadonlyError('rootPath');1062},1063getWorkspaceFolder(resource) {1064return extHostWorkspace.getWorkspaceFolder(resource);1065},1066get workspaceFolders() {1067return extHostWorkspace.getWorkspaceFolders();1068},1069get name() {1070return extHostWorkspace.name;1071},1072set name(value) {1073throw new errors.ReadonlyError('name');1074},1075get workspaceFile() {1076return extHostWorkspace.workspaceFile;1077},1078set workspaceFile(value) {1079throw new errors.ReadonlyError('workspaceFile');1080},1081get isAgentSessionsWorkspace() {1082checkProposedApiEnabled(extension, 'agentSessionsWorkspace');1083return extHostWorkspace.isAgentSessionsWorkspace;1084},1085updateWorkspaceFolders: (index, deleteCount, ...workspaceFoldersToAdd) => {1086return extHostWorkspace.updateWorkspaceFolders(extension, index, deleteCount || 0, ...workspaceFoldersToAdd);1087},1088onDidChangeWorkspaceFolders: function (listener, thisArgs?, disposables?) {1089return _asExtensionEvent(extHostWorkspace.onDidChangeWorkspace)(listener, thisArgs, disposables);1090},1091asRelativePath: (pathOrUri, includeWorkspace?) => {1092return extHostWorkspace.getRelativePath(pathOrUri, includeWorkspace);1093},1094findFiles: (include, exclude, maxResults?, token?) => {1095// Note, undefined/null have different meanings on "exclude"1096return extHostWorkspace.findFiles(include, exclude, maxResults, extension.identifier, token);1097},1098findFiles2: (filePattern: vscode.GlobPattern[], options?: vscode.FindFiles2Options, token?: vscode.CancellationToken): Thenable<vscode.Uri[]> => {1099checkProposedApiEnabled(extension, 'findFiles2');1100return extHostWorkspace.findFiles2(filePattern, options, extension.identifier, token);1101},1102findTextInFiles: (query: vscode.TextSearchQuery, optionsOrCallback: vscode.FindTextInFilesOptions | ((result: vscode.TextSearchResult) => void), callbackOrToken?: vscode.CancellationToken | ((result: vscode.TextSearchResult) => void), token?: vscode.CancellationToken) => {1103checkProposedApiEnabled(extension, 'findTextInFiles');1104let options: vscode.FindTextInFilesOptions;1105let callback: (result: vscode.TextSearchResult) => void;11061107if (typeof optionsOrCallback === 'object') {1108options = optionsOrCallback;1109callback = callbackOrToken as (result: vscode.TextSearchResult) => void;1110} else {1111options = {};1112callback = optionsOrCallback;1113token = callbackOrToken as vscode.CancellationToken;1114}11151116return extHostWorkspace.findTextInFiles(query, options || {}, callback, extension.identifier, token);1117},1118findTextInFiles2: (query: vscode.TextSearchQuery2, options?: vscode.FindTextInFilesOptions2, token?: vscode.CancellationToken): vscode.FindTextInFilesResponse => {1119checkProposedApiEnabled(extension, 'findTextInFiles2');1120checkProposedApiEnabled(extension, 'textSearchProvider2');1121return extHostWorkspace.findTextInFiles2(query, options, extension.identifier, token);1122},1123save: (uri) => {1124return extHostWorkspace.save(uri);1125},1126saveAs: (uri) => {1127return extHostWorkspace.saveAs(uri);1128},1129saveAll: (includeUntitled?) => {1130return extHostWorkspace.saveAll(includeUntitled);1131},1132applyEdit(edit: vscode.WorkspaceEdit, metadata?: vscode.WorkspaceEditMetadata): Thenable<boolean> {1133return extHostBulkEdits.applyWorkspaceEdit(edit, extension, metadata);1134},1135createFileSystemWatcher: (pattern, optionsOrIgnoreCreate, ignoreChange?, ignoreDelete?): vscode.FileSystemWatcher => {1136const options: FileSystemWatcherCreateOptions = {1137ignoreCreateEvents: Boolean(optionsOrIgnoreCreate),1138ignoreChangeEvents: Boolean(ignoreChange),1139ignoreDeleteEvents: Boolean(ignoreDelete),1140};11411142return extHostFileSystemEvent.createFileSystemWatcher(extHostWorkspace, configProvider, extHostFileSystemInfo, extension, pattern, options);1143},1144get textDocuments() {1145return extHostDocuments.getAllDocumentData().map(data => data.document);1146},1147set textDocuments(value) {1148throw new errors.ReadonlyError('textDocuments');1149},1150openTextDocument(uriOrFileNameOrOptions?: vscode.Uri | string | { language?: string; content?: string; encoding?: string }, options?: { encoding?: string }) {1151let uriPromise: Thenable<URI>;11521153options = (options ?? uriOrFileNameOrOptions) as ({ language?: string; content?: string; encoding?: string } | undefined);11541155if (typeof uriOrFileNameOrOptions === 'string') {1156uriPromise = Promise.resolve(URI.file(uriOrFileNameOrOptions));1157} else if (URI.isUri(uriOrFileNameOrOptions)) {1158uriPromise = Promise.resolve(uriOrFileNameOrOptions);1159} else if (!options || typeof options === 'object') {1160uriPromise = extHostDocuments.createDocumentData(options);1161} else {1162throw new Error('illegal argument - uriOrFileNameOrOptions');1163}11641165return uriPromise.then(uri => {1166extHostLogService.trace(`openTextDocument from ${extension.identifier}`);1167if (uri.scheme === Schemas.vscodeRemote && !uri.authority) {1168extHostApiDeprecation.report('workspace.openTextDocument', extension, `A URI of 'vscode-remote' scheme requires an authority.`);1169}1170return extHostDocuments.ensureDocumentData(uri, options).then(documentData => {1171return documentData.document;1172});1173});1174},1175onDidOpenTextDocument: (listener, thisArgs?, disposables?) => {1176return _asExtensionEvent(extHostDocuments.onDidAddDocument)(listener, thisArgs, disposables);1177},1178onDidCloseTextDocument: (listener, thisArgs?, disposables?) => {1179return _asExtensionEvent(extHostDocuments.onDidRemoveDocument)(listener, thisArgs, disposables);1180},1181onDidChangeTextDocument: (listener, thisArgs?, disposables?) => {1182if (isProposedApiEnabled(extension, 'textDocumentChangeReason')) {1183return _asExtensionEvent(extHostDocuments.onDidChangeDocumentWithReason)(listener, thisArgs, disposables);1184}1185return _asExtensionEvent(extHostDocuments.onDidChangeDocument)(listener, thisArgs, disposables);1186},1187onDidSaveTextDocument: (listener, thisArgs?, disposables?) => {1188return _asExtensionEvent(extHostDocuments.onDidSaveDocument)(listener, thisArgs, disposables);1189},1190onWillSaveTextDocument: (listener, thisArgs?, disposables?) => {1191return _asExtensionEvent(extHostDocumentSaveParticipant.getOnWillSaveTextDocumentEvent(extension))(listener, thisArgs, disposables);1192},1193get notebookDocuments(): vscode.NotebookDocument[] {1194return extHostNotebook.notebookDocuments.map(d => d.apiNotebook);1195},1196async openNotebookDocument(uriOrType?: URI | string, content?: vscode.NotebookData) {1197let uri: URI;1198if (URI.isUri(uriOrType)) {1199uri = uriOrType;1200await extHostNotebook.openNotebookDocument(uriOrType);1201} else if (typeof uriOrType === 'string') {1202uri = URI.revive(await extHostNotebook.createNotebookDocument({ viewType: uriOrType, content }));1203} else {1204throw new Error('Invalid arguments');1205}1206return extHostNotebook.getNotebookDocument(uri).apiNotebook;1207},1208onDidSaveNotebookDocument(listener, thisArg, disposables) {1209return _asExtensionEvent(extHostNotebookDocuments.onDidSaveNotebookDocument)(listener, thisArg, disposables);1210},1211onDidChangeNotebookDocument(listener, thisArg, disposables) {1212return _asExtensionEvent(extHostNotebookDocuments.onDidChangeNotebookDocument)(listener, thisArg, disposables);1213},1214onWillSaveNotebookDocument(listener, thisArg, disposables) {1215return _asExtensionEvent(extHostNotebookDocumentSaveParticipant.getOnWillSaveNotebookDocumentEvent(extension))(listener, thisArg, disposables);1216},1217get onDidOpenNotebookDocument() {1218return _asExtensionEvent(extHostNotebook.onDidOpenNotebookDocument);1219},1220get onDidCloseNotebookDocument() {1221return _asExtensionEvent(extHostNotebook.onDidCloseNotebookDocument);1222},1223registerNotebookSerializer(viewType: string, serializer: vscode.NotebookSerializer, options?: vscode.NotebookDocumentContentOptions, registration?: vscode.NotebookRegistrationData) {1224return extHostNotebook.registerNotebookSerializer(extension, viewType, serializer, options, isProposedApiEnabled(extension, 'notebookLiveShare') ? registration : undefined);1225},1226onDidChangeConfiguration: (listener: (_: any) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) => {1227return _asExtensionEvent(configProvider.onDidChangeConfiguration)(listener, thisArgs, disposables);1228},1229getConfiguration(section?: string, scope?: vscode.ConfigurationScope | null): vscode.WorkspaceConfiguration {1230scope = arguments.length === 1 ? undefined : scope;1231return configProvider.getConfiguration(section, scope, extension);1232},1233registerTextDocumentContentProvider(scheme: string, provider: vscode.TextDocumentContentProvider) {1234return extHostDocumentContentProviders.registerTextDocumentContentProvider(scheme, provider);1235},1236registerTaskProvider: (type: string, provider: vscode.TaskProvider) => {1237extHostApiDeprecation.report('window.registerTaskProvider', extension,1238`Use the corresponding function on the 'tasks' namespace instead`);12391240return extHostTask.registerTaskProvider(extension, type, provider);1241},1242registerFileSystemProvider(scheme, provider, options) {1243return combinedDisposable(1244extHostFileSystem.registerFileSystemProvider(extension, scheme, provider, options),1245extHostConsumerFileSystem.addFileSystemProvider(scheme, provider, options)1246);1247},1248get fs() {1249return extHostConsumerFileSystem.value;1250},1251registerFileSearchProvider: (scheme: string, provider: vscode.FileSearchProvider) => {1252checkProposedApiEnabled(extension, 'fileSearchProvider');1253return extHostSearch.registerFileSearchProviderOld(scheme, provider);1254},1255registerTextSearchProvider: (scheme: string, provider: vscode.TextSearchProvider) => {1256checkProposedApiEnabled(extension, 'textSearchProvider');1257return extHostSearch.registerTextSearchProviderOld(scheme, provider);1258},1259registerAITextSearchProvider: (scheme: string, provider: vscode.AITextSearchProvider) => {1260// there are some dependencies on textSearchProvider, so we need to check for both1261checkProposedApiEnabled(extension, 'aiTextSearchProvider');1262checkProposedApiEnabled(extension, 'textSearchProvider2');1263return extHostSearch.registerAITextSearchProvider(scheme, provider);1264},1265registerFileSearchProvider2: (scheme: string, provider: vscode.FileSearchProvider2) => {1266checkProposedApiEnabled(extension, 'fileSearchProvider2');1267return extHostSearch.registerFileSearchProvider(scheme, provider);1268},1269registerTextSearchProvider2: (scheme: string, provider: vscode.TextSearchProvider2) => {1270checkProposedApiEnabled(extension, 'textSearchProvider2');1271return extHostSearch.registerTextSearchProvider(scheme, provider);1272},1273registerRemoteAuthorityResolver: (authorityPrefix: string, resolver: vscode.RemoteAuthorityResolver) => {1274checkProposedApiEnabled(extension, 'resolvers');1275return extensionService.registerRemoteAuthorityResolver(authorityPrefix, resolver);1276},1277registerResourceLabelFormatter: (formatter: vscode.ResourceLabelFormatter) => {1278checkProposedApiEnabled(extension, 'resolvers');1279return extHostLabelService.$registerResourceLabelFormatter(formatter);1280},1281getRemoteExecServer: (authority: string) => {1282checkProposedApiEnabled(extension, 'resolvers');1283return extensionService.getRemoteExecServer(authority);1284},1285onDidCreateFiles: (listener, thisArg, disposables) => {1286return _asExtensionEvent(extHostFileSystemEvent.onDidCreateFile)(listener, thisArg, disposables);1287},1288onDidDeleteFiles: (listener, thisArg, disposables) => {1289return _asExtensionEvent(extHostFileSystemEvent.onDidDeleteFile)(listener, thisArg, disposables);1290},1291onDidRenameFiles: (listener, thisArg, disposables) => {1292return _asExtensionEvent(extHostFileSystemEvent.onDidRenameFile)(listener, thisArg, disposables);1293},1294onWillCreateFiles: (listener: (e: vscode.FileWillCreateEvent) => any, thisArg?: any, disposables?: vscode.Disposable[]) => {1295return _asExtensionEvent(extHostFileSystemEvent.getOnWillCreateFileEvent(extension))(listener, thisArg, disposables);1296},1297onWillDeleteFiles: (listener: (e: vscode.FileWillDeleteEvent) => any, thisArg?: any, disposables?: vscode.Disposable[]) => {1298return _asExtensionEvent(extHostFileSystemEvent.getOnWillDeleteFileEvent(extension))(listener, thisArg, disposables);1299},1300onWillRenameFiles: (listener: (e: vscode.FileWillRenameEvent) => any, thisArg?: any, disposables?: vscode.Disposable[]) => {1301return _asExtensionEvent(extHostFileSystemEvent.getOnWillRenameFileEvent(extension))(listener, thisArg, disposables);1302},1303openTunnel: (forward: vscode.TunnelOptions) => {1304checkProposedApiEnabled(extension, 'tunnels');1305return extHostTunnelService.openTunnel(extension, forward).then(value => {1306if (!value) {1307throw new Error('cannot open tunnel');1308}1309return value;1310});1311},1312get tunnels() {1313checkProposedApiEnabled(extension, 'tunnels');1314return extHostTunnelService.getTunnels();1315},1316onDidChangeTunnels: (listener, thisArg?, disposables?) => {1317checkProposedApiEnabled(extension, 'tunnels');1318return _asExtensionEvent(extHostTunnelService.onDidChangeTunnels)(listener, thisArg, disposables);1319},1320registerPortAttributesProvider: (portSelector: vscode.PortAttributesSelector, provider: vscode.PortAttributesProvider) => {1321checkProposedApiEnabled(extension, 'portsAttributes');1322return extHostTunnelService.registerPortsAttributesProvider(portSelector, provider);1323},1324registerTunnelProvider: (tunnelProvider: vscode.TunnelProvider, information: vscode.TunnelInformation) => {1325checkProposedApiEnabled(extension, 'tunnelFactory');1326return extHostTunnelService.registerTunnelProvider(tunnelProvider, information);1327},1328registerTimelineProvider: (scheme: string | string[], provider: vscode.TimelineProvider) => {1329checkProposedApiEnabled(extension, 'timeline');1330return extHostTimeline.registerTimelineProvider(scheme, provider, extension.identifier, extHostCommands.converter);1331},1332get isTrusted() {1333return extHostWorkspace.trusted;1334},1335requestResourceTrust: (options: vscode.ResourceTrustRequestOptions) => {1336checkProposedApiEnabled(extension, 'workspaceTrust');1337return extHostWorkspace.requestResourceTrust(options);1338},1339requestWorkspaceTrust: (options?: vscode.WorkspaceTrustRequestOptions) => {1340checkProposedApiEnabled(extension, 'workspaceTrust');1341return extHostWorkspace.requestWorkspaceTrust(options);1342},1343isResourceTrusted: (resource: vscode.Uri) => {1344checkProposedApiEnabled(extension, 'workspaceTrust');1345return extHostWorkspace.isResourceTrusted(resource);1346},1347onDidChangeWorkspaceTrustedFolders: (listener, thisArgs?, disposables?) => {1348checkProposedApiEnabled(extension, 'workspaceTrust');1349return _asExtensionEvent(extHostWorkspace.onDidChangeWorkspaceTrustedFolders)(listener, thisArgs, disposables);1350},1351onDidGrantWorkspaceTrust: (listener, thisArgs?, disposables?) => {1352return _asExtensionEvent(extHostWorkspace.onDidGrantWorkspaceTrust)(listener, thisArgs, disposables);1353},1354registerEditSessionIdentityProvider: (scheme: string, provider: vscode.EditSessionIdentityProvider) => {1355checkProposedApiEnabled(extension, 'editSessionIdentityProvider');1356return extHostWorkspace.registerEditSessionIdentityProvider(scheme, provider);1357},1358onWillCreateEditSessionIdentity: (listener, thisArgs?, disposables?) => {1359checkProposedApiEnabled(extension, 'editSessionIdentityProvider');1360return _asExtensionEvent(extHostWorkspace.getOnWillCreateEditSessionIdentityEvent(extension))(listener, thisArgs, disposables);1361},1362registerCanonicalUriProvider: (scheme: string, provider: vscode.CanonicalUriProvider) => {1363checkProposedApiEnabled(extension, 'canonicalUriProvider');1364return extHostWorkspace.registerCanonicalUriProvider(scheme, provider);1365},1366getCanonicalUri: (uri: vscode.Uri, options: vscode.CanonicalUriRequestOptions, token: vscode.CancellationToken) => {1367checkProposedApiEnabled(extension, 'canonicalUriProvider');1368return extHostWorkspace.provideCanonicalUri(uri, options, token);1369},1370decode(content: Uint8Array, options?: { uri?: vscode.Uri; encoding?: string }) {1371return extHostWorkspace.decode(content, options);1372},1373encode(content: string, options?: { uri?: vscode.Uri; encoding?: string }) {1374return extHostWorkspace.encode(content, options);1375},1376};13771378// namespace: scm1379const scm: typeof vscode.scm = {1380get inputBox() {1381extHostApiDeprecation.report('scm.inputBox', extension,1382`Use 'SourceControl.inputBox' instead`);13831384return extHostSCM.getLastInputBox(extension)!; // Strict null override - Deprecated api1385},1386createSourceControl(id: string, label: string, rootUri?: vscode.Uri, iconPath?: vscode.IconPath, isHidden?: boolean, parent?: vscode.SourceControl): vscode.SourceControl {1387if (iconPath || isHidden || parent) {1388checkProposedApiEnabled(extension, 'scmProviderOptions');1389}1390return extHostSCM.createSourceControl(extension, id, label, rootUri, iconPath, isHidden, parent);1391}1392};13931394// namespace: comments1395const comments: typeof vscode.comments = {1396createCommentController(id: string, label: string) {1397return extHostComment.createCommentController(extension, id, label);1398}1399};14001401// namespace: debug1402const debug: typeof vscode.debug = {1403get activeDebugSession() {1404return extHostDebugService.activeDebugSession;1405},1406get activeDebugConsole() {1407return extHostDebugService.activeDebugConsole;1408},1409get breakpoints() {1410return extHostDebugService.breakpoints;1411},1412get activeStackItem() {1413return extHostDebugService.activeStackItem;1414},1415registerDebugVisualizationProvider(id, provider) {1416checkProposedApiEnabled(extension, 'debugVisualization');1417return extHostDebugService.registerDebugVisualizationProvider(extension, id, provider);1418},1419registerDebugVisualizationTreeProvider(id, provider) {1420checkProposedApiEnabled(extension, 'debugVisualization');1421return extHostDebugService.registerDebugVisualizationTree(extension, id, provider);1422},1423onDidStartDebugSession(listener, thisArg?, disposables?) {1424return _asExtensionEvent(extHostDebugService.onDidStartDebugSession)(listener, thisArg, disposables);1425},1426onDidTerminateDebugSession(listener, thisArg?, disposables?) {1427return _asExtensionEvent(extHostDebugService.onDidTerminateDebugSession)(listener, thisArg, disposables);1428},1429onDidChangeActiveDebugSession(listener, thisArg?, disposables?) {1430return _asExtensionEvent(extHostDebugService.onDidChangeActiveDebugSession)(listener, thisArg, disposables);1431},1432onDidReceiveDebugSessionCustomEvent(listener, thisArg?, disposables?) {1433return _asExtensionEvent(extHostDebugService.onDidReceiveDebugSessionCustomEvent)(listener, thisArg, disposables);1434},1435onDidChangeBreakpoints(listener, thisArgs?, disposables?) {1436return _asExtensionEvent(extHostDebugService.onDidChangeBreakpoints)(listener, thisArgs, disposables);1437},1438onDidChangeActiveStackItem(listener, thisArg?, disposables?) {1439return _asExtensionEvent(extHostDebugService.onDidChangeActiveStackItem)(listener, thisArg, disposables);1440},1441registerDebugConfigurationProvider(debugType: string, provider: vscode.DebugConfigurationProvider, triggerKind?: vscode.DebugConfigurationProviderTriggerKind) {1442return extHostDebugService.registerDebugConfigurationProvider(debugType, provider, triggerKind || DebugConfigurationProviderTriggerKind.Initial);1443},1444registerDebugAdapterDescriptorFactory(debugType: string, factory: vscode.DebugAdapterDescriptorFactory) {1445return extHostDebugService.registerDebugAdapterDescriptorFactory(extension, debugType, factory);1446},1447registerDebugAdapterTrackerFactory(debugType: string, factory: vscode.DebugAdapterTrackerFactory) {1448return extHostDebugService.registerDebugAdapterTrackerFactory(debugType, factory);1449},1450startDebugging(folder: vscode.WorkspaceFolder | undefined, nameOrConfig: string | vscode.DebugConfiguration, parentSessionOrOptions?: vscode.DebugSession | vscode.DebugSessionOptions) {1451if (!parentSessionOrOptions || (typeof parentSessionOrOptions === 'object' && 'configuration' in parentSessionOrOptions)) {1452return extHostDebugService.startDebugging(folder, nameOrConfig, { parentSession: parentSessionOrOptions });1453}1454return extHostDebugService.startDebugging(folder, nameOrConfig, parentSessionOrOptions || {});1455},1456stopDebugging(session?: vscode.DebugSession) {1457return extHostDebugService.stopDebugging(session);1458},1459addBreakpoints(breakpoints: readonly vscode.Breakpoint[]) {1460return extHostDebugService.addBreakpoints(breakpoints);1461},1462removeBreakpoints(breakpoints: readonly vscode.Breakpoint[]) {1463return extHostDebugService.removeBreakpoints(breakpoints);1464},1465asDebugSourceUri(source: vscode.DebugProtocolSource, session?: vscode.DebugSession): vscode.Uri {1466return extHostDebugService.asDebugSourceUri(source, session);1467}1468};14691470const tasks: typeof vscode.tasks = {1471registerTaskProvider: (type: string, provider: vscode.TaskProvider) => {1472return extHostTask.registerTaskProvider(extension, type, provider);1473},1474fetchTasks: (filter?: vscode.TaskFilter): Thenable<vscode.Task[]> => {1475return extHostTask.fetchTasks(filter);1476},1477executeTask: (task: vscode.Task): Thenable<vscode.TaskExecution> => {1478return extHostTask.executeTask(extension, task);1479},1480get taskExecutions(): vscode.TaskExecution[] {1481return extHostTask.taskExecutions;1482},1483onDidStartTask: (listener: (e: vscode.TaskStartEvent) => any, thisArgs?: any, disposables?) => {1484const wrappedListener = (event: vscode.TaskStartEvent) => {1485if (!isProposedApiEnabled(extension, 'taskExecutionTerminal')) {1486if (event?.execution?.terminal !== undefined) {1487event.execution.terminal = undefined;1488}1489}1490const eventWithExecution = {1491...event,1492execution: event.execution1493};1494return listener.call(thisArgs, eventWithExecution);1495};1496return _asExtensionEvent(extHostTask.onDidStartTask)(wrappedListener, thisArgs, disposables);1497},1498onDidEndTask: (listeners, thisArgs?, disposables?) => {1499return _asExtensionEvent(extHostTask.onDidEndTask)(listeners, thisArgs, disposables);1500},1501onDidStartTaskProcess: (listeners, thisArgs?, disposables?) => {1502return _asExtensionEvent(extHostTask.onDidStartTaskProcess)(listeners, thisArgs, disposables);1503},1504onDidEndTaskProcess: (listeners, thisArgs?, disposables?) => {1505return _asExtensionEvent(extHostTask.onDidEndTaskProcess)(listeners, thisArgs, disposables);1506},1507onDidStartTaskProblemMatchers: (listeners, thisArgs?, disposables?) => {1508checkProposedApiEnabled(extension, 'taskProblemMatcherStatus');1509return _asExtensionEvent(extHostTask.onDidStartTaskProblemMatchers)(listeners, thisArgs, disposables);1510},1511onDidEndTaskProblemMatchers: (listeners, thisArgs?, disposables?) => {1512checkProposedApiEnabled(extension, 'taskProblemMatcherStatus');1513return _asExtensionEvent(extHostTask.onDidEndTaskProblemMatchers)(listeners, thisArgs, disposables);1514}1515};15161517// namespace: notebook1518const notebooks: typeof vscode.notebooks = {1519createNotebookController(id: string, notebookType: string, label: string, handler?, rendererScripts?: vscode.NotebookRendererScript[]) {1520return extHostNotebookKernels.createNotebookController(extension, id, notebookType, label, handler, isProposedApiEnabled(extension, 'notebookMessaging') ? rendererScripts : undefined);1521},1522registerNotebookCellStatusBarItemProvider: (notebookType: string, provider: vscode.NotebookCellStatusBarItemProvider) => {1523return extHostNotebook.registerNotebookCellStatusBarItemProvider(extension, notebookType, provider);1524},1525createRendererMessaging(rendererId) {1526return extHostNotebookRenderers.createRendererMessaging(extension, rendererId);1527},1528createNotebookControllerDetectionTask(notebookType: string) {1529checkProposedApiEnabled(extension, 'notebookKernelSource');1530return extHostNotebookKernels.createNotebookControllerDetectionTask(extension, notebookType);1531},1532registerKernelSourceActionProvider(notebookType: string, provider: vscode.NotebookKernelSourceActionProvider) {1533checkProposedApiEnabled(extension, 'notebookKernelSource');1534return extHostNotebookKernels.registerKernelSourceActionProvider(extension, notebookType, provider);1535},1536};15371538// namespace: l10n1539const l10n: typeof vscode.l10n = {1540t(...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 {1541if (typeof params[0] === 'string') {1542const key = params.shift() as string;15431544// We have either rest args which are Array<string | number | boolean> or an array with a single Record<string, any>.1545// This ensures we get a Record<string | number, any> which will be formatted correctly.1546const argsFormatted = !params || typeof params[0] !== 'object' ? params : params[0];1547return extHostLocalization.getMessage(extension.identifier.value, { message: key, args: argsFormatted as Record<string | number, any> | undefined });1548}15491550return extHostLocalization.getMessage(extension.identifier.value, params[0]);1551},1552get bundle() {1553return extHostLocalization.getBundle(extension.identifier.value);1554},1555get uri() {1556return extHostLocalization.getBundleUri(extension.identifier.value);1557}1558};15591560// namespace: interactive1561const interactive: typeof vscode.interactive = {1562transferActiveChat(toWorkspace: vscode.Uri): Thenable<void> {1563checkProposedApiEnabled(extension, 'interactive');1564return extHostChatAgents2.transferActiveChat(toWorkspace);1565}1566};15671568// namespace: ai1569const ai: typeof vscode.ai = {1570getRelatedInformation(query: string, types: vscode.RelatedInformationType[]): Thenable<vscode.RelatedInformationResult[]> {1571checkProposedApiEnabled(extension, 'aiRelatedInformation');1572return extHostAiRelatedInformation.getRelatedInformation(extension, query, types);1573},1574registerRelatedInformationProvider(type: vscode.RelatedInformationType, provider: vscode.RelatedInformationProvider) {1575checkProposedApiEnabled(extension, 'aiRelatedInformation');1576return extHostAiRelatedInformation.registerRelatedInformationProvider(extension, type, provider);1577},1578registerEmbeddingVectorProvider(model: string, provider: vscode.EmbeddingVectorProvider) {1579checkProposedApiEnabled(extension, 'aiRelatedInformation');1580return extHostAiEmbeddingVector.registerEmbeddingVectorProvider(extension, model, provider);1581},1582registerSettingsSearchProvider(provider: vscode.SettingsSearchProvider) {1583checkProposedApiEnabled(extension, 'aiSettingsSearch');1584return extHostAiSettingsSearch.registerSettingsSearchProvider(extension, provider);1585}1586};15871588// namespace: chatregisterMcpServerDefinitionProvider1589const chat: typeof vscode.chat = {1590registerMappedEditsProvider(_selector: vscode.DocumentSelector, _provider: vscode.MappedEditsProvider) {1591checkProposedApiEnabled(extension, 'mappedEditsProvider');1592// no longer supported1593return { dispose() { } };1594},1595registerMappedEditsProvider2(provider: vscode.MappedEditsProvider2) {1596checkProposedApiEnabled(extension, 'mappedEditsProvider');1597return extHostCodeMapper.registerMappedEditsProvider(extension, provider);1598},1599createChatParticipant(id: string, handler: vscode.ChatExtendedRequestHandler) {1600return extHostChatAgents2.createChatAgent(extension, id, handler);1601},1602createDynamicChatParticipant(id: string, dynamicProps: vscode.DynamicChatParticipantProps, handler: vscode.ChatExtendedRequestHandler): vscode.ChatParticipant {1603checkProposedApiEnabled(extension, 'chatParticipantPrivate');1604return extHostChatAgents2.createDynamicChatAgent(extension, id, dynamicProps, handler);1605},1606registerChatParticipantDetectionProvider(provider: vscode.ChatParticipantDetectionProvider) {1607checkProposedApiEnabled(extension, 'chatParticipantPrivate');1608return extHostChatAgents2.registerChatParticipantDetectionProvider(extension, provider);1609},1610onDidDisposeChatSession: (listeners, thisArgs?, disposables?) => {1611checkProposedApiEnabled(extension, 'chatParticipantPrivate');1612return _asExtensionEvent(extHostChatAgents2.onDidDisposeChatSession)(listeners, thisArgs, disposables);1613},1614registerChatSessionItemProvider: (chatSessionType: string, provider: vscode.ChatSessionItemProvider) => {1615checkProposedApiEnabled(extension, 'chatSessionsProvider');1616return extHostChatSessions.registerChatSessionItemProvider(extension, chatSessionType, provider);1617},1618createChatSessionItemController: (chatSessionType: string, refreshHandler: (token: vscode.CancellationToken) => Thenable<void>) => {1619checkProposedApiEnabled(extension, 'chatSessionsProvider');1620return extHostChatSessions.createChatSessionItemController(extension, chatSessionType, refreshHandler);1621},1622registerChatSessionContentProvider(scheme: string, provider: vscode.ChatSessionContentProvider, chatParticipant: vscode.ChatParticipant, capabilities?: vscode.ChatSessionCapabilities) {1623checkProposedApiEnabled(extension, 'chatSessionsProvider');1624return extHostChatSessions.registerChatSessionContentProvider(extension, scheme, chatParticipant, provider, capabilities);1625},1626registerChatOutputRenderer: (viewType: string, renderer: vscode.ChatOutputRenderer) => {1627checkProposedApiEnabled(extension, 'chatOutputRenderer');1628return extHostChatOutputRenderer.registerChatOutputRenderer(extension, viewType, renderer);1629},1630registerChatWorkspaceContextProvider(id: string, provider: vscode.ChatWorkspaceContextProvider): vscode.Disposable {1631checkProposedApiEnabled(extension, 'chatContextProvider');1632return extHostChatContext.registerChatWorkspaceContextProvider(`${extension.id}-${id}`, provider);1633},1634registerChatExplicitContextProvider(id: string, provider: vscode.ChatExplicitContextProvider): vscode.Disposable {1635checkProposedApiEnabled(extension, 'chatContextProvider');1636return extHostChatContext.registerChatExplicitContextProvider(`${extension.id}-${id}`, provider);1637},1638registerChatResourceContextProvider(selector: vscode.DocumentSelector, id: string, provider: vscode.ChatResourceContextProvider): vscode.Disposable {1639checkProposedApiEnabled(extension, 'chatContextProvider');1640return extHostChatContext.registerChatResourceContextProvider(checkSelector(selector), `${extension.id}-${id}`, provider);1641},1642/** @deprecated Use registerChatWorkspaceContextProvider, registerChatExplicitContextProvider, or registerChatResourceContextProvider instead. */1643registerChatContextProvider(selector: vscode.DocumentSelector | undefined, id: string, provider: vscode.ChatContextProvider): vscode.Disposable {1644checkProposedApiEnabled(extension, 'chatContextProvider');1645return extHostChatContext.registerChatContextProvider(selector ? checkSelector(selector) : undefined, `${extension.id}-${id}`, provider);1646},1647registerCustomAgentProvider(provider: vscode.ChatCustomAgentProvider): vscode.Disposable {1648checkProposedApiEnabled(extension, 'chatPromptFiles');1649return extHostChatAgents2.registerPromptFileProvider(extension, PromptsType.agent, provider);1650},1651registerInstructionsProvider(provider: vscode.ChatInstructionsProvider): vscode.Disposable {1652checkProposedApiEnabled(extension, 'chatPromptFiles');1653return extHostChatAgents2.registerPromptFileProvider(extension, PromptsType.instructions, provider);1654},1655registerPromptFileProvider(provider: vscode.ChatPromptFileProvider): vscode.Disposable {1656checkProposedApiEnabled(extension, 'chatPromptFiles');1657return extHostChatAgents2.registerPromptFileProvider(extension, PromptsType.prompt, provider);1658},1659registerSkillProvider(provider: vscode.ChatSkillProvider): vscode.Disposable {1660checkProposedApiEnabled(extension, 'chatPromptFiles');1661return extHostChatAgents2.registerPromptFileProvider(extension, PromptsType.skill, provider);1662},1663async executeHook(hookType: vscode.ChatHookType, options: vscode.ChatHookExecutionOptions, token?: vscode.CancellationToken): Promise<vscode.ChatHookResult[]> {1664checkProposedApiEnabled(extension, 'chatHooks');1665return extHostHooks.executeHook(hookType, options, token);1666},1667};16681669// namespace: lm1670const lm: typeof vscode.lm = {1671selectChatModels: (selector) => {1672return extHostLanguageModels.selectLanguageModels(extension, selector ?? {});1673},1674onDidChangeChatModels: (listener, thisArgs?, disposables?) => {1675return extHostLanguageModels.onDidChangeProviders(listener, thisArgs, disposables);1676},1677registerLanguageModelChatProvider: (vendor, provider) => {1678return extHostLanguageModels.registerLanguageModelChatProvider(extension, vendor, provider);1679},1680get isModelProxyAvailable() {1681checkProposedApiEnabled(extension, 'languageModelProxy');1682return extHostLanguageModels.isModelProxyAvailable;1683},1684onDidChangeModelProxyAvailability: (listener, thisArgs?, disposables?) => {1685checkProposedApiEnabled(extension, 'languageModelProxy');1686return extHostLanguageModels.onDidChangeModelProxyAvailability(listener, thisArgs, disposables);1687},1688getModelProxy: () => {1689checkProposedApiEnabled(extension, 'languageModelProxy');1690return extHostLanguageModels.getModelProxy(extension);1691},1692registerLanguageModelProxyProvider: (provider) => {1693checkProposedApiEnabled(extension, 'chatParticipantPrivate');1694return extHostLanguageModels.registerLanguageModelProxyProvider(extension, provider);1695},1696// --- embeddings1697get embeddingModels() {1698checkProposedApiEnabled(extension, 'embeddings');1699return extHostEmbeddings.embeddingsModels;1700},1701onDidChangeEmbeddingModels: (listener, thisArgs?, disposables?) => {1702checkProposedApiEnabled(extension, 'embeddings');1703return extHostEmbeddings.onDidChange(listener, thisArgs, disposables);1704},1705registerEmbeddingsProvider(embeddingsModel, provider) {1706checkProposedApiEnabled(extension, 'embeddings');1707return extHostEmbeddings.registerEmbeddingsProvider(extension, embeddingsModel, provider);1708},1709async computeEmbeddings(embeddingsModel, input, token?): Promise<any> {1710checkProposedApiEnabled(extension, 'embeddings');1711if (typeof input === 'string') {1712return extHostEmbeddings.computeEmbeddings(embeddingsModel, input, token);1713} else {1714return extHostEmbeddings.computeEmbeddings(embeddingsModel, input, token);1715}1716},1717registerTool<T>(name: string, tool: vscode.LanguageModelTool<T>) {1718return extHostLanguageModelTools.registerTool(extension, name, tool);1719},1720registerToolDefinition<T>(definition: vscode.LanguageModelToolDefinition, tool: vscode.LanguageModelTool<T>) {1721return extHostLanguageModelTools.registerToolDefinition(extension, definition, tool);1722},1723invokeTool<T>(nameOrInfo: string | vscode.LanguageModelToolInformation, parameters: vscode.LanguageModelToolInvocationOptions<T>, token?: vscode.CancellationToken) {1724if (typeof nameOrInfo !== 'string') {1725checkProposedApiEnabled(extension, 'chatParticipantAdditions');1726}1727return extHostLanguageModelTools.invokeTool(extension, nameOrInfo, parameters, token);1728},1729get tools() {1730return extHostLanguageModelTools.getTools(extension);1731},1732fileIsIgnored(uri: vscode.Uri, token?: vscode.CancellationToken) {1733return extHostLanguageModels.fileIsIgnored(extension, uri, token);1734},1735registerIgnoredFileProvider(provider: vscode.LanguageModelIgnoredFileProvider) {1736return extHostLanguageModels.registerIgnoredFileProvider(extension, provider);1737},1738registerMcpServerDefinitionProvider(id, provider) {1739return extHostMcp.registerMcpConfigurationProvider(extension, id, provider);1740},1741onDidChangeMcpServerDefinitions: (...args) => {1742checkProposedApiEnabled(extension, 'mcpServerDefinitions');1743return _asExtensionEvent(extHostMcp.onDidChangeMcpServerDefinitions)(...args);1744},1745get mcpServerDefinitions() {1746checkProposedApiEnabled(extension, 'mcpServerDefinitions');1747return extHostMcp.mcpServerDefinitions;1748},1749startMcpGateway() {1750checkProposedApiEnabled(extension, 'mcpServerDefinitions');1751return extHostMcp.startMcpGateway();1752},1753onDidChangeChatRequestTools(...args) {1754checkProposedApiEnabled(extension, 'chatParticipantAdditions');1755return _asExtensionEvent(extHostChatAgents2.onDidChangeChatRequestTools)(...args);1756}1757};17581759// namespace: speech1760const speech: typeof vscode.speech = {1761registerSpeechProvider(id: string, provider: vscode.SpeechProvider) {1762checkProposedApiEnabled(extension, 'speech');1763return extHostSpeech.registerProvider(extension.identifier, id, provider);1764}1765};17661767// eslint-disable-next-line local/code-no-dangerous-type-assertions1768return <typeof vscode>{1769version: initData.version,1770// namespaces1771ai,1772authentication,1773commands,1774comments,1775chat,1776debug,1777env,1778extensions,1779interactive,1780l10n,1781languages,1782lm,1783notebooks,1784scm,1785speech,1786tasks,1787tests,1788window,1789workspace,1790// types1791Breakpoint: extHostTypes.Breakpoint,1792TerminalOutputAnchor: extHostTypes.TerminalOutputAnchor,1793ChatResultFeedbackKind: extHostTypes.ChatResultFeedbackKind,1794ChatVariableLevel: extHostTypes.ChatVariableLevel,1795ChatCompletionItem: extHostTypes.ChatCompletionItem,1796ChatReferenceDiagnostic: extHostTypes.ChatReferenceDiagnostic,1797CallHierarchyIncomingCall: extHostTypes.CallHierarchyIncomingCall,1798CallHierarchyItem: extHostTypes.CallHierarchyItem,1799CallHierarchyOutgoingCall: extHostTypes.CallHierarchyOutgoingCall,1800CancellationError: errors.CancellationError,1801CancellationTokenSource: CancellationTokenSource,1802CandidatePortSource: CandidatePortSource,1803CodeAction: extHostTypes.CodeAction,1804CodeActionKind: extHostTypes.CodeActionKind,1805CodeActionTriggerKind: extHostTypes.CodeActionTriggerKind,1806CodeLens: extHostTypes.CodeLens,1807Color: extHostTypes.Color,1808ColorInformation: extHostTypes.ColorInformation,1809ColorPresentation: extHostTypes.ColorPresentation,1810ColorThemeKind: extHostTypes.ColorThemeKind,1811CommentMode: extHostTypes.CommentMode,1812CommentState: extHostTypes.CommentState,1813CommentThreadCollapsibleState: extHostTypes.CommentThreadCollapsibleState,1814CommentThreadState: extHostTypes.CommentThreadState,1815CommentThreadApplicability: extHostTypes.CommentThreadApplicability,1816CommentThreadFocus: extHostTypes.CommentThreadFocus,1817CompletionItem: extHostTypes.CompletionItem,1818CompletionItemKind: extHostTypes.CompletionItemKind,1819CompletionItemTag: extHostTypes.CompletionItemTag,1820CompletionList: extHostTypes.CompletionList,1821CompletionTriggerKind: extHostTypes.CompletionTriggerKind,1822ConfigurationTarget: extHostTypes.ConfigurationTarget,1823CustomExecution: extHostTypes.CustomExecution,1824DebugAdapterExecutable: extHostTypes.DebugAdapterExecutable,1825DebugAdapterInlineImplementation: extHostTypes.DebugAdapterInlineImplementation,1826DebugAdapterNamedPipeServer: extHostTypes.DebugAdapterNamedPipeServer,1827DebugAdapterServer: extHostTypes.DebugAdapterServer,1828DebugConfigurationProviderTriggerKind: DebugConfigurationProviderTriggerKind,1829DebugConsoleMode: extHostTypes.DebugConsoleMode,1830DebugVisualization: extHostTypes.DebugVisualization,1831DecorationRangeBehavior: extHostTypes.DecorationRangeBehavior,1832Diagnostic: extHostTypes.Diagnostic,1833DiagnosticRelatedInformation: extHostTypes.DiagnosticRelatedInformation,1834DiagnosticSeverity: extHostTypes.DiagnosticSeverity,1835DiagnosticTag: extHostTypes.DiagnosticTag,1836Disposable: extHostTypes.Disposable,1837DocumentHighlight: extHostTypes.DocumentHighlight,1838DocumentHighlightKind: extHostTypes.DocumentHighlightKind,1839MultiDocumentHighlight: extHostTypes.MultiDocumentHighlight,1840DocumentLink: extHostTypes.DocumentLink,1841DocumentSymbol: extHostTypes.DocumentSymbol,1842EndOfLine: extHostTypes.EndOfLine,1843EnvironmentVariableMutatorType: extHostTypes.EnvironmentVariableMutatorType,1844EvaluatableExpression: extHostTypes.EvaluatableExpression,1845InlineValueText: extHostTypes.InlineValueText,1846InlineValueVariableLookup: extHostTypes.InlineValueVariableLookup,1847InlineValueEvaluatableExpression: extHostTypes.InlineValueEvaluatableExpression,1848InlineCompletionTriggerKind: extHostTypes.InlineCompletionTriggerKind,1849InlineCompletionsDisposeReasonKind: extHostTypes.InlineCompletionsDisposeReasonKind,1850EventEmitter: Emitter,1851ExtensionKind: extHostTypes.ExtensionKind,1852ExtensionMode: extHostTypes.ExtensionMode,1853ExternalUriOpenerPriority: extHostTypes.ExternalUriOpenerPriority,1854FileChangeType: extHostTypes.FileChangeType,1855FileDecoration: extHostTypes.FileDecoration,1856FileDecoration2: extHostTypes.FileDecoration,1857FileSystemError: extHostTypes.FileSystemError,1858FileType: files.FileType,1859FilePermission: files.FilePermission,1860FoldingRange: extHostTypes.FoldingRange,1861FoldingRangeKind: extHostTypes.FoldingRangeKind,1862FunctionBreakpoint: extHostTypes.FunctionBreakpoint,1863InlineCompletionItem: extHostTypes.InlineSuggestion,1864InlineCompletionList: extHostTypes.InlineSuggestionList,1865Hover: extHostTypes.Hover,1866VerboseHover: extHostTypes.VerboseHover,1867HoverVerbosityAction: extHostTypes.HoverVerbosityAction,1868IndentAction: languageConfiguration.IndentAction,1869Location: extHostTypes.Location,1870MarkdownString: extHostTypes.MarkdownString,1871OverviewRulerLane: OverviewRulerLane,1872ParameterInformation: extHostTypes.ParameterInformation,1873PortAutoForwardAction: extHostTypes.PortAutoForwardAction,1874Position: extHostTypes.Position,1875ProcessExecution: extHostTypes.ProcessExecution,1876ProgressLocation: extHostTypes.ProgressLocation,1877QuickInputButtonLocation: extHostTypes.QuickInputButtonLocation,1878QuickInputButtons: extHostTypes.QuickInputButtons,1879Range: extHostTypes.Range,1880RelativePattern: extHostTypes.RelativePattern,1881Selection: extHostTypes.Selection,1882SelectionRange: extHostTypes.SelectionRange,1883SemanticTokens: extHostTypes.SemanticTokens,1884SemanticTokensBuilder: extHostTypes.SemanticTokensBuilder,1885SemanticTokensEdit: extHostTypes.SemanticTokensEdit,1886SemanticTokensEdits: extHostTypes.SemanticTokensEdits,1887SemanticTokensLegend: extHostTypes.SemanticTokensLegend,1888ShellExecution: extHostTypes.ShellExecution,1889ShellQuoting: extHostTypes.ShellQuoting,1890SignatureHelp: extHostTypes.SignatureHelp,1891SignatureHelpTriggerKind: extHostTypes.SignatureHelpTriggerKind,1892SignatureInformation: extHostTypes.SignatureInformation,1893SnippetString: extHostTypes.SnippetString,1894SourceBreakpoint: extHostTypes.SourceBreakpoint,1895StandardTokenType: extHostTypes.StandardTokenType,1896StatusBarAlignment: extHostTypes.StatusBarAlignment,1897SymbolInformation: extHostTypes.SymbolInformation,1898SymbolKind: extHostTypes.SymbolKind,1899SymbolTag: extHostTypes.SymbolTag,1900Task: extHostTypes.Task,1901TaskEventKind: extHostTypes.TaskEventKind,1902TaskGroup: extHostTypes.TaskGroup,1903TaskPanelKind: extHostTypes.TaskPanelKind,1904TaskRevealKind: extHostTypes.TaskRevealKind,1905TaskScope: extHostTypes.TaskScope,1906TerminalLink: extHostTypes.TerminalLink,1907TerminalQuickFixTerminalCommand: extHostTypes.TerminalQuickFixCommand,1908TerminalQuickFixOpener: extHostTypes.TerminalQuickFixOpener,1909TerminalLocation: extHostTypes.TerminalLocation,1910TerminalProfile: extHostTypes.TerminalProfile,1911TerminalExitReason: extHostTypes.TerminalExitReason,1912TerminalShellExecutionCommandLineConfidence: extHostTypes.TerminalShellExecutionCommandLineConfidence,1913TerminalCompletionItem: extHostTypes.TerminalCompletionItem,1914TerminalCompletionItemKind: extHostTypes.TerminalCompletionItemKind,1915TerminalCompletionList: extHostTypes.TerminalCompletionList,1916TerminalShellType: extHostTypes.TerminalShellType,1917TextDocumentSaveReason: extHostTypes.TextDocumentSaveReason,1918TextEdit: extHostTypes.TextEdit,1919SnippetTextEdit: extHostTypes.SnippetTextEdit,1920TextEditorCursorStyle: TextEditorCursorStyle,1921TextEditorChangeKind: extHostTypes.TextEditorChangeKind,1922TextEditorLineNumbersStyle: extHostTypes.TextEditorLineNumbersStyle,1923TextEditorRevealType: extHostTypes.TextEditorRevealType,1924TextEditorSelectionChangeKind: extHostTypes.TextEditorSelectionChangeKind,1925SyntaxTokenType: extHostTypes.SyntaxTokenType,1926TextDocumentChangeReason: extHostTypes.TextDocumentChangeReason,1927ThemeColor: extHostTypes.ThemeColor,1928ThemeIcon: extHostTypes.ThemeIcon,1929TreeItem: extHostTypes.TreeItem,1930TreeItemCheckboxState: extHostTypes.TreeItemCheckboxState,1931TreeItemCollapsibleState: extHostTypes.TreeItemCollapsibleState,1932TypeHierarchyItem: extHostTypes.TypeHierarchyItem,1933UIKind: UIKind,1934Uri: URI,1935ViewColumn: extHostTypes.ViewColumn,1936WorkspaceEdit: extHostTypes.WorkspaceEdit,1937// proposed api types1938DocumentPasteTriggerKind: extHostTypes.DocumentPasteTriggerKind,1939DocumentDropEdit: extHostTypes.DocumentDropEdit,1940DocumentDropOrPasteEditKind: extHostTypes.DocumentDropOrPasteEditKind,1941DocumentPasteEdit: extHostTypes.DocumentPasteEdit,1942InlayHint: extHostTypes.InlayHint,1943InlayHintLabelPart: extHostTypes.InlayHintLabelPart,1944InlayHintKind: extHostTypes.InlayHintKind,1945RemoteAuthorityResolverError: extHostTypes.RemoteAuthorityResolverError,1946ResolvedAuthority: extHostTypes.ResolvedAuthority,1947ManagedResolvedAuthority: extHostTypes.ManagedResolvedAuthority,1948SourceControlInputBoxValidationType: extHostTypes.SourceControlInputBoxValidationType,1949ExtensionRuntime: extHostTypes.ExtensionRuntime,1950TimelineItem: extHostTypes.TimelineItem,1951NotebookRange: extHostTypes.NotebookRange,1952NotebookCellKind: extHostTypes.NotebookCellKind,1953NotebookCellExecutionState: extHostTypes.NotebookCellExecutionState,1954NotebookCellData: extHostTypes.NotebookCellData,1955NotebookData: extHostTypes.NotebookData,1956NotebookRendererScript: extHostTypes.NotebookRendererScript,1957NotebookCellStatusBarAlignment: extHostTypes.NotebookCellStatusBarAlignment,1958NotebookEditorRevealType: extHostTypes.NotebookEditorRevealType,1959NotebookCellOutput: extHostTypes.NotebookCellOutput,1960NotebookCellOutputItem: extHostTypes.NotebookCellOutputItem,1961CellErrorStackFrame: extHostTypes.CellErrorStackFrame,1962NotebookCellStatusBarItem: extHostTypes.NotebookCellStatusBarItem,1963NotebookControllerAffinity: extHostTypes.NotebookControllerAffinity,1964NotebookControllerAffinity2: extHostTypes.NotebookControllerAffinity2,1965NotebookEdit: extHostTypes.NotebookEdit,1966NotebookKernelSourceAction: extHostTypes.NotebookKernelSourceAction,1967NotebookVariablesRequestKind: extHostTypes.NotebookVariablesRequestKind,1968PortAttributes: extHostTypes.PortAttributes,1969LinkedEditingRanges: extHostTypes.LinkedEditingRanges,1970TestResultState: extHostTypes.TestResultState,1971TestRunRequest: extHostTypes.TestRunRequest,1972TestMessage: extHostTypes.TestMessage,1973TestMessageStackFrame: extHostTypes.TestMessageStackFrame,1974TestTag: extHostTypes.TestTag,1975TestRunProfileKind: extHostTypes.TestRunProfileKind,1976TextSearchCompleteMessageType: TextSearchCompleteMessageType,1977DataTransfer: extHostTypes.DataTransfer,1978DataTransferItem: extHostTypes.DataTransferItem,1979TestCoverageCount: extHostTypes.TestCoverageCount,1980FileCoverage: extHostTypes.FileCoverage,1981StatementCoverage: extHostTypes.StatementCoverage,1982BranchCoverage: extHostTypes.BranchCoverage,1983DeclarationCoverage: extHostTypes.DeclarationCoverage,1984WorkspaceTrustState: extHostTypes.WorkspaceTrustState,1985LanguageStatusSeverity: extHostTypes.LanguageStatusSeverity,1986QuickPickItemKind: extHostTypes.QuickPickItemKind,1987InputBoxValidationSeverity: extHostTypes.InputBoxValidationSeverity,1988TabInputText: extHostTypes.TextTabInput,1989TabInputTextDiff: extHostTypes.TextDiffTabInput,1990TabInputTextMerge: extHostTypes.TextMergeTabInput,1991TabInputCustom: extHostTypes.CustomEditorTabInput,1992TabInputNotebook: extHostTypes.NotebookEditorTabInput,1993TabInputNotebookDiff: extHostTypes.NotebookDiffEditorTabInput,1994TabInputWebview: extHostTypes.WebviewEditorTabInput,1995TabInputTerminal: extHostTypes.TerminalEditorTabInput,1996TabInputInteractiveWindow: extHostTypes.InteractiveWindowInput,1997TabInputChat: extHostTypes.ChatEditorTabInput,1998TabInputTextMultiDiff: extHostTypes.TextMultiDiffTabInput,1999TelemetryTrustedValue: TelemetryTrustedValue,2000LogLevel: LogLevel,2001EditSessionIdentityMatch: EditSessionIdentityMatch,2002InteractiveSessionVoteDirection: extHostTypes.InteractiveSessionVoteDirection,2003ChatCopyKind: extHostTypes.ChatCopyKind,2004ChatSessionChangedFile: extHostTypes.ChatSessionChangedFile,2005ChatSessionChangedFile2: extHostTypes.ChatSessionChangedFile2,2006ChatEditingSessionActionOutcome: extHostTypes.ChatEditingSessionActionOutcome,2007InteractiveEditorResponseFeedbackKind: extHostTypes.InteractiveEditorResponseFeedbackKind,2008DebugStackFrame: extHostTypes.DebugStackFrame,2009DebugThread: extHostTypes.DebugThread,2010RelatedInformationType: extHostTypes.RelatedInformationType,2011SpeechToTextStatus: extHostTypes.SpeechToTextStatus,2012TextToSpeechStatus: extHostTypes.TextToSpeechStatus,2013PartialAcceptTriggerKind: extHostTypes.PartialAcceptTriggerKind,2014InlineCompletionEndOfLifeReasonKind: extHostTypes.InlineCompletionEndOfLifeReasonKind,2015InlineCompletionDisplayLocationKind: extHostTypes.InlineCompletionDisplayLocationKind,2016KeywordRecognitionStatus: extHostTypes.KeywordRecognitionStatus,2017ChatImageMimeType: extHostTypes.ChatImageMimeType,2018ChatResponseMarkdownPart: extHostTypes.ChatResponseMarkdownPart,2019ChatResponseFileTreePart: extHostTypes.ChatResponseFileTreePart,2020ChatResponseAnchorPart: extHostTypes.ChatResponseAnchorPart,2021ChatResponseProgressPart: extHostTypes.ChatResponseProgressPart,2022ChatResponseProgressPart2: extHostTypes.ChatResponseProgressPart2,2023ChatResponseThinkingProgressPart: extHostTypes.ChatResponseThinkingProgressPart,2024ChatResponseHookPart: extHostTypes.ChatResponseHookPart,2025ChatResponseReferencePart: extHostTypes.ChatResponseReferencePart,2026ChatResponseReferencePart2: extHostTypes.ChatResponseReferencePart,2027ChatResponseCodeCitationPart: extHostTypes.ChatResponseCodeCitationPart,2028ChatResponseCodeblockUriPart: extHostTypes.ChatResponseCodeblockUriPart,2029ChatResponseWarningPart: extHostTypes.ChatResponseWarningPart,2030ChatResponseTextEditPart: extHostTypes.ChatResponseTextEditPart,2031ChatResponseNotebookEditPart: extHostTypes.ChatResponseNotebookEditPart,2032ChatResponseWorkspaceEditPart: extHostTypes.ChatResponseWorkspaceEditPart,2033ChatResponseMarkdownWithVulnerabilitiesPart: extHostTypes.ChatResponseMarkdownWithVulnerabilitiesPart,2034ChatResponseCommandButtonPart: extHostTypes.ChatResponseCommandButtonPart,2035ChatResponseConfirmationPart: extHostTypes.ChatResponseConfirmationPart,2036ChatQuestion: extHostTypes.ChatQuestion,2037ChatQuestionType: extHostTypes.ChatQuestionType,2038ChatResponseQuestionCarouselPart: extHostTypes.ChatResponseQuestionCarouselPart,2039ChatResponseMovePart: extHostTypes.ChatResponseMovePart,2040ChatResponseExtensionsPart: extHostTypes.ChatResponseExtensionsPart,2041ChatResponseExternalEditPart: extHostTypes.ChatResponseExternalEditPart,2042ChatResponsePullRequestPart: extHostTypes.ChatResponsePullRequestPart,2043ChatResponseMultiDiffPart: extHostTypes.ChatResponseMultiDiffPart,2044ChatResponseReferencePartStatusKind: extHostTypes.ChatResponseReferencePartStatusKind,2045ChatResponseClearToPreviousToolInvocationReason: extHostTypes.ChatResponseClearToPreviousToolInvocationReason,2046ChatRequestTurn: extHostTypes.ChatRequestTurn,2047ChatRequestTurn2: extHostTypes.ChatRequestTurn,2048ChatResponseTurn: extHostTypes.ChatResponseTurn,2049ChatResponseTurn2: extHostTypes.ChatResponseTurn2,2050ChatToolInvocationPart: extHostTypes.ChatToolInvocationPart,2051ChatLocation: extHostTypes.ChatLocation,2052ChatSessionStatus: extHostTypes.ChatSessionStatus,2053ChatRequestEditorData: extHostTypes.ChatRequestEditorData,2054ChatRequestNotebookData: extHostTypes.ChatRequestNotebookData,2055ChatReferenceBinaryData: extHostTypes.ChatReferenceBinaryData,2056ChatRequestEditedFileEventKind: extHostTypes.ChatRequestEditedFileEventKind,2057LanguageModelChatMessageRole: extHostTypes.LanguageModelChatMessageRole,2058LanguageModelChatMessage: extHostTypes.LanguageModelChatMessage,2059LanguageModelChatMessage2: extHostTypes.LanguageModelChatMessage2,2060LanguageModelToolResultPart: extHostTypes.LanguageModelToolResultPart,2061LanguageModelToolResultPart2: extHostTypes.LanguageModelToolResultPart,2062LanguageModelTextPart: extHostTypes.LanguageModelTextPart,2063LanguageModelTextPart2: extHostTypes.LanguageModelTextPart,2064LanguageModelPartAudience: extHostTypes.LanguageModelPartAudience,2065ToolResultAudience: extHostTypes.LanguageModelPartAudience, // back compat2066LanguageModelToolCallPart: extHostTypes.LanguageModelToolCallPart,2067LanguageModelThinkingPart: extHostTypes.LanguageModelThinkingPart,2068LanguageModelError: extHostTypes.LanguageModelError,2069LanguageModelToolResult: extHostTypes.LanguageModelToolResult,2070LanguageModelToolResult2: extHostTypes.LanguageModelToolResult2,2071LanguageModelDataPart: extHostTypes.LanguageModelDataPart,2072LanguageModelDataPart2: extHostTypes.LanguageModelDataPart,2073LanguageModelToolExtensionSource: extHostTypes.LanguageModelToolExtensionSource,2074LanguageModelToolMCPSource: extHostTypes.LanguageModelToolMCPSource,2075ExtendedLanguageModelToolResult: extHostTypes.ExtendedLanguageModelToolResult,2076LanguageModelChatToolMode: extHostTypes.LanguageModelChatToolMode,2077LanguageModelPromptTsxPart: extHostTypes.LanguageModelPromptTsxPart,2078NewSymbolName: extHostTypes.NewSymbolName,2079NewSymbolNameTag: extHostTypes.NewSymbolNameTag,2080NewSymbolNameTriggerKind: extHostTypes.NewSymbolNameTriggerKind,2081ExcludeSettingOptions: ExcludeSettingOptions,2082TextSearchContext2: TextSearchContext2,2083TextSearchMatch2: TextSearchMatch2,2084AISearchKeyword: AISearchKeyword,2085TextSearchCompleteMessageTypeNew: TextSearchCompleteMessageType,2086ChatErrorLevel: extHostTypes.ChatErrorLevel,2087McpHttpServerDefinition: extHostTypes.McpHttpServerDefinition,2088McpHttpServerDefinition2: extHostTypes.McpHttpServerDefinition,2089McpStdioServerDefinition: extHostTypes.McpStdioServerDefinition,2090McpStdioServerDefinition2: extHostTypes.McpStdioServerDefinition,2091McpToolAvailability: extHostTypes.McpToolAvailability,2092McpToolInvocationContentData: extHostTypes.McpToolInvocationContentData,2093SettingsSearchResultKind: extHostTypes.SettingsSearchResultKind,2094ChatTodoStatus: extHostTypes.ChatTodoStatus,2095};2096};2097}209820992100