@codingame/monaco-vscode-extensions-service-override 34.1.3 → 35.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.
- package/index.js +2 -0
- package/package.json +3 -3
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +29 -29
- package/vscode/src/vs/workbench/api/browser/mainThreadAgentEditorComments.d.ts +25 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadAgentEditorComments.js +57 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +28 -28
- package/vscode/src/vs/workbench/api/browser/mainThreadBrowserTunnelProxy.d.ts +23 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadBrowserTunnelProxy.js +47 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +30 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +12 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +12 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +11 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +20 -20
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +2 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.d.ts +5 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +70 -10
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.d.ts +6 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +61 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +13 -13
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +3 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.d.ts +7 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +46 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +5 -5
- package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +1 -1
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +23 -23
- package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.d.ts +0 -1
- package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +4 -7
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +12 -12
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +4 -4
- package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js +5 -5
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { DeferredPromise, AsyncIterableSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
4
|
import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
|
|
5
|
+
import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
5
6
|
import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
|
|
6
|
-
import { transformErrorFromSerialization, transformErrorForSerialization } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
7
|
+
import { CancellationError, transformErrorFromSerialization, transformErrorForSerialization } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
7
8
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
8
9
|
import { equalSets } from '@codingame/monaco-vscode-api/vscode/vs/base/common/collections';
|
|
9
|
-
import { DisposableStore, DisposableMap,
|
|
10
|
+
import { Disposable, DisposableStore, DisposableMap, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
10
11
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
11
12
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
13
|
+
import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
|
|
12
14
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
15
|
+
import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
|
|
13
16
|
import { resizeImage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatImageUtils';
|
|
14
17
|
import { ILanguageModelIgnoredFilesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/ignoredFiles.service';
|
|
15
18
|
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
@@ -22,11 +25,27 @@ import { SerializableObjectWithBuffers } from '@codingame/monaco-vscode-api/vsco
|
|
|
22
25
|
import { ExtHostContext, MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol';
|
|
23
26
|
import { LanguageModelError } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHostTypes';
|
|
24
27
|
|
|
28
|
+
class RequestCancellationTokenSource extends Disposable {
|
|
29
|
+
constructor(parent, onCancellationRequested) {
|
|
30
|
+
super();
|
|
31
|
+
this._source = this._register(( new CancellationTokenSource(parent)));
|
|
32
|
+
if (onCancellationRequested) {
|
|
33
|
+
this._register(this._source.token.onCancellationRequested(onCancellationRequested));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
get token() {
|
|
37
|
+
return this._source.token;
|
|
38
|
+
}
|
|
39
|
+
cancel() {
|
|
40
|
+
this._source.cancel();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
25
43
|
let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
26
44
|
constructor(
|
|
27
45
|
extHostContext,
|
|
28
46
|
_chatProviderService,
|
|
29
47
|
_logService,
|
|
48
|
+
_productService,
|
|
30
49
|
_authenticationService,
|
|
31
50
|
_authenticationAccessService,
|
|
32
51
|
_extensionService,
|
|
@@ -34,6 +53,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
34
53
|
) {
|
|
35
54
|
this._chatProviderService = _chatProviderService;
|
|
36
55
|
this._logService = _logService;
|
|
56
|
+
this._productService = _productService;
|
|
37
57
|
this._authenticationService = _authenticationService;
|
|
38
58
|
this._authenticationAccessService = _authenticationAccessService;
|
|
39
59
|
this._extensionService = _extensionService;
|
|
@@ -42,6 +62,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
42
62
|
this._providerRegistrations = ( new DisposableMap());
|
|
43
63
|
this._lmProviderChange = ( new Emitter());
|
|
44
64
|
this._pendingProgress = ( new Map());
|
|
65
|
+
this._pendingCancelCTS = ( new DisposableMap());
|
|
45
66
|
this._ignoredFileProviderRegistrations = ( new DisposableMap());
|
|
46
67
|
this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostChatProvider));
|
|
47
68
|
let lastModelIds = ( new Set(this._chatProviderService.getLanguageModelIds()));
|
|
@@ -57,6 +78,8 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
57
78
|
dispose() {
|
|
58
79
|
this._lmProviderChange.dispose();
|
|
59
80
|
this._providerRegistrations.dispose();
|
|
81
|
+
this._pendingProgress.clear();
|
|
82
|
+
this._pendingCancelCTS.dispose();
|
|
60
83
|
this._ignoredFileProviderRegistrations.dispose();
|
|
61
84
|
this._store.dispose();
|
|
62
85
|
}
|
|
@@ -67,30 +90,58 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
67
90
|
onDidChange: Event.filter(this._lmProviderChange.event, e => e.vendor === vendor, disposables),
|
|
68
91
|
provideLanguageModelChatInfo: async (options, token) => {
|
|
69
92
|
const modelsAndIdentifiers = await this._proxy.$provideLanguageModelChatInfo(vendor, options, token);
|
|
70
|
-
|
|
93
|
+
const copilotExtensionId = this._productService.defaultChatAgent?.chatExtensionId;
|
|
94
|
+
return ( modelsAndIdentifiers.map(m => {
|
|
71
95
|
if (m.metadata.auth) {
|
|
72
96
|
disposables.add(
|
|
73
97
|
this._registerAuthenticationProvider(m.metadata.extension, m.metadata.auth)
|
|
74
98
|
);
|
|
75
99
|
}
|
|
76
|
-
|
|
77
|
-
|
|
100
|
+
if (m.metadata.isBYOK !== undefined) {
|
|
101
|
+
return m;
|
|
102
|
+
}
|
|
103
|
+
const isBuiltinCopilot = !!copilotExtensionId && ExtensionIdentifier.equals(m.metadata.extension, copilotExtensionId);
|
|
104
|
+
return {
|
|
105
|
+
...m,
|
|
106
|
+
metadata: {
|
|
107
|
+
...m.metadata,
|
|
108
|
+
isBYOK: !isBuiltinCopilot
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}));
|
|
78
112
|
},
|
|
79
113
|
sendChatRequest: async (modelId, messages, from, options, token) => {
|
|
80
114
|
const requestId = (Math.random() * 1e6) | 0;
|
|
81
115
|
const defer = ( new DeferredPromise());
|
|
116
|
+
defer.p.catch(() => {});
|
|
82
117
|
const stream = new AsyncIterableSource();
|
|
83
118
|
try {
|
|
84
119
|
this._pendingProgress.set(requestId, {
|
|
85
120
|
defer,
|
|
86
121
|
stream
|
|
87
122
|
});
|
|
123
|
+
const cts = ( new RequestCancellationTokenSource(token, () => {
|
|
124
|
+
this._proxy.$cancelLanguageModelChatRequest(requestId);
|
|
125
|
+
}));
|
|
126
|
+
this._pendingCancelCTS.set(requestId, cts);
|
|
88
127
|
await Promise.all(( messages.flatMap(msg => msg.content).filter(part => part.type === "image_url").map(async part => {
|
|
89
128
|
part.value.data = VSBuffer.wrap(await resizeImage(part.value.data.buffer));
|
|
90
129
|
})));
|
|
91
|
-
|
|
130
|
+
if (token.isCancellationRequested) {
|
|
131
|
+
this._pendingProgress.delete(requestId);
|
|
132
|
+
this._pendingCancelCTS.deleteAndDispose(requestId);
|
|
133
|
+
const err = ( new CancellationError());
|
|
134
|
+
stream.reject(err);
|
|
135
|
+
defer.error(err);
|
|
136
|
+
return {
|
|
137
|
+
result: defer.p,
|
|
138
|
+
stream: stream.asyncIterable
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
await this._proxy.$startChatRequest(modelId, requestId, from, ( new SerializableObjectWithBuffers(messages)), options, cts.token);
|
|
92
142
|
} catch (err) {
|
|
93
143
|
this._pendingProgress.delete(requestId);
|
|
144
|
+
this._pendingCancelCTS.deleteAndDispose(requestId);
|
|
94
145
|
throw err;
|
|
95
146
|
}
|
|
96
147
|
return {
|
|
@@ -125,6 +176,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
125
176
|
this._logService.trace("[LM] report response DONE", Boolean(data), requestId, err);
|
|
126
177
|
if (data) {
|
|
127
178
|
this._pendingProgress.delete(requestId);
|
|
179
|
+
this._pendingCancelCTS.deleteAndDispose(requestId);
|
|
128
180
|
if (err) {
|
|
129
181
|
const error = LanguageModelError.tryDeserialize(err) ?? transformErrorFromSerialization(err);
|
|
130
182
|
data.stream.reject(error);
|
|
@@ -138,16 +190,22 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
138
190
|
$unregisterProvider(vendor) {
|
|
139
191
|
this._providerRegistrations.deleteAndDispose(vendor);
|
|
140
192
|
}
|
|
193
|
+
$cancelLanguageModelChatRequest(requestId) {
|
|
194
|
+
this._pendingCancelCTS.get(requestId)?.cancel();
|
|
195
|
+
}
|
|
141
196
|
$selectChatModels(selector) {
|
|
142
197
|
return this._chatProviderService.selectLanguageModels(selector);
|
|
143
198
|
}
|
|
144
199
|
async $tryStartChatRequest(extension, modelIdentifier, requestId, messages, options, token) {
|
|
145
200
|
this._logService.trace("[CHAT] request STARTED", extension.value, requestId);
|
|
201
|
+
const cts = ( new RequestCancellationTokenSource(token));
|
|
202
|
+
this._pendingCancelCTS.set(requestId, cts);
|
|
146
203
|
let response;
|
|
147
204
|
try {
|
|
148
|
-
response = await this._chatProviderService.sendChatRequest(modelIdentifier, extension, messages.value, options, token);
|
|
205
|
+
response = await this._chatProviderService.sendChatRequest(modelIdentifier, extension, messages.value, options, cts.token);
|
|
149
206
|
} catch (err) {
|
|
150
207
|
this._logService.error("[CHAT] request FAILED", extension.value, requestId, err);
|
|
208
|
+
this._pendingCancelCTS.deleteAndDispose(requestId);
|
|
151
209
|
throw err;
|
|
152
210
|
}
|
|
153
211
|
const streaming = (async () => {
|
|
@@ -169,6 +227,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
169
227
|
})();
|
|
170
228
|
Promise.allSettled([response.result, streaming]).then(() => {
|
|
171
229
|
this._logService.debug("[CHAT] extension request DONE", extension.value, requestId);
|
|
230
|
+
this._pendingCancelCTS.deleteAndDispose(requestId);
|
|
172
231
|
this._proxy.$acceptResponseDone(requestId, undefined);
|
|
173
232
|
}, err => {
|
|
174
233
|
this._logService.error(
|
|
@@ -177,6 +236,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
177
236
|
extension.value,
|
|
178
237
|
requestId
|
|
179
238
|
);
|
|
239
|
+
this._pendingCancelCTS.deleteAndDispose(requestId);
|
|
180
240
|
this._proxy.$acceptResponseDone(requestId, transformErrorForSerialization(err));
|
|
181
241
|
});
|
|
182
242
|
}
|
|
@@ -188,7 +248,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
188
248
|
if (this._authenticationService.getProviderIds().includes(authProviderId)) {
|
|
189
249
|
return Disposable.None;
|
|
190
250
|
}
|
|
191
|
-
const accountLabel = auth.accountLabel ?? ( localize(
|
|
251
|
+
const accountLabel = auth.accountLabel ?? ( localize(2773, "Language Models"));
|
|
192
252
|
const disposables = ( new DisposableStore());
|
|
193
253
|
const provider = ( new LanguageModelAccessAuthProvider(authProviderId, auth.providerLabel, accountLabel));
|
|
194
254
|
this._authenticationService.registerAuthenticationProvider(authProviderId, provider);
|
|
@@ -228,7 +288,7 @@ let MainThreadLanguageModels = class MainThreadLanguageModels {
|
|
|
228
288
|
}
|
|
229
289
|
};
|
|
230
290
|
MainThreadLanguageModels = __decorate(
|
|
231
|
-
[extHostNamedCustomer(MainContext.MainThreadLanguageModels), ( __param(1, ILanguageModelsService)), ( __param(2, ILogService)), ( __param(3,
|
|
291
|
+
[extHostNamedCustomer(MainContext.MainThreadLanguageModels), ( __param(1, ILanguageModelsService)), ( __param(2, ILogService)), ( __param(3, IProductService)), ( __param(4, IAuthenticationService)), ( __param(5, IAuthenticationAccessService)), ( __param(6, IExtensionService)), ( __param(7, ILanguageModelIgnoredFilesService))],
|
|
232
292
|
MainThreadLanguageModels
|
|
233
293
|
);
|
|
234
294
|
class LanguageModelAccessAuthProvider {
|
|
@@ -271,7 +331,7 @@ class LanguageModelAccessAuthProvider {
|
|
|
271
331
|
}
|
|
272
332
|
confirmation(extensionName, _recreatingSession) {
|
|
273
333
|
return localize(
|
|
274
|
-
|
|
334
|
+
2774,
|
|
275
335
|
"The extension '{0}' wants to access the language models provided by {1}.",
|
|
276
336
|
extensionName,
|
|
277
337
|
this.label
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UriComponents } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
2
|
import { ILanguageService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service";
|
|
3
3
|
import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
|
|
4
|
-
import { MainThreadLanguagesShape } from "@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol";
|
|
4
|
+
import { MainThreadLanguagesShape, ISyntaxHighlightingResultDto } from "@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol";
|
|
5
5
|
import { IExtHostContext } from "../../services/extensions/common/extHostCustomers.js";
|
|
6
6
|
import { IPosition } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position";
|
|
7
7
|
import { IRange } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
|
|
@@ -10,19 +10,23 @@ import { ITextModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor
|
|
|
10
10
|
import { ILanguageStatus } from "@codingame/monaco-vscode-languages-service-override/vscode/vs/workbench/services/languageStatus/common/languageStatusService";
|
|
11
11
|
import { ILanguageStatusService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/languageStatus/common/languageStatusService.service";
|
|
12
12
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
13
|
+
import { ITextMateTokenizationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/textMate/browser/textMateTokenizationFeature.service";
|
|
14
|
+
import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
|
|
13
15
|
export declare class MainThreadLanguages extends Disposable implements MainThreadLanguagesShape {
|
|
14
16
|
private readonly _languageService;
|
|
15
17
|
private readonly _modelService;
|
|
16
18
|
private _resolverService;
|
|
17
19
|
private readonly _languageStatusService;
|
|
20
|
+
private readonly _textMateService;
|
|
18
21
|
private readonly _proxy;
|
|
19
22
|
private readonly _status;
|
|
20
|
-
constructor(_extHostContext: IExtHostContext, _languageService: ILanguageService, _modelService: IModelService, _resolverService: ITextModelService, _languageStatusService: ILanguageStatusService);
|
|
23
|
+
constructor(_extHostContext: IExtHostContext, _languageService: ILanguageService, _modelService: IModelService, _resolverService: ITextModelService, _languageStatusService: ILanguageStatusService, _textMateService: ITextMateTokenizationService, themeService: IThemeService);
|
|
21
24
|
$changeLanguage(resource: UriComponents, languageId: string): Promise<void>;
|
|
22
25
|
$tokensAtPosition(resource: UriComponents, position: IPosition): Promise<undefined | {
|
|
23
26
|
type: StandardTokenType;
|
|
24
27
|
range: IRange;
|
|
25
28
|
}>;
|
|
29
|
+
$computeFullSyntaxHighlighting(source: string, languageId: string): Promise<ISyntaxHighlightingResultDto>;
|
|
26
30
|
$setLanguageStatus(handle: number, status: ILanguageStatus): void;
|
|
27
31
|
$removeLanguageStatus(handle: number): void;
|
|
28
32
|
}
|
|
@@ -6,9 +6,14 @@ import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/com
|
|
|
6
6
|
import { ExtHostContext, MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol';
|
|
7
7
|
import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
|
|
8
8
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
9
|
+
import { FontStyle, TokenMetadata } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/encodedTokenAttributes';
|
|
10
|
+
import { TokenizationRegistry } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
|
|
11
|
+
import { Color } from '@codingame/monaco-vscode-api/vscode/vs/base/common/color';
|
|
9
12
|
import { ITextModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service';
|
|
10
13
|
import { ILanguageStatusService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/languageStatus/common/languageStatusService.service';
|
|
11
14
|
import { Disposable, DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
15
|
+
import { ITextMateTokenizationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textMate/browser/textMateTokenizationFeature.service';
|
|
16
|
+
import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
|
|
12
17
|
|
|
13
18
|
let MainThreadLanguages = class MainThreadLanguages extends Disposable {
|
|
14
19
|
constructor(
|
|
@@ -16,19 +21,25 @@ let MainThreadLanguages = class MainThreadLanguages extends Disposable {
|
|
|
16
21
|
_languageService,
|
|
17
22
|
_modelService,
|
|
18
23
|
_resolverService,
|
|
19
|
-
_languageStatusService
|
|
24
|
+
_languageStatusService,
|
|
25
|
+
_textMateService,
|
|
26
|
+
themeService
|
|
20
27
|
) {
|
|
21
28
|
super();
|
|
22
29
|
this._languageService = _languageService;
|
|
23
30
|
this._modelService = _modelService;
|
|
24
31
|
this._resolverService = _resolverService;
|
|
25
32
|
this._languageStatusService = _languageStatusService;
|
|
33
|
+
this._textMateService = _textMateService;
|
|
26
34
|
this._status = this._register(( new DisposableMap()));
|
|
27
35
|
this._proxy = ( _extHostContext.getProxy(ExtHostContext.ExtHostLanguages));
|
|
28
36
|
this._proxy.$acceptLanguageIds(_languageService.getRegisteredLanguageIds());
|
|
29
37
|
this._register(_languageService.onDidChange(_ => {
|
|
30
38
|
this._proxy.$acceptLanguageIds(_languageService.getRegisteredLanguageIds());
|
|
31
39
|
}));
|
|
40
|
+
this._register(themeService.onDidColorThemeChange(() => {
|
|
41
|
+
this._proxy.$acceptSyntaxHighlightingThemeChanged();
|
|
42
|
+
}));
|
|
32
43
|
}
|
|
33
44
|
async $changeLanguage(resource, languageId) {
|
|
34
45
|
if (!this._languageService.isRegisteredLanguageId(languageId)) {
|
|
@@ -61,6 +72,54 @@ let MainThreadLanguages = class MainThreadLanguages extends Disposable {
|
|
|
61
72
|
))
|
|
62
73
|
};
|
|
63
74
|
}
|
|
75
|
+
async $computeFullSyntaxHighlighting(source, languageId) {
|
|
76
|
+
const colorMap = ( (TokenizationRegistry.getColorMap() ?? []).map(c => c ? Color.Format.CSS.formatHexA(c) : ""));
|
|
77
|
+
const resolvedLanguageId = this._languageService.isRegisteredLanguageId(languageId) ? languageId : this._languageService.getLanguageIdByLanguageName(languageId);
|
|
78
|
+
const grammar = resolvedLanguageId ? await this._textMateService.createTokenizer(resolvedLanguageId) : null;
|
|
79
|
+
if (!grammar) {
|
|
80
|
+
const tokens = source.length === 0 ? [] : [{
|
|
81
|
+
length: source.length,
|
|
82
|
+
foreground: 0,
|
|
83
|
+
fontStyle: FontStyle.None
|
|
84
|
+
}];
|
|
85
|
+
return {
|
|
86
|
+
tokens,
|
|
87
|
+
colorMap
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const tokens = [];
|
|
91
|
+
const lines = source.split("\n");
|
|
92
|
+
let state = null;
|
|
93
|
+
for (let i = 0; i < lines.length; i++) {
|
|
94
|
+
const line = lines[i];
|
|
95
|
+
const result = grammar.tokenizeLine2(line, state, 500);
|
|
96
|
+
state = result.ruleStack;
|
|
97
|
+
const binary = result.tokens;
|
|
98
|
+
for (let j = 0; j < binary.length; j += 2) {
|
|
99
|
+
const startOffset = binary[j];
|
|
100
|
+
const metadata = binary[j + 1];
|
|
101
|
+
const endOffset = j + 2 < binary.length ? binary[j + 2] : line.length;
|
|
102
|
+
if (endOffset > startOffset) {
|
|
103
|
+
tokens.push({
|
|
104
|
+
length: endOffset - startOffset,
|
|
105
|
+
foreground: TokenMetadata.getForeground(metadata),
|
|
106
|
+
fontStyle: TokenMetadata.getFontStyle(metadata)
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (i < lines.length - 1) {
|
|
111
|
+
tokens.push({
|
|
112
|
+
length: 1,
|
|
113
|
+
foreground: 0,
|
|
114
|
+
fontStyle: FontStyle.None
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
tokens,
|
|
120
|
+
colorMap
|
|
121
|
+
};
|
|
122
|
+
}
|
|
64
123
|
$setLanguageStatus(handle, status) {
|
|
65
124
|
this._status.set(handle, this._languageStatusService.addStatus(status));
|
|
66
125
|
}
|
|
@@ -68,6 +127,6 @@ let MainThreadLanguages = class MainThreadLanguages extends Disposable {
|
|
|
68
127
|
this._status.deleteAndDispose(handle);
|
|
69
128
|
}
|
|
70
129
|
};
|
|
71
|
-
MainThreadLanguages = __decorate([extHostNamedCustomer(MainContext.MainThreadLanguages), ( __param(1, ILanguageService)), ( __param(2, IModelService)), ( __param(3, ITextModelService)), ( __param(4, ILanguageStatusService))], MainThreadLanguages);
|
|
130
|
+
MainThreadLanguages = __decorate([extHostNamedCustomer(MainContext.MainThreadLanguages), ( __param(1, ILanguageService)), ( __param(2, IModelService)), ( __param(3, ITextModelService)), ( __param(4, ILanguageStatusService)), ( __param(5, ITextMateTokenizationService)), ( __param(6, IThemeService))], MainThreadLanguages);
|
|
72
131
|
|
|
73
132
|
export { MainThreadLanguages };
|
|
@@ -246,7 +246,7 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
246
246
|
const resource = authDetails.resourceMetadata?.resource;
|
|
247
247
|
if (!resource) {
|
|
248
248
|
throw ( new Error(( localize(
|
|
249
|
-
|
|
249
|
+
2775,
|
|
250
250
|
"The enterprise-managed MCP server '{0}' did not advertise a protected-resource metadata document with a 'resource' identifier.",
|
|
251
251
|
server.label
|
|
252
252
|
))));
|
|
@@ -255,7 +255,7 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
255
255
|
const audience = resourceAuthServers[0];
|
|
256
256
|
if (!audience) {
|
|
257
257
|
throw ( new Error(( localize(
|
|
258
|
-
|
|
258
|
+
2776,
|
|
259
259
|
"The enterprise-managed MCP server '{0}' did not advertise an `authorization_servers` entry in its protected-resource metadata.",
|
|
260
260
|
server.label
|
|
261
261
|
))));
|
|
@@ -342,7 +342,7 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
342
342
|
const configuredIssuer = config.issuer?.trim();
|
|
343
343
|
if (!configuredIssuer) {
|
|
344
344
|
throw ( new Error(( localize(
|
|
345
|
-
|
|
345
|
+
2777,
|
|
346
346
|
"Enterprise-managed MCP authentication requires `mcp.enterpriseManagedAuth.idp.issuer` to be configured. Set it via enterprise policy (Windows Group Policy / macOS managed preferences / Linux `/etc/vscode/policy.json`) or, for local testing, by hand-editing `settings.json`."
|
|
347
347
|
))));
|
|
348
348
|
}
|
|
@@ -351,14 +351,14 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
351
351
|
parsed = ( URI.parse(configuredIssuer));
|
|
352
352
|
} catch {
|
|
353
353
|
throw ( new Error(( localize(
|
|
354
|
-
|
|
354
|
+
2778,
|
|
355
355
|
"Enterprise-managed MCP authentication requires `mcp.enterpriseManagedAuth.idp.issuer` to be a valid URL; got '{0}'.",
|
|
356
356
|
configuredIssuer
|
|
357
357
|
))));
|
|
358
358
|
}
|
|
359
359
|
if (parsed.scheme !== "https" && parsed.scheme !== "http") {
|
|
360
360
|
throw ( new Error(( localize(
|
|
361
|
-
|
|
361
|
+
2779,
|
|
362
362
|
"Enterprise-managed MCP authentication requires `mcp.enterpriseManagedAuth.idp.issuer` to use the `https` or `http` scheme; got '{0}'.",
|
|
363
363
|
configuredIssuer
|
|
364
364
|
))));
|
|
@@ -460,9 +460,9 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
460
460
|
}
|
|
461
461
|
async continueWithIncorrectAccountPrompt(chosenAccountLabel, requestedAccountLabel) {
|
|
462
462
|
const result = await this.dialogService.prompt({
|
|
463
|
-
message: ( localize(
|
|
463
|
+
message: ( localize(2780, "Incorrect account detected")),
|
|
464
464
|
detail: ( localize(
|
|
465
|
-
|
|
465
|
+
2781,
|
|
466
466
|
"The chosen account, {0}, does not match the requested account, {1}.",
|
|
467
467
|
chosenAccountLabel,
|
|
468
468
|
requestedAccountLabel
|
|
@@ -470,10 +470,10 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
470
470
|
type: Severity.Warning,
|
|
471
471
|
cancelButton: true,
|
|
472
472
|
buttons: [{
|
|
473
|
-
label: ( localize(
|
|
473
|
+
label: ( localize(2782, "Keep {0}", chosenAccountLabel)),
|
|
474
474
|
run: () => chosenAccountLabel
|
|
475
475
|
}, {
|
|
476
|
-
label: ( localize(
|
|
476
|
+
label: ( localize(2783, "Login with {0}", requestedAccountLabel)),
|
|
477
477
|
run: () => requestedAccountLabel
|
|
478
478
|
}]
|
|
479
479
|
});
|
|
@@ -505,7 +505,7 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
505
505
|
} catch (e) {
|
|
506
506
|
if (UserInteractionRequiredError.is(e)) {
|
|
507
507
|
server.pushLog(LogLevel.Warning, ( localize(
|
|
508
|
-
|
|
508
|
+
2784,
|
|
509
509
|
"Authentication session for {0} removed, stopping server",
|
|
510
510
|
providerLabel
|
|
511
511
|
)));
|
|
@@ -552,18 +552,18 @@ let MainThreadMcp = class MainThreadMcp extends Disposable {
|
|
|
552
552
|
}
|
|
553
553
|
async loginPrompt(mcpLabel, providerLabel, recreatingSession) {
|
|
554
554
|
const message = recreatingSession ? ( localize(
|
|
555
|
-
|
|
555
|
+
2785,
|
|
556
556
|
"The MCP Server Definition '{0}' wants you to authenticate to {1}.",
|
|
557
557
|
mcpLabel,
|
|
558
558
|
providerLabel
|
|
559
559
|
)) : ( localize(
|
|
560
|
-
|
|
560
|
+
2786,
|
|
561
561
|
"The MCP Server Definition '{0}' wants to authenticate to {1}.",
|
|
562
562
|
mcpLabel,
|
|
563
563
|
providerLabel
|
|
564
564
|
));
|
|
565
565
|
const buttons = [{
|
|
566
|
-
label: ( localize(
|
|
566
|
+
label: ( localize(2787, "&&Allow")),
|
|
567
567
|
run() {
|
|
568
568
|
return true;
|
|
569
569
|
}
|
|
@@ -66,13 +66,13 @@ let MainThreadMessageService = class MainThreadMessageService {
|
|
|
66
66
|
sourceIsUrgent = MainThreadMessageService_1.URGENT_NOTIFICATION_SOURCES.includes(source.id);
|
|
67
67
|
}
|
|
68
68
|
if (!source) {
|
|
69
|
-
source = ( localize(
|
|
69
|
+
source = ( localize(2788, "Extension"));
|
|
70
70
|
}
|
|
71
71
|
const secondaryActions = [];
|
|
72
72
|
if (options.source) {
|
|
73
73
|
secondaryActions.push(toAction({
|
|
74
74
|
id: options.source.identifier.value,
|
|
75
|
-
label: ( localize(
|
|
75
|
+
label: ( localize(2789, "Manage Extension")),
|
|
76
76
|
run: () => {
|
|
77
77
|
return this._commandService.executeCommand("_extensions.manage", options.source.identifier.value);
|
|
78
78
|
}
|
|
@@ -111,12 +111,12 @@ let MainThreadMessageService = class MainThreadMessageService {
|
|
|
111
111
|
if (!cancelButton) {
|
|
112
112
|
if (buttons.length > 0) {
|
|
113
113
|
cancelButton = {
|
|
114
|
-
label: ( localize(
|
|
114
|
+
label: ( localize(2790, "Cancel")),
|
|
115
115
|
run: () => undefined
|
|
116
116
|
};
|
|
117
117
|
} else {
|
|
118
118
|
cancelButton = {
|
|
119
|
-
label: ( localize(
|
|
119
|
+
label: ( localize(2791, "&&OK")),
|
|
120
120
|
run: () => undefined
|
|
121
121
|
};
|
|
122
122
|
}
|
|
@@ -18,7 +18,7 @@ class ExtHostNotebookDocumentSaveParticipant {
|
|
|
18
18
|
}
|
|
19
19
|
let _warningTimeout;
|
|
20
20
|
const p = ( new Promise((resolve, reject) => {
|
|
21
|
-
_warningTimeout = setTimeout(() => reject(( new Error(( localize(
|
|
21
|
+
_warningTimeout = setTimeout(() => reject(( new Error(( localize(2792, "Aborted onWillSaveNotebookDocument-event after 1750ms"))))), 1750);
|
|
22
22
|
this._proxy.$participateInSave(workingCopy.resource, context.reason, token).then(_ => {
|
|
23
23
|
clearTimeout(_warningTimeout);
|
|
24
24
|
return undefined;
|
|
@@ -94,11 +94,11 @@ let MainThreadOutputService = class MainThreadOutputService extends Disposable {
|
|
|
94
94
|
}
|
|
95
95
|
_showChannelQuietly(channel) {
|
|
96
96
|
const statusProperties = {
|
|
97
|
-
name: ( localize(
|
|
97
|
+
name: ( localize(2793, "Show Output")),
|
|
98
98
|
text: "$(output)",
|
|
99
|
-
ariaLabel: ( localize(
|
|
99
|
+
ariaLabel: ( localize(2794, "Show {0} Output Channel", channel.label)),
|
|
100
100
|
command: `workbench.action.output.show.${channel.id}`,
|
|
101
|
-
tooltip: ( localize(
|
|
101
|
+
tooltip: ( localize(2795, "Show {0} Output Channel", channel.label)),
|
|
102
102
|
kind: "prominent"
|
|
103
103
|
};
|
|
104
104
|
if (!this._outputStatusItem.value) {
|
|
@@ -38,7 +38,7 @@ let MainThreadProgress = class MainThreadProgress {
|
|
|
38
38
|
location: ProgressLocation.Notification,
|
|
39
39
|
secondaryActions: [toAction({
|
|
40
40
|
id: extensionId,
|
|
41
|
-
label: ( localize(
|
|
41
|
+
label: ( localize(2796, "Manage Extension")),
|
|
42
42
|
run: () => this._commandService.executeCommand("_extensions.manage", extensionId)
|
|
43
43
|
})]
|
|
44
44
|
};
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { UriComponents } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
2
|
import { IDocumentFilterDto, MainThreadQuickDiffShape } from "@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol";
|
|
3
3
|
import { IQuickDiffService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/quickDiff.service";
|
|
4
|
+
import { IQuickDiffModelService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/browser/quickDiffModel.service";
|
|
4
5
|
import { IExtHostContext } from "../../services/extensions/common/extHostCustomers.js";
|
|
5
6
|
export declare class MainThreadQuickDiff implements MainThreadQuickDiffShape {
|
|
6
7
|
private readonly quickDiffService;
|
|
8
|
+
private readonly quickDiffModelService;
|
|
7
9
|
private readonly proxy;
|
|
8
10
|
private providerDisposables;
|
|
9
|
-
|
|
11
|
+
private informationDisposables;
|
|
12
|
+
constructor(extHostContext: IExtHostContext, quickDiffService: IQuickDiffService, quickDiffModelService: IQuickDiffModelService);
|
|
10
13
|
$registerQuickDiffProvider(handle: number, selector: IDocumentFilterDto[], id: string, label: string, rootUri: UriComponents | undefined): Promise<void>;
|
|
11
14
|
$unregisterQuickDiffProvider(handle: number): Promise<void>;
|
|
15
|
+
$createSourceControlDiffInformation(handle: number, uri: UriComponents): Promise<void>;
|
|
16
|
+
$disposeSourceControlDiffInformation(handle: number): Promise<void>;
|
|
17
|
+
private sendSourceControlDiffInformation;
|
|
12
18
|
dispose(): void;
|
|
13
19
|
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
4
|
-
import { DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import { DisposableMap, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
5
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
6
6
|
import { ExtHostContext, MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol';
|
|
7
7
|
import { IQuickDiffService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/quickDiff.service';
|
|
8
|
+
import { IQuickDiffModelService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/browser/quickDiffModel.service';
|
|
8
9
|
import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
|
|
9
10
|
|
|
10
11
|
let MainThreadQuickDiff = class MainThreadQuickDiff {
|
|
11
|
-
constructor(extHostContext, quickDiffService) {
|
|
12
|
+
constructor(extHostContext, quickDiffService, quickDiffModelService) {
|
|
12
13
|
this.quickDiffService = quickDiffService;
|
|
14
|
+
this.quickDiffModelService = quickDiffModelService;
|
|
13
15
|
this.providerDisposables = ( new DisposableMap());
|
|
16
|
+
this.informationDisposables = ( new DisposableMap());
|
|
14
17
|
this.proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostQuickDiff));
|
|
15
18
|
}
|
|
16
19
|
async $registerQuickDiffProvider(handle, selector, id, label, rootUri) {
|
|
@@ -34,10 +37,50 @@ let MainThreadQuickDiff = class MainThreadQuickDiff {
|
|
|
34
37
|
this.providerDisposables.deleteAndDispose(handle);
|
|
35
38
|
}
|
|
36
39
|
}
|
|
40
|
+
async $createSourceControlDiffInformation(handle, uri) {
|
|
41
|
+
const reference = this.quickDiffModelService.createQuickDiffModelReference(URI.revive(uri));
|
|
42
|
+
if (!reference) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const store = ( new DisposableStore());
|
|
46
|
+
store.add(reference);
|
|
47
|
+
store.add(
|
|
48
|
+
reference.object.onDidChange(() => this.sendSourceControlDiffInformation(handle, reference))
|
|
49
|
+
);
|
|
50
|
+
this.informationDisposables.set(handle, store);
|
|
51
|
+
this.sendSourceControlDiffInformation(handle, reference);
|
|
52
|
+
}
|
|
53
|
+
async $disposeSourceControlDiffInformation(handle) {
|
|
54
|
+
if (( this.informationDisposables.has(handle))) {
|
|
55
|
+
this.informationDisposables.deleteAndDispose(handle);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
sendSourceControlDiffInformation(handle, reference) {
|
|
59
|
+
const model = reference.object;
|
|
60
|
+
const primaryResult = model.getQuickDiffResults().find(result => result.providerKind === "primary");
|
|
61
|
+
if (!primaryResult) {
|
|
62
|
+
this.proxy.$acceptSourceControlDiffInformation(handle, undefined);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const changes = ( primaryResult.changes2.map(change => [
|
|
66
|
+
change.original.startLineNumber,
|
|
67
|
+
change.original.endLineNumberExclusive,
|
|
68
|
+
change.modified.startLineNumber,
|
|
69
|
+
change.modified.endLineNumberExclusive
|
|
70
|
+
]));
|
|
71
|
+
const diffInformation = {
|
|
72
|
+
documentVersion: model.changesVersionId,
|
|
73
|
+
original: primaryResult.original,
|
|
74
|
+
modified: primaryResult.modified,
|
|
75
|
+
changes
|
|
76
|
+
};
|
|
77
|
+
this.proxy.$acceptSourceControlDiffInformation(handle, diffInformation);
|
|
78
|
+
}
|
|
37
79
|
dispose() {
|
|
38
80
|
this.providerDisposables.dispose();
|
|
81
|
+
this.informationDisposables.dispose();
|
|
39
82
|
}
|
|
40
83
|
};
|
|
41
|
-
MainThreadQuickDiff = __decorate([extHostNamedCustomer(MainContext.MainThreadQuickDiff), ( __param(1, IQuickDiffService))], MainThreadQuickDiff);
|
|
84
|
+
MainThreadQuickDiff = __decorate([extHostNamedCustomer(MainContext.MainThreadQuickDiff), ( __param(1, IQuickDiffService)), ( __param(2, IQuickDiffModelService))], MainThreadQuickDiff);
|
|
42
85
|
|
|
43
86
|
export { MainThreadQuickDiff };
|
|
@@ -17,7 +17,7 @@ class ExtHostSaveParticipant {
|
|
|
17
17
|
return undefined;
|
|
18
18
|
}
|
|
19
19
|
const p = ( new Promise((resolve, reject) => {
|
|
20
|
-
setTimeout(() => reject(( new Error(( localize(
|
|
20
|
+
setTimeout(() => reject(( new Error(( localize(2797, "Aborted onWillSaveTextDocument-event after 1750ms"))))), 1750);
|
|
21
21
|
this._proxy.$participateInSave(editorModel.resource, context.reason).then(values => {
|
|
22
22
|
if (!values.every(success => success)) {
|
|
23
23
|
return Promise.reject(( new Error("listener failed")));
|
|
@@ -397,7 +397,7 @@ var TaskDTO;
|
|
|
397
397
|
}
|
|
398
398
|
command.presentation = TaskPresentationOptionsDTO.to(task.presentationOptions);
|
|
399
399
|
const source = TaskSourceDTO.to(task.source, workspace);
|
|
400
|
-
const label = ( localize(
|
|
400
|
+
const label = ( localize(2798, "{0}: {1}", source.label, task.name));
|
|
401
401
|
const definition = TaskDefinitionDTO.to(task.definition, executeOnly);
|
|
402
402
|
const id = (CustomExecutionDTO.is(task.execution) && task._id) ? task._id : `${task.source.extensionId}.${definition._key}`;
|
|
403
403
|
const result = ( new ContributedTask(
|