@codingame/monaco-vscode-extensions-service-override 30.0.1 → 31.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 (46) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.d.ts +1 -0
  3. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +63 -42
  4. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +28 -28
  5. package/vscode/src/vs/workbench/api/browser/mainThreadBrowsers.js +2 -2
  6. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +1 -1
  7. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +22 -7
  8. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +171 -83
  9. package/vscode/src/vs/workbench/api/browser/mainThreadChatDebug.js +7 -0
  10. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +4 -1
  11. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +46 -15
  12. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +1 -1
  13. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +2 -2
  14. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +1 -1
  15. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +11 -11
  16. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +20 -20
  17. package/vscode/src/vs/workbench/api/browser/mainThreadGitExtensionService.d.ts +0 -1
  18. package/vscode/src/vs/workbench/api/browser/mainThreadGitExtensionService.js +4 -13
  19. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +2 -2
  20. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.d.ts +3 -3
  21. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +34 -17
  22. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -4
  23. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +1 -1
  24. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +3 -3
  25. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +1 -1
  26. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +1 -1
  27. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
  28. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -2
  29. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +2 -2
  30. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +1 -1
  31. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +5 -5
  32. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +1 -1
  33. package/vscode/src/vs/workbench/contrib/git/common/gitService.d.ts +7 -1
  34. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +23 -23
  35. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +2 -2
  36. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +12 -12
  37. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +1 -1
  38. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +1 -1
  39. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +4 -4
  40. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js +5 -5
  41. package/vscode/src/vs/platform/browserView/common/browserViewTelemetry.d.ts +0 -34
  42. package/vscode/src/vs/platform/browserView/common/browserViewTelemetry.js +0 -7
  43. package/vscode/src/vs/platform/browserView/common/browserViewUri.d.ts +0 -21
  44. package/vscode/src/vs/platform/browserView/common/browserViewUri.js +0 -34
  45. package/vscode/src/vs/workbench/contrib/browserView/common/browserEditorInput.d.ts +0 -61
  46. package/vscode/src/vs/workbench/contrib/browserView/common/browserEditorInput.js +0 -233
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-extensions-service-override",
3
- "version": "30.0.1",
3
+ "version": "31.0.1",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - extensions service-override",
6
6
  "keywords": [],
@@ -15,8 +15,8 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-api": "30.0.1",
19
- "@codingame/monaco-vscode-files-service-override": "30.0.1"
18
+ "@codingame/monaco-vscode-api": "31.0.1",
19
+ "@codingame/monaco-vscode-files-service-override": "31.0.1"
20
20
  },
21
21
  "main": "index.js",
22
22
  "module": "index.js",
@@ -24,4 +24,5 @@ export declare class ExtensionManagementCLI {
24
24
  uninstallExtensions(extensions: (string | URI)[], force: boolean, profileLocation?: URI): Promise<void>;
25
25
  locateExtension(extensions: string[]): Promise<void>;
26
26
  private notInstalled;
27
+ private validateBuiltinExtensionEnabledWithAutoUpdates;
27
28
  }
@@ -13,9 +13,9 @@ import { getIdAndVersion, areSameExtensions, getGalleryExtensionId, getExtension
13
13
  import { ExtensionType, EXTENSION_CATEGORIES } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
14
14
  import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
15
15
 
16
- const notFound = id => ( localize(1885, "Extension '{0}' not found.", id));
16
+ const notFound = id => ( localize(1886, "Extension '{0}' not found.", id));
17
17
  const useId = ( localize(
18
- 1886,
18
+ 1887,
19
19
  "Make sure you use the full extension ID, including the publisher, e.g.: {0}",
20
20
  "ms-dotnettools.csharp"
21
21
  ));
@@ -62,7 +62,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
62
62
  return;
63
63
  }
64
64
  if (this.location) {
65
- this.logger.info(( localize(1887, "Extensions installed on {0}:", this.location)));
65
+ this.logger.info(( localize(1888, "Extensions installed on {0}:", this.location)));
66
66
  }
