@codingame/monaco-vscode-api 1.82.6 → 1.83.0-next.0

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 (199) hide show
  1. package/api.js +5 -5
  2. package/assets/index-no-csp.html +2 -1
  3. package/assets/index.html +3 -2
  4. package/extensions.js +17 -14
  5. package/external/xterm/typings/xterm.d.ts +171 -109
  6. package/missing-services.js +33 -22
  7. package/monaco-editor-treemending.patch +1745 -1628
  8. package/monaco-treemending.js +2 -2
  9. package/monaco.js +2 -2
  10. package/package.json +2 -2
  11. package/service-override/extensions.js +10 -11
  12. package/services.d.ts +1 -1
  13. package/vscode/src/vs/base/browser/ui/menu/menubar.js +1 -1
  14. package/vscode/src/vs/base/common/event.d.ts +13 -17
  15. package/vscode/src/vs/base/common/keyCodes.d.ts +18 -18
  16. package/vscode/src/vs/base/common/lifecycle.d.ts +9 -0
  17. package/vscode/src/vs/base/common/observableInternal/base.d.ts +2 -0
  18. package/vscode/src/vs/base/common/product.d.ts +1 -0
  19. package/vscode/src/vs/base/parts/ipc/common/ipc.js +6 -2
  20. package/vscode/src/vs/base/parts/storage/common/storage.d.ts +1 -0
  21. package/vscode/src/vs/editor/common/config/editorOptions.d.ts +12 -3
  22. package/vscode/src/vs/editor/common/core/lineRange.d.ts +0 -5
  23. package/vscode/src/vs/editor/common/core/offsetRange.d.ts +9 -2
  24. package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +6 -20
  25. package/vscode/src/vs/editor/common/diff/legacyLinesDiffComputer.d.ts +2 -2
  26. package/vscode/src/vs/editor/common/diff/linesDiffComputer.d.ts +5 -55
  27. package/vscode/src/vs/editor/common/diff/rangeMapping.d.ts +55 -0
  28. package/vscode/src/vs/editor/common/languages.d.ts +7 -10
  29. package/vscode/src/vs/editor/common/model.d.ts +1 -1
  30. package/vscode/src/vs/platform/actions/common/actions.d.ts +1 -0
  31. package/vscode/src/vs/platform/extensionManagement/common/extensionNls.js +5 -5
  32. package/vscode/src/vs/platform/files/common/fileService.js +46 -40
  33. package/vscode/src/vs/platform/files/common/files.d.ts +46 -1
  34. package/vscode/src/vs/platform/files/common/inMemoryFilesystemProvider.js +45 -0
  35. package/vscode/src/vs/platform/storage/common/storage.d.ts +5 -0
  36. package/vscode/src/vs/platform/storage/common/storage.js +4 -0
  37. package/vscode/src/vs/platform/telemetry/common/telemetryUtils.js +4 -1
  38. package/vscode/src/vs/platform/terminal/common/terminal.js +1 -3
  39. package/vscode/src/vs/platform/tunnel/common/tunnel.d.ts +1 -1
  40. package/vscode/src/vs/platform/userDataProfile/common/userDataProfile.d.ts +1 -0
  41. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +11 -0
  42. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents.js +50 -0
  43. package/vscode/src/vs/workbench/api/browser/mainThreadChatSlashCommands.js +3 -2
  44. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +16 -11
  45. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +20 -6
  46. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +2 -2
  47. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +1 -1
  48. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +8 -8
  49. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +3 -2
  50. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +93 -0
  51. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +3 -166
  52. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +3 -0
  53. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +18 -11
  54. package/vscode/src/vs/workbench/api/common/extHost.api.impl.js +14 -9
  55. package/vscode/src/vs/workbench/api/common/extHost.protocol.js +2 -1
  56. package/vscode/src/vs/workbench/api/common/extHostApiCommands.js +11 -2
  57. package/vscode/src/vs/workbench/api/common/extHostChat.js +10 -1
  58. package/vscode/src/vs/workbench/api/common/extHostChatAgents.js +62 -0
  59. package/vscode/src/vs/workbench/api/common/extHostChatSlashCommand.js +13 -4
  60. package/vscode/src/vs/workbench/api/common/extHostCommands.js +4 -4
  61. package/vscode/src/vs/workbench/api/common/extHostComments.js +1 -1
  62. package/vscode/src/vs/workbench/api/common/extHostExtensionService.js +36 -4
  63. package/vscode/src/vs/workbench/api/common/extHostInlineChat.js +6 -29
  64. package/vscode/src/vs/workbench/api/common/extHostLanguageFeatures.js +24 -12
  65. package/vscode/src/vs/workbench/api/common/extHostNotebookKernels.js +0 -2
  66. package/vscode/src/vs/workbench/api/common/extHostRequireInterceptor.js +0 -63
  67. package/vscode/src/vs/workbench/api/common/extHostSCM.js +80 -0
  68. package/vscode/src/vs/workbench/api/common/extHostTerminalService.js +24 -0
  69. package/vscode/src/vs/workbench/api/common/extHostTesting.js +14 -10
  70. package/vscode/src/vs/workbench/api/common/extHostTextEditor.js +4 -4
  71. package/vscode/src/vs/workbench/api/common/extHostTreeViews.js +11 -7
  72. package/vscode/src/vs/workbench/api/common/extHostTypeConverters.js +34 -16
  73. package/vscode/src/vs/workbench/api/common/extHostTypes.js +31 -13
  74. package/vscode/src/vs/workbench/api/common/extHostWebview.js +14 -2
  75. package/vscode/src/vs/workbench/api/common/extHostWebviewPanels.js +11 -5
  76. package/vscode/src/vs/workbench/api/common/extensionHostMain.js +1 -1
  77. package/vscode/src/vs/workbench/browser/actions/layoutActions.js +32 -9
  78. package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +3 -1
  79. package/vscode/src/vs/workbench/browser/codeeditor.js +1 -1
  80. package/vscode/src/vs/workbench/browser/dnd.js +7 -6
  81. package/vscode/src/vs/workbench/browser/media/part.css.js +1 -1
  82. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +7 -10
  83. package/vscode/src/vs/workbench/browser/parts/editor/editor.js +7 -1
  84. package/vscode/src/vs/workbench/browser/parts/editor/editorActions.js +9 -3
  85. package/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.js +1 -1
  86. package/vscode/src/vs/workbench/browser/parts/editor/editorCommands.js +9 -2
  87. package/vscode/src/vs/workbench/browser/parts/editor/editorStatus.js +44 -14
  88. package/vscode/src/vs/workbench/browser/parts/editor/media/editorplaceholder.css.js +1 -1
  89. package/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.js +3 -19
  90. package/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor.js +1 -1
  91. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.js +9 -3
  92. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.d.ts +1 -1
  93. package/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.js +10 -9
  94. package/vscode/src/vs/workbench/browser/parts/views/viewFilter.js +2 -0
  95. package/vscode/src/vs/workbench/browser/parts/views/viewPane.js +2 -2
  96. package/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.js +6 -5
  97. package/vscode/src/vs/workbench/browser/web.api.d.ts +0 -6
  98. package/vscode/src/vs/workbench/browser/workbench.contribution.js +34 -3
  99. package/vscode/src/vs/workbench/common/contextkeys.js +2 -1
  100. package/vscode/src/vs/workbench/common/editor/editorGroupModel.js +4 -4
  101. package/vscode/src/vs/workbench/common/editor/editorInput.d.ts +0 -1
  102. package/vscode/src/vs/workbench/common/editor/editorInput.js +2 -4
  103. package/vscode/src/vs/workbench/common/editor/editorModel.d.ts +0 -1
  104. package/vscode/src/vs/workbench/common/editor/editorModel.js +1 -3
  105. package/vscode/src/vs/workbench/common/editor.d.ts +2 -0
  106. package/vscode/src/vs/workbench/common/theme.js +21 -1
  107. package/vscode/src/vs/workbench/common/views.d.ts +1 -1
  108. package/vscode/src/vs/workbench/common/views.js +1 -2
  109. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.js +12 -4
  110. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityContributions.js +335 -0
  111. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleView.js +81 -27
  112. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +1 -1
  113. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +22 -14
  114. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatActions.js +2 -0
  115. package/vscode/src/vs/workbench/contrib/chat/common/chatAgents.js +136 -0
  116. package/vscode/src/vs/workbench/contrib/chat/common/chatModel.js +14 -3
  117. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +78 -1
  118. package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +43 -17
  119. package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +30 -26
  120. package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +23 -18
  122. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +8 -8
  123. package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +55 -20
  124. package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +26 -10
  125. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +7 -6
  126. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +58 -9
  127. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +9 -6
  128. package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +171 -0
  129. package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +204 -33
  130. package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +3 -7
  131. package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +2 -2
  132. package/vscode/src/vs/workbench/contrib/comments/browser/media/review.css.js +1 -1
  133. package/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.js +21 -4
  134. package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +22 -0
  135. package/vscode/src/vs/workbench/contrib/debug/common/debug.d.ts +5 -2
  136. package/vscode/src/vs/workbench/contrib/debug/common/debugUtils.js +2 -1
  137. package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +1 -1
  138. package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +2 -2
  139. package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +4 -4
  140. package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +1 -1
  141. package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +7 -4
  142. package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +2 -1
  143. package/vscode/src/vs/workbench/contrib/files/common/files.js +7 -5
  144. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +2 -2
  145. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +2 -2
  146. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +2 -1
  147. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +17 -17
  148. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +2 -2
  149. package/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.js +4 -1
  150. package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +22 -19
  151. package/vscode/src/vs/workbench/contrib/output/browser/outputServices.js +2 -38
  152. package/vscode/src/vs/workbench/contrib/preferences/common/preferences.js +14 -1
  153. package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +3 -8
  154. package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +10 -12
  155. package/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion.js +2 -2
  156. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.d.ts +2 -2
  157. package/vscode/src/vs/workbench/contrib/terminal/common/terminalContextKey.js +0 -16
  158. package/vscode/src/vs/workbench/contrib/testing/common/observableValue.js +2 -1
  159. package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +8 -6
  160. package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +2 -4
  161. package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +2 -4
  162. package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +7 -3
  163. package/vscode/src/vs/workbench/services/editor/common/editorGroupsService.d.ts +2 -6
  164. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +18 -20
  165. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +9 -13
  166. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -1
  167. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +47 -15
  168. package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.d.ts +14 -4
  169. package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js +22 -3
  170. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.d.ts +1 -1
  171. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +15 -14
  172. package/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.d.ts +12 -7
  173. package/vscode/src/vs/workbench/services/extensions/common/extensions.d.ts +10 -6
  174. package/vscode/src/vs/workbench/services/extensions/common/extensions.js +27 -11
  175. package/vscode/src/vs/workbench/services/extensions/common/extensionsApiProposals.js +2 -5
  176. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +7 -11
  177. package/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.js +20 -4
  178. package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +24 -16
  179. package/vscode/src/vs/workbench/services/output/common/output.js +1 -2
  180. package/vscode/src/vs/workbench/services/preferences/common/preferences.d.ts +6 -6
  181. package/vscode/src/vs/workbench/services/preferences/common/preferences.js +4 -3
  182. package/vscode/src/vs/workbench/services/preferences/common/preferencesModels.d.ts +0 -1
  183. package/vscode/src/vs/workbench/services/search/common/fileSearchManager.js +3 -1
  184. package/vscode/src/vs/workbench/services/search/common/search.js +2 -1
  185. package/vscode/src/vs/workbench/services/search/common/textSearchManager.js +1 -2
  186. package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.js +2 -2
  187. package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfileService.js +3 -8
  188. package/vscode/src/vs/workbench/services/workingCopy/common/resourceWorkingCopy.js +3 -4
  189. package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopySaveParticipant.js +1 -0
  190. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupService.js +2 -1
  191. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService.js +4 -2
  192. package/vscode/src/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.contribution.js +0 -180
  193. package/vscode/src/vs/platform/credentials/common/credentials.d.ts +0 -13
  194. package/vscode/src/vs/platform/credentials/common/credentials.js +0 -3
  195. package/vscode/src/vs/workbench/api/browser/mainThreadKeytar.js +0 -31
  196. package/vscode/src/vs/workbench/browser/iframe.js +0 -16
  197. package/vscode/src/vs/workbench/browser/parts/editor/accessibilityStatus.js +0 -90
  198. package/vscode/src/vs/workbench/browser/parts/editor/tabFocus.js +0 -77
  199. package/vscode/src/vs/workbench/contrib/output/browser/logViewer.js +0 -67
