@codingame/monaco-vscode-extensions-service-override 25.1.2 → 26.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.
- package/index.js +7 -0
- package/package.json +3 -3
- package/vscode/src/vs/base/common/console.js +24 -15
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.d.ts +4 -1
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +149 -84
- package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +20 -12
- package/vscode/src/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +38 -21
- package/vscode/src/vs/platform/remote/common/managedSocket.js +7 -10
- package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +5 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +5 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadAiSettingsSearch.js +4 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +200 -143
- package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +10 -14
- package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +41 -31
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +9 -12
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +168 -115
- package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +11 -13
- package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +5 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +42 -15
- package/vscode/src/vs/workbench/api/browser/mainThreadChatOutputRenderer.js +8 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +4 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +170 -99
- package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js +2 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +4 -9
- package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +13 -12
- package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +16 -19
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +127 -70
- package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -26
- package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +5 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +199 -97
- package/vscode/src/vs/workbench/api/browser/mainThreadDataChannels.js +1 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +88 -73
- package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +5 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +16 -12
- package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +10 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +14 -6
- package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +52 -37
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +78 -58
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +5 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +75 -63
- package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +99 -91
- package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +93 -55
- package/vscode/src/vs/workbench/api/browser/mainThreadEmbeddings.js +3 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +85 -60
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +49 -45
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +114 -72
- package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +4 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +1 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.d.ts +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +381 -238
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +7 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +90 -13
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +81 -58
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +9 -10
- package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +2 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +6 -10
- package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +12 -10
- package/vscode/src/vs/workbench/api/browser/mainThreadMcp.d.ts +3 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +162 -97
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +32 -26
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +38 -32
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +48 -46
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +22 -18
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +5 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +35 -21
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +31 -28
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +5 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +47 -23
- package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +15 -12
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +17 -18
- package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +6 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +83 -66
- package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +1 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +250 -92
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +6 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +37 -26
- package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +34 -21
- package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +3 -6
- package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +19 -14
- package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +41 -16
- package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +18 -17
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +145 -145
- package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +19 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +176 -80
- package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +52 -21
- package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +26 -24
- package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +1 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +5 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.d.ts +4 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +106 -46
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +83 -65
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +20 -20
- package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +14 -9
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +17 -9
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +49 -38
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +10 -13
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +38 -27
- package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +5 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.d.ts +4 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +73 -43
- package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +2 -2
- package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +17 -10
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +17 -11
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +107 -80
- package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +336 -175
- package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +126 -71
- package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +76 -54
- package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +1 -2
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -0
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +343 -192
- package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +5 -3
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.d.ts +0 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +75 -68
- package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +135 -36
- package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +22 -18
- package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +14 -12
- package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +21 -9
- package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +48 -25
- package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.d.ts +24 -0
- 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 {
|
|
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() {
|
|
37
|
+
get onDidAddProgress() {
|
|
38
|
+
return this._onDidAddProgress.event;
|
|
39
|
+
}
|
|
36
40
|
constructor(content) {
|
|
37
41
|
this.content = content;
|
|
38
|
-
this.kind =
|
|
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:
|
|
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(
|
|
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.
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
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 ===
|
|
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 ===
|
|
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, {
|
|
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, {
|
|
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(
|
|
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(
|
|
234
|
+
this._logService.warn(
|
|
235
|
+
`MainThreadChatAgents2#$handleProgressChunk: No pending progress for requestId ${requestId}`
|
|
236
|
+
);
|
|
211
237
|
return;
|
|
212
238
|
}
|
|
213
|
-
const {
|
|
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 ===
|
|
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
|
-
|
|
222
|
-
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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 ===
|
|
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
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
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 ===
|
|
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(
|
|
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({
|
|
292
|
-
|
|
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*`,
|
|
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(
|
|
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 ===
|
|
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: {
|
|
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(
|
|
346
|
-
|
|
347
|
-
|
|
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
|
-
$
|
|
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(
|
|
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.
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
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 (
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
442
|
+
return ( contributions.map(c => {
|
|
443
|
+
return {
|
|
444
|
+
uri: URI.revive(c.uri)
|
|
445
|
+
};
|
|
446
|
+
}));
|
|
384
447
|
}
|
|
385
448
|
});
|
|
386
|
-
this.
|
|
449
|
+
this._promptFileProviders.set(handle, disposable);
|
|
387
450
|
}
|
|
388
|
-
$
|
|
389
|
-
this.
|
|
390
|
-
this.
|
|
451
|
+
$unregisterPromptFileProvider(handle) {
|
|
452
|
+
this._promptFileProviders.deleteAndDispose(handle);
|
|
453
|
+
this._promptFileProviderEmitters.deleteAndDispose(handle);
|
|
454
|
+
this._promptFileContentRegistrations.deleteAndDispose(handle);
|
|
391
455
|
}
|
|
392
|
-
$
|
|
393
|
-
const emitter = this.
|
|
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 {
|
|
487
|
+
return {
|
|
488
|
+
insert,
|
|
489
|
+
replace
|
|
490
|
+
};
|
|
438
491
|
}
|
|
439
492
|
var ChatNotebookEdit;
|
|
440
|
-
(function
|
|
493
|
+
(function(ChatNotebookEdit) {
|
|
441
494
|
function fromChatEdit(part) {
|
|
442
495
|
return {
|
|
443
|
-
kind:
|
|
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 {
|
|
14
|
-
|
|
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(
|
|
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 {
|
|
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
|
-
$
|
|
13
|
-
|
|
14
|
-
|
|
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
|
}
|