67
67
  extensions = extensions.sort((e1, e2) => e1.identifier.id.localeCompare(e2.identifier.id));
68
68
  let lastId = undefined;
@@ -77,7 +77,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
77
77
  const failed = [];
78
78
  try {
79
79
  if (extensions.length) {
80
- this.logger.info(this.location ? ( localize(1888, "Installing extensions on {0}...", this.location)) : ( localize(1889, "Installing extensions...")));
80
+ this.logger.info(this.location ? ( localize(1889, "Installing extensions on {0}...", this.location)) : ( localize(1890, "Installing extensions...")));
81
81
  }
82
82
  const installVSIXInfos = [];
83
83
  const installExtensionInfos = [];
@@ -142,11 +142,11 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
142
142
  failed.push(...failedGalleryExtensions);
143
143
  }
144
144
  } catch (error) {
145
- this.logger.error(( localize(1890, "Error while installing extensions: {0}", getErrorMessage(error))));
145
+ this.logger.error(( localize(1891, "Error while installing extensions: {0}", getErrorMessage(error))));
146
146
  throw error;
147
147
  }
148
148
  if (failed.length) {
149
- throw ( new Error(( localize(1891, "Failed Installing Extensions: {0}", failed.join(", ")))));
149
+ throw ( new Error(( localize(1892, "Failed Installing Extensions: {0}", failed.join(", ")))));
150
150
  }
151
151
  }
152
152
  async updateExtensions(profileLocation) {
@@ -161,7 +161,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
161
161
  }
162
162
  }
163
163
  this.logger.trace(( localize(
164
- 1892,
164
+ 1893,
165
165
  "Fetching latest versions for {0} extensions",
166
166
  installedExtensionsQuery.length
167
167
  )));
@@ -185,11 +185,11 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
185
185
  }
186
186
  }
187
187
  if (!extensionsToUpdate.length) {
188
- this.logger.info(( localize(1893, "No extension to update")));
188
+ this.logger.info(( localize(1894, "No extension to update")));
189
189
  return;
190
190
  }
191
191
  this.logger.info(( localize(
192
- 1894,
192
+ 1895,
193
193
  "Updating extensions: {0}",
194
194
  ( extensionsToUpdate.map(ext => ext.extension.identifier.id)).join(", ")
195
195
  )));
