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