@@ -5,6 +5,7 @@ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
5
5
  import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
6
6
  import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
7
7
  import * as performance from 'monaco-editor/esm/vs/base/common/performance.js';
8
+ import { isCI } from 'monaco-editor/esm/vs/base/common/platform.js';
8
9
  import { isEqualOrParent } from 'monaco-editor/esm/vs/base/common/resources.js';
9
10
  import { StopWatch } from 'monaco-editor/esm/vs/base/common/stopwatch.js';
10
11
  import * as nls from 'monaco-editor/esm/vs/nls.js';
@@ -109,10 +110,16 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
109
110
  toRemove.push(extension);
110
111
  }
111
112
  }
113
+ if (isCI) {
114
+ this._logService.info(`AbstractExtensionService.onEnablementChanged fired for ${( ( extensions.map(e => e.identifier.id))).join(', ')}`);
115
+ }
112
116
  this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem(toAdd, toRemove))));
113
117
  }));
114
118
  this._register(this._extensionManagementService.onDidChangeProfile(({ added, removed }) => {
115
119
  if (added.length || removed.length) {
120
+ if (isCI) {
121
+ this._logService.info(`AbstractExtensionService.onDidChangeProfile fired`);
122
+ }
116
123
  this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem(added, removed))));
117
124
  }
