@codingame/monaco-vscode-extensions-service-override 24.3.0 → 25.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +28 -28
  3. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +29 -29
  4. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +1 -1
  5. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +6 -6
  6. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +14 -10
  7. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.d.ts +1 -1
  8. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +1 -1
  9. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +2 -2
  10. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +1 -1
  11. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +5 -4
  12. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +28 -31
  13. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +1 -1
  14. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +3 -6
  15. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +3 -0
  16. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +1 -1
  17. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +1 -1
  18. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +10 -29
  19. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +11 -11
  20. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +20 -20
  21. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +1 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +2 -2
  23. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +2 -2
  24. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +3 -3
  25. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.d.ts +2 -3
  26. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +6 -11
  27. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.d.ts +5 -2
  28. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +16 -10
  29. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -4
  30. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +1 -1
  31. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +3 -3
  32. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +1 -1
  33. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.d.ts +0 -5
  34. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +7 -65
  35. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.d.ts +1 -1
  36. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +5 -2
  37. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +1 -1
  38. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.d.ts +1 -0
  39. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +7 -0
  40. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.d.ts +3 -3
  41. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +8 -9
  42. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
  43. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +1 -1
  44. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -2
  45. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +2 -2
  46. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +4 -0
  47. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +1 -1
  48. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +5 -5
  49. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +1 -1
  50. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +23 -23
  51. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +2 -2
  52. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.d.ts +1 -0
  53. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +8 -5
  54. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.d.ts +3 -1
  55. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +8 -3
  56. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -0
  57. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +25 -13
  58. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +1 -1
  59. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +1 -1
  60. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +4 -4
  61. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.d.ts +3 -1
  62. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +8 -3
