@codingame/monaco-vscode-extensions-service-override 25.1.1 → 26.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 (120) hide show
  1. package/index.js +7 -0
  2. package/package.json +3 -3
  3. package/vscode/src/vs/base/common/console.js +24 -15
  4. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.d.ts +4 -1
  5. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +149 -84
  6. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +20 -12
  7. package/vscode/src/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +38 -21
  8. package/vscode/src/vs/platform/remote/common/managedSocket.js +7 -10
  9. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +5 -2
  10. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +5 -2
  11. package/vscode/src/vs/workbench/api/browser/mainThreadAiSettingsSearch.js +4 -1
  12. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +200 -143
  13. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +10 -14
  14. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +41 -31
  15. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +9 -12
  16. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +168 -115
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +11 -13
  18. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +5 -5
  19. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +42 -15
  20. package/vscode/src/vs/workbench/api/browser/mainThreadChatOutputRenderer.js +8 -7
  21. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +4 -2
  22. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +170 -99
  23. package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js +2 -5
  24. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +4 -9
  25. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +13 -12
  26. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +16 -19
  27. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +127 -70
  28. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -26
  29. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +5 -11
  30. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +199 -97
  31. package/vscode/src/vs/workbench/api/browser/mainThreadDataChannels.js +1 -4
  32. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +88 -73
  33. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +5 -5
  34. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +16 -12
  35. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +10 -8
  36. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +14 -6
  37. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +52 -37
  38. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +78 -58
  39. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +5 -7
  40. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +75 -63
  41. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +99 -91
  42. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +93 -55
  43. package/vscode/src/vs/workbench/api/browser/mainThreadEmbeddings.js +3 -7
  44. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +85 -60
  45. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +49 -45
  46. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +114 -72
  47. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +4 -7
  48. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +1 -4
  49. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.d.ts +2 -2
  50. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +381 -238
  51. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +7 -3
  52. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +90 -13
  53. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +81 -58
  54. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +9 -10
  55. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +2 -7
  56. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +6 -10
  57. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +12 -10
  58. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.d.ts +3 -2
  59. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +162 -97
  60. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +32 -26
  61. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +38 -32
  62. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +48 -46
  63. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +22 -18
  64. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +5 -8
  65. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +35 -21
  66. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +31 -28
  67. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +5 -7
  68. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +47 -23
  69. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +15 -12
  70. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +17 -18
  71. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +6 -7
  72. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +83 -66
  73. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +1 -5
  74. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +250 -92
  75. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +6 -8
  76. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +37 -26
  77. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +34 -21
  78. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +3 -6
  79. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +19 -14
  80. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +41 -16
  81. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +18 -17
  82. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +145 -145
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +19 -11
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +176 -80
  85. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +52 -21
  86. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +26 -24
  87. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +1 -4
  88. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +5 -8
  89. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.d.ts +4 -1
  90. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +106 -46
  91. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +83 -65
  92. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +20 -20
  93. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +14 -9
  94. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +17 -9
  95. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +49 -38
  96. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +10 -13
  97. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +38 -27
  98. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +5 -11
  99. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.d.ts +4 -1
  100. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +73 -43
  101. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +2 -2
  102. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +17 -10
  103. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +17 -11
  104. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +107 -80
  105. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +336 -175
  106. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +126 -71
  107. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +76 -54
  108. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +1 -2
  109. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -0
  110. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +343 -192
  111. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +5 -3
  112. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.d.ts +0 -1
  113. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +75 -68
  114. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +135 -36
  115. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +22 -18
  116. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +14 -12
  117. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +21 -9
  118. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +48 -25
  119. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.d.ts +24 -0
  120. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js +300 -0