@@ -197,14 +197,14 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
197
197
  for (const extensionResult of installationResult) {
198
198
  if (extensionResult.error) {
199
199
  this.logger.error(( localize(
200
- 1895,
200
+ 1896,
201
201
  "Error while updating extension {0}: {1}",
202
202
  extensionResult.identifier.id,
203
203
  getErrorMessage(extensionResult.error)
204
204
  )));
205
205
  } else {
206
206
  this.logger.info(( localize(
207
- 1896,
207
+ 1897,
208
208
  "Extension '{0}' v{1} was successfully updated.",
209
209
  extensionResult.identifier.id,
210
210
  extensionResult.local?.manifest.version
@@ -223,9 +223,14 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
223
223
  id
224
224
  }));
225
225
  if (installedExtension) {
226
+ const builtinAutoUpdateMessage = this.validateBuiltinExtensionEnabledWithAutoUpdates(installedExtension);
227
+ if (builtinAutoUpdateMessage) {
228
+ this.logger.info(builtinAutoUpdateMessage);
229
+ return false;
230
+ }
226
231
  if (!force && (!version || (version === "prerelease" && installedExtension.preRelease))) {
227
232
  this.logger.info(( localize(
228
- 1897,
233
+ 1898,
229
234
  "Extension '{0}' v{1} is already installed. Use '--force' option to update to latest version or provide '@<version>' to install a specific version, for example: '{2}@1.2.3'.",
230
235
  id,
231
236
  installedExtension.manifest.version,
@@ -234,7 +239,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
234
239
  return false;
235
240
  }
236
241
  if (version && installedExtension.manifest.version === version) {
237
- this.logger.info(( localize(1898, "Extension '{0}' is already installed.", `${id}@${version}`)));
242
+ this.logger.info(( localize(1899, "Extension '{0}' is already installed.", `${id}@${version}`)));
238
243
  return false;
239
244
  }
240
245
  if (installedExtension.preRelease && version !== "prerelease") {
@@ -276,23 +281,23 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
276
281
  if (installedExtension) {
277
282
  if (gallery.version === installedExtension.manifest.version) {
278
283
  this.logger.info(( localize(
279
- 1898,
284
+ 1899,
280
285
  "Extension '{0}' is already installed.",
281
286
  version ? `${id}@${version}` : id
282
287
  )));
283
288
  return;
284
289
  }
285
290
  this.logger.info(( localize(
286
- 1899,
291
+ 1900,
287
292
  "Updating the extension '{0}' to the version {1}",
288
293
  id,
289
294
  gallery.version
290
295
  )));
291
296
  }
292
297
  if (installOptions.isBuiltin) {
293
- this.logger.info(version ? ( localize(1900, "Installing builtin extension '{0}' v{1}...", id, version)) : ( localize(1901, "Installing builtin extension '{0}'...", id)));
298
+ this.logger.info(version ? ( localize(1901, "Installing builtin extension '{0}' v{1}...", id, version)) : ( localize(1902, "Installing builtin extension '{0}'...", id)));
294
299
  } else {
295
- this.logger.info(version ? ( localize(1902, "Installing extension '{0}' v{1}...", id, version)) : ( localize(1903, "Installing extension '{0}'...", id)));
300
+ this.logger.info(version ? ( localize(1903, "Installing extension '{0}' v{1}...", id, version)) : ( localize(1904, "Installing extension '{0}'...", id)));
296
301
  }
297
302
  extensionsToInstall.push({
298
303
  extension: gallery,
@@ -308,7 +313,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
308
313
  for (const extensionResult of installationResult) {
309
314
  if (extensionResult.error) {
310
315
  this.logger.error(( localize(
311
- 1904,
316
+ 1905,
312
317
  "Error while installing extension {0}: {1}",
313
318
  extensionResult.identifier.id,
314
319
  getErrorMessage(extensionResult.error)
@@ -316,7 +321,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
316
321
  failed.push(extensionResult.identifier.id);
317
322
  } else {
318
323
  this.logger.info(( localize(
319
- 1905,
324
+ 1906,
320
325
  "Extension '{0}' v{1} was successfully installed.",
321
326
  extensionResult.identifier.id,
322
327
  extensionResult.local?.manifest.version
@@ -338,10 +343,10 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
338
343
  ...installOptions,
339
344
  installGivenVersion: true
340
345
  });
341
- this.logger.info(( localize(1906, "Extension '{0}' was successfully installed.", basename(vsix))));
346
+ this.logger.info(( localize(1907, "Extension '{0}' was successfully installed.", basename(vsix))));
342
347
  } catch (error) {
343
348
  if (isCancellationError(error)) {
344
- this.logger.info(( localize(1907, "Cancelled installing extension '{0}'.", basename(vsix))));
349
+ this.logger.info(( localize(1908, "Cancelled installing extension '{0}'.", basename(vsix))));
345
350
  } else {
346
351
  throw error;
347
352
  }
@@ -375,23 +380,28 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
375
380
  return true;
376
381
  }
377
382
  async validateVSIX(manifest, force, profileLocation, installedExtensions) {
378
- if (!force) {
379
- const extensionIdentifier = {
380
- id: getGalleryExtensionId(manifest.publisher, manifest.name)
381
- };
382
- const newer = installedExtensions.find(
383
- local => areSameExtensions(extensionIdentifier, local.identifier) && semverExports.gt(local.manifest.version, manifest.version)
384
- );
385
- if (newer) {
386
- this.logger.info(( localize(
387
- 1908,
388
- "A newer version of extension '{0}' v{1} is already installed. Use '--force' option to downgrade to older version.",
389
- newer.identifier.id,
390
- newer.manifest.version,
391
- manifest.version
392
- )));
383
+ const extensionIdentifier = {
384
+ id: getGalleryExtensionId(manifest.publisher, manifest.name)
385
+ };
386
+ const existingExtension = installedExtensions.find(local => areSameExtensions(extensionIdentifier, local.identifier));
387
+ if (existingExtension) {
388
+ const builtinAutoUpdateMessage = this.validateBuiltinExtensionEnabledWithAutoUpdates(existingExtension);
389
+ if (builtinAutoUpdateMessage) {
390
+ this.logger.info(builtinAutoUpdateMessage);
393
391
  return false;
394
392
  }
393
+ if (!force) {
394
+ if (semverExports.gt(existingExtension.manifest.version, manifest.version)) {
395
+ this.logger.info(( localize(
396
+ 1909,
397
+ "A newer version of extension '{0}' v{1} is already installed. Use '--force' option to downgrade to older version.",
398
+ existingExtension.identifier.id,
399
+ existingExtension.manifest.version,
400
+ manifest.version
401
+ )));
402
+ return false;
403
+ }
404
+ }
395
405
  }
396
406
  return this.validateExtensionKind(manifest);
397
407
  }
@@ -414,7 +424,7 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
414
424
  }
415
425
  if (( extensionsToUninstall.some(e => e.type === ExtensionType.System))) {
416
426
  this.logger.info(( localize(
417
- 1909,
427
+ 1910,
418
428
  "Extension '{0}' is a Built-in extension and cannot be uninstalled",
419
429
  id
420
430
  )));
@@ -422,13 +432,13 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
422
432
  }
423
433
  if (!force && ( extensionsToUninstall.some(e => e.isBuiltin))) {
424
434
  this.logger.info(( localize(
425
- 1910,
435
+ 1911,
426
436
  "Extension '{0}' is marked as a Built-in extension by user. Please use '--force' option to uninstall it.",
427
437
  id
428
438
  )));
429
439
  return;
430
440
  }
431
- this.logger.info(( localize(1911, "Uninstalling {0}...", id)));
441
+ this.logger.info(( localize(1912, "Uninstalling {0}...", id)));
432
442
  for (const extensionToUninstall of extensionsToUninstall) {
433
443
  await this.extensionManagementService.uninstall(extensionToUninstall, {
434
444
  profileLocation
@@ -436,13 +446,13 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
436
446
  }
437
447
  if (this.location) {
438
448
  this.logger.info(( localize(
439
- 1912,
449
+ 1913,
440
450
  "Extension '{0}' was successfully uninstalled from {1}!",
441
451
  id,
442
452
  this.location
443
453
  )));
444
454
  } else {
445
- this.logger.info(( localize(1913, "Extension '{0}' was successfully uninstalled!", id)));
455
+ this.logger.info(( localize(1914, "Extension '{0}' was successfully uninstalled!", id)));
446
456
  }
447
457
  }
448
458
  }
@@ -460,7 +470,18 @@ let ExtensionManagementCLI = class ExtensionManagementCLI {
460
470
  });
461
471
  }
462
472
  notInstalled(id) {
463
- return this.location ? ( localize(1914, "Extension '{0}' is not installed on {1}.", id, this.location)) : ( localize(1915, "Extension '{0}' is not installed.", id));
473
+ return this.location ? ( localize(1915, "Extension '{0}' is not installed on {1}.", id, this.location)) : ( localize(1916, "Extension '{0}' is not installed.", id));
474
+ }
475
+ validateBuiltinExtensionEnabledWithAutoUpdates(extension) {
476
+ if (extension.isBuiltin && ( this.productService.builtInExtensionsEnabledWithAutoUpdates.some(e => e.toLowerCase() === extension.identifier.id.toLowerCase())) && !extension.forceAutoUpdate) {
477
+ return localize(
478
+ 1917,
479
+ "Extension '{0}' is a built-in extension and not allowed to be updated in the current product quality '{1}'.",
480
+ extension.identifier.id,
481
+ this.productService.quality
482
+ );
483
+ }
484
+ return undefined;
464
485
  }
465
486
  };
466
487
  ExtensionManagementCLI = ( __decorate([( __param(2, IExtensionManagementService)), ( __param(3, IExtensionGalleryService)), ( __param(4, IProductService))], ExtensionManagementCLI));
@@ -141,11 +141,11 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
141
141
  }));
142
142
  this._register(authenticationService.registerAuthenticationProviderHostDelegate({
143
143
  priority: extHostContext.extensionHostKind === ExtensionHostKind.LocalWebWorker ? 0 : 1,
144
- create: async (authorizationServer, serverMetadata, resource) => {
144
+ create: async (authorizationServer, serverMetadata, resource, overrideClientId) => {
145
145
  const authProviderId = resource ? `${( authorizationServer.toString(true))} ${resource.resource}` : ( authorizationServer.toString(true));
146
146
  const clientDetails = await this.dynamicAuthProviderStorageService.getClientRegistration(authProviderId);
147
- let clientId = clientDetails?.clientId;
148
- const clientSecret = clientDetails?.clientSecret;
147
+ let clientId = overrideClientId ?? clientDetails?.clientId;
148
+ const clientSecret = overrideClientId ? undefined : clientDetails?.clientSecret;
149
149
  let initialTokens = undefined;
150
150
  if (clientId) {
151
151
  initialTokens = await this.dynamicAuthProviderStorageService.getSessionsForDynamicAuthProvider(authProviderId, clientId);
@@ -245,8 +245,8 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
245
245
  return await deferredPromise.p;
246
246
  }
247
247
  $showContinueNotification(message) {
248
- const yes = ( localize(2528, "Yes"));
249
- const no = ( localize(2529, "No"));
248
+ const yes = ( localize(2523, "Yes"));
249
+ const no = ( localize(2524, "No"));
250
250
  const deferredPromise = ( new DeferredPromise());
251
251
  let result = false;
252
252
  const handle = this.notificationService.prompt(Severity.Warning, message, [{
@@ -302,26 +302,26 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
302
302
  message = customMessage;
303
303
  } else {
304
304
  message = recreatingSession ? ( localize(
305
- 2530,
305
+ 2525,
306
306
  "The extension '{0}' wants you to sign in again using {1}.",
307
307
  extensionName,
308
308
  provider.label
309
309
  )) : ( localize(
310
- 2531,
310
+ 2526,
311
311
  "The extension '{0}' wants to sign in using {1}.",
312
312
  extensionName,
313
313
  provider.label
314
314
  ));
315
315
  }
316
316
  const buttons = [{
317
- label: ( localize(2532, "&&Allow")),
317
+ label: ( localize(2527, "&&Allow")),
318
318
  run() {
319
319
  return true;
320
320
  }
321
321
  }];
322
322
  if (options?.learnMore) {
323
323
  buttons.push({
324
- label: ( localize(2533, "Learn more")),
324
+ label: ( localize(2528, "Learn more")),
325
325
  run: async () => {
326
326
  const result = this.loginPrompt(provider, extensionName, recreatingSession, options);
327
327
  await this.openerService.open(URI.revive(options.learnMore), {
@@ -344,9 +344,9 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
344
344
  }
345
345
  async continueWithIncorrectAccountPrompt(chosenAccountLabel, requestedAccountLabel) {
346
346
  const result = await this.dialogService.prompt({
347
- message: ( localize(2534, "Incorrect account detected")),
347
+ message: ( localize(2529, "Incorrect account detected")),
348
348
  detail: ( localize(
349
- 2535,
349
+ 2530,
350
350
  "The chosen account, {0}, does not match the requested account, {1}.",
351
351
  chosenAccountLabel,
352
352
  requestedAccountLabel
@@ -354,10 +354,10 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
354
354
  type: Severity.Warning,
355
355
  cancelButton: true,
356
356
  buttons: [{
357
- label: ( localize(2536, "Keep {0}", chosenAccountLabel)),
357
+ label: ( localize(2531, "Keep {0}", chosenAccountLabel)),
358
358
  run: () => chosenAccountLabel
359
359
  }, {
360
- label: ( localize(2537, "Login with {0}", requestedAccountLabel)),
360
+ label: ( localize(2532, "Login with {0}", requestedAccountLabel)),
361
361
  run: () => requestedAccountLabel
362
362
  }]
363
363
  });
@@ -510,15 +510,15 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
510
510
  result
511
511
  } = await this.dialogService.prompt({
512
512
  type: Severity.Info,
513
- message: ( localize(2538, "Device Code Authentication")),
513
+ message: ( localize(2533, "Device Code Authentication")),
514
514
  detail: ( localize(
515
- 2539,
515
+ 2534,
516
516
  "Your code: {0}\n\nTo complete authentication, navigate to {1} and enter the code above.",
517
517
  userCode,
518
518
  verificationUri
519
519
  )),
520
520
  buttons: [{
521
- label: ( localize(2540, "Copy & Continue")),
521
+ label: ( localize(2535, "Copy & Continue")),
522
522
  run: () => true
523
523
  }],
524
524
  cancelButton: true
@@ -528,7 +528,7 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
528
528
  await this.clipboardService.writeText(userCode);
529
529
  return await this.openerService.open(( URI.parse(verificationUri)));
530
530
  } catch (error) {
531
- this.notificationService.error(( localize(2541, "Failed to open {0}", verificationUri)));
531
+ this.notificationService.error(( localize(2536, "Failed to open {0}", verificationUri)));
532
532
  }
533
533
  }
534
534
  return false;
@@ -537,44 +537,44 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
537
537
  const redirectUrls = "http://127.0.0.1:33418\nhttps://vscode.dev/redirect";
538
538
  const result = await this.dialogService.prompt({
539
539
  type: Severity.Info,
540
- message: ( localize(2542, "Dynamic Client Registration not supported")),
540
+ message: ( localize(2537, "Dynamic Client Registration not supported")),
541
541
  detail: ( localize(
542
- 2543,
542
+ 2538,
543
543
  "The authorization server '{0}' does not support automatic client registration. Do you want to proceed by manually providing a client registration (client ID)?\n\nNote: When registering your OAuth application, make sure to include these redirect URIs:\n{1}",
544
544
  authorizationServerUrl,
545
545
  redirectUrls
546
546
  )),
547
547
  buttons: [{
548
- label: ( localize(2544, "Copy URIs & Proceed")),
548
+ label: ( localize(2539, "Copy URIs & Proceed")),
549
549
  run: async () => {
550
550
  try {
551
551
  await this.clipboardService.writeText(redirectUrls);
552
552
  } catch (error) {
553
- this.notificationService.error(( localize(2545, "Failed to copy redirect URIs to clipboard.")));
553
+ this.notificationService.error(( localize(2540, "Failed to copy redirect URIs to clipboard.")));
554
554
  }
555
555
  return true;
556
556
  }
557
557
  }],
558
558
  cancelButton: {
559
- label: ( localize(2546, "Cancel")),
559
+ label: ( localize(2541, "Cancel")),
560
560
  run: () => false
561
561
  }
562
562
  });
563
563
  if (!result) {
564
564
  return undefined;
565
565
  }
566
- const sharedTitle = ( localize(2547, "Add Client Registration Details"));
566
+ const sharedTitle = ( localize(2542, "Add Client Registration Details"));
567
567
  const clientId = await this.quickInputService.input({
568
568
  title: sharedTitle,
569
569
  prompt: ( localize(
570
- 2548,
570
+ 2543,
571
571
  "Enter an existing client ID that has been registered with the following redirect URIs: http://127.0.0.1:33418, https://vscode.dev/redirect"
572
572
  )),
573
- placeHolder: ( localize(2549, "OAuth client ID (azye39d...)")),
573
+ placeHolder: ( localize(2544, "OAuth client ID (azye39d...)")),
574
574
  ignoreFocusLost: true,
575
575
  validateInput: async value => {
576
576
  if (!value || value.trim().length === 0) {
577
- return localize(2550, "Client ID is required");
577
+ return localize(2545, "Client ID is required");
578
578
  }
579
579
  return undefined;
580
580
  }
@@ -585,11 +585,11 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
585
585
  const clientSecret = await this.quickInputService.input({
586
586
  title: sharedTitle,
587
587
  prompt: ( localize(
588
- 2551,
588
+ 2546,
589
589
  "(optional) Enter an existing client secret associated with the client id '{0}' or leave this field blank",
590
590
  clientId
591
591
  )),
592
- placeHolder: ( localize(2552, "OAuth client secret (wer32o50f...) or leave it blank")),
592
+ placeHolder: ( localize(2547, "OAuth client secret (wer32o50f...) or leave it blank")),
593
593
  password: true,
594
594
  ignoreFocusLost: true
595
595
  });
@@ -5,12 +5,12 @@ import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench
5
5
  import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
6
6
  import { ExtHostContext, MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol';
7
7
  import { IBrowserViewCDPService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/browserView/common/browserView.service';
8
- import { BrowserViewUri } from '../../../platform/browserView/common/browserViewUri.js';
8
+ import { BrowserViewUri } from '@codingame/monaco-vscode-api/vscode/vs/platform/browserView/common/browserViewUri';
9
9
  import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
10
10
  import { columnToEditorGroup } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupColumn';
11
11
  import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
12
12
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
13
- import { BrowserEditorInput } from '../../contrib/browserView/common/browserEditorInput.js';
13
+ import { BrowserEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/browserView/common/browserEditorInput';
14
14
 
15
15
  let MainThreadBrowsers = class MainThreadBrowsers extends Disposable {
16
16
  constructor(
@@ -108,7 +108,7 @@ let RemoteExtensionManagementCLI = class RemoteExtensionManagementCLI extends Ex
108
108
  if (
109
109
  !this._extensionManifestPropertiesService.canExecuteOnWorkspace(manifest) && !(isWeb && this._extensionManifestPropertiesService.canExecuteOnWeb(manifest))) {
110
110
  this.logger.info(( localize(
111
- 2553,
111
+ 2548,
112
112
  "Cannot install the '{0}' extension because it is declared to not run in this setup.",
113
113
  getExtensionId(manifest.publisher, manifest.name)
114
114
  )));
@@ -1,4 +1,5 @@
1
1
  import { DeferredPromise } from "@codingame/monaco-vscode-api/vscode/vs/base/common/async";
2
+ import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
3
  import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
3
4
  import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
4
5
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
@@ -7,6 +8,7 @@ import { ILanguageFeaturesService } from "@codingame/monaco-vscode-api/vscode/vs
7
8
  import { ExtensionIdentifier } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions";
8
9
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
9
10
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
11
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
10
12
  import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
11
13
  import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
12
14
  import { IChatAgentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service";
@@ -18,9 +20,10 @@ import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/
18
20
  import { IExtHostContext } from "../../services/extensions/common/extHostCustomers.js";
19
21
  import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
20
22
  import { Dto } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/proxyIdentifier";
21
- import { IChatSessionCustomizationProviderMetadataDto, IChatProgressDto, IDynamicChatAgentProps, IExtensionChatAgentMetadata, MainThreadChatAgentsShape2 } from "@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol";
23
+ import { IChatSessionCustomizationProviderMetadataDto, IChatProgressDto, ICustomAgentDto, IDynamicChatAgentProps, IExtensionChatAgentMetadata, IHookDto, IInstructionDto, IPluginDto, ISkillDto, ISlashCommandDto, MainThreadChatAgentsShape2 } from "@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol";
22
24
  import { ICustomizationHarnessService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service";
23
- import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
25
+ import { IAgentPluginService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service";
26
+ import { IWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service";
24
27
  export declare class MainThreadChatTask implements IChatTask {
25
28
  content: IMarkdownString;
26
29
  readonly kind = "progressTask";
@@ -48,7 +51,9 @@ export declare class MainThreadChatAgents2 extends Disposable implements MainThr
48
51
  private readonly _promptsService;
49
52
  private readonly _languageModelToolsService;
50
53
  private readonly _customizationHarnessService;
51
- private readonly _configurationService;
54
+ private readonly _telemetryService;
55
+ private readonly _agentPluginService;
56
+ private readonly _environmentService;
52
57
  private readonly _agents;
53
58
  private readonly _agentCompletionProviders;
54
59
  private readonly _agentIdsToCompletionProviders;
@@ -62,11 +67,21 @@ export declare class MainThreadChatAgents2 extends Disposable implements MainThr
62
67
  private readonly _proxy;
63
68
  private readonly _activeTasks;
64
69
  private readonly _unresolvedAnchors;
65
- constructor(extHostContext: IExtHostContext, _chatAgentService: IChatAgentService, _chatSessionService: IChatSessionsService, _chatService: IChatService, _languageFeaturesService: ILanguageFeaturesService, _chatWidgetService: IChatWidgetService, _instantiationService: IInstantiationService, _logService: ILogService, _extensionService: IExtensionService, _uriIdentityService: IUriIdentityService, _promptsService: IPromptsService, _languageModelToolsService: ILanguageModelToolsService, _customizationHarnessService: ICustomizationHarnessService, _configurationService: IConfigurationService);
70
+ constructor(extHostContext: IExtHostContext, _chatAgentService: IChatAgentService, _chatSessionService: IChatSessionsService, _chatService: IChatService, _languageFeaturesService: ILanguageFeaturesService, _chatWidgetService: IChatWidgetService, _instantiationService: IInstantiationService, _logService: ILogService, _extensionService: IExtensionService, _uriIdentityService: IUriIdentityService, _promptsService: IPromptsService, _languageModelToolsService: ILanguageModelToolsService, _customizationHarnessService: ICustomizationHarnessService, _telemetryService: ITelemetryService, _agentPluginService: IAgentPluginService, _environmentService: IWorkbenchEnvironmentService);
66
71
  private _acceptActiveChatSession;
67
- private _pushCustomAgents;
68
- private _pushInstructions;
69
- private _pushSkills;
72
+ private _toChatResourceSource;
73
+ private _toCustomAgentDto;
74
+ private _toInstructionDto;
75
+ private _toSkillDto;
76
+ private _toSlashCommandDto;
77
+ private _toHookDto;
78
+ private _toPluginDto;
79
+ $provideCustomAgents(token: CancellationToken): Promise<ICustomAgentDto[]>;
80
+ $provideInstructions(token: CancellationToken): Promise<IInstructionDto[]>;
81
+ $provideSkills(token: CancellationToken): Promise<ISkillDto[]>;
82
+ $provideSlashCommands(token: CancellationToken): Promise<ISlashCommandDto[]>;
83
+ $provideHooks(token: CancellationToken): Promise<IHookDto[]>;
84
+ $providePlugins(_token: CancellationToken): Promise<IPluginDto[]>;
70
85
  $unregisterAgent(handle: number): void;
71
86
  $transferActiveChatSession(toWorkspace: UriComponents): Promise<void>;
72
87
  $registerAgent(handle: number, extension: ExtensionIdentifier, id: string, metadata: IExtensionChatAgentMetadata, dynamicProps: IDynamicChatAgentProps | undefined): Promise<void>;