@codingame/monaco-vscode-extensions-service-override 3.2.3 → 4.0.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 (29) hide show
  1. package/extensions.js +1 -82
  2. package/override/vs/platform/dialogs/common/dialogs.js +2 -0
  3. package/package.json +9 -9
  4. package/vscode/src/vs/base/common/console.js +3 -0
  5. package/vscode/src/vs/workbench/api/browser/extensionHost.contribution.js +104 -0
  6. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +75 -48
  7. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +0 -13
  8. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +35 -31
  9. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +2 -1
  10. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +23 -8
  11. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +2 -1
  12. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +33 -22
  13. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +21 -2
  14. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +7 -7
  15. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +5 -10
  16. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +2 -2
  17. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +47 -22
  18. package/vscode/src/vs/workbench/api/browser/{mainThreadChatProvider.js → mainThreadLanguageModels.js} +25 -41
  19. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +2 -2
  20. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +1 -1
  21. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +27 -5
  22. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +2 -2
  23. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +1 -0
  24. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +51 -0
  25. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +39 -15
  26. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +3 -0
  27. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +1 -0
  28. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +13 -2
  29. /package/vscode/src/vs/workbench/api/browser/{mainThreadProfilContentHandlers.js → mainThreadProfileContentHandlers.js} +0 -0
package/extensions.js CHANGED
@@ -37,88 +37,7 @@ import { changeUrlDomain } from './tools/url.js';
37
37
  import { CustomSchemas } from '@codingame/monaco-vscode-files-service-override';
38
38
  import { registerAssets } from 'vscode/assets';
39
39
  import { getForcedExtensionHostKind } from 'vscode/extensions';
40
- import 'vscode/vscode/vs/workbench/api/common/jsonValidationExtensionPoint';
41
- import 'vscode/vscode/vs/workbench/services/themes/common/colorExtensionPoint';
42
- import 'vscode/vscode/vs/workbench/services/themes/common/iconExtensionPoint';
43
- import 'vscode/vscode/vs/workbench/services/themes/common/tokenClassificationExtensionPoint';
44
- import 'vscode/vscode/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint';
45
- import 'vscode/vscode/vs/workbench/api/browser/statusBarExtensionPoint';
46
- import './vscode/src/vs/workbench/api/browser/mainThreadLocalization.js';
47
- import './vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js';
48
- import './vscode/src/vs/workbench/api/browser/mainThreadChatProvider.js';
49
- import './vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js';
50
- import './vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js';
51
- import './vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js';
52
- import './vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js';
53
- import './vscode/src/vs/workbench/api/browser/mainThreadClipboard.js';
54
- import './vscode/src/vs/workbench/api/browser/mainThreadCommands.js';
55
- import './vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js';
56
- import './vscode/src/vs/workbench/api/browser/mainThreadConsole.js';
57
- import './vscode/src/vs/workbench/api/browser/mainThreadDebugService.js';
58
- import './vscode/src/vs/workbench/api/browser/mainThreadDecorations.js';
59
- import './vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js';
60
- import './vscode/src/vs/workbench/api/browser/mainThreadDialogs.js';
61
- import './vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js';
62
- import './vscode/src/vs/workbench/api/browser/mainThreadDocuments.js';
63
- import './vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js';
64
- import 'vscode/vscode/vs/editor/common/config/editorOptions';
65
- import 'vscode/vscode/vs/editor/contrib/snippet/browser/snippetController2';
66
- import 'vscode/vscode/vs/editor/contrib/editorState/browser/keybindingCancellation';
67
- import 'vscode/vscode/vs/editor/contrib/snippet/browser/snippetParser';
68
- import './vscode/src/vs/workbench/api/browser/mainThreadEditors.js';
69
- import './vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js';
70
- import './vscode/src/vs/workbench/api/browser/mainThreadErrors.js';
71
- import './vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js';
72
- import './vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js';
73
- import './vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js';
74
- import './vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js';
75
- import './vscode/src/vs/workbench/api/browser/mainThreadLanguages.js';
76
- import './vscode/src/vs/workbench/api/browser/mainThreadLogService.js';
77
- import './vscode/src/vs/workbench/api/browser/mainThreadMessageService.js';
78
- import './vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js';
79
- import './vscode/src/vs/workbench/api/browser/mainThreadOutputService.js';
80
- import './vscode/src/vs/workbench/api/browser/mainThreadProgress.js';
81
- import './vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js';
82
- import './vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js';
83
- import './vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js';
84
- import './vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js';
85
- import './vscode/src/vs/workbench/api/browser/mainThreadSpeech.js';
86
- import './vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js';
87
- import './vscode/src/vs/workbench/api/browser/mainThreadSCM.js';
88
- import './vscode/src/vs/workbench/api/browser/mainThreadSearch.js';
89
- import './vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js';
90
- import './vscode/src/vs/workbench/api/browser/mainThreadStorage.js';
91
- import './vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js';
92
- import './vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js';
93
- import './vscode/src/vs/workbench/api/browser/mainThreadTheming.js';
94
- import './vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js';
95
- import './vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js';
96
- import './vscode/src/vs/workbench/api/browser/mainThreadUrls.js';
97
- import './vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js';
98
- import './vscode/src/vs/workbench/api/browser/mainThreadWindow.js';
99
- import './vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js';
100
- import './vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js';
101
- import './vscode/src/vs/workbench/api/browser/mainThreadComments.js';
102
- import './vscode/src/vs/workbench/api/browser/mainThreadNotebook.js';
103
- import './vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js';
104
- import './vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js';
105
- import './vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js';
106
- import './vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js';
107
- import './vscode/src/vs/workbench/api/browser/mainThreadInteractive.js';
108
- import './vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js';
109
- import './vscode/src/vs/workbench/api/browser/mainThreadChat.js';
110
- import './vscode/src/vs/workbench/api/browser/mainThreadTask.js';
111
- import './vscode/src/vs/workbench/api/browser/mainThreadLabelService.js';
112
- import './vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js';
113
- import './vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js';
114
- import './vscode/src/vs/workbench/api/browser/mainThreadTimeline.js';
115
- import './vscode/src/vs/workbench/api/browser/mainThreadTesting.js';
116
- import './vscode/src/vs/workbench/api/browser/mainThreadSecretState.js';
117
- import './vscode/src/vs/workbench/api/browser/mainThreadShare.js';
118
- import './vscode/src/vs/workbench/api/browser/mainThreadProfilContentHandlers.js';
119
- import './vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js';
120
- import './vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js';
121
- import './vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js';
40
+ import './vscode/src/vs/workbench/api/browser/extensionHost.contribution.js';
122
41
  import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