@@ -79,11 +79,11 @@ let MainThreadWorkspace = class MainThreadWorkspace {
79
79
  const wantsToDelete = removeCount > 0;
80
80
  if (wantsToAdd && !wantsToDelete) {
81
81
  if (addCount === 1) {
82
- message = ( localize(2540, "Extension '{0}' added 1 folder to the workspace", extensionName));
82
+ message = ( localize(2559, "Extension '{0}' added 1 folder to the workspace", extensionName));
83
83
  }
84
84
  else {
85
85
  message = ( localize(
86
- 2541,
86
+ 2560,
87
87
  "Extension '{0}' added {1} folders to the workspace",
88
88
  extensionName,
89
89
  addCount
@@ -92,11 +92,11 @@ let MainThreadWorkspace = class MainThreadWorkspace {
92
92
  }
93
93
  else if (wantsToDelete && !wantsToAdd) {
94
94
  if (removeCount === 1) {
95
- message = ( localize(2542, "Extension '{0}' removed 1 folder from the workspace", extensionName));
95
+ message = ( localize(2561, "Extension '{0}' removed 1 folder from the workspace", extensionName));
96
96
  }
97
97
  else {
98
98
  message = ( localize(
99
- 2543,
99
+ 2562,
100
100
  "Extension '{0}' removed {1} folders from the workspace",
101
101
  extensionName,
102
102
  removeCount
@@ -104,7 +104,7 @@ let MainThreadWorkspace = class MainThreadWorkspace {
104
104
  }
105
105
  }
106
106
  else {
107
- message = ( localize(2544, "Extension '{0}' changed folders of the workspace", extensionName));
107
+ message = ( localize(2563, "Extension '{0}' changed folders of the workspace", extensionName));
108
108
  }
109
109
  return message;
110
110
  }
@@ -49,7 +49,7 @@ let CustomTextEditorModel = CustomTextEditorModel_1 = class CustomTextEditorMode
49
49
  }));
50
50
  this._register(extensionService.onWillStop(e => {
51
51
  e.veto(true, ( localize(
52
- 6409,
52
+ 6431,
53
53
  "An extension provided text editor for '{0}' is still open that would close otherwise.",
54
54
  this.name
55
55
  )));
@@ -140,11 +140,11 @@ let ExtensionBisectUi = class ExtensionBisectUi {
140
140
  }
141
141
  _showBisectPrompt() {
142
142
  const goodPrompt = {
143
- label: ( localize(13837, "I can't reproduce")),
143
+ label: ( localize(13892, "I can't reproduce")),
144
144
  run: () => this._commandService.executeCommand('extension.bisect.next', false)
145
145
  };
146
146
  const badPrompt = {
147
- label: ( localize(13838, "I can reproduce")),
147
+ label: ( localize(13893, "I can reproduce")),
148
148
  run: () => this._commandService.executeCommand('extension.bisect.next', true)
149
149
  };
150
150
  const stop = {
@@ -153,11 +153,11 @@ let ExtensionBisectUi = class ExtensionBisectUi {
153
153
  };
154
154
  const message = this._extensionBisectService.disabledCount === 1
155
155
  ? ( localize(
156
- 13839,
156
+ 13894,
157
157
  "Extension Bisect is active and has disabled 1 extension. Check if you can still reproduce the problem and proceed by selecting from these options."
158
158
  ))
159
159
  : ( localize(
160
- 13840,
160
+ 13895,
161
161
  "Extension Bisect is active and has disabled {0} extensions. Check if you can still reproduce the problem and proceed by selecting from these options.",
162
162
  this._extensionBisectService.disabledCount
163
163
  ));
@@ -175,7 +175,7 @@ registerAction2(class extends Action2 {
175
175
  constructor() {
176
176
  super({
177
177
  id: 'extension.bisect.start',
178
- title: ( localize2(13841, 'Start Extension Bisect')),
178
+ title: ( localize2(13896, 'Start Extension Bisect')),
179
179
  category: Categories.Help,
180
180
  f1: true,
181
181
  precondition: ( ExtensionBisectUi.ctxIsBisectActive.negate()),
@@ -195,13 +195,13 @@ registerAction2(class extends Action2 {
195
195
  const extensionsBisect = accessor.get(IExtensionBisectService);
196
196
  const extensions = (await extensionManagement.getInstalled(ExtensionType.User)).filter(ext => extensionEnablementService.isEnabled(ext));
197
197
  const res = await dialogService.confirm({
198
- message: ( localize(13842, "Extension Bisect")),
198
+ message: ( localize(13897, "Extension Bisect")),
199
199
  detail: ( localize(
200
- 13843,
200
+ 13898,
201
201
  "Extension Bisect will use binary search to find an extension that causes a problem. During the process the window reloads repeatedly (~{0} times). Each time you must confirm if you are still seeing problems.",
202
202
  2 + Math.log2(extensions.length) | 0
203
203
  )),
204
- primaryButton: ( localize(13844, "&&Start Extension Bisect"))
204
+ primaryButton: ( localize(13899, "&&Start Extension Bisect"))
205
205
  });
206
206
  if (res.confirmed) {
207
207
  await extensionsBisect.start(extensions);
@@ -213,7 +213,7 @@ registerAction2(class extends Action2 {
213
213
  constructor() {
214
214
  super({
215
215
  id: 'extension.bisect.next',
216
- title: ( localize2(13845, 'Continue Extension Bisect')),
216
+ title: ( localize2(13900, 'Continue Extension Bisect')),
217
217
  category: Categories.Help,
218
218
  f1: true,
219
219
  precondition: ExtensionBisectUi.ctxIsBisectActive
@@ -247,8 +247,8 @@ registerAction2(class extends Action2 {
247
247
  return;
248
248
  }
249
249
  if (done.bad) {
250
- await dialogService.info(( localize(13846, "Extension Bisect")), ( localize(
251
- 13847,
250
+ await dialogService.info(( localize(13901, "Extension Bisect")), ( localize(
251
+ 13902,
252
252
  "Extension Bisect is done but no extension has been identified. This might be a problem with {0}.",
253
253
  productService.nameShort
254
254
  )));
@@ -256,15 +256,15 @@ registerAction2(class extends Action2 {
256
256
  else {
257
257
  const res = await dialogService.confirm({
258
258
  type: Severity.Info,
259
- message: ( localize(13846, "Extension Bisect")),
260
- primaryButton: ( localize(13848, "&&Report Issue & Continue")),
261
- cancelButton: ( localize(13849, "Continue")),
259
+ message: ( localize(13901, "Extension Bisect")),
260
+ primaryButton: ( localize(13903, "&&Report Issue & Continue")),
261
+ cancelButton: ( localize(13904, "Continue")),
262
262
  detail: ( localize(
263
- 13850,
263
+ 13905,
264
264
  "Extension Bisect is done and has identified {0} as the extension causing the problem.",
265
265
  done.id
266
266
  )),
267
- checkbox: { label: ( localize(13851, "Keep this extension disabled")), checked: true }
267
+ checkbox: { label: ( localize(13906, "Keep this extension disabled")), checked: true }
268
268
  });
269
269
  if (res.checkboxChecked) {
270
270
  await extensionEnablementService.disableExtension({ id: done.id }, undefined);
@@ -279,28 +279,28 @@ registerAction2(class extends Action2 {
279
279
  async _checkForBad(dialogService, bisectService) {
280
280
  const { result } = await dialogService.prompt({
281
281
  type: Severity.Info,
282
- message: ( localize(13852, "Extension Bisect")),
282
+ message: ( localize(13907, "Extension Bisect")),
283
283
  detail: ( localize(
284
- 13853,
284
+ 13908,
285
285
  "Extension Bisect is active and has disabled {0} extensions. Check if you can still reproduce the problem and proceed by selecting from these options.",
286
286
  bisectService.disabledCount
287
287
  )),
288
288
  buttons: [
289
289
  {
290
- label: ( localize(13854, "I ca&&n't reproduce")),
290
+ label: ( localize(13909, "I ca&&n't reproduce")),
291
291
  run: () => false
292
292
  },
293
293
  {
294
- label: ( localize(13855, "I can &&reproduce")),
294
+ label: ( localize(13910, "I can &&reproduce")),
295
295
  run: () => true
296
296
  },
297
297
  {
298
- label: ( localize(13856, "&&Stop Bisect")),
298
+ label: ( localize(13911, "&&Stop Bisect")),
299
299
  run: () => undefined
300
300
  }
301
301
  ],
302
302
  cancelButton: {
303
- label: ( localize(13857, "&&Cancel Bisect")),
303
+ label: ( localize(13912, "&&Cancel Bisect")),
304
304
  run: () => null
305
305
  }
306
306
  });
@@ -311,7 +311,7 @@ registerAction2(class extends Action2 {
311
311
  constructor() {
312
312
  super({
313
313
  id: 'extension.bisect.stop',
314
- title: ( localize2(13858, 'Stop Extension Bisect')),
314
+ title: ( localize2(13913, 'Stop Extension Bisect')),
315
315
  category: Categories.Help,
316
316
  f1: true,
317
317
  precondition: ExtensionBisectUi.ctxIsBisectActive
@@ -606,7 +606,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
606
606
  }
607
607
  if (!this.extensionManifestPropertiesService.canExecuteOnWeb(manifest)) {
608
608
  throw ( new Error(( localize(
609
- 13873,
609
+ 13928,
610
610
  "Cannot add '{0}' because this extension is not a web extension.",
611
611
  manifest.displayName || manifest.name
612
612
  ))));
@@ -890,7 +890,7 @@ if (isWeb) {
890
890
  constructor() {
891
891
  super({
892
892
  id: 'workbench.extensions.action.openInstalledWebExtensionsResource',
893
- title: ( localize2(13874, 'Open Installed Web Extensions Resource')),
893
+ title: ( localize2(13929, 'Open Installed Web Extensions Resource')),
894
894
  category: Categories.Developer,
895
895
  f1: true,
896
896
  precondition: IsWebContext
@@ -44,6 +44,7 @@ export declare class ExtensionService extends AbstractExtensionService implement
44
44
  allowRemoteExtensionsInLocalWebWorker: boolean;
45
45
  }, extensionsProposedApi: ExtensionsProposedApi, extensionHostFactory: IExtensionHostFactory, extensionHostKindPicker: IExtensionHostKindPicker, instantiationService: IInstantiationService, notificationService: INotificationService, _browserEnvironmentService: IBrowserWorkbenchEnvironmentService, telemetryService: ITelemetryService, extensionEnablementService: IWorkbenchExtensionEnablementService, fileService: IFileService, productService: IProductService, extensionManagementService: IWorkbenchExtensionManagementService, contextService: IWorkspaceContextService, configurationService: IConfigurationService, extensionManifestPropertiesService: IExtensionManifestPropertiesService, _webExtensionsScannerService: IWebExtensionsScannerService, logService: ILogService, remoteAgentService: IRemoteAgentService, remoteExtensionsScannerService: IRemoteExtensionsScannerService, lifecycleService: ILifecycleService, remoteAuthorityResolverService: IRemoteAuthorityResolverService, _userDataInitializationService: IUserDataInitializationService, _userDataProfileService: IUserDataProfileService, _workspaceTrustManagementService: IWorkspaceTrustManagementService, _remoteExplorerService: IRemoteExplorerService, dialogService: IDialogService);
46
46
  private _initFetchFileSystem;
47
+ protected _initialize(): Promise<void>;
47
48
  private _scanWebExtensionsPromise;
48
49
  protected _scanWebExtensions(): Promise<IExtensionDescription[]>;
49
50
  private _resolveExtensionsDefault;
@@ -49,8 +49,7 @@ let ExtensionService = class ExtensionService extends AbstractExtensionService {
49
49
  this._workspaceTrustManagementService = _workspaceTrustManagementService;
50
50
  this._remoteExplorerService = _remoteExplorerService;
51
51
  lifecycleService.when(LifecyclePhase.Ready).then(async () => {
52
- await this._userDataInitializationService.initializeInstalledExtensions(this._instantiationService);
53
- this._initialize();
52
+ await this._initializeIfNeeded();
54
53
  });
55
54
  this._initFetchFileSystem();
56
55
  }
@@ -59,6 +58,10 @@ let ExtensionService = class ExtensionService extends AbstractExtensionService {
59
58
  this._register(this._fileService.registerProvider(Schemas.http, provider));
60
59
  this._register(this._fileService.registerProvider(Schemas.https, provider));
61
60
  }
61
+ async _initialize() {
62
+ await this._userDataInitializationService.initializeInstalledExtensions(this._instantiationService);
63
+ await super._initialize();
64
+ }
62
65
  async _scanWebExtensions() {
63
66
  if (!this._scanWebExtensionsPromise) {
64
67
  this._scanWebExtensionsPromise = (async () => {
@@ -117,12 +120,12 @@ let ExtensionService = class ExtensionService extends AbstractExtensionService {
117
120
  this._remoteExplorerService.setTunnelInformation(resolverResult.tunnelInformation);
118
121
  const connection = this._remoteAgentService.getConnection();
119
122
  if (connection) {
120
- connection.onDidStateChange(async (e) => {
123
+ this._register(connection.onDidStateChange(async (e) => {
121
124
  if (e.type === PersistentConnectionEventType.ConnectionLost) {
122
125
  this._remoteAuthorityResolverService._clearResolvedAuthority(remoteAuthority);
123
126
  }
124
- });
125
- connection.onReconnecting(() => this._resolveAuthorityAgain());
127
+ }));
128
+ this._register(connection.onReconnecting(() => this._resolveAuthorityAgain()));
126
129
  }
127
130
  return this._resolveExtensionsDefault(emitter);
128
131
  }
@@ -12,6 +12,7 @@ import { IUserDataProfilesService } from "@codingame/monaco-vscode-api/vscode/vs
12
12
  import { IWebWorkerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/webWorker/browser/webWorkerService.service";
13
13
  import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
14
14
  import { IBrowserWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/browser/environmentService.service";
15
+ import { IDefaultLogLevelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/log/common/defaultLogLevels.service";
15
16
  import { LocalWebWorkerRunningLocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionRunningLocation";
16
17
  import { ExtensionHostExtensions, ExtensionHostStartup, IExtensionHost } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions";
17
18
  export interface IWebWorkerExtensionHostInitData {
@@ -35,6 +36,7 @@ export declare class WebWorkerExtensionHost extends Disposable implements IExten
35
36
  private readonly _layoutService;
36
37
  private readonly _storageService;
37
38
  private readonly _webWorkerService;
39
+ private readonly _defaultLogLevelsService;
38
40
  readonly pid: null;
39
41
  readonly remoteAuthority: null;
40
42
  extensions: ExtensionHostExtensions | null;
@@ -47,7 +49,7 @@ export declare class WebWorkerExtensionHost extends Disposable implements IExten
47
49
  private _protocolPromise;
48
50
  private _protocol;
49
51
  private readonly _extensionHostLogsLocation;
50
- constructor(runningLocation: LocalWebWorkerRunningLocation, startup: ExtensionHostStartup, _initDataProvider: IWebWorkerExtensionHostDataProvider, _telemetryService: ITelemetryService, _contextService: IWorkspaceContextService, _labelService: ILabelService, _logService: ILogService, _loggerService: ILoggerService, _environmentService: IBrowserWorkbenchEnvironmentService, _userDataProfilesService: IUserDataProfilesService, _productService: IProductService, _layoutService: ILayoutService, _storageService: IStorageService, _webWorkerService: IWebWorkerService);
52
+ constructor(runningLocation: LocalWebWorkerRunningLocation, startup: ExtensionHostStartup, _initDataProvider: IWebWorkerExtensionHostDataProvider, _telemetryService: ITelemetryService, _contextService: IWorkspaceContextService, _labelService: ILabelService, _logService: ILogService, _loggerService: ILoggerService, _environmentService: IBrowserWorkbenchEnvironmentService, _userDataProfilesService: IUserDataProfilesService, _productService: IProductService, _layoutService: ILayoutService, _storageService: IStorageService, _webWorkerService: IWebWorkerService, _defaultLogLevelsService: IDefaultLogLevelsService);
51
53
  protected _getWebWorkerExtensionHostIframeSrc(): Promise<string>;
52
54
  start(): Promise<IMessagePassingProtocol>;
53
55
  private _startInsideIframe;
@@ -28,12 +28,13 @@ import { IWebWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/platfo
28
28
  import { WorkbenchState } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace';
29
29
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
30
30
  import { IBrowserWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/browser/environmentService.service';
31
+ import { IDefaultLogLevelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/log/common/defaultLogLevels.service';
31
32
  import { ExtensionHostExitCode, isMessageOfType, MessageType, createMessageOfType, UIKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionHostProtocol';
32
33
  import { ExtensionHostStartup } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
33
34
  import { getNLSLanguage, getNLSMessages } from '@codingame/monaco-vscode-api/vscode/vs/nls.messages';
34
35
 
35
36
  let WebWorkerExtensionHost = class WebWorkerExtensionHost extends Disposable {
36
- constructor(runningLocation, startup, _initDataProvider, _telemetryService, _contextService, _labelService, _logService, _loggerService, _environmentService, _userDataProfilesService, _productService, _layoutService, _storageService, _webWorkerService) {
37
+ constructor(runningLocation, startup, _initDataProvider, _telemetryService, _contextService, _labelService, _logService, _loggerService, _environmentService, _userDataProfilesService, _productService, _layoutService, _storageService, _webWorkerService, _defaultLogLevelsService) {
37
38
  super();
38
39
  this.runningLocation = runningLocation;
39
40
  this.startup = startup;
@@ -49,6 +50,7 @@ let WebWorkerExtensionHost = class WebWorkerExtensionHost extends Disposable {
49
50
  this._layoutService = _layoutService;
50
51
  this._storageService = _storageService;
51
52
  this._webWorkerService = _webWorkerService;
53
+ this._defaultLogLevelsService = _defaultLogLevelsService;
52
54
  this.pid = null;
53
55
  this.remoteAuthority = null;
54
56
  this.extensions = null;
@@ -254,7 +256,7 @@ let WebWorkerExtensionHost = class WebWorkerExtensionHost extends Disposable {
254
256
  extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI,
255
257
  globalStorageHome: this._userDataProfilesService.defaultProfile.globalStorageHome,
256
258
  workspaceStorageHome: this._environmentService.workspaceStorageHome,
257
- extensionLogLevel: this._environmentService.extensionLogLevel
259
+ extensionLogLevel: this._defaultLogLevelsService.defaultLogLevels.extensions
258
260
  },
259
261
  workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? undefined : {
260
262
  configuration: workspace.configuration || undefined,
@@ -276,6 +278,8 @@ let WebWorkerExtensionHost = class WebWorkerExtensionHost extends Disposable {
276
278
  firstSessionDate: this._telemetryService.firstSessionDate,
277
279
  msftInternal: this._telemetryService.msftInternal
278
280
  },
281
+ remoteExtensionTips: this._productService.remoteExtensionTips,
282
+ virtualWorkspaceExtensionTips: this._productService.virtualWorkspaceExtensionTips,
279
283
  logLevel: this._logService.getLevel(),
280
284
  loggers: [...this._loggerService.getRegisteredLoggers()],
281
285
  logsLocation: this._extensionHostLogsLocation,
@@ -300,7 +304,8 @@ WebWorkerExtensionHost = ( __decorate([
300
304
  ( __param(10, IProductService)),
301
305
  ( __param(11, ILayoutService)),
302
306
  ( __param(12, IStorageService)),
303
- ( __param(13, IWebWorkerService))
307
+ ( __param(13, IWebWorkerService)),
308
+ ( __param(14, IDefaultLogLevelsService))
304
309
  ], WebWorkerExtensionHost));
305
310
  const extensionHostWorkerMainDescriptor = ( new WebWorkerDescriptor({
306
311
  label: 'extensionHostWorkerMain'
@@ -90,6 +90,8 @@ export declare abstract class AbstractExtensionService extends Disposable implem
90
90
  private _canAddExtension;
91
91
  canRemoveExtension(extension: IExtensionDescription): boolean;
92
92
  private _activateAddedExtensionIfNeeded;
93
+ private _initializePromise;
94
+ protected _initializeIfNeeded(): Promise<void> | null;
93
95
  protected _initialize(): Promise<void>;
94
96
  private _resolveAndProcessExtensions;
95
97
  private _handleExtensionTests;
@@ -99,6 +99,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
99
99
  this._inHandleDeltaExtensions = false;
100
100
  this._extensionHostManagers = this._register(( new ExtensionHostCollection()));
101
101
  this._resolveAuthorityAttempt = 0;
102
+ this._initializePromise = null;
102
103
  this._hasLocalProcess = options.hasLocalProcess;
103
104
  this._allowRemoteExtensionsInLocalWebWorker = options.allowRemoteExtensionsInLocalWebWorker;
104
105
  this._register(this._fileService.onWillActivateFileSystemProvider(e => {
@@ -148,16 +149,20 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
148
149
  }));
149
150
  this._register(this._extensionManagementService.onDidInstallExtensions((result) => {
150
151
  const extensions = [];
152
+ const toRemove = [];
151
153
  for (const { local, operation } of result) {
152
154
  if (local && local.isValid && operation !== InstallOperation.Migrate && this._safeInvokeIsEnabled(local)) {
153
155
  extensions.push(local);
156
+ if (operation === InstallOperation.Update) {
157
+ toRemove.push(local.identifier.id);
158
+ }
154
159
  }
155
160
  }
156
161
  if (extensions.length) {
157
162
  if (isCI) {
158
163
  this._logService.info(`AbstractExtensionService.onDidInstallExtensions fired for ${( extensions.map(e => e.identifier.id)).join(', ')}`);
159
164
  }
160
- this._handleDeltaExtensions(( new DeltaExtensionsQueueItem(extensions, [])));
165
+ this._handleDeltaExtensions(( new DeltaExtensionsQueueItem(extensions, toRemove)));
161
166
  }
162
167
  }));
163
168
  this._register(this._extensionManagementService.onDidUninstallExtension((event) => {
@@ -181,14 +186,14 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
181
186
  }
182
187
  }, {
183
188
  id: 'join.disconnectRemote',
184
- label: ( localize(13940, "Disconnect Remote Agent")),
189
+ label: ( localize(13995, "Disconnect Remote Agent")),
185
190
  order: WillShutdownJoinerOrder.Last
186
191
  });
187
192
  }
188
193
  else {
189
194
  event.join(this._doStopExtensionHosts(), {
190
195
  id: 'join.stopExtensionHosts',
191
- label: ( localize(13941, "Stopping Extension Hosts")),
196
+ label: ( localize(13996, "Stopping Extension Hosts")),
192
197
  });
193
198
  }
194
199
  }));
@@ -259,7 +264,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
259
264
  this._notificationService.notify({
260
265
  severity: Severity.Error,
261
266
  message: ( localize(
262
- 13942,
267
+ 13997,
263
268
  "The following extensions contain dependency loops and have been disabled: {0}",
264
269
  ( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(', ')
265
270
  ))
@@ -370,6 +375,12 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
370
375
  ))).then(() => { });
371
376
  }
372
377
  }
378
+ _initializeIfNeeded() {
379
+ if (!this._initializePromise) {
380
+ this._initializePromise = this._initialize();
381
+ }
382
+ return this._initializePromise;
383
+ }
373
384
  async _initialize() {
374
385
  mark('code/willLoadExtensions');
375
386
  this._startExtensionHostsIfNecessary(true, []);
@@ -434,7 +445,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
434
445
  this._notificationService.notify({
435
446
  severity: Severity.Error,
436
447
  message: ( localize(
437
- 13942,
448
+ 13997,
438
449
  "The following extensions contain dependency loops and have been disabled: {0}",
439
450
  ( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(', ')
440
451
  ))
@@ -449,7 +460,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
449
460
  const extensionHostManager = this.findTestExtensionHost(this._environmentService.extensionTestsLocationURI);
450
461
  if (!extensionHostManager) {
451
462
  const msg = ( localize(
452
- 13943,
463
+ 13998,
453
464
  "No extension host found that can launch the test runner at {0}.",
454
465
  (this._environmentService.extensionTestsLocationURI.toString())
455
466
  ));
@@ -619,7 +630,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
619
630
  vetoReasons.add(reason);
620
631
  }
621
632
  }).catch(error => {
622
- vetoReasons.add(( localize(13944, "{0} (Error: {1})", reason, toErrorMessage(error))));
633
+ vetoReasons.add(( localize(13999, "{0} (Error: {1})", reason, toErrorMessage(error))));
623
634
  });
624
635
  }
625
636
  }
@@ -634,11 +645,11 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
634
645
  this._logService.warn(`Extension host was not stopped because of veto (stop reason: ${reason}, veto reason: ${vetoReasonsArray.join(', ')})`);
635
646
  const { confirmed } = await this._dialogService.confirm({
636
647
  type: Severity.Warning,
637
- message: ( localize(13945, "Please confirm restart of extensions.")),
648
+ message: ( localize(14000, "Please confirm restart of extensions.")),
638
649
  detail: vetoReasonsArray.length === 1 ?
639
650
  vetoReasonsArray[0] :
640
651
  vetoReasonsArray.join('\n -'),
641
- primaryButton: ( localize(13946, "Restart Anyway"))
652
+ primaryButton: ( localize(14001, "Restart Anyway"))
642
653
  });
643
654
  if (confirmed) {
644
655
  return true;
@@ -735,15 +746,15 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
735
746
  this._remoteCrashTracker.registerCrash();
736
747
  if (this._remoteCrashTracker.shouldAutomaticallyRestart()) {
737
748
  this._logService.info(`Automatically restarting the remote extension host.`);
738
- this._notificationService.status(( localize(13947, "The remote extension host terminated unexpectedly. Restarting...")), { hideAfter: 5000 });
749
+ this._notificationService.status(( localize(14002, "The remote extension host terminated unexpectedly. Restarting...")), { hideAfter: 5000 });
739
750
  this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
740
751
  }
741
752
  else {
742
753
  this._notificationService.prompt(Severity.Error, ( localize(
743
- 13948,
754
+ 14003,
744
755
  "Remote Extension host terminated unexpectedly 3 times within the last 5 minutes."
745
756
  )), [{
746
- label: ( localize(13949, "Restart Remote Extension Host")),
757
+ label: ( localize(14004, "Restart Remote Extension Host")),
747
758
  run: () => {
748
759
  this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
749
760
  }
@@ -803,6 +814,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
803
814
  else {
804
815
  this._allRequestedActivateEvents.add(activationEvent);
805
816
  if (activationKind === ActivationKind.Immediate) {
817
+ void this._initializeIfNeeded();
806
818
  return this._activateByEvent(activationEvent, activationKind);
807
819
  }
808
820
  return this._installedExtensionsReady.wait().then(() => this._activateByEvent(activationEvent, activationKind));
@@ -1250,7 +1262,7 @@ class ActivationFeatureMarkdowneRenderer extends Disposable {
1250
1262
  }
1251
1263
  ( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
1252
1264
  id: 'activationEvents',
1253
- label: ( localize(13950, "Activation Events")),
1265
+ label: ( localize(14005, "Activation Events")),
1254
1266
  access: {
1255
1267
  canToggle: false
1256
1268
  },
@@ -479,7 +479,7 @@ registerAction2(class MeasureExtHostLatencyAction extends Action2 {
479
479
  constructor() {
480
480
  super({
481
481
  id: 'editor.action.measureExtHostLatency',
482
- title: ( localize2(13951, "Measure Extension Host Latency")),
482
+ title: ( localize2(14006, "Measure Extension Host Latency")),
483
483
  category: Categories.Developer,
484
484
  f1: true
485
485
  });
@@ -106,7 +106,7 @@ class ApiProposalsMarkdowneRenderer extends Disposable {
106
106
  }
107
107
  ( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
108
108
  id: 'enabledApiProposals',
109
- label: ( localize(13952, "API Proposals")),
109
+ label: ( localize(14007, "API Proposals")),
110
110
  access: {
111
111
  canToggle: false
112
112
  },
@@ -9,7 +9,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
9
9
  const extension = result.get(systemExtension.identifier);
10
10
  if (extension) {
11
11
  logService.warn(( localize(
12
- 14039,
12
+ 14094,
13
13
  "Overwriting extension {0} with {1}.",
14
14
  extension.extensionLocation.fsPath,
15
15
  systemExtension.extensionLocation.fsPath
@@ -29,7 +29,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
29
29
  }
30
30
  else {
31
31
  logService.warn(( localize(
32
- 14039,
32
+ 14094,
33
33
  "Overwriting extension {0} with {1}.",
34
34
  extension.extensionLocation.fsPath,
35
35
  userExtension.extensionLocation.fsPath
@@ -46,7 +46,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
46
46
  const extension = result.get(workspaceExtension.identifier);
47
47
  if (extension) {
48
48
  logService.warn(( localize(
49
- 14040,
49
+ 14095,
50
50
  "Overwriting {0} with Workspace Extension {1}.",
51
51
  extension.extensionLocation.fsPath,
52
52
  workspaceExtension.extensionLocation.fsPath
@@ -56,7 +56,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
56
56
  });
57
57
  development.forEach(developedExtension => {
58
58
  logService.info(( localize(
59
- 14041,
59
+ 14096,
60
60
  "Loading development extension at {0}",
61
61
  developedExtension.extensionLocation.fsPath
62
62
  )));
@@ -14,6 +14,7 @@ import { ISignService } from "@codingame/monaco-vscode-api/vscode/vs/platform/si
14
14
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
15
15
  import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
16
16
  import { IWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service";
17
+ import { IDefaultLogLevelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/log/common/defaultLogLevels.service";
17
18
  import { RemoteRunningLocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionRunningLocation";
18
19
  import { ExtensionHostExtensions, ExtensionHostStartup, IExtensionHost } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions";
19
20
  export interface IRemoteExtensionHostInitData {
@@ -43,6 +44,7 @@ export declare class RemoteExtensionHost extends Disposable implements IExtensio
43
44
  private readonly _extensionHostDebugService;
44
45
  private readonly _productService;
45
46
  private readonly _signService;
47
+ private readonly _defaultLogLevelsService;
46
48
  readonly pid: null;
47
49
  readonly remoteAuthority: string;
48
50
  readonly startup = ExtensionHostStartup.EagerAutoStart;
@@ -57,7 +59,7 @@ export declare class RemoteExtensionHost extends Disposable implements IExtensio
57
59
  private _terminating;
58
60
  private _hasDisconnected;
59
61
  private readonly _isExtensionDevHost;
60
- constructor(runningLocation: RemoteRunningLocation, _initDataProvider: IRemoteExtensionHostDataProvider, remoteSocketFactoryService: IRemoteSocketFactoryService, _contextService: IWorkspaceContextService, _environmentService: IWorkbenchEnvironmentService, _telemetryService: ITelemetryService, _logService: ILogService, _loggerService: ILoggerService, _labelService: ILabelService, remoteAuthorityResolverService: IRemoteAuthorityResolverService, _extensionHostDebugService: IExtensionHostDebugService, _productService: IProductService, _signService: ISignService);
62
+ constructor(runningLocation: RemoteRunningLocation, _initDataProvider: IRemoteExtensionHostDataProvider, remoteSocketFactoryService: IRemoteSocketFactoryService, _contextService: IWorkspaceContextService, _environmentService: IWorkbenchEnvironmentService, _telemetryService: ITelemetryService, _logService: ILogService, _loggerService: ILoggerService, _labelService: ILabelService, remoteAuthorityResolverService: IRemoteAuthorityResolverService, _extensionHostDebugService: IExtensionHostDebugService, _productService: IProductService, _signService: ISignService, _defaultLogLevelsService: IDefaultLogLevelsService);
61
63
  start(): Promise<IMessagePassingProtocol>;
62
64
  private _onExtHostConnectionLost;
63
65
  private _createExtHostInitData;
@@ -18,12 +18,13 @@ import { isLoggingOnly } from '@codingame/monaco-vscode-api/vscode/vs/platform/t
18
18
  import { WorkbenchState } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace';
19
19
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
20
20
  import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
21
+ import { IDefaultLogLevelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/log/common/defaultLogLevels.service';
21
22
  import { parseExtensionDevOptions } from './extensionDevOptions.js';
22
23
  import { isMessageOfType, MessageType, UIKind, createMessageOfType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionHostProtocol';
23
24
  import { ExtensionHostStartup } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
24
25
 
25
26
  let RemoteExtensionHost = class RemoteExtensionHost extends Disposable {
26
- constructor(runningLocation, _initDataProvider, remoteSocketFactoryService, _contextService, _environmentService, _telemetryService, _logService, _loggerService, _labelService, remoteAuthorityResolverService, _extensionHostDebugService, _productService, _signService) {
27
+ constructor(runningLocation, _initDataProvider, remoteSocketFactoryService, _contextService, _environmentService, _telemetryService, _logService, _loggerService, _labelService, remoteAuthorityResolverService, _extensionHostDebugService, _productService, _signService, _defaultLogLevelsService) {
27
28
  super();
28
29
  this.runningLocation = runningLocation;
29
30
  this._initDataProvider = _initDataProvider;
@@ -38,6 +39,7 @@ let RemoteExtensionHost = class RemoteExtensionHost extends Disposable {
38
39
  this._extensionHostDebugService = _extensionHostDebugService;
39
40
  this._productService = _productService;
40
41
  this._signService = _signService;
42
+ this._defaultLogLevelsService = _defaultLogLevelsService;
41
43
  this.pid = null;
42
44
  this.startup = ExtensionHostStartup.EagerAutoStart;
43
45
  this.extensions = null;
@@ -158,7 +160,7 @@ let RemoteExtensionHost = class RemoteExtensionHost extends Disposable {
158
160
  extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI,
159
161
  globalStorageHome: remoteInitData.globalStorageHome,
160
162
  workspaceStorageHome: remoteInitData.workspaceStorageHome,
161
- extensionLogLevel: this._environmentService.extensionLogLevel
163
+ extensionLogLevel: this._defaultLogLevelsService.defaultLogLevels.extensions
162
164
  },
163
165
  workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? null : {
164
166
  configuration: workspace.configuration,
@@ -184,6 +186,8 @@ let RemoteExtensionHost = class RemoteExtensionHost extends Disposable {
184
186
  firstSessionDate: this._telemetryService.firstSessionDate,
185
187
  msftInternal: this._telemetryService.msftInternal
186
188
  },
189
+ remoteExtensionTips: this._productService.remoteExtensionTips,
190
+ virtualWorkspaceExtensionTips: this._productService.virtualWorkspaceExtensionTips,
187
191
  logLevel: this._logService.getLevel(),
188
192
  loggers: [...this._loggerService.getRegisteredLoggers()],
189
193
  logsLocation: remoteInitData.extensionHostLogsPath,
@@ -226,7 +230,8 @@ RemoteExtensionHost = ( __decorate([
226
230
  ( __param(9, IRemoteAuthorityResolverService)),
227
231
  ( __param(10, IExtensionHostDebugService)),
228
232
  ( __param(11, IProductService)),
229
- ( __param(12, ISignService))
233
+ ( __param(12, ISignService)),
234
+ ( __param(13, IDefaultLogLevelsService))
230
235
  ], RemoteExtensionHost));
231
236
 
232
237
  export { RemoteExtensionHost };