@@ -1,6 +1,7 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
+ import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
4
5
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
6
  import { Disposable, DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
7
  import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
@@ -19,12 +20,13 @@ import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/plat
19
20
  import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
20
21
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service';
21
22
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
22
- import { IChatEditingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService.service';
23
+ import { isValidPromptType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
23
24
  import { ChatRequestAgentPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatParserTypes';
24
25
  import { ChatRequestParser } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatRequestParser';
25
26
  import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
26
27
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
27
28
  import { ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
29
+ import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
28
30
  import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
29
31
  import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
30
32
  import { ExtHostContext, MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol';
@@ -32,10 +34,12 @@ import { NotebookDto } from './mainThreadNotebookDto.js';
32
34
  import { addDynamicVariableActionId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/editor/chatDynamicVariablesConstant';
33
35
 
34
36
  class MainThreadChatTask {
35
- get onDidAddProgress() { return this._onDidAddProgress.event; }
37
+ get onDidAddProgress() {
38
+ return this._onDidAddProgress.event;
39
+ }
36
40
  constructor(content) {
37
41
  this.content = content;
38
- this.kind = 'progressTask';
42
+ this.kind = "progressTask";
39
43
  this.deferred = ( new DeferredPromise());
40
44
  this._onDidAddProgress = ( new Emitter());
41
45
  this.progress = [];
@@ -55,19 +59,31 @@ class MainThreadChatTask {
55
59
  }
56
60
  toJSON() {
57
61
  return {
58
- kind: 'progressTaskSerialized',
62
+ kind: "progressTaskSerialized",
59
63
  content: this.content,
60
64
  progress: this.progress
61
65
  };
62
66
  }
63
67
  }
64
68
  let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
65
- constructor(extHostContext, _chatAgentService, _chatSessionService, _chatService, _chatEditingService, _languageFeaturesService, _chatWidgetService, _instantiationService, _logService, _extensionService, _uriIdentityService, _promptsService) {
69
+ constructor(
70
+ extHostContext,
71
+ _chatAgentService,
72
+ _chatSessionService,
73
+ _chatService,
74
+ _languageFeaturesService,
75
+ _chatWidgetService,
76
+ _instantiationService,
77
+ _logService,
78
+ _extensionService,
79
+ _uriIdentityService,
80
+ _promptsService,
81
+ _languageModelToolsService
82
+ ) {
66
83
  super();
67
84
  this._chatAgentService = _chatAgentService;
68
85
  this._chatSessionService = _chatSessionService;
69
86
  this._chatService = _chatService;
70
- this._chatEditingService = _chatEditingService;
71
87
  this._languageFeaturesService = _languageFeaturesService;
72
88
  this._chatWidgetService = _chatWidgetService;
73
89
  this._instantiationService = _instantiationService;
@@ -75,13 +91,14 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
75
91
  this._extensionService = _extensionService;
76
92
  this._uriIdentityService = _uriIdentityService;
77
93
  this._promptsService = _promptsService;
94
+ this._languageModelToolsService = _languageModelToolsService;
78
95
  this._agents = this._register(( new DisposableMap()));
79
96
  this._agentCompletionProviders = this._register(( new DisposableMap()));
80
97
  this._agentIdsToCompletionProviders = this._register(( new DisposableMap()));
81
98
  this._chatParticipantDetectionProviders = this._register(( new DisposableMap()));
82
- this._chatRelatedFilesProviders = this._register(( new DisposableMap()));
83
- this._customAgentsProviders = this._register(( new DisposableMap()));
84
- this._customAgentsProviderEmitters = this._register(( new DisposableMap()));
99
+ this._promptFileProviders = this._register(( new DisposableMap()));
100
+ this._promptFileProviderEmitters = this._register(( new DisposableMap()));
101
+ this._promptFileContentRegistrations = this._register(( new DisposableMap()));
85
102
  this._pendingProgress = ( new Map());
86
103
  this._activeTasks = ( new Map());
87
104
  this._unresolvedAnchors = ( new Map());
@@ -92,13 +109,12 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
92
109
  }
93
110
  }));
94
111
  this._register(this._chatService.onDidPerformUserAction(e => {
95
- if (typeof e.agentId === 'string') {
112
+ if (typeof e.agentId === "string") {
96
113
  for (const [handle, agent] of this._agents) {
97
114
  if (agent.id === e.agentId) {
98
- if (e.action.kind === 'vote') {
115
+ if (e.action.kind === "vote") {
99
116
  this._proxy.$acceptFeedback(handle, e.result ?? {}, e.action);
100
- }
101
- else {
117
+ } else {
102
118
  this._proxy.$acceptAction(handle, e.result || {}, e);
103
119
  }
104
120
  break;
@@ -106,6 +122,9 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
106
122
  }
107
123
  }
108
124
  }));
125
+ this._register(this._chatService.onDidReceiveQuestionCarouselAnswer(e => {
126
+ this._proxy.$handleQuestionCarouselAnswer(e.requestId, e.resolveId, e.answers);
127
+ }));
109
128
  }
110
129
  $unregisterAgent(handle) {
111
130
  this._agents.deleteAndDispose(handle);
@@ -134,14 +153,16 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
134
153
  const impl = {
135
154
  invoke: async (request, progress, history, token) => {
136
155
  const chatSession = this._chatService.getSession(request.sessionResource);
137
- this._pendingProgress.set(request.requestId, { progress, chatSession });
156
+ this._pendingProgress.set(request.requestId, {
157
+ progress,
158
+ chatSession
159
+ });
138
160
  try {
139
161
  return (await this._proxy.$invokeAgent(handle, request, {
140
162
  history,
141
163
  chatSessionContext: chatSession?.contributedChatSession
142
164
  }, token)) ?? {};
143
- }
144
- finally {
165
+ } finally {
145
166
  this._pendingProgress.delete(request.requestId);
146
167
  }
147
168
  },
@@ -152,14 +173,16 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
152
173
  if (!this._agents.get(handle)?.hasFollowups) {
153
174
  return [];
154
175
  }
155
- return this._proxy.$provideFollowups(request, handle, result, { history }, token);
176
+ return this._proxy.$provideFollowups(request, handle, result, {
177
+ history
178
+ }, token);
156
179
  },
157
180
  provideChatTitle: (history, token) => {
158
181
  return this._proxy.$provideChatTitle(handle, history, token);
159
182
  },
160
183
  provideChatSummary: (history, token) => {
161
184
  return this._proxy.$provideChatSummary(handle, history, token);
162
- },
185
+ }
163
186
  };
164
187
  if (chatSessionRegistration?.alternativeIds?.includes(id)) {
165
188
  return;
@@ -174,17 +197,16 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
174
197
  extensionId: extension,
175
198
  extensionVersion: extensionDescription?.version,
176
199
  extensionDisplayName: extensionDescription?.displayName ?? extension.value,
177
- extensionPublisherId: extensionDescription?.publisher ?? '',
200
+ extensionPublisherId: extensionDescription?.publisher ?? "",
178
201
  publisherDisplayName: dynamicProps.publisherName,
179
202
  fullName: dynamicProps.fullName,
180
203
  metadata: revive(metadata),
181
204
  slashCommands: [],
182
205
  disambiguation: [],
183
206
  locations: [ChatAgentLocation.Chat],
184
- modes: [ChatModeKind.Ask, ChatModeKind.Agent, ChatModeKind.Edit],
207
+ modes: [ChatModeKind.Ask, ChatModeKind.Agent, ChatModeKind.Edit]
185
208
  }, impl);
186
- }
187
- else {
209
+ } else {
188
210
  disposable = this._chatAgentService.registerAgentImplementation(id, impl);
189
211
  }
190
212
  this._agents.set(handle, {
@@ -198,7 +220,9 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
198
220
  await this._extensionService.whenInstalledExtensionsRegistered();
199
221
  const data = this._agents.get(handle);
200
222
  if (!data) {
201
- this._logService.error(`MainThreadChatAgents2#$updateAgent: No agent with handle ${handle} registered`);
223
+ this._logService.error(
224
+ `MainThreadChatAgents2#$updateAgent: No agent with handle ${handle} registered`
225
+ );
202
226
  return;
203
227
  }
204
228
  data.hasFollowups = metadataUpdate.hasFollowups;
@@ -207,61 +231,81 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
207
231
  async $handleProgressChunk(requestId, chunks) {
208
232
  const pendingProgress = this._pendingProgress.get(requestId);
209
233
  if (!pendingProgress) {
210
- this._logService.warn(`MainThreadChatAgents2#$handleProgressChunk: No pending progress for requestId ${requestId}`);
234
+ this._logService.warn(
235
+ `MainThreadChatAgents2#$handleProgressChunk: No pending progress for requestId ${requestId}`
236
+ );
211
237
  return;
212
238
  }
213
- const { progress, chatSession } = pendingProgress;
239
+ const {
240
+ progress,
241
+ chatSession
242
+ } = pendingProgress;
214
243
  const chatProgressParts = [];
215
244
  for (const item of chunks) {
216
245
  const [progress, responsePartHandle] = Array.isArray(item) ? item : [item];
217
- if (progress.kind === 'externalEdits') {
246
+ if (progress.kind === "externalEdits") {
218
247
  const response = chatSession?.getRequests().at(-1)?.response;
219
248
  if (chatSession?.editingSession && responsePartHandle !== undefined && response) {
220
- const parts = progress.start
221
- ? await chatSession.editingSession.startExternalEdits(response, responsePartHandle, revive(progress.resources), progress.undoStopId)
222
- : await chatSession.editingSession.stopExternalEdits(response, responsePartHandle);
249
+ const parts = progress.start ? await chatSession.editingSession.startExternalEdits(
250
+ response,
251
+ responsePartHandle,
252
+ revive(progress.resources),
253
+ progress.undoStopId
254
+ ) : await chatSession.editingSession.stopExternalEdits(response, responsePartHandle);
223
255
  chatProgressParts.push(...parts);
224
256
  }
225
257
  continue;
226
258
  }
227
- const revivedProgress = progress.kind === 'notebookEdit'
228
- ? ChatNotebookEdit.fromChatEdit(progress)
229
- : revive(progress);
230
- if (revivedProgress.kind === 'notebookEdit'
231
- || revivedProgress.kind === 'textEdit'
232
- || revivedProgress.kind === 'codeblockUri') {
259
+ if (progress.kind === "beginToolInvocation") {
260
+ this._languageModelToolsService.beginToolCall({
261
+ toolCallId: progress.toolCallId,
262
+ toolId: progress.toolName,
263
+ chatRequestId: requestId,
264
+ sessionResource: chatSession?.sessionResource,
265
+ subagentInvocationId: progress.subagentInvocationId
266
+ });
267
+ continue;
268
+ }
269
+ if (progress.kind === "updateToolInvocation") {
270
+ this._languageModelToolsService.updateToolStream(
271
+ progress.toolCallId,
272
+ progress.streamData?.partialInput,
273
+ CancellationToken.None
274
+ );
275
+ continue;
276
+ }
277
+ const revivedProgress = progress.kind === "notebookEdit" ? ChatNotebookEdit.fromChatEdit(progress) : revive(progress);
278
+ if (revivedProgress.kind === "notebookEdit" || revivedProgress.kind === "textEdit" || revivedProgress.kind === "codeblockUri") {
233
279
  revivedProgress.uri = this._uriIdentityService.asCanonicalUri(revivedProgress.uri);
234
280
  }
235
281
  if (responsePartHandle !== undefined) {
236
- if (revivedProgress.kind === 'progressTask') {
282
+ if (revivedProgress.kind === "progressTask") {
237
283
  const handle = responsePartHandle;
238
284
  const responsePartId = `${requestId}_${handle}`;
239
285
  const task = ( new MainThreadChatTask(revivedProgress.content));
240
286
  this._activeTasks.set(responsePartId, task);
241
287
  chatProgressParts.push(task);
242
- }
243
- else if (responsePartHandle !== undefined) {
288
+ } else if (responsePartHandle !== undefined) {
244
289
  const responsePartId = `${requestId}_${responsePartHandle}`;
245
290
  const task = this._activeTasks.get(responsePartId);
246
291
  switch (revivedProgress.kind) {
247
- case 'progressTaskResult':
248
- if (task && revivedProgress.content) {
249
- task.complete(revivedProgress.content.value);
250
- this._activeTasks.delete(responsePartId);
251
- }
252
- else {
253
- task?.complete(undefined);
254
- }
255
- break;
256
- case 'warning':
257
- case 'reference':
258
- task?.add(revivedProgress);
259
- break;
292
+ case "progressTaskResult":
293
+ if (task && revivedProgress.content) {
294
+ task.complete(revivedProgress.content.value);
295
+ this._activeTasks.delete(responsePartId);
296
+ } else {
297
+ task?.complete(undefined);
298
+ }
299
+ break;
300
+ case "warning":
301
+ case "reference":
302
+ task?.add(revivedProgress);
303
+ break;
260
304
  }
261
305
  }
262
306
  continue;
263
307
  }
264
- if (revivedProgress.kind === 'inlineReference' && revivedProgress.resolveId) {
308
+ if (revivedProgress.kind === "inlineReference" && revivedProgress.resolveId) {
265
309
  if (!( this._unresolvedAnchors.has(requestId))) {
266
310
  this._unresolvedAnchors.set(requestId, ( new Map()));
267
311
  }
@@ -285,25 +329,31 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
285
329
  $registerAgentCompletionsProvider(handle, id, triggerCharacters) {
286
330
  const provide = async (query, token) => {
287
331
  const completions = await this._proxy.$invokeCompletionProvider(handle, query, token);
288
- return ( completions.map((c) => ({ ...c, icon: c.icon ? ThemeIcon.fromId(c.icon) : undefined })));
332
+ return ( completions.map(c => ({
333
+ ...c,
334
+ icon: c.icon ? ThemeIcon.fromId(c.icon) : undefined
335
+ })));
289
336
  };
290
337
  this._agentIdsToCompletionProviders.set(id, this._chatAgentService.registerAgentCompletionProvider(id, provide));
291
- this._agentCompletionProviders.set(handle, this._languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
292
- _debugDisplayName: 'chatAgentCompletions:' + handle,
338
+ this._agentCompletionProviders.set(handle, this._languageFeaturesService.completionProvider.register({
339
+ scheme: Schemas.vscodeChatInput,
340
+ hasAccessToAllModels: true
341
+ }, {
342
+ _debugDisplayName: "chatAgentCompletions:" + handle,
293
343
  triggerCharacters,
294
344
  provideCompletionItems: async (model, position, _context, token) => {
295
345
  const widget = this._chatWidgetService.getWidgetByInputUri(model.uri);
296
346
  if (!widget || !widget.viewModel) {
297
347
  return;
298
348
  }
299
- const triggerCharsPart = ( triggerCharacters.map(c => escapeRegExpCharacters(c))).join('');
300
- const wordRegex = ( new RegExp(`[${triggerCharsPart}]\\S*`, 'g'));
301
- const query = getWordAtText(position.column, wordRegex, model.getLineContent(position.lineNumber), 0)?.word ?? '';
349
+ const triggerCharsPart = ( triggerCharacters.map(c => escapeRegExpCharacters(c))).join("");
350
+ const wordRegex = ( new RegExp(`[${triggerCharsPart}]\\S*`, "g"));
351
+ const query = getWordAtText(position.column, wordRegex, model.getLineContent(position.lineNumber), 0)?.word ?? "";
302
352
  if (query && !( triggerCharacters.some(c => query.startsWith(c)))) {
303
353
  return;
304
354
  }
305
355
  const parsedRequest = this._instantiationService.createInstance(ChatRequestParser).parseChatRequest(widget.viewModel.sessionResource, model.getValue()).parts;
306
- const agentPart = parsedRequest.find((part) => part instanceof ChatRequestAgentPart);
356
+ const agentPart = parsedRequest.find(part => part instanceof ChatRequestAgentPart);
307
357
  const thisAgentId = this._agents.get(handle)?.id;
308
358
  if (agentPart?.agent.id !== thisAgentId) {
309
359
  return;
@@ -314,7 +364,7 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
314
364
  }
315
365
  const result = await provide(query, token);
316
366
  const variableItems = ( result.map(v => {
317
- const insertText = v.insertText ?? (typeof v.label === 'string' ? v.label : v.label.label);
367
+ const insertText = v.insertText ?? (typeof v.label === "string" ? v.label : v.label.label);
318
368
  const rangeAfterInsert = ( new Range(
319
369
  range.insert.startLineNumber,
320
370
  range.insert.startColumn,
@@ -324,11 +374,21 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
324
374
  return {
325
375
  label: v.label,
326
376
  range,
327
- insertText: insertText + ' ',
377
+ insertText: insertText + " ",
328
378
  kind: CompletionItemKind.Text,
329
379
  detail: v.detail,
330
380
  documentation: v.documentation,
331
- command: { id: addDynamicVariableActionId, title: '', arguments: [{ id: v.id, widget, range: rangeAfterInsert, variableData: revive(v.value), command: v.command }] }
381
+ command: {
382
+ id: addDynamicVariableActionId,
383
+ title: "",
384
+ arguments: [{
385
+ id: v.id,
386
+ widget,
387
+ range: rangeAfterInsert,
388
+ variableData: revive(v.value),
389
+ command: v.command
390
+ }]
391
+ }
332
392
  };
333
393
  }));
334
394
  return {
@@ -342,74 +402,65 @@ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
342
402
  this._agentIdsToCompletionProviders.deleteAndDispose(id);
343
403
  }
344
404
  $registerChatParticipantDetectionProvider(handle) {
345
- this._chatParticipantDetectionProviders.set(handle, this._chatAgentService.registerChatParticipantDetectionProvider(handle, {
346
- provideParticipantDetection: async (request, history, options, token) => {
347
- return await this._proxy.$detectChatParticipant(handle, request, { history }, options, token);
348
- }
349
- }));
405
+ this._chatParticipantDetectionProviders.set(
406
+ handle,
407
+ this._chatAgentService.registerChatParticipantDetectionProvider(handle, {
408
+ provideParticipantDetection: async (request, history, options, token) => {
409
+ return await this._proxy.$detectChatParticipant(handle, request, {
410
+ history
411
+ }, options, token);
412
+ }
413
+ })
414
+ );
350
415
  }
351
416
  $unregisterChatParticipantDetectionProvider(handle) {
352
417
  this._chatParticipantDetectionProviders.deleteAndDispose(handle);
353
418
  }
354
- $registerRelatedFilesProvider(handle, metadata) {
355
- this._chatRelatedFilesProviders.set(handle, this._chatEditingService.registerRelatedFilesProvider(handle, {
356
- description: metadata.description,
357
- provideRelatedFiles: async (request, token) => {
358
- return (await this._proxy.$provideRelatedFiles(handle, request, token))?.map((v) => ({ uri: ( URI.from(v.uri)), description: v.description })) ?? [];
359
- }
360
- }));
361
- }
362
- $unregisterRelatedFilesProvider(handle) {
363
- this._chatRelatedFilesProviders.deleteAndDispose(handle);
364
- }
365
- async $registerCustomAgentsProvider(handle, extensionId) {
419
+ async $registerPromptFileProvider(handle, type, extensionId) {
366
420
  const extension = await this._extensionService.getExtension(extensionId.value);
367
421
  if (!extension) {
368
- this._logService.error(`[MainThreadChatAgents2] Could not find extension for CustomAgentsProvider: ${extensionId.value}`);
422
+ this._logService.error(
423
+ `[MainThreadChatAgents2] Could not find extension for prompt file provider: ${extensionId.value}`
424
+ );
425
+ return;
426
+ }
427
+ if (!isValidPromptType(type)) {
428
+ this._logService.error(`[MainThreadChatAgents2] Invalid contribution type: ${type}`);
369
429
  return;
370
430
  }
371
431
  const emitter = ( new Emitter());
372
- this._customAgentsProviderEmitters.set(handle, emitter);
373
- const disposable = this._promptsService.registerCustomAgentsProvider(extension, {
374
- onDidChangeCustomAgents: emitter.event,
375
- provideCustomAgents: async (options, token) => {
376
- const agents = await this._proxy.$provideCustomAgents(handle, options, token);
377
- if (!agents) {
432
+ this._promptFileProviderEmitters.set(handle, emitter);
433
+ const contentRegistrations = ( new DisposableMap());
434
+ this._promptFileContentRegistrations.set(handle, contentRegistrations);
435
+ const disposable = this._promptsService.registerPromptFileProvider(extension, type, {
436
+ onDidChangePromptFiles: emitter.event,
437
+ providePromptFiles: async (context, token) => {
438
+ const contributions = await this._proxy.$providePromptFiles(handle, type, context, token);
439
+ if (!contributions) {
378
440
  return undefined;
379
441
  }
380
- return ( agents.map(agent => ({
381
- ...agent,
382
- uri: URI.revive(agent.uri)
383
- })));
442
+ return ( contributions.map(c => {
443
+ return {
444
+ uri: URI.revive(c.uri)
445
+ };
446
+ }));
384
447
  }
385
448
  });
386
- this._customAgentsProviders.set(handle, disposable);
449
+ this._promptFileProviders.set(handle, disposable);
387
450
  }
388
- $unregisterCustomAgentsProvider(handle) {
389
- this._customAgentsProviders.deleteAndDispose(handle);
390
- this._customAgentsProviderEmitters.deleteAndDispose(handle);
451
+ $unregisterPromptFileProvider(handle) {
452
+ this._promptFileProviders.deleteAndDispose(handle);
453
+ this._promptFileProviderEmitters.deleteAndDispose(handle);
454
+ this._promptFileContentRegistrations.deleteAndDispose(handle);
391
455
  }
392
- $onDidChangeCustomAgents(handle) {
393
- const emitter = this._customAgentsProviderEmitters.get(handle);
456
+ $onDidChangePromptFiles(handle) {
457
+ const emitter = this._promptFileProviderEmitters.get(handle);
394
458
  if (emitter) {
395
459
  emitter.fire();
396
460
  }
397
461
  }
398
462
  };
399
- MainThreadChatAgents2 = __decorate([
400
- extHostNamedCustomer(MainContext.MainThreadChatAgents2),
401
- ( __param(1, IChatAgentService)),
402
- ( __param(2, IChatSessionsService)),
403
- ( __param(3, IChatService)),
404
- ( __param(4, IChatEditingService)),
405
- ( __param(5, ILanguageFeaturesService)),
406
- ( __param(6, IChatWidgetService)),
407
- ( __param(7, IInstantiationService)),
408
- ( __param(8, ILogService)),
409
- ( __param(9, IExtensionService)),
410
- ( __param(10, IUriIdentityService)),
411
- ( __param(11, IPromptsService))
412
- ], MainThreadChatAgents2);
463
+ MainThreadChatAgents2 = __decorate([extHostNamedCustomer(MainContext.MainThreadChatAgents2), ( __param(1, IChatAgentService)), ( __param(2, IChatSessionsService)), ( __param(3, IChatService)), ( __param(4, ILanguageFeaturesService)), ( __param(5, IChatWidgetService)), ( __param(6, IInstantiationService)), ( __param(7, ILogService)), ( __param(8, IExtensionService)), ( __param(9, IUriIdentityService)), ( __param(10, IPromptsService)), ( __param(11, ILanguageModelToolsService))], MainThreadChatAgents2);
413
464
  function computeCompletionRanges(model, position, reg) {
414
465
  const varWord = getWordAtText(position.column, reg, model.getLineContent(position.lineNumber), 0);
415
466
  if (!varWord && model.getWordUntilPosition(position).word) {
@@ -419,8 +470,7 @@ function computeCompletionRanges(model, position, reg) {
419
470
  let replace;
420
471
  if (!varWord) {
421
472
  insert = replace = Range.fromPositions(position);
422
- }
423
- else {
473
+ } else {
424
474
  insert = ( new Range(
425
475
  position.lineNumber,
426
476
  varWord.startColumn,
@@ -434,13 +484,16 @@ function computeCompletionRanges(model, position, reg) {
434
484
  varWord.endColumn
435
485
  ));
436
486
  }
437
- return { insert, replace };
487
+ return {
488
+ insert,
489
+ replace
490
+ };
438
491
  }
439
492
  var ChatNotebookEdit;
440
- (function (ChatNotebookEdit) {
493
+ (function(ChatNotebookEdit) {
441
494
  function fromChatEdit(part) {
442
495
  return {
443
- kind: 'notebookEdit',
496
+ kind: "notebookEdit",
444
497
  uri: URI.revive(part.uri),
445
498
  done: part.done,
446
499
  edits: ( part.edits.map(NotebookDto.fromCellEditOperationDto))
@@ -10,8 +10,12 @@ import { NotebookDto } from './mainThreadNotebookDto.js';
10
10
 
11
11
  var MainThreadChatCodemapper_1;
12
12
  let MainThreadChatCodemapper = class MainThreadChatCodemapper extends Disposable {
13
- static { MainThreadChatCodemapper_1 = this; }
14
- static { this._requestHandlePool = 0; }
13
+ static {
14
+ MainThreadChatCodemapper_1 = this;
15
+ }
16
+ static {
17
+ this._requestHandlePool = 0;
18
+ }
15
19
  constructor(extHostContext, codeMapperService) {
16
20
  super();
17
21
  this.codeMapperService = codeMapperService;
@@ -34,9 +38,8 @@ let MainThreadChatCodemapper = class MainThreadChatCodemapper extends Disposable
34
38
  location: uiRequest.location
35
39
  };
36
40
  try {
37
- return await this._proxy.$mapCode(handle, extHostRequest, token).then((result) => result ?? undefined);
38
- }
39
- finally {
41
+ return await this._proxy.$mapCode(handle, extHostRequest, token).then(result => result ?? undefined);
42
+ } finally {
40
43
  this._responseMap.delete(requestId);
41
44
  }
42
45
  }
@@ -54,20 +57,15 @@ let MainThreadChatCodemapper = class MainThreadChatCodemapper extends Disposable
54
57
  const resource = URI.revive(data.uri);
55
58
  if (!edits.length) {
56
59
  response.textEdit(resource, []);
57
- }
58
- else if (edits.every(TextEdit.isTextEdit)) {
60
+ } else if (edits.every(TextEdit.isTextEdit)) {
59
61
  response.textEdit(resource, edits);
60
- }
61
- else {
62
+ } else {
62
63
  response.notebookEdit(resource, ( edits.map(NotebookDto.fromCellEditOperationDto)));
63
64
  }
64
65
  }
65
66
  return Promise.resolve();
66
67
  }
67
68
  };
68
- MainThreadChatCodemapper = MainThreadChatCodemapper_1 = __decorate([
69
- extHostNamedCustomer(MainContext.MainThreadCodeMapper),
70
- ( __param(1, ICodeMapperService))
71
- ], MainThreadChatCodemapper);
69
+ MainThreadChatCodemapper = MainThreadChatCodemapper_1 = __decorate([extHostNamedCustomer(MainContext.MainThreadCodeMapper), ( __param(1, ICodeMapperService))], MainThreadChatCodemapper);
72
70
 
73
71
  export { MainThreadChatCodemapper };
@@ -1,6 +1,5 @@
1
1
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
- import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
3
- import { IChatContextItem, IChatContextSupport } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/contextContrib/chatContext";
2
+ import { IChatContextItem } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/contextContrib/chatContext";
4
3
  import { IExtHostContext } from "../../services/extensions/common/extHostCustomers.js";
5
4
  import { IDocumentFilterDto, MainThreadChatContextShape } from "@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol";
6
5
  import { IChatContextService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.service";
@@ -9,9 +8,10 @@ export declare class MainThreadChatContext extends Disposable implements MainThr
9
8
  private readonly _proxy;
10
9
  private readonly _providers;
11
10
  constructor(extHostContext: IExtHostContext, _chatContextService: IChatContextService);
12
- $registerChatContextProvider(handle: number, id: string, selector: IDocumentFilterDto[] | undefined, _options: {
13
- icon: ThemeIcon;
14
- }, support: IChatContextSupport): void;
11
+ $registerChatWorkspaceContextProvider(handle: number, id: string): void;
12
+ $registerChatExplicitContextProvider(handle: number, id: string): void;
13
+ $registerChatResourceContextProvider(handle: number, id: string, selector: IDocumentFilterDto[]): void;
15
14
  $unregisterChatContextProvider(handle: number): void;
16
15
  $updateWorkspaceContextItems(handle: number, items: IChatContextItem[]): void;
16
+ $executeChatContextItemCommand(itemHandle: number): Promise<void>;
17
17
  }