118
125
  }));
@@ -124,11 +131,17 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
124
131
  }
125
132
  }
126
133
  if (extensions.length) {
134
+ if (isCI) {
135
+ this._logService.info(`AbstractExtensionService.onDidInstallExtensions fired for ${( ( extensions.map(e => e.identifier.id))).join(', ')}`);
136
+ }
127
137
  this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem(extensions, []))));
128
138
  }
129
139
  }));
130
140
  this._register(this._extensionManagementService.onDidUninstallExtension((event) => {
131
141
  if (!event.error) {
142
+ if (isCI) {
143
+ this._logService.info(`AbstractExtensionService.onDidUninstallExtension fired for ${event.identifier.id}`);
144
+ }
132
145
  this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem([], [event.identifier.id]))));
133
146
  }
134
147
  }));
@@ -170,6 +183,9 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
170
183
  }
171
184
  }
172
185
  async _deltaExtensions(lock, _toAdd, _toRemove) {
186
+ if (isCI) {
187
+ this._logService.info(`AbstractExtensionService._deltaExtensions: toAdd: [${( ( _toAdd.map(e => e.identifier.id))).join(',')}] toRemove: [${( ( _toRemove.map(e => typeof e === 'string' ? e : e.identifier.id))).join(',')}]`);
188
+ }
173
189
  let toRemove = [];
174
190
  for (let i = 0, len = _toRemove.length; i < len; i++) {
175
191
  const extensionOrId = _toRemove[i];
@@ -216,23 +232,28 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
216
232
  });
217
233
  }
218
234
  this._doHandleExtensionPoints([].concat(toAdd).concat(toRemove));
219
- await this._updateExtensionsOnExtHosts(toAdd, ( (toRemove.map(e => e.identifier))));
235
+ await this._updateExtensionsOnExtHosts(result.versionId, toAdd, ( (toRemove.map(e => e.identifier))));
220
236
  for (let i = 0; i < toAdd.length; i++) {
221
237
  this._activateAddedExtensionIfNeeded(toAdd[i]);
222
238
  }
223
239
  }
224
- async _updateExtensionsOnExtHosts(toAdd, toRemove) {
240
+ async _updateExtensionsOnExtHosts(versionId, toAdd, toRemove) {
225
241
  const removedRunningLocation = this._runningLocations.deltaExtensions(toAdd, toRemove);
226
242
  const promises = ( (this._extensionHostManagers.map(
227
- extHostManager => this._updateExtensionsOnExtHost(extHostManager, toAdd, toRemove, removedRunningLocation)
243
+ extHostManager => this._updateExtensionsOnExtHost(extHostManager, versionId, toAdd, toRemove, removedRunningLocation)
228
244
  )));
229
245
  await Promise.all(promises);
230
246
  }
231
- async _updateExtensionsOnExtHost(extensionHostManager, toAdd, toRemove, removedRunningLocation) {
247
+ async _updateExtensionsOnExtHost(extensionHostManager, versionId, toAdd, toRemove, removedRunningLocation) {
232
248
  const myToAdd = this._runningLocations.filterByExtensionHostManager(toAdd, extensionHostManager);
233
249
  const myToRemove = filterExtensionIdentifiers(toRemove, removedRunningLocation, extRunningLocation => extensionHostManager.representsRunningLocation(extRunningLocation));
234
250
  const addActivationEvents = ImplicitActivationEvents.createActivationEventsMap(toAdd);
235
- await extensionHostManager.deltaExtensions({ toRemove, toAdd, addActivationEvents, myToRemove, myToAdd: ( (myToAdd.map(extension => extension.identifier))) });
251
+ if (isCI) {
252
+ const printExtIds = (extensions) => ( (extensions.map(e => e.identifier.value))).join(',');
253
+ const printIds = (extensions) => ( (extensions.map(e => e.value))).join(',');
254
+ this._logService.info(`AbstractExtensionService: Calling deltaExtensions: toRemove: [${printIds(toRemove)}], toAdd: [${printExtIds(toAdd)}], myToRemove: [${printIds(myToRemove)}], myToAdd: [${printExtIds(myToAdd)}],`);
255
+ }
256
+ await extensionHostManager.deltaExtensions({ versionId, toRemove, toAdd, addActivationEvents, myToRemove, myToAdd: ( (myToAdd.map(extension => extension.identifier))) });
236
257
  }
237
258
  canAddExtension(extension) {
238
259
  return this._canAddExtension(extension, []);
@@ -324,11 +345,11 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
324
345
  try {
325
346
  const resolvedExtensions = await this._resolveExtensions();
326
347
  this._processExtensions(lock, resolvedExtensions);
327
- const allExtensions = this._registry.getAllExtensionDescriptions();
348
+ const snapshot = this._registry.getSnapshot();
328
349
  for (const extHostManager of this._extensionHostManagers) {
329
350
  if (extHostManager.startup !== 1 ) {
330
- const extensions = this._runningLocations.filterByExtensionHostManager(allExtensions, extHostManager);
331
- extHostManager.start(allExtensions, ( (extensions.map(extension => extension.identifier))));
351
+ const extensions = this._runningLocations.filterByExtensionHostManager(snapshot.extensions, extHostManager);
352
+ extHostManager.start(snapshot.versionId, snapshot.extensions, ( (extensions.map(extension => extension.identifier))));
332
353
  }
333
354
  }
334
355
  }
@@ -341,8 +362,8 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
341
362
  }
342
363
  _processExtensions(lock, resolvedExtensions) {
343
364
  const { allowRemoteExtensionsInLocalWebWorker, hasLocalProcess } = resolvedExtensions;
344
- const localExtensions = checkEnabledAndProposedAPI(this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.local, false);
345
- let remoteExtensions = checkEnabledAndProposedAPI(this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.remote, false);
365
+ const localExtensions = checkEnabledAndProposedAPI(this._logService, this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.local, false);
366
+ let remoteExtensions = checkEnabledAndProposedAPI(this._logService, this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.remote, false);
346
367
  this._runningLocations.initializeRunningLocation(localExtensions, remoteExtensions);
347
368
  this._startExtensionHostsIfNecessary(true, []);
348
369
  const remoteExtensionsThatNeedToRunLocally = (allowRemoteExtensionsInLocalWebWorker ? this._runningLocations.filterByExtensionHostKind(remoteExtensions, 2 ) : []);
@@ -386,8 +407,14 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
386
407
  let exitCode;
387
408
  try {
388
409
  exitCode = await extensionHostManager.extensionTestsExecute();
410
+ if (isCI) {
411
+ this._logService.info(`Extension host test runner exit code: ${exitCode}`);
412
+ }
389
413
  }
390
414
  catch (err) {
415
+ if (isCI) {
416
+ this._logService.error(`Extension host test runner error`, err);
417
+ }
391
418
  console.error(err);
392
419
  exitCode = 1 ;
393
420
  }
@@ -746,8 +773,8 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
746
773
  get extensions() {
747
774
  return this._registry.getAllExtensionDescriptions();
748
775
  }
749
- _getExtensions() {
750
- return this._installedExtensionsReady.wait().then(() => this.extensions);
776
+ _getExtensionRegistrySnapshotWhenReady() {
777
+ return this._installedExtensionsReady.wait().then(() => this._registry.getSnapshot());
751
778
  }
752
779
  getExtension(id) {
753
780
  return this._installedExtensionsReady.wait().then(() => {
@@ -951,10 +978,10 @@ class DeltaExtensionsQueueItem {
951
978
  this.toRemove = toRemove;
952
979
  }
953
980
  }
954
- function checkEnabledAndProposedAPI(extensionEnablementService, extensionsProposedApi, extensions, ignoreWorkspaceTrust) {
955
- return filterEnabledExtensions(extensionEnablementService, extensions, ignoreWorkspaceTrust);
981
+ function checkEnabledAndProposedAPI(logService, extensionEnablementService, extensionsProposedApi, extensions, ignoreWorkspaceTrust) {
982
+ return filterEnabledExtensions(logService, extensionEnablementService, extensions, ignoreWorkspaceTrust);
956
983
  }
957
- function filterEnabledExtensions(extensionEnablementService, extensions, ignoreWorkspaceTrust) {
984
+ function filterEnabledExtensions(logService, extensionEnablementService, extensions, ignoreWorkspaceTrust) {
958
985
  const enabledExtensions = [], extensionsToCheck = [], mappedExtensions = [];
959
986
  for (const extension of extensions) {
960
987
  if (extension.isUnderDevelopment) {
@@ -970,6 +997,11 @@ function filterEnabledExtensions(extensionEnablementService, extensions, ignoreW
970
997
  if (extensionEnablementService.isEnabledEnablementState(enablementStates[index])) {
971
998
  enabledExtensions.push(extensionsToCheck[index]);
972
999
  }
1000
+ else {
1001
+ if (isCI) {
1002
+ logService.info(`filterEnabledExtensions: extension '${extensionsToCheck[index].identifier.value}' is disabled`);
1003
+ }
1004
+ }
973
1005
  }
974
1006
  return enabledExtensions;
975
1007
  }
@@ -1,9 +1,10 @@
1
1
  import { Event } from '../../../../base/common/event.js';
2
- import { ExtensionIdentifier, IExtensionDescription } from '../../../../platform/extensions/common/extensions.js';
2
+ import { IExtensionDescription, ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
3
3
 
4
4
  declare class DeltaExtensionsResult {
5
+ readonly versionId: number;
5
6
  readonly removedDueToLooping: IExtensionDescription[];
6
- constructor(removedDueToLooping: IExtensionDescription[]);
7
+ constructor(versionId: number, removedDueToLooping: IExtensionDescription[]);
7
8
  }
8
9
  interface IReadOnlyExtensionDescriptionRegistry {
9
10
  containsActivationEvent(activationEvent: string): boolean;
@@ -19,25 +20,34 @@ declare class ExtensionDescriptionRegistry implements IReadOnlyExtensionDescript
19
20
  static isHostExtension(extensionId: ExtensionIdentifier | string, myRegistry: ExtensionDescriptionRegistry, globalRegistry: ExtensionDescriptionRegistry): boolean;
20
21
  private readonly _onDidChange;
21
22
  readonly onDidChange: Event<void>;
23
+ private _versionId;
22
24
  private _extensionDescriptions;
23
25
  private _extensionsMap;
24
26
  private _extensionsArr;
25
27
  private _activationMap;
26
28
  constructor(_activationEventsReader: IActivationEventsReader, extensionDescriptions: IExtensionDescription[]);
27
29
  private _initialize;
28
- set(extensionDescriptions: IExtensionDescription[]): void;
30
+ set(extensionDescriptions: IExtensionDescription[]): {
31
+ versionId: number;
32
+ };
29
33
  deltaExtensions(toAdd: IExtensionDescription[], toRemove: ExtensionIdentifier[]): DeltaExtensionsResult;
30
34
  private static _findLoopingExtensions;
31
35
  containsActivationEvent(activationEvent: string): boolean;
32
36
  containsExtension(extensionId: ExtensionIdentifier): boolean;
33
37
  getExtensionDescriptionsForActivationEvent(activationEvent: string): IExtensionDescription[];
34
38
  getAllExtensionDescriptions(): IExtensionDescription[];
39
+ getSnapshot(): ExtensionDescriptionRegistrySnapshot;
35
40
  getExtensionDescription(extensionId: ExtensionIdentifier | string): IExtensionDescription | undefined;
36
41
  getExtensionDescriptionByUUID(uuid: string): IExtensionDescription | undefined;
37
42
  getExtensionDescriptionByIdOrUUID(extensionId: ExtensionIdentifier | string, uuid: string | undefined): IExtensionDescription | undefined;
38
43
  }
44
+ declare class ExtensionDescriptionRegistrySnapshot {
45
+ readonly versionId: number;
46
+ readonly extensions: readonly IExtensionDescription[];
47
+ constructor(versionId: number, extensions: readonly IExtensionDescription[]);
48
+ }
39
49
  interface IActivationEventsReader {
40
50
  readActivationEvents(extensionDescription: IExtensionDescription): string[] | undefined;
41
51
  }
42
52
 
43
- export { DeltaExtensionsResult, ExtensionDescriptionRegistry, type IActivationEventsReader, type IReadOnlyExtensionDescriptionRegistry };
53
+ export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistrySnapshot, type IActivationEventsReader, type IReadOnlyExtensionDescriptionRegistry };
@@ -3,7 +3,8 @@ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
3
3
  import * as path from 'monaco-editor/esm/vs/base/common/path.js';
4
4
  import { Disposable, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
5
5
  class DeltaExtensionsResult {
6
- constructor(removedDueToLooping) {
6
+ constructor(versionId, removedDueToLooping) {
7
+ this.versionId = versionId;
7
8
  this.removedDueToLooping = removedDueToLooping;
8
9
  }
9
10
  }
@@ -25,6 +26,7 @@ class ExtensionDescriptionRegistry {
25
26
  this._activationEventsReader = _activationEventsReader;
26
27
  this._onDidChange = ( new Emitter());
27
28
  this.onDidChange = this._onDidChange.event;
29
+ this._versionId = 0;
28
30
  this._extensionDescriptions = extensionDescriptions;
29
31
  this._initialize();
30
32
  }
@@ -57,7 +59,11 @@ class ExtensionDescriptionRegistry {
57
59
  set(extensionDescriptions) {
58
60
  this._extensionDescriptions = extensionDescriptions;
59
61
  this._initialize();
62
+ this._versionId++;
60
63
  this._onDidChange.fire(undefined);
64
+ return {
65
+ versionId: this._versionId
66
+ };
61
67
  }
62
68
  deltaExtensions(toAdd, toRemove) {
63
69
  this._extensionDescriptions = removeExtensions(this._extensionDescriptions, toRemove);
@@ -65,8 +71,9 @@ class ExtensionDescriptionRegistry {
65
71
  const looping = ExtensionDescriptionRegistry._findLoopingExtensions(this._extensionDescriptions);
66
72
  this._extensionDescriptions = removeExtensions(this._extensionDescriptions, ( looping.map(ext => ext.identifier)));
67
73
  this._initialize();
74
+ this._versionId++;
68
75
  this._onDidChange.fire(undefined);
69
- return ( new DeltaExtensionsResult(looping));
76
+ return ( new DeltaExtensionsResult(this._versionId, looping));
70
77
  }
71
78
  static _findLoopingExtensions(extensionDescriptions) {
72
79
  const G = new (class {
@@ -150,6 +157,9 @@ class ExtensionDescriptionRegistry {
150
157
  getAllExtensionDescriptions() {
151
158
  return this._extensionsArr.slice(0);
152
159
  }
160
+ getSnapshot() {
161
+ return ( new ExtensionDescriptionRegistrySnapshot(this._versionId, this.getAllExtensionDescriptions()));
162
+ }
153
163
  getExtensionDescription(extensionId) {
154
164
  const extension = this._extensionsMap.get(extensionId);
155
165
  return extension ? extension : undefined;
@@ -167,6 +177,12 @@ class ExtensionDescriptionRegistry {
167
177
  ?? (uuid ? this.getExtensionDescriptionByUUID(uuid) : undefined));
168
178
  }
169
179
  }
180
+ class ExtensionDescriptionRegistrySnapshot {
181
+ constructor(versionId, extensions) {
182
+ this.versionId = versionId;
183
+ this.extensions = extensions;
184
+ }
185
+ }
170
186
  class LockableExtensionDescriptionRegistry {
171
187
  constructor(activationEventsReader) {
172
188
  this._lock = ( new Lock());
@@ -194,6 +210,9 @@ class LockableExtensionDescriptionRegistry {
194
210
  getAllExtensionDescriptions() {
195
211
  return this._actual.getAllExtensionDescriptions();
196
212
  }
213
+ getSnapshot() {
214
+ return this._actual.getSnapshot();
215
+ }
197
216
  getExtensionDescription(extensionId) {
198
217
  return this._actual.getExtensionDescription(extensionId);
199
218
  }
@@ -284,4 +303,4 @@ function removeExtensions(arr, toRemove) {
284
303
  const toRemoveSet = ( new ExtensionIdentifierSet(toRemove));
285
304
  return arr.filter(extension => !( toRemoveSet.has(extension.identifier)));
286
305
  }
287
- export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistryLock, LockableExtensionDescriptionRegistry };
306
+ export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistryLock, ExtensionDescriptionRegistrySnapshot, LockableExtensionDescriptionRegistry };
@@ -27,7 +27,7 @@ interface IExtensionHostManager {
27
27
  * Returns `null` if no resolver for `remoteAuthority` is found.
28
28
  */
29
29
  getCanonicalURI(remoteAuthority: string, uri: URI): Promise<URI | null>;
30
- start(allExtensions: IExtensionDescription[], myExtensions: ExtensionIdentifier[]): Promise<void>;
30
+ start(extensionRegistryVersionId: number, allExtensions: readonly IExtensionDescription[], myExtensions: ExtensionIdentifier[]): Promise<void>;
31
31
  extensionTestsExecute(): Promise<number>;
32
32
  setRemoteEnvironment(env: {
33
33
  [key: string]: string | null;
@@ -312,12 +312,12 @@ let ExtensionHostManager = ExtensionHostManager_1 = class ExtensionHostManager e
312
312
  }
313
313
  return proxy.getCanonicalURI(remoteAuthority, uri);
314
314
  }
315
- async start(allExtensions, myExtensions) {
315
+ async start(extensionRegistryVersionId, allExtensions, myExtensions) {
316
316
  const proxy = await this._proxy;
317
317
  if (!proxy) {
318
318
  return;
319
319
  }
320
- const deltaExtensions = this._extensionHost.extensions.set(allExtensions, myExtensions);
320
+ const deltaExtensions = this._extensionHost.extensions.set(extensionRegistryVersionId, allExtensions, myExtensions);
321
321
  return proxy.startExtensionHost(deltaExtensions);
322
322
  }
323
323
  async extensionTestsExecute() {
@@ -330,16 +330,19 @@ let ExtensionHostManager = ExtensionHostManager_1 = class ExtensionHostManager e
330
330
  representsRunningLocation(runningLocation) {
331
331
  return this._extensionHost.runningLocation.equals(runningLocation);
332
332
  }
333
- async deltaExtensions(extensionsDelta) {
333
+ async deltaExtensions(incomingExtensionsDelta) {
334
334
  const proxy = await this._proxy;
335
335
  if (!proxy) {
336
336
  return;
337
337
  }
338
- this._extensionHost.extensions.delta(extensionsDelta);
339
- return proxy.deltaExtensions(extensionsDelta);
338
+ const outgoingExtensionsDelta = this._extensionHost.extensions.delta(incomingExtensionsDelta);
339
+ if (!outgoingExtensionsDelta) {
340
+ return;
341
+ }
342
+ return proxy.deltaExtensions(outgoingExtensionsDelta);
340
343
  }
341
344
  containsExtension(extensionId) {
342
- return this._extensionHost.extensions.containsExtension(extensionId);
345
+ return this._extensionHost.extensions?.containsExtension(extensionId) ?? false;
343
346
  }
344
347
  async setRemoteEnvironment(env) {
345
348
  const proxy = await this._proxy;
@@ -386,7 +389,7 @@ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extend
386
389
  return this._actual;
387
390
  }
388
391
  const actual = this._createActual(reason);
389
- await actual.start([], []);
392
+ await actual.start(this._lazyStartExtensions.versionId, this._lazyStartExtensions.allExtensions, this._lazyStartExtensions.myExtensions);
390
393
  return actual;
391
394
  }
392
395
  async ready() {
@@ -406,13 +409,12 @@ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extend
406
409
  this._lazyStartExtensions.delta(extensionsDelta);
407
410
  if (extensionsDelta.myToAdd.length > 0) {
408
411
  const actual = this._createActual(`contains ${extensionsDelta.myToAdd.length} new extension(s) (installed or enabled): ${( ( extensionsDelta.myToAdd.map(extId => extId.value)))}`);
409
- const { toAdd, myToAdd } = this._lazyStartExtensions.toDelta();
410
- actual.start(toAdd, myToAdd);
412
+ await actual.start(this._lazyStartExtensions.versionId, this._lazyStartExtensions.allExtensions, this._lazyStartExtensions.myExtensions);
411
413
  return;
412
414
  }
413
415
  }
414
416
  containsExtension(extensionId) {
415
- return this._extensionHost.extensions.containsExtension(extensionId);
417
+ return this._extensionHost.extensions?.containsExtension(extensionId) ?? false;
416
418
  }
417
419
  async activate(extension, reason) {
418
420
  await this._startCalled.wait();
@@ -470,15 +472,14 @@ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extend
470
472
  }
471
473
  throw new Error(`Cannot resolve canonical URI`);
472
474
  }
473
- async start(allExtensions, myExtensions) {
475
+ async start(extensionRegistryVersionId, allExtensions, myExtensions) {
474
476
  if (myExtensions.length > 0) {
475
477
  const actual = this._createActual(`contains ${myExtensions.length} extension(s): ${( ( myExtensions.map(extId => extId.value)))}.`);
476
- const result = actual.start(allExtensions, myExtensions);
478
+ const result = actual.start(extensionRegistryVersionId, allExtensions, myExtensions);
477
479
  this._startCalled.open();
478
480
  return result;
479
481
  }
480
- this._lazyStartExtensions = ( (new ExtensionHostExtensions()));
481
- this._lazyStartExtensions.set(allExtensions, myExtensions);
482
+ this._lazyStartExtensions = ( (new ExtensionHostExtensions(extensionRegistryVersionId, allExtensions, myExtensions)));
482
483
  this._startCalled.open();
483
484
  }
484
485
  async extensionTestsExecute() {
@@ -1,9 +1,18 @@
1
1
  import { URI, UriDto, UriComponents } from '../../../../base/common/uri.js';
2
- import { ExtensionIdentifier, IExtensionDescription } from '../../../../platform/extensions/common/extensions.js';
2
+ import { IExtensionDescription, ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
3
3
  import { LogLevel, ILoggerResource } from '../../../../platform/log/common/log.js';
4
4
  import { IRemoteConnectionData } from '../../../../platform/remote/common/remoteAuthorityResolver.js';
5
5
 
6
+ interface IExtensionDescriptionSnapshot {
7
+ readonly versionId: number;
8
+ readonly allExtensions: IExtensionDescription[];
9
+ readonly activationEvents: {
10
+ [extensionId: string]: string[];
11
+ };
12
+ readonly myExtensions: ExtensionIdentifier[];
13
+ }
6
14
  interface IExtensionDescriptionDelta {
15
+ readonly versionId: number;
7
16
  readonly toRemove: ExtensionIdentifier[];
8
17
  readonly toAdd: IExtensionDescription[];
9
18
  readonly addActivationEvents: {
@@ -22,11 +31,7 @@ interface IExtensionHostInitData {
22
31
  parentPid: number | 0;
23
32
  environment: IEnvironment;
24
33
  workspace?: IStaticWorkspaceData | null;
25
- activationEvents: {
26
- [extensionId: string]: string[];
27
- };
28
- allExtensions: IExtensionDescription[];
29
- myExtensions: ExtensionIdentifier[];
34
+ extensions: IExtensionDescriptionSnapshot;
30
35
  nlsBaseUrl?: URI;
31
36
  telemetryInfo: {
32
37
  readonly sessionId: string;
@@ -85,4 +90,4 @@ declare enum UIKind {
85
90
  Web = 2
86
91
  }
87
92
 
88
- export { type IEnvironment, type IExtensionDescriptionDelta, type IExtensionHostInitData, type IStaticWorkspaceData, type MessagePortLike, UIKind };
93
+ export { type IEnvironment, type IExtensionDescriptionDelta, type IExtensionDescriptionSnapshot, type IExtensionHostInitData, type IStaticWorkspaceData, type MessagePortLike, UIKind };
@@ -4,7 +4,7 @@ import { Event } from '../../../../base/common/event.js';
4
4
  import Severity from '../../../../base/common/severity.js';
5
5
  import { IMessagePassingProtocol } from '../../../../base/parts/ipc/common/ipc.js';
6
6
  import { ExtensionHostKind } from './extensionHostKind.js';
7
- import { IExtensionDescriptionDelta } from './extensionHostProtocol.js';
7
+ import { IExtensionDescriptionSnapshot, IExtensionDescriptionDelta } from './extensionHostProtocol.js';
8
8
  import { ExtensionRunningLocation } from './extensionRunningLocation.js';
9
9
  import { IExtensionPoint } from './extensionsRegistry.js';
10
10
 
@@ -49,7 +49,7 @@ interface IExtensionHost {
49
49
  * extension will execute or is executing on this extension host.
50
50
  * **NOTE**: this will reflect extensions correctly only after `start()` resolves.
51
51
  */
52
- readonly extensions: ExtensionHostExtensions;
52
+ readonly extensions: ExtensionHostExtensions | null;
53
53
  readonly onExit: Event<[number, string | null]>;
54
54
  start(): Promise<IMessagePassingProtocol>;
55
55
  getInspectPort(): number | undefined;
@@ -57,12 +57,16 @@ interface IExtensionHost {
57
57
  dispose(): void;
58
58
  }
59
59
  declare class ExtensionHostExtensions {
60
+ private _versionId;
60
61
  private _allExtensions;
61
62
  private _myExtensions;
62
- constructor();
63
- toDelta(): IExtensionDescriptionDelta;
64
- set(allExtensions: IExtensionDescription[], myExtensions: ExtensionIdentifier[]): IExtensionDescriptionDelta;
65
- delta(extensionsDelta: IExtensionDescriptionDelta): void;
63
+ get versionId(): number;
64
+ get allExtensions(): IExtensionDescription[];
65
+ get myExtensions(): ExtensionIdentifier[];
66
+ constructor(versionId: number, allExtensions: readonly IExtensionDescription[], myExtensions: ExtensionIdentifier[]);
67
+ toSnapshot(): IExtensionDescriptionSnapshot;
68
+ set(versionId: number, allExtensions: IExtensionDescription[], myExtensions: ExtensionIdentifier[]): IExtensionDescriptionDelta;
69
+ delta(extensionsDelta: IExtensionDescriptionDelta): IExtensionDescriptionDelta | null;
66
70
  containsExtension(extensionId: ExtensionIdentifier): boolean;
67
71
  }
68
72
  interface ExtensionActivationReason {
@@ -23,20 +23,32 @@ class MissingExtensionDependency {
23
23
  }
24
24
  }
25
25
  class ExtensionHostExtensions {
26
- constructor() {
27
- this._allExtensions = [];
28
- this._myExtensions = [];
26
+ get versionId() {
27
+ return this._versionId;
28
+ }
29
+ get allExtensions() {
30
+ return this._allExtensions;
31
+ }
32
+ get myExtensions() {
33
+ return this._myExtensions;
29
34
  }
30
- toDelta() {
35
+ constructor(versionId, allExtensions, myExtensions) {
36
+ this._versionId = versionId;
37
+ this._allExtensions = allExtensions.slice(0);
38
+ this._myExtensions = myExtensions.slice(0);
39
+ }
40
+ toSnapshot() {
31
41
  return {
32
- toRemove: [],
33
- toAdd: this._allExtensions,
34
- addActivationEvents: ImplicitActivationEvents.createActivationEventsMap(this._allExtensions),
35
- myToRemove: [],
36
- myToAdd: this._myExtensions
42
+ versionId: this._versionId,
43
+ allExtensions: this._allExtensions,
44
+ myExtensions: this._myExtensions,
45
+ activationEvents: ImplicitActivationEvents.createActivationEventsMap(this._allExtensions)
37
46
  };
38
47
  }
39
- set(allExtensions, myExtensions) {
48
+ set(versionId, allExtensions, myExtensions) {
49
+ if (this._versionId > versionId) {
50
+ throw new Error(`ExtensionHostExtensions: invalid versionId ${versionId} (current: ${this._versionId})`);
51
+ }
40
52
  const toRemove = [];
41
53
  const toAdd = [];
42
54
  const myToRemove = [];
@@ -86,11 +98,14 @@ class ExtensionHostExtensions {
86
98
  }
87
99
  }
88
100
  const addActivationEvents = ImplicitActivationEvents.createActivationEventsMap(toAdd);
89
- const delta = { toRemove, toAdd, addActivationEvents, myToRemove, myToAdd };
101
+ const delta = { versionId, toRemove, toAdd, addActivationEvents, myToRemove, myToAdd };
90
102
  this.delta(delta);
91
103
  return delta;
92
104
  }
93
105
  delta(extensionsDelta) {
106
+ if (this._versionId >= extensionsDelta.versionId) {
107
+ return null;
108
+ }
94
109
  const { toRemove, toAdd, myToRemove, myToAdd } = extensionsDelta;
95
110
  const toRemoveSet = ( new ExtensionIdentifierSet(toRemove));
96
111
  const myToRemoveSet = ( new ExtensionIdentifierSet(myToRemove));
@@ -112,6 +127,7 @@ class ExtensionHostExtensions {
112
127
  for (const extensionId of myToAdd) {
113
128
  this._myExtensions.push(extensionId);
114
129
  }
130
+ return extensionsDelta;
115
131
  }
116
132
  containsExtension(extensionId) {
117
133
  for (const myExtensionId of this._myExtensions) {
@@ -4,6 +4,7 @@ const allApiProposals = ( Object.freeze({
4
4
  authSession: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authSession.d.ts',
5
5
  canonicalUriProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.canonicalUriProvider.d.ts',
6
6
  chat: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chat.d.ts',
7
+ chatAgents: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatAgents.d.ts',
7
8
  chatProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatProvider.d.ts',
8
9
  chatRequestAccess: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatRequestAccess.d.ts',
9
10
  chatSlashCommands: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatSlashCommands.d.ts',
@@ -33,7 +34,6 @@ const allApiProposals = ( Object.freeze({
33
34
  dropMetadata: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.dropMetadata.d.ts',
34
35
  editSessionIdentityProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editSessionIdentityProvider.d.ts',
35
36
  editorInsets: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editorInsets.d.ts',
36
- envShellEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.envShellEvent.d.ts',
37
37
  extensionRuntime: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionRuntime.d.ts',
38
38
  extensionsAny: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionsAny.d.ts',
39
39
  externalUriOpener: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.externalUriOpener.d.ts',
@@ -43,16 +43,13 @@ const allApiProposals = ( Object.freeze({
43
43
  fsChunks: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fsChunks.d.ts',
44
44
  handleIssueUri: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.handleIssueUri.d.ts',
45
45
  idToken: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.idToken.d.ts',
46
- indentSize: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.indentSize.d.ts',
47
46
  inlineCompletionsAdditions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts',
48
47
  interactive: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactive.d.ts',
49
48
  interactiveUserActions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveUserActions.d.ts',
50
49
  interactiveWindow: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveWindow.d.ts',
51
50
  ipc: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.ipc.d.ts',
52
- languageConfigurationAutoClosingPairs: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageConfigurationAutoClosingPairs.d.ts',
53
51
  mappedEditsProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts',
54
52
  notebookCellExecutionState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecutionState.d.ts',
55
- notebookCodeActions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCodeActions.d.ts',
56
53
  notebookControllerAffinityHidden: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookControllerAffinityHidden.d.ts',
57
54
  notebookDeprecated: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookDeprecated.d.ts',
58
55
  notebookExecution: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookExecution.d.ts',
@@ -69,6 +66,7 @@ const allApiProposals = ( Object.freeze({
69
66
  resolvers: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.resolvers.d.ts',
70
67
  saveEditor: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.saveEditor.d.ts',
71
68
  scmActionButton: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmActionButton.d.ts',
69
+ scmHistoryProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts',
72
70
  scmSelectedProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts',
73
71
  scmTextDocument: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmTextDocument.d.ts',
74
72
  scmValidation: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmValidation.d.ts',
@@ -77,7 +75,6 @@ const allApiProposals = ( Object.freeze({
77
75
  tabInputTextMerge: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts',
78
76
  taskPresentationGroup: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.taskPresentationGroup.d.ts',
79
77
  telemetry: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.telemetry.d.ts',
80
- terminalContextMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalContextMenu.d.ts',
81
78
  terminalDataWriteEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDataWriteEvent.d.ts',
82
79
  terminalDimensions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDimensions.d.ts',
83
80
  terminalExecuteCommandEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalExecuteCommandEvent.d.ts',