123
42
 
124
43
  let EsmWebWorkerExtensionHost = class EsmWebWorkerExtensionHost extends WebWorkerExtensionHost {
@@ -1,3 +1,5 @@
1
+ export { AbstractDialogHandler, IDialogService, IFileDialogService, getFileNamesMessage } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
2
+
1
3
  var ConfirmResult;
2
4
  ( (function(ConfirmResult) {
3
5
  ConfirmResult[ConfirmResult["SAVE"] = 0] = "SAVE";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-extensions-service-override",
3
- "version": "3.2.3",
3
+ "version": "4.0.0",
4
4
  "keywords": [],
5
5
  "author": {
6
6
  "name": "CodinGame",
@@ -18,13 +18,13 @@
18
18
  "module": "index.js",
19
19
  "types": "index.d.ts",
20
20
  "dependencies": {
21
- "vscode": "npm:@codingame/monaco-vscode-api@3.2.3",
22
- "@codingame/monaco-vscode-files-service-override": "3.2.3",
23
- "@codingame/monaco-vscode-quickaccess-service-override": "3.2.3",
24
- "@codingame/monaco-vscode-extensions-service-override": "3.2.3",
25
- "@codingame/monaco-vscode-environment-service-override": "3.2.3",
26
- "@codingame/monaco-vscode-layout-service-override": "3.2.3",
27
- "@codingame/monaco-vscode-host-service-override": "3.2.3",
28
- "@codingame/monaco-vscode-base-service-override": "3.2.3"
21
+ "vscode": "npm:@codingame/monaco-vscode-api@4.0.0",
22
+ "@codingame/monaco-vscode-files-service-override": "4.0.0",
23
+ "@codingame/monaco-vscode-quickaccess-service-override": "4.0.0",
24
+ "@codingame/monaco-vscode-extensions-service-override": "4.0.0",
25
+ "@codingame/monaco-vscode-environment-service-override": "4.0.0",
26
+ "@codingame/monaco-vscode-layout-service-override": "4.0.0",
27
+ "@codingame/monaco-vscode-host-service-override": "4.0.0",
28
+ "@codingame/monaco-vscode-base-service-override": "4.0.0"
29
29
  }
30
30
  }
@@ -1,3 +1,6 @@
1
+ import 'vscode/vscode/vs/base/common/path';
2
+ import 'vscode/vscode/vs/base/common/platform';
3
+
1
4
  function parse(entry) {
2
5
  const args = [];
3
6
  let stack;
@@ -0,0 +1,104 @@
1
+ import 'vscode/vscode/vs/workbench/common/contributions';
2
+ import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
3
+ import { JSONValidationExtensionPoint } from 'vscode/vscode/vs/workbench/api/common/jsonValidationExtensionPoint';
4
+ import { ColorExtensionPoint } from 'vscode/vscode/vs/workbench/services/themes/common/colorExtensionPoint';
5
+ import { IconExtensionPoint } from 'vscode/vscode/vs/workbench/services/themes/common/iconExtensionPoint';
6
+ import { TokenClassificationExtensionPoints } from 'vscode/vscode/vs/workbench/services/themes/common/tokenClassificationExtensionPoint';
7
+ import { LanguageConfigurationFileHandler } from 'vscode/vscode/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint';
8
+ import { StatusBarItemsExtensionPoint } from 'vscode/vscode/vs/workbench/api/browser/statusBarExtensionPoint';
9
+ import './mainThreadLocalization.js';
10
+ import './mainThreadBulkEdits.js';
11
+ import './mainThreadLanguageModels.js';
12
+ import './mainThreadChatAgents2.js';
13
+ import './mainThreadChatVariables.js';
14
+ import './mainThreadCodeInsets.js';
15
+ import './mainThreadCLICommands.js';
16
+ import './mainThreadClipboard.js';
17
+ import './mainThreadCommands.js';
18
+ import './mainThreadConfiguration.js';
19
+ import './mainThreadConsole.js';
20
+ import './mainThreadDebugService.js';
21
+ import './mainThreadDecorations.js';
22
+ import './mainThreadDiagnostics.js';
23
+ import './mainThreadDialogs.js';
24
+ import './mainThreadDocumentContentProviders.js';
25
+ import './mainThreadDocuments.js';
26
+ import './mainThreadDocumentsAndEditors.js';
27
+ import 'vscode/vscode/vs/base/common/event';
28
+ import 'vscode/vscode/vs/base/common/lifecycle';
29
+ import 'vscode/vscode/vs/editor/common/config/editorOptions';
30
+ import 'vscode/vscode/vs/editor/contrib/snippet/browser/snippetController2';
31
+ import 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
32
+ import 'vscode/vscode/vs/base/common/arrays';
33
+ import 'vscode/vscode/vs/base/common/strings';
34
+ import 'vscode/vscode/vs/base/common/cancellation';
35
+ import 'vscode/vscode/vs/editor/contrib/editorState/browser/keybindingCancellation';
36
+ import 'vscode/vscode/vs/editor/contrib/snippet/browser/snippetParser';
37
+ import './mainThreadEditors.js';
38
+ import './mainThreadEditorTabs.js';
39
+ import './mainThreadErrors.js';
40
+ import './mainThreadExtensionService.js';
41
+ import './mainThreadFileSystem.js';
42
+ import './mainThreadFileSystemEventService.js';
43
+ import './mainThreadLanguageFeatures.js';
44
+ import './mainThreadLanguages.js';
45
+ import './mainThreadLogService.js';
46
+ import './mainThreadMessageService.js';
47
+ import './mainThreadManagedSockets.js';
48
+ import './mainThreadOutputService.js';
49
+ import './mainThreadProgress.js';
50
+ import './mainThreadQuickDiff.js';
51
+ import './mainThreadQuickOpen.js';
52
+ import './mainThreadRemoteConnectionData.js';
53
+ import './mainThreadSaveParticipant.js';
54
+ import './mainThreadSpeech.js';
55
+ import './mainThreadEditSessionIdentityParticipant.js';
56
+ import './mainThreadSCM.js';
57
+ import './mainThreadSearch.js';
58
+ import './mainThreadStatusBar.js';
59
+ import './mainThreadStorage.js';
60
+ import './mainThreadTelemetry.js';
61
+ import './mainThreadTerminalService.js';
62
+ import './mainThreadTerminalShellIntegration.js';
63
+ import './mainThreadTheming.js';
64
+ import './mainThreadTreeViews.js';
65
+ import './mainThreadDownloadService.js';
66
+ import './mainThreadUrls.js';
67
+ import './mainThreadUriOpeners.js';
68
+ import './mainThreadWindow.js';
69
+ import './mainThreadWebviewManager.js';
70
+ import './mainThreadWorkspace.js';
71
+ import './mainThreadComments.js';
72
+ import './mainThreadNotebook.js';
73
+ import './mainThreadNotebookKernels.js';
74
+ import './mainThreadNotebookDocumentsAndEditors.js';
75
+ import './mainThreadNotebookRenderers.js';
76
+ import './mainThreadNotebookSaveParticipant.js';
77
+ import './mainThreadInteractive.js';
78
+ import './mainThreadInlineChat.js';
79
+ import './mainThreadChat.js';
80
+ import './mainThreadTask.js';
81
+ import './mainThreadLabelService.js';
82
+ import './mainThreadTunnelService.js';
83
+ import './mainThreadAuthentication.js';
84
+ import './mainThreadTimeline.js';
85
+ import './mainThreadTesting.js';
86
+ import './mainThreadSecretState.js';
87
+ import './mainThreadShare.js';
88
+ import './mainThreadProfileContentHandlers.js';
89
+ import './mainThreadAiRelatedInformation.js';
90
+ import './mainThreadAiEmbeddingVector.js';
91
+ import './mainThreadIssueReporter.js';
92
+
93
+ (class ExtensionPoints {
94
+ static { this.ID = 'workbench.contrib.extensionPoints'; }
95
+ constructor(instantiationService) {
96
+ this.instantiationService = instantiationService;
97
+ this.instantiationService.createInstance(JSONValidationExtensionPoint);
98
+ this.instantiationService.createInstance(ColorExtensionPoint);
99
+ this.instantiationService.createInstance(IconExtensionPoint);
100
+ this.instantiationService.createInstance(TokenClassificationExtensionPoints);
101
+ this.instantiationService.createInstance(LanguageConfigurationFileHandler);
102
+ this.instantiationService.createInstance(StatusBarItemsExtensionPoint);
103
+ }
104
+ });
@@ -2,16 +2,19 @@ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.
2
2
  import { Disposable, DisposableMap } from 'vscode/vscode/vs/base/common/lifecycle';
3
3
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
4
4
  import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
5
- import { getAuthenticationProviderActivationEvent, addAccountUsage } from 'vscode/vscode/vs/workbench/services/authentication/browser/authenticationService';
6
- import { IAuthenticationService } from 'vscode/vscode/vs/workbench/services/authentication/common/authentication';
5
+ import { IAuthenticationService, IAuthenticationExtensionsService } from 'vscode/vscode/vs/workbench/services/authentication/common/authentication';
7
6
  import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
8
7
  import '../../../../../../override/vs/platform/dialogs/common/dialogs.js';
9
- import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
10
- import Severity from 'vscode/vscode/vs/base/common/severity';
8
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
11
9
  import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
12
10
  import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
13
11
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
14
12
  import { Emitter } from 'vscode/vscode/vs/base/common/event';
13
+ import { IAuthenticationAccessService } from 'vscode/vscode/vs/workbench/services/authentication/browser/authenticationAccessService';
14
+ import { IAuthenticationUsageService } from 'vscode/vscode/vs/workbench/services/authentication/browser/authenticationUsageService';
15
+ import { getAuthenticationProviderActivationEvent } from 'vscode/vscode/vs/workbench/services/authentication/browser/authenticationService';
16
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
17
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
15
18
  import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
16
19
 
17
20
  class MainThreadAuthenticationProvider extends Disposable {
@@ -40,14 +43,17 @@ class MainThreadAuthenticationProvider extends Disposable {
40
43
  }
41
44
  }
42
45
  let MainThreadAuthentication = class MainThreadAuthentication extends Disposable {
43
- constructor(extHostContext, authenticationService, dialogService, storageService, notificationService, extensionService, telemetryService) {
46
+ constructor(extHostContext, authenticationService, authenticationExtensionsService, authenticationAccessService, authenticationUsageService, dialogService, notificationService, extensionService, telemetryService, openerService) {
44
47
  super();
45
48
  this.authenticationService = authenticationService;
49
+ this.authenticationExtensionsService = authenticationExtensionsService;
50
+ this.authenticationAccessService = authenticationAccessService;
51
+ this.authenticationUsageService = authenticationUsageService;
46
52
  this.dialogService = dialogService;
47
- this.storageService = storageService;
48
53
  this.notificationService = notificationService;
49
54
  this.extensionService = extensionService;
50
55
  this.telemetryService = telemetryService;
56
+ this.openerService = openerService;
51
57
  this._registrations = this._register(( new DisposableMap()));
52
58
  this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostAuthentication));
53
59
  this._register(this.authenticationService.onDidChangeSessions(e => {
@@ -85,7 +91,7 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
85
91
  $removeSession(providerId, sessionId) {
86
92
  return this.authenticationService.removeSession(providerId, sessionId);
87
93
  }
88
- async loginPrompt(providerName, extensionName, recreatingSession, detail) {
94
+ async loginPrompt(providerName, extensionName, recreatingSession, options) {
89
95
  const message = recreatingSession
90
96
  ? ( localizeWithPath(
91
97
  'vs/workbench/api/browser/mainThreadAuthentication',
@@ -101,21 +107,44 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
101
107
  extensionName,
102
108
  providerName
103
109
  ));
104
- const { confirmed } = await this.dialogService.confirm({
105
- type: Severity.Info,
110
+ const buttons = [
111
+ {
112
+ label: ( localizeWithPath(
113
+ 'vs/workbench/api/browser/mainThreadAuthentication',
114
+ { key: 'allow', comment: ['&& denotes a mnemonic'] },
115
+ "&&Allow"
116
+ )),
117
+ run() {
118
+ return true;
119
+ },
120
+ }
121
+ ];
122
+ if (options?.learnMore) {
123
+ buttons.push({
124
+ label: ( localizeWithPath(
125
+ 'vs/workbench/api/browser/mainThreadAuthentication',
126
+ 'learnMore',
127
+ "Learn more"
128
+ )),
129
+ run: async () => {
130
+ const result = this.loginPrompt(providerName, extensionName, recreatingSession, options);
131
+ await this.openerService.open(URI.revive(options.learnMore), { allowCommands: true });
132
+ return await result;
133
+ }
134
+ });
135
+ }
136
+ const { result } = await this.dialogService.prompt({
137
+ type: Severity$1.Info,
106
138
  message,
107
- detail,
108
- primaryButton: ( localizeWithPath(
109
- 'vs/workbench/api/browser/mainThreadAuthentication',
110
- { key: 'allow', comment: ['&& denotes a mnemonic'] },
111
- "&&Allow"
112
- ))
139
+ buttons,
140
+ detail: options?.detail,
141
+ cancelButton: true,
113
142
  });
114
- return confirmed;
143
+ return result ?? false;
115
144
  }
116
145
  async doGetSession(providerId, scopes, extensionId, extensionName, options) {
117
146
  const sessions = await this.authenticationService.getSessions(providerId, scopes, true);
118
- const supportsMultipleAccounts = this.authenticationService.supportsMultipleAccounts(providerId);
147
+ const provider = this.authenticationService.getProvider(providerId);
119
148
  if (options.forceNewSession && options.createIfNone) {
120
149
  throw new Error('Invalid combination of options. Please remove one of the following: forceNewSession, createIfNone');
121
150
  }
@@ -126,36 +155,38 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
126
155
  throw new Error('Invalid combination of options. Please remove one of the following: createIfNone, silent');
127
156
  }
128
157
  if (!options.forceNewSession && sessions.length) {
129
- if (supportsMultipleAccounts) {
158
+ if (provider.supportsMultipleAccounts) {
130
159
  if (options.clearSessionPreference) {
131
- this.authenticationService.removeSessionPreference(providerId, extensionId, scopes);
160
+ this.authenticationExtensionsService.removeSessionPreference(providerId, extensionId, scopes);
132
161
  }
133
162
  else {
134
- const existingSessionPreference = this.authenticationService.getSessionPreference(providerId, extensionId, scopes);
163
+ const existingSessionPreference = this.authenticationExtensionsService.getSessionPreference(providerId, extensionId, scopes);
135
164
  if (existingSessionPreference) {
136
165
  const matchingSession = sessions.find(session => session.id === existingSessionPreference);
137
- if (matchingSession && this.authenticationService.isAccessAllowed(providerId, matchingSession.account.label, extensionId)) {
166
+ if (matchingSession && this.authenticationAccessService.isAccessAllowed(providerId, matchingSession.account.label, extensionId)) {
138
167
  return matchingSession;
139
168
  }
140
169
  }
141
170
  }
142
171
  }
143
- else if (this.authenticationService.isAccessAllowed(providerId, sessions[0].account.label, extensionId)) {
172
+ else if (this.authenticationAccessService.isAccessAllowed(providerId, sessions[0].account.label, extensionId)) {
144
173
  return sessions[0];
145
174
  }
146
175
  }
147
176
  if (options.createIfNone || options.forceNewSession) {
148
- const providerName = this.authenticationService.getLabel(providerId);
149
- const detail = (typeof options.forceNewSession === 'object') ? options.forceNewSession.detail : undefined;
177
+ let uiOptions;
178
+ if (typeof options.forceNewSession === 'object') {
179
+ uiOptions = options.forceNewSession;
180
+ }
150
181
  const recreatingSession = !!(options.forceNewSession && sessions.length);
151
- const isAllowed = await this.loginPrompt(providerName, extensionName, recreatingSession, detail);
182
+ const isAllowed = await this.loginPrompt(provider.label, extensionName, recreatingSession, uiOptions);
152
183
  if (!isAllowed) {
153
184
  throw new Error('User did not consent to login.');
154
185
  }
155
186
  let session;
156
187
  if (sessions?.length && !options.forceNewSession) {
157
- session = supportsMultipleAccounts
158
- ? await this.authenticationService.selectSession(providerId, extensionId, extensionName, scopes, sessions)
188
+ session = provider.supportsMultipleAccounts
189
+ ? await this.authenticationExtensionsService.selectSession(providerId, extensionId, extensionName, scopes, sessions)
159
190
  : sessions[0];
160
191
  }
161
192
  else {
@@ -164,30 +195,23 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
164
195
  sessionToRecreate = options.forceNewSession.sessionToRecreate;
165
196
  }
166
197
  else {
167
- const sessionIdToRecreate = this.authenticationService.getSessionPreference(providerId, extensionId, scopes);
198
+ const sessionIdToRecreate = this.authenticationExtensionsService.getSessionPreference(providerId, extensionId, scopes);
168
199
  sessionToRecreate = sessionIdToRecreate ? sessions.find(session => session.id === sessionIdToRecreate) : undefined;
169
200
  }
170
201
  session = await this.authenticationService.createSession(providerId, scopes, { activateImmediate: true, sessionToRecreate });
171
202
  }
172
- this.authenticationService.updateAllowedExtension(providerId, session.account.label, extensionId, extensionName, true);
173
- this.authenticationService.updateSessionPreference(providerId, extensionId, session);
203
+ this.authenticationAccessService.updateAllowedExtensions(providerId, session.account.label, [{ id: extensionId, name: extensionName, allowed: true }]);
204
+ this.authenticationExtensionsService.updateSessionPreference(providerId, extensionId, session);
174
205
  return session;
175
206
  }
176
- const validSession = sessions.find(session => this.authenticationService.isAccessAllowed(providerId, session.account.label, extensionId));
207
+ const validSession = sessions.find(session => this.authenticationAccessService.isAccessAllowed(providerId, session.account.label, extensionId));
177
208
  if (validSession) {
178
- if (!this.authenticationService.getSessionPreference(providerId, extensionId, scopes)) {
179
- if (this.storageService.get(`${extensionName}-${providerId}`, -1 )) {
180
- this.storageService.remove(`${extensionName}-${providerId}`, -1 );
181
- }
182
- this.authenticationService.updateAllowedExtension(providerId, validSession.account.label, extensionId, extensionName, true);
183
- this.authenticationService.updateSessionPreference(providerId, extensionId, validSession);
184
- }
185
209
  return validSession;
186
210
  }
187
211
  if (!options.silent) {
188
212
  sessions.length
189
- ? this.authenticationService.requestSessionAccess(providerId, extensionId, extensionName, scopes, sessions)
190
- : await this.authenticationService.requestNewSession(providerId, scopes, extensionId, extensionName);
213
+ ? this.authenticationExtensionsService.requestSessionAccess(providerId, extensionId, extensionName, scopes, sessions)
214
+ : await this.authenticationExtensionsService.requestNewSession(providerId, scopes, extensionId, extensionName);
191
215
  }
192
216
  return undefined;
193
217
  }
@@ -195,17 +219,17 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
195
219
  const session = await this.doGetSession(providerId, scopes, extensionId, extensionName, options);
196
220
  if (session) {
197
221
  this.sendProviderUsageTelemetry(extensionId, providerId);
198
- addAccountUsage(this.storageService, providerId, session.account.label, extensionId, extensionName);
222
+ this.authenticationUsageService.addAccountUsage(providerId, session.account.label, extensionId, extensionName);
199
223
  }
200
224
  return session;
201
225
  }
202
226
  async $getSessions(providerId, scopes, extensionId, extensionName) {
203
227
  const sessions = await this.authenticationService.getSessions(providerId, [...scopes], true);
204
- const accessibleSessions = sessions.filter(s => this.authenticationService.isAccessAllowed(providerId, s.account.label, extensionId));
228
+ const accessibleSessions = sessions.filter(s => this.authenticationAccessService.isAccessAllowed(providerId, s.account.label, extensionId));
205
229
  if (accessibleSessions.length) {
206
230
  this.sendProviderUsageTelemetry(extensionId, providerId);
207
231
  for (const session of accessibleSessions) {
208
- addAccountUsage(this.storageService, providerId, session.account.label, extensionId, extensionName);
232
+ this.authenticationUsageService.addAccountUsage(providerId, session.account.label, extensionId, extensionName);
209
233
  }
210
234
  }
211
235
  return accessibleSessions;
@@ -217,11 +241,14 @@ let MainThreadAuthentication = class MainThreadAuthentication extends Disposable
217
241
  MainThreadAuthentication = __decorate([
218
242
  extHostNamedCustomer(MainContext.MainThreadAuthentication),
219
243
  ( __param(1, IAuthenticationService)),
220
- ( __param(2, IDialogService)),
221
- ( __param(3, IStorageService)),
222
- ( __param(4, INotificationService)),
223
- ( __param(5, IExtensionService)),
224
- ( __param(6, ITelemetryService))
244
+ ( __param(2, IAuthenticationExtensionsService)),
245
+ ( __param(3, IAuthenticationAccessService)),
246
+ ( __param(4, IAuthenticationUsageService)),
247
+ ( __param(5, IDialogService)),
248
+ ( __param(6, INotificationService)),
249
+ ( __param(7, IExtensionService)),
250
+ ( __param(8, ITelemetryService)),
251
+ ( __param(9, IOpenerService))
225
252
  ], MainThreadAuthentication);
226
253
 
227
254
  export { MainThreadAuthentication, MainThreadAuthenticationProvider };
@@ -39,17 +39,10 @@ let MainThreadChat = class MainThreadChat extends Disposable {
39
39
  if (!session) {
40
40
  return undefined;
41
41
  }
42
- const responderAvatarIconUri = session.responderAvatarIconUri &&
43
- URI.revive(session.responderAvatarIconUri);
44
42
  const emitter = ( new Emitter());
45
43
  this._stateEmitters.set(session.id, emitter);
46
44
  return {
47
45
  id: session.id,
48
- requesterUsername: session.requesterUsername,
49
- requesterAvatarIconUri: URI.revive(session.requesterAvatarIconUri),
50
- responderUsername: session.responderUsername,
51
- responderAvatarIconUri,
52
- inputPlaceholder: session.inputPlaceholder,
53
46
  dispose: () => {
54
47
  emitter.dispose();
55
48
  this._stateEmitters.delete(session.id);
@@ -63,12 +56,6 @@ let MainThreadChat = class MainThreadChat extends Disposable {
63
56
  async $acceptChatState(sessionId, state) {
64
57
  this._stateEmitters.get(sessionId)?.fire(state);
65
58
  }
66
- async $sendRequestToProvider(providerId, message) {
67
- const widget = await this._chatWidgetService.revealViewForProvider(providerId);
68
- if (widget && widget.viewModel) {
69
- this._chatService.sendRequestToProvider(widget.viewModel.sessionId, message);
70
- }
71
- }
72
59
  async $unregisterChatProvider(handle) {
73
60
  this._providerRegistrations.deleteAndDispose(handle);
74
61
  }
@@ -10,7 +10,7 @@ import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/comm
10
10
  import { IChatWidgetService } from 'vscode/vscode/vs/workbench/contrib/chat/browser/chat';
11
11
  import { ChatInputPart } from 'vscode/vscode/vs/workbench/contrib/chat/browser/chatInputPart';
12
12
  import { AddDynamicVariableAction } from 'vscode/vscode/vs/workbench/contrib/chat/browser/contrib/chatDynamicVariables';
13
- import { IChatAgentService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatAgents';
13
+ import { IChatAgentService, ChatAgentLocation } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatAgents';
14
14
  import { ChatRequestAgentPart } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
15
15
  import { ChatRequestParser } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
16
16
  import { IChatService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatService';
@@ -34,7 +34,7 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
34
34
  this._register(this._chatService.onDidPerformUserAction(e => {
35
35
  if (typeof e.agentId === 'string') {
36
36
  for (const [handle, agent] of this._agents) {
37
- if (agent.name === e.agentId) {
37
+ if (agent.id === e.agentId) {
38
38
  if (e.action.kind === 'vote') {
39
39
  this._proxy.$acceptFeedback(handle, e.result ?? {}, e.action.direction);
40
40
  }
@@ -50,12 +50,15 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
50
50
  $unregisterAgent(handle) {
51
51
  this._agents.deleteAndDispose(handle);
52
52
  }
53
- $registerAgent(handle, extension, name, metadata) {
54
- const lastSlashCommands = ( new WeakMap());
55
- const d = this._chatAgentService.registerAgent({
56
- id: name,
57
- extensionId: extension,
58
- metadata: revive(metadata),
53
+ $registerAgent(handle, extension, id, metadata, dynamicProps) {
54
+ const staticAgentRegistration = this._chatAgentService.getAgent(id);
55
+ if (!staticAgentRegistration && !dynamicProps) {
56
+ if (this._chatAgentService.getAgentsByName(id).length) {
57
+ throw new Error(`chatParticipant must be declared with an ID in package.json. The "id" property may be missing! "${id}"`);
58
+ }
59
+ throw new Error(`chatParticipant must be declared in package.json: ${id}`);
60
+ }
61
+ const impl = {
59
62
  invoke: async (request, progress, history, token) => {
60
63
  this._pendingProgress.set(request.requestId, progress);
61
64
  try {
@@ -65,24 +68,11 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
65
68
  this._pendingProgress.delete(request.requestId);
66
69
  }
67
70
  },
68
- provideFollowups: async (request, result, token) => {
71
+ provideFollowups: async (request, result, history, token) => {
69
72
  if (!this._agents.get(handle)?.hasFollowups) {
70
73
  return [];
71
74
  }
72
- return this._proxy.$provideFollowups(request, handle, result, token);
73
- },
74
- getLastSlashCommands: (model) => {
75
- return lastSlashCommands.get(model);
76
- },
77
- provideSlashCommands: async (model, history, token) => {
78
- if (!this._agents.get(handle)?.hasSlashCommands) {
79
- return [];
80
- }
81
- const commands = await this._proxy.$provideSlashCommands(handle, { history }, token);
82
- if (model) {
83
- lastSlashCommands.set(model, commands);
84
- }
85
- return commands;
75
+ return this._proxy.$provideFollowups(request, handle, result, { history }, token);
86
76
  },
87
77
  provideWelcomeMessage: (token) => {
88
78
  return this._proxy.$provideWelcomeMessage(handle, token);
@@ -90,11 +80,26 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
90
80
  provideSampleQuestions: (token) => {
91
81
  return this._proxy.$provideSampleQuestions(handle, token);
92
82
  }
93
- });
83
+ };
84
+ let disposable;
85
+ if (!staticAgentRegistration && dynamicProps) {
86
+ disposable = this._chatAgentService.registerDynamicAgent({
87
+ id,
88
+ name: dynamicProps.name,
89
+ description: dynamicProps.description,
90
+ extensionId: extension,
91
+ metadata: revive(metadata),
92
+ slashCommands: [],
93
+ locations: [ChatAgentLocation.Panel]
94
+ }, impl);
95
+ }
96
+ else {
97
+ disposable = this._chatAgentService.registerAgentImplementation(id, impl);
98
+ }
94
99
  this._agents.set(handle, {
95
- name,
96
- dispose: d.dispose,
97
- hasSlashCommands: metadata.hasSlashCommands,
100
+ id: id,
101
+ extensionId: extension,
102
+ dispose: disposable.dispose,
98
103
  hasFollowups: metadata.hasFollowups
99
104
  });
100
105
  }
@@ -103,9 +108,8 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
103
108
  if (!data) {
104
109
  throw new Error(`No agent with handle ${handle} registered`);
105
110
  }
106
- data.hasSlashCommands = metadataUpdate.hasSlashCommands;
107
111
  data.hasFollowups = metadataUpdate.hasFollowups;
108
- this._chatAgentService.updateAgent(data.name, revive(metadataUpdate));
112
+ this._chatAgentService.updateAgent(data.id, revive(metadataUpdate));
109
113
  }
110
114
  async $handleProgressChunk(requestId, progress) {
111
115
  const revivedProgress = revive(progress);
@@ -128,8 +132,8 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
128
132
  }
129
133
  const parsedRequest = this._instantiationService.createInstance(ChatRequestParser).parseChatRequest(widget.viewModel.sessionId, model.getValue()).parts;
130
134
  const agentPart = parsedRequest.find((part) => part instanceof ChatRequestAgentPart);
131
- const thisAgentName = this._agents.get(handle)?.name;
132
- if (agentPart?.agent.id !== thisAgentName) {
135
+ const thisAgentId = this._agents.get(handle)?.id;
136
+ if (agentPart?.agent.id !== thisAgentId) {
133
137
  return;
134
138
  }
135
139
  const range = computeCompletionRanges(model, position, wordRegex);