@codingame/monaco-vscode-api 20.0.1 → 20.1.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/missing-services.js +121 -370
- package/package.json +8 -8
- package/services.js +3 -3
- package/vscode/src/vs/base/browser/ui/tree/asyncDataTree.d.ts +1 -1
- package/vscode/src/vs/base/browser/ui/tree/asyncDataTree.js +5 -3
- package/vscode/src/vs/platform/product/common/product.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorContextKeys.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatContextKeys.js +43 -43
- package/vscode/src/vs/workbench/contrib/chat/common/chatEditingService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatVariableEntries.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/languageModelToolsService.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/languageModels.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/common/modelPicker/modelPickerWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.js +36 -9
- package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/dictation/editorDictation.js +4 -4
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorAccessibilityHelp.js +5 -5
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +3 -3
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +3 -3
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +4 -4
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js +2 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js +2 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js +2 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +5 -5
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsAccessibility.js +12 -12
- package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +11 -11
- package/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.js +1 -1
- package/vscode/src/vs/workbench/contrib/debug/common/debug.js +65 -65
- package/vscode/src/vs/workbench/contrib/extensions/common/extensions.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/common/searchExtensionsTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/files/browser/fileConstants.js +6 -6
- package/vscode/src/vs/workbench/contrib/folding/browser/folding.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.js +20 -20
- package/vscode/src/vs/workbench/contrib/format/browser/formatActionsNone.js +4 -4
- package/vscode/src/vs/workbench/contrib/format/browser/formatModified.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlayHints/browser/inlayHintsAccessibilty.js +4 -4
- package/vscode/src/vs/workbench/contrib/list/browser/listResizeColumnAction.js +2 -2
- package/vscode/src/vs/workbench/contrib/list/browser/tableColumnResizeQuickPick.js +5 -5
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpTypes.js +4 -4
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js +3 -3
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.js +3 -3
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.js +9 -9
- package/vscode/src/vs/workbench/contrib/speech/common/speechService.js +29 -29
- package/vscode/src/vs/workbench/contrib/tasks/common/constants.js +1 -1
- package/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js +5 -5
- package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +4 -4
- package/vscode/src/vs/workbench/contrib/testing/common/constants.js +11 -11
- package/vscode/src/vs/workbench/contrib/testing/common/testTypes.js +3 -3
- package/vscode/src/vs/workbench/services/accounts/common/defaultAccount.js +1 -1
- package/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.js +16 -16
- package/vscode/src/vs/workbench/services/editor/common/editorResolverService.js +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.js +86 -86
- package/vscode/src/vs/workbench/services/language/common/languageService.js +28 -28
- package/vscode/src/vs/workbench/services/log/common/logConstants.js +1 -1
- package/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.js +8 -8
- package/vscode/src/vs/workbench/services/remote/common/tunnelModel.js +6 -6
- package/vscode/src/vs/workbench/services/search/common/queryBuilder.js +1 -1
- package/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.js +22 -22
- package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +13 -13
- package/vscode/src/vs/workbench/services/userDataSync/common/userDataSync.js +13 -13
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-api",
|
|
3
|
-
"version": "20.0
|
|
3
|
+
"version": "20.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-base-service-override": "20.0
|
|
19
|
-
"@codingame/monaco-vscode-environment-service-override": "20.0
|
|
20
|
-
"@codingame/monaco-vscode-extensions-service-override": "20.0
|
|
21
|
-
"@codingame/monaco-vscode-files-service-override": "20.0
|
|
22
|
-
"@codingame/monaco-vscode-host-service-override": "20.0
|
|
23
|
-
"@codingame/monaco-vscode-layout-service-override": "20.0
|
|
24
|
-
"@codingame/monaco-vscode-quickaccess-service-override": "20.0
|
|
18
|
+
"@codingame/monaco-vscode-base-service-override": "20.1.0",
|
|
19
|
+
"@codingame/monaco-vscode-environment-service-override": "20.1.0",
|
|
20
|
+
"@codingame/monaco-vscode-extensions-service-override": "20.1.0",
|
|
21
|
+
"@codingame/monaco-vscode-files-service-override": "20.1.0",
|
|
22
|
+
"@codingame/monaco-vscode-host-service-override": "20.1.0",
|
|
23
|
+
"@codingame/monaco-vscode-layout-service-override": "20.1.0",
|
|
24
|
+
"@codingame/monaco-vscode-quickaccess-service-override": "20.1.0",
|
|
25
25
|
"@vscode/iconv-lite-umd": "0.7.0",
|
|
26
26
|
"dompurify": "3.2.6",
|
|
27
27
|
"jschardet": "3.1.4",
|
package/services.js
CHANGED
|
@@ -392,10 +392,10 @@ export { IAuthenticationQueryService } from './vscode/src/vs/workbench/services/
|
|
|
392
392
|
export { ICoreExperimentationService } from './vscode/src/vs/workbench/services/coreExperimentation/common/coreExperimentationService.service.js';
|
|
393
393
|
export { IWorkbenchMcpManagementService } from './vscode/src/vs/workbench/services/mcp/common/mcpWorkbenchManagementService.service.js';
|
|
394
394
|
|
|
395
|
-
if (window.monacoVscodeApiBuildId != null && window.monacoVscodeApiBuildId !== "
|
|
396
|
-
throw new Error(`Another version of monaco-vscode-api has already been loaded. Trying to load ${"
|
|
395
|
+
if (window.monacoVscodeApiBuildId != null && window.monacoVscodeApiBuildId !== "360a4e4fd251bfce169a4ddf857c7d25d1ad40da-dea6a18f-c2be-44e0-985d-baca49cc4f0b") {
|
|
396
|
+
throw new Error(`Another version of monaco-vscode-api has already been loaded. Trying to load ${"360a4e4fd251bfce169a4ddf857c7d25d1ad40da-dea6a18f-c2be-44e0-985d-baca49cc4f0b"}, ${window.monacoVscodeApiBuildId} is already loaded`);
|
|
397
397
|
}
|
|
398
|
-
window.monacoVscodeApiBuildId = "
|
|
398
|
+
window.monacoVscodeApiBuildId = "360a4e4fd251bfce169a4ddf857c7d25d1ad40da-dea6a18f-c2be-44e0-985d-baca49cc4f0b";
|
|
399
399
|
async function initialize(overrides, container = document.body, configuration = {}, env) {
|
|
400
400
|
checkServicesNotInitialized();
|
|
401
401
|
injectCss(container);
|
|
@@ -129,7 +129,7 @@ export declare class AsyncDataTree<TInput, T, TFilterData = void> implements IDi
|
|
|
129
129
|
getInput(): TInput | undefined;
|
|
130
130
|
setInput(input: TInput, viewState?: IAsyncDataTreeViewState): Promise<void>;
|
|
131
131
|
updateChildren(element?: TInput | T, recursive?: boolean, rerender?: boolean, options?: IAsyncDataTreeUpdateChildrenOptions<T>): Promise<void>;
|
|
132
|
-
cancelAllRefreshPromises(): void;
|
|
132
|
+
cancelAllRefreshPromises(includeSubTrees?: boolean): void;
|
|
133
133
|
private _updateChildren;
|
|
134
134
|
resort(element?: TInput | T, recursive?: boolean): void;
|
|
135
135
|
hasNode(element: TInput | T): boolean;
|
|
@@ -546,11 +546,13 @@ class AsyncDataTree {
|
|
|
546
546
|
async updateChildren(element = this.root.element, recursive = true, rerender = false, options) {
|
|
547
547
|
await this._updateChildren(element, recursive, rerender, undefined, options);
|
|
548
548
|
}
|
|
549
|
-
cancelAllRefreshPromises() {
|
|
549
|
+
cancelAllRefreshPromises(includeSubTrees = false) {
|
|
550
550
|
this.refreshPromises.forEach(promise => promise.cancel());
|
|
551
551
|
this.refreshPromises.clear();
|
|
552
|
-
|
|
553
|
-
|
|
552
|
+
if (includeSubTrees) {
|
|
553
|
+
this.subTreeRefreshPromises.forEach(promise => promise.cancel());
|
|
554
|
+
this.subTreeRefreshPromises.clear();
|
|
555
|
+
}
|
|
554
556
|
}
|
|
555
557
|
async _updateChildren(element = this.root.element, recursive = true, rerender = false, viewStateContext, options) {
|
|
556
558
|
if (typeof this.root.element === 'undefined') {
|
|
@@ -4,9 +4,9 @@ import productJson from '../../../../../product.json.js';
|
|
|
4
4
|
var product = {
|
|
5
5
|
...productJson,
|
|
6
6
|
quality: 'stable',
|
|
7
|
-
version: '1.103.
|
|
8
|
-
commit: '
|
|
9
|
-
date: '2025-08-
|
|
7
|
+
version: '1.103.1',
|
|
8
|
+
commit: 'null',
|
|
9
|
+
date: '2025-08-14T12:29:39.549Z',
|
|
10
10
|
...(globalThis._VSCODE_PRODUCT_JSON ?? {})
|
|
11
11
|
};
|
|
12
12
|
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorContextKeys.js
CHANGED
|
@@ -17,14 +17,14 @@ import { autorun } from '../../../../../base/common/observableInternal/reactions
|
|
|
17
17
|
import { constObservable } from '../../../../../base/common/observableInternal/observables/constObservable.js';
|
|
18
18
|
import { derived } from '../../../../../base/common/observableInternal/observables/derived.js';
|
|
19
19
|
|
|
20
|
-
const ctxIsGlobalEditingSession = ( new RawContextKey('chatEdits.isGlobalEditingSession', undefined, ( localize(
|
|
21
|
-
const ctxHasEditorModification = ( new RawContextKey('chatEdits.hasEditorModifications', undefined, ( localize(
|
|
22
|
-
const ctxReviewModeEnabled = ( new RawContextKey('chatEdits.isReviewModeEnabled', true, ( localize(
|
|
20
|
+
const ctxIsGlobalEditingSession = ( new RawContextKey('chatEdits.isGlobalEditingSession', undefined, ( localize(4940, "The current editor is part of the global edit session"))));
|
|
21
|
+
const ctxHasEditorModification = ( new RawContextKey('chatEdits.hasEditorModifications', undefined, ( localize(4941, "The current editor contains chat modifications"))));
|
|
22
|
+
const ctxReviewModeEnabled = ( new RawContextKey('chatEdits.isReviewModeEnabled', true, ( localize(4942, "Review mode for chat changes is enabled"))));
|
|
23
23
|
const ctxHasRequestInProgress = ( new RawContextKey('chatEdits.isRequestInProgress', false, ( localize(
|
|
24
|
-
|
|
24
|
+
4943,
|
|
25
25
|
"The current editor shows a file from an edit session which is still in progress"
|
|
26
26
|
))));
|
|
27
|
-
const ctxRequestCount = ( new RawContextKey('chatEdits.requestCount', 0, ( localize(
|
|
27
|
+
const ctxRequestCount = ( new RawContextKey('chatEdits.requestCount', 0, ( localize(4944, "The number of turns the editing session in this editor has"))));
|
|
28
28
|
let ChatEditingEditorContextKeys = class ChatEditingEditorContextKeys {
|
|
29
29
|
static { this.ID = 'chat.edits.editorContextKeys'; }
|
|
30
30
|
constructor(instaService, editorGroupsService) {
|
|
@@ -11,109 +11,109 @@ var ChatContextKeys;
|
|
|
11
11
|
'chatSessionResponseVote',
|
|
12
12
|
'',
|
|
13
13
|
{ type: 'string', description: ( localize(
|
|
14
|
-
|
|
14
|
+
5354,
|
|
15
15
|
"When the response has been voted up, is set to 'up'. When voted down, is set to 'down'. Otherwise an empty string."
|
|
16
16
|
)) }
|
|
17
17
|
));
|
|
18
18
|
ChatContextKeys.responseDetectedAgentCommand = ( new RawContextKey(
|
|
19
19
|
'chatSessionResponseDetectedAgentOrCommand',
|
|
20
20
|
false,
|
|
21
|
-
{ type: 'boolean', description: ( localize(
|
|
21
|
+
{ type: 'boolean', description: ( localize(5355, "When the agent or command was automatically detected")) }
|
|
22
22
|
));
|
|
23
23
|
ChatContextKeys.responseSupportsIssueReporting = ( new RawContextKey(
|
|
24
24
|
'chatResponseSupportsIssueReporting',
|
|
25
25
|
false,
|
|
26
|
-
{ type: 'boolean', description: ( localize(
|
|
26
|
+
{ type: 'boolean', description: ( localize(5356, "True when the current chat response supports issue reporting.")) }
|
|
27
27
|
));
|
|
28
28
|
ChatContextKeys.responseIsFiltered = ( new RawContextKey(
|
|
29
29
|
'chatSessionResponseFiltered',
|
|
30
30
|
false,
|
|
31
|
-
{ type: 'boolean', description: ( localize(
|
|
31
|
+
{ type: 'boolean', description: ( localize(5357, "True when the chat response was filtered out by the server.")) }
|
|
32
32
|
));
|
|
33
33
|
ChatContextKeys.responseHasError = ( new RawContextKey(
|
|
34
34
|
'chatSessionResponseError',
|
|
35
35
|
false,
|
|
36
|
-
{ type: 'boolean', description: ( localize(
|
|
36
|
+
{ type: 'boolean', description: ( localize(5358, "True when the chat response resulted in an error.")) }
|
|
37
37
|
));
|
|
38
38
|
ChatContextKeys.requestInProgress = ( new RawContextKey(
|
|
39
39
|
'chatSessionRequestInProgress',
|
|
40
40
|
false,
|
|
41
|
-
{ type: 'boolean', description: ( localize(
|
|
41
|
+
{ type: 'boolean', description: ( localize(5359, "True when the current request is still in progress.")) }
|
|
42
42
|
));
|
|
43
43
|
ChatContextKeys.currentlyEditing = ( new RawContextKey(
|
|
44
44
|
'chatSessionCurrentlyEditing',
|
|
45
45
|
false,
|
|
46
|
-
{ type: 'boolean', description: ( localize(
|
|
46
|
+
{ type: 'boolean', description: ( localize(5360, "True when the current request is being edited.")) }
|
|
47
47
|
));
|
|
48
48
|
ChatContextKeys.currentlyEditingInput = ( new RawContextKey(
|
|
49
49
|
'chatSessionCurrentlyEditingInput',
|
|
50
50
|
false,
|
|
51
|
-
{ type: 'boolean', description: ( localize(
|
|
51
|
+
{ type: 'boolean', description: ( localize(5361, "True when the current request input at the bottom is being edited.")) }
|
|
52
52
|
));
|
|
53
53
|
ChatContextKeys.isRequestPaused = ( new RawContextKey(
|
|
54
54
|
'chatRequestIsPaused',
|
|
55
55
|
false,
|
|
56
|
-
{ type: 'boolean', description: ( localize(
|
|
56
|
+
{ type: 'boolean', description: ( localize(5362, "True when the current request is paused.")) }
|
|
57
57
|
));
|
|
58
58
|
ChatContextKeys.canRequestBePaused = ( new RawContextKey(
|
|
59
59
|
'chatCanRequestBePaused',
|
|
60
60
|
false,
|
|
61
|
-
{ type: 'boolean', description: ( localize(
|
|
62
|
-
));
|
|
63
|
-
ChatContextKeys.isResponse = ( new RawContextKey('chatResponse', false, { type: 'boolean', description: ( localize(
|
|
64
|
-
ChatContextKeys.isRequest = ( new RawContextKey('chatRequest', false, { type: 'boolean', description: ( localize(
|
|
65
|
-
ChatContextKeys.itemId = ( new RawContextKey('chatItemId', '', { type: 'string', description: ( localize(
|
|
66
|
-
ChatContextKeys.lastItemId = ( new RawContextKey('chatLastItemId', [], { type: 'string', description: ( localize(
|
|
67
|
-
ChatContextKeys.editApplied = ( new RawContextKey('chatEditApplied', false, { type: 'boolean', description: ( localize(
|
|
68
|
-
ChatContextKeys.inputHasText = ( new RawContextKey('chatInputHasText', false, { type: 'boolean', description: ( localize(
|
|
69
|
-
ChatContextKeys.inputHasFocus = ( new RawContextKey('chatInputHasFocus', false, { type: 'boolean', description: ( localize(
|
|
70
|
-
ChatContextKeys.inChatInput = ( new RawContextKey('inChatInput', false, { type: 'boolean', description: ( localize(
|
|
71
|
-
ChatContextKeys.inChatSession = ( new RawContextKey('inChat', false, { type: 'boolean', description: ( localize(
|
|
72
|
-
ChatContextKeys.inChatEditor = ( new RawContextKey('inChatEditor', false, { type: 'boolean', description: ( localize(
|
|
61
|
+
{ type: 'boolean', description: ( localize(5363, "True when the current request can be paused.")) }
|
|
62
|
+
));
|
|
63
|
+
ChatContextKeys.isResponse = ( new RawContextKey('chatResponse', false, { type: 'boolean', description: ( localize(5364, "The chat item is a response.")) }));
|
|
64
|
+
ChatContextKeys.isRequest = ( new RawContextKey('chatRequest', false, { type: 'boolean', description: ( localize(5365, "The chat item is a request")) }));
|
|
65
|
+
ChatContextKeys.itemId = ( new RawContextKey('chatItemId', '', { type: 'string', description: ( localize(5366, "The id of the chat item.")) }));
|
|
66
|
+
ChatContextKeys.lastItemId = ( new RawContextKey('chatLastItemId', [], { type: 'string', description: ( localize(5367, "The id of the last chat item.")) }));
|
|
67
|
+
ChatContextKeys.editApplied = ( new RawContextKey('chatEditApplied', false, { type: 'boolean', description: ( localize(5368, "True when the chat text edits have been applied.")) }));
|
|
68
|
+
ChatContextKeys.inputHasText = ( new RawContextKey('chatInputHasText', false, { type: 'boolean', description: ( localize(5369, "True when the chat input has text.")) }));
|
|
69
|
+
ChatContextKeys.inputHasFocus = ( new RawContextKey('chatInputHasFocus', false, { type: 'boolean', description: ( localize(5370, "True when the chat input has focus.")) }));
|
|
70
|
+
ChatContextKeys.inChatInput = ( new RawContextKey('inChatInput', false, { type: 'boolean', description: ( localize(5371, "True when focus is in the chat input, false otherwise.")) }));
|
|
71
|
+
ChatContextKeys.inChatSession = ( new RawContextKey('inChat', false, { type: 'boolean', description: ( localize(5372, "True when focus is in the chat widget, false otherwise.")) }));
|
|
72
|
+
ChatContextKeys.inChatEditor = ( new RawContextKey('inChatEditor', false, { type: 'boolean', description: ( localize(5373, "Whether focus is in a chat editor.")) }));
|
|
73
73
|
ChatContextKeys.hasPromptFile = ( new RawContextKey(
|
|
74
74
|
'chatPromptFileAttached',
|
|
75
75
|
false,
|
|
76
|
-
{ type: 'boolean', description: ( localize(
|
|
76
|
+
{ type: 'boolean', description: ( localize(5374, "True when the chat has a prompt file attached.")) }
|
|
77
77
|
));
|
|
78
78
|
ChatContextKeys.chatModeKind = ( new RawContextKey(
|
|
79
79
|
'chatMode',
|
|
80
80
|
ChatModeKind.Ask,
|
|
81
|
-
{ type: 'string', description: ( localize(
|
|
81
|
+
{ type: 'string', description: ( localize(5375, "The 'kind' of the current chat mode- Agent for custom modes.")) }
|
|
82
82
|
));
|
|
83
|
-
ChatContextKeys.chatToolCount = ( new RawContextKey('chatToolCount', 0, { type: 'number', description: ( localize(
|
|
83
|
+
ChatContextKeys.chatToolCount = ( new RawContextKey('chatToolCount', 0, { type: 'number', description: ( localize(5376, "The number of tools available in the current chat mode.")) }));
|
|
84
84
|
ChatContextKeys.chatToolGroupingThreshold = ( new RawContextKey(
|
|
85
85
|
'chat.toolGroupingThreshold',
|
|
86
86
|
0,
|
|
87
|
-
{ type: 'number', description: ( localize(
|
|
87
|
+
{ type: 'number', description: ( localize(5377, "The number of tools at which we start doing virtual grouping.")) }
|
|
88
88
|
));
|
|
89
89
|
ChatContextKeys.supported = ( ContextKeyExpr.or(( IsWebContext.negate()), ( RemoteNameContext.notEqualsTo('')), ( ContextKeyExpr.has('config.chat.experimental.serverlessWebEnabled'))));
|
|
90
90
|
ChatContextKeys.enabled = ( new RawContextKey('chatIsEnabled', false, { type: 'boolean', description: ( localize(
|
|
91
|
-
|
|
91
|
+
5378,
|
|
92
92
|
"True when chat is enabled because a default chat participant is activated with an implementation."
|
|
93
93
|
)) }));
|
|
94
94
|
ChatContextKeys.lockedToCodingAgent = ( new RawContextKey(
|
|
95
95
|
'lockedToCodingAgent',
|
|
96
96
|
false,
|
|
97
|
-
{ type: 'boolean', description: ( localize(
|
|
97
|
+
{ type: 'boolean', description: ( localize(5379, "True when the chat widget is locked to the coding agent session.")) }
|
|
98
98
|
));
|
|
99
99
|
ChatContextKeys.extensionParticipantRegistered = ( new RawContextKey(
|
|
100
100
|
'chatPanelExtensionParticipantRegistered',
|
|
101
101
|
false,
|
|
102
102
|
{ type: 'boolean', description: ( localize(
|
|
103
|
-
|
|
103
|
+
5380,
|
|
104
104
|
"True when a default chat participant is registered for the panel from an extension."
|
|
105
105
|
)) }
|
|
106
106
|
));
|
|
107
107
|
ChatContextKeys.panelParticipantRegistered = ( new RawContextKey(
|
|
108
108
|
'chatPanelParticipantRegistered',
|
|
109
109
|
false,
|
|
110
|
-
{ type: 'boolean', description: ( localize(
|
|
110
|
+
{ type: 'boolean', description: ( localize(5381, "True when a default chat participant is registered for the panel.")) }
|
|
111
111
|
));
|
|
112
112
|
ChatContextKeys.chatEditingCanUndo = ( new RawContextKey(
|
|
113
113
|
'chatEditingCanUndo',
|
|
114
114
|
false,
|
|
115
115
|
{ type: 'boolean', description: ( localize(
|
|
116
|
-
|
|
116
|
+
5382,
|
|
117
117
|
"True when it is possible to undo an interaction in the editing panel."
|
|
118
118
|
)) }
|
|
119
119
|
));
|
|
@@ -121,46 +121,46 @@ var ChatContextKeys;
|
|
|
121
121
|
'chatEditingCanRedo',
|
|
122
122
|
false,
|
|
123
123
|
{ type: 'boolean', description: ( localize(
|
|
124
|
-
|
|
124
|
+
5383,
|
|
125
125
|
"True when it is possible to redo an interaction in the editing panel."
|
|
126
126
|
)) }
|
|
127
127
|
));
|
|
128
128
|
ChatContextKeys.languageModelsAreUserSelectable = ( new RawContextKey(
|
|
129
129
|
'chatModelsAreUserSelectable',
|
|
130
130
|
false,
|
|
131
|
-
{ type: 'boolean', description: ( localize(
|
|
131
|
+
{ type: 'boolean', description: ( localize(5384, "True when the chat model can be selected manually by the user.")) }
|
|
132
132
|
));
|
|
133
133
|
ChatContextKeys.extensionInvalid = ( new RawContextKey(
|
|
134
134
|
'chatExtensionInvalid',
|
|
135
135
|
false,
|
|
136
136
|
{ type: 'boolean', description: ( localize(
|
|
137
|
-
|
|
137
|
+
5385,
|
|
138
138
|
"True when the installed chat extension is invalid and needs to be updated."
|
|
139
139
|
)) }
|
|
140
140
|
));
|
|
141
141
|
ChatContextKeys.inputCursorAtTop = ( new RawContextKey('chatCursorAtTop', false));
|
|
142
142
|
ChatContextKeys.inputHasAgent = ( new RawContextKey('chatInputHasAgent', false));
|
|
143
143
|
ChatContextKeys.location = ( new RawContextKey('chatLocation', undefined));
|
|
144
|
-
ChatContextKeys.inQuickChat = ( new RawContextKey('quickChatHasFocus', false, { type: 'boolean', description: ( localize(
|
|
144
|
+
ChatContextKeys.inQuickChat = ( new RawContextKey('quickChatHasFocus', false, { type: 'boolean', description: ( localize(5386, "True when the quick chat UI has focus, false otherwise.")) }));
|
|
145
145
|
ChatContextKeys.hasFileAttachments = ( new RawContextKey(
|
|
146
146
|
'chatHasFileAttachments',
|
|
147
147
|
false,
|
|
148
|
-
{ type: 'boolean', description: ( localize(
|
|
148
|
+
{ type: 'boolean', description: ( localize(5387, "True when the chat has file attachments.")) }
|
|
149
149
|
));
|
|
150
150
|
ChatContextKeys.remoteJobCreating = ( new RawContextKey(
|
|
151
151
|
'chatRemoteJobCreating',
|
|
152
152
|
false,
|
|
153
|
-
{ type: 'boolean', description: ( localize(
|
|
153
|
+
{ type: 'boolean', description: ( localize(5388, "True when a remote coding agent job is being created.")) }
|
|
154
154
|
));
|
|
155
|
-
ChatContextKeys.hasRemoteCodingAgent = ( new RawContextKey('hasRemoteCodingAgent', false, ( localize(
|
|
155
|
+
ChatContextKeys.hasRemoteCodingAgent = ( new RawContextKey('hasRemoteCodingAgent', false, ( localize(5389, "Whether any remote coding agent is available"))));
|
|
156
156
|
ChatContextKeys.enableRemoteCodingAgentPromptFileOverlay = ( new RawContextKey('enableRemoteCodingAgentPromptFileOverlay', false, ( localize(
|
|
157
|
-
|
|
157
|
+
5390,
|
|
158
158
|
"Whether the remote coding agent prompt file overlay feature is enabled"
|
|
159
159
|
))));
|
|
160
160
|
ChatContextKeys.skipChatRequestInProgressMessage = ( new RawContextKey(
|
|
161
161
|
'chatSkipRequestInProgressMessage',
|
|
162
162
|
false,
|
|
163
|
-
{ type: 'boolean', description: ( localize(
|
|
163
|
+
{ type: 'boolean', description: ( localize(5391, "True when the chat request in progress message should be skipped.")) }
|
|
164
164
|
));
|
|
165
165
|
ChatContextKeys.Setup = {
|
|
166
166
|
hidden: ( new RawContextKey('chatSetupHidden', false, true)),
|
|
@@ -184,23 +184,23 @@ var ChatContextKeys;
|
|
|
184
184
|
hasToolConfirmation: ( new RawContextKey(
|
|
185
185
|
'chatHasToolConfirmation',
|
|
186
186
|
false,
|
|
187
|
-
{ type: 'boolean', description: ( localize(
|
|
187
|
+
{ type: 'boolean', description: ( localize(5392, "True when a tool confirmation is present.")) }
|
|
188
188
|
)),
|
|
189
189
|
};
|
|
190
190
|
ChatContextKeys.Tools = {
|
|
191
|
-
toolsCount: ( new RawContextKey('toolsCount', 0, { type: 'number', description: ( localize(
|
|
191
|
+
toolsCount: ( new RawContextKey('toolsCount', 0, { type: 'number', description: ( localize(5393, "The count of tools available in the chat.")) }))
|
|
192
192
|
};
|
|
193
193
|
ChatContextKeys.Modes = {
|
|
194
194
|
hasCustomChatModes: ( new RawContextKey(
|
|
195
195
|
'chatHasCustomChatModes',
|
|
196
196
|
false,
|
|
197
|
-
{ type: 'boolean', description: ( localize(
|
|
197
|
+
{ type: 'boolean', description: ( localize(5394, "True when the chat has custom chat modes available.")) }
|
|
198
198
|
)),
|
|
199
199
|
};
|
|
200
200
|
ChatContextKeys.panelLocation = ( new RawContextKey(
|
|
201
201
|
'chatPanelLocation',
|
|
202
202
|
undefined,
|
|
203
|
-
{ type: 'number', description: ( localize(
|
|
203
|
+
{ type: 'number', description: ( localize(5395, "The location of the chat panel.")) }
|
|
204
204
|
));
|
|
205
205
|
})(ChatContextKeys || (ChatContextKeys = {}));
|
|
206
206
|
var ChatContextKeyExprs;
|
|
@@ -18,9 +18,9 @@ var ChatEditingSessionState;
|
|
|
18
18
|
ChatEditingSessionState[ChatEditingSessionState["Disposed"] = 3] = "Disposed";
|
|
19
19
|
})(ChatEditingSessionState || (ChatEditingSessionState = {}));
|
|
20
20
|
const CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME = 'chat-editing-multi-diff-source';
|
|
21
|
-
const chatEditingWidgetFileStateContextKey = ( new RawContextKey('chatEditingWidgetFileState', undefined, ( localize(
|
|
21
|
+
const chatEditingWidgetFileStateContextKey = ( new RawContextKey('chatEditingWidgetFileState', undefined, ( localize(5396, "The current state of the file in the chat editing widget"))));
|
|
22
22
|
const chatEditingAgentSupportsReadonlyReferencesContextKey = ( new RawContextKey('chatEditingAgentSupportsReadonlyReferences', undefined, ( localize(
|
|
23
|
-
|
|
23
|
+
5397,
|
|
24
24
|
"Whether the chat editing agent supports readonly references (temporary)"
|
|
25
25
|
))));
|
|
26
26
|
const decidedChatEditingResourceContextKey = ( new RawContextKey('decidedChatEditingResource', []));
|
|
@@ -54,9 +54,9 @@ var IDiagnosticVariableEntryFilterData;
|
|
|
54
54
|
}
|
|
55
55
|
return data.problemMessage.substring(0, lastSpace) + '…';
|
|
56
56
|
}
|
|
57
|
-
let labelStr = ( localize(
|
|
57
|
+
let labelStr = ( localize(5420, "All Problems"));
|
|
58
58
|
if (data.filterUri) {
|
|
59
|
-
labelStr = ( localize(
|
|
59
|
+
labelStr = ( localize(5421, "Problems in {0}", basename(data.filterUri)));
|
|
60
60
|
}
|
|
61
61
|
return labelStr;
|
|
62
62
|
}
|
|
@@ -27,16 +27,16 @@ var ToolDataSource;
|
|
|
27
27
|
ToolDataSource.equals = equals;
|
|
28
28
|
function classify(source) {
|
|
29
29
|
if (source.type === 'internal') {
|
|
30
|
-
return { ordinal: 1, label: ( localize(
|
|
30
|
+
return { ordinal: 1, label: ( localize(5425, 'Built-In')) };
|
|
31
31
|
}
|
|
32
32
|
else if (source.type === 'mcp') {
|
|
33
|
-
return { ordinal: 2, label: ( localize(
|
|
33
|
+
return { ordinal: 2, label: ( localize(5426, 'MCP Server: {0}', source.label)) };
|
|
34
34
|
}
|
|
35
35
|
else if (source.type === 'user') {
|
|
36
|
-
return { ordinal: 0, label: ( localize(
|
|
36
|
+
return { ordinal: 0, label: ( localize(5427, 'User Defined')) };
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
return { ordinal: 3, label: ( localize(
|
|
39
|
+
return { ordinal: 3, label: ( localize(5428, 'Extension: {0}', source.label)) };
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
ToolDataSource.classify = classify;
|
|
@@ -59,16 +59,16 @@ const languageModelType = {
|
|
|
59
59
|
properties: {
|
|
60
60
|
vendor: {
|
|
61
61
|
type: 'string',
|
|
62
|
-
description: ( localize(
|
|
62
|
+
description: ( localize(5429, "A globally unique vendor of language models."))
|
|
63
63
|
},
|
|
64
64
|
displayName: {
|
|
65
65
|
type: 'string',
|
|
66
|
-
description: ( localize(
|
|
66
|
+
description: ( localize(5430, "The display name of the language model vendor."))
|
|
67
67
|
},
|
|
68
68
|
managementCommand: {
|
|
69
69
|
type: 'string',
|
|
70
70
|
description: ( localize(
|
|
71
|
-
|
|
71
|
+
5431,
|
|
72
72
|
"A command to manage the language model vendor, e.g. 'Manage Copilot models'. This is used in the chat model picker. If not provided, a gear icon is not rendered during vendor selection."
|
|
73
73
|
))
|
|
74
74
|
}
|
|
@@ -77,7 +77,7 @@ const languageModelType = {
|
|
|
77
77
|
const languageModelExtensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
78
78
|
extensionPoint: 'languageModels',
|
|
79
79
|
jsonSchema: {
|
|
80
|
-
description: ( localize(
|
|
80
|
+
description: ( localize(5432, "Contribute language models of a specific vendor.")),
|
|
81
81
|
oneOf: [
|
|
82
82
|
languageModelType,
|
|
83
83
|
{
|
|
@@ -113,24 +113,24 @@ let LanguageModelsService = class LanguageModelsService {
|
|
|
113
113
|
this._vendors.clear();
|
|
114
114
|
for (const extension of extensions) {
|
|
115
115
|
if (!isProposedApiEnabled(extension.description, 'chatProvider')) {
|
|
116
|
-
extension.collector.error(( localize(
|
|
116
|
+
extension.collector.error(( localize(5433, "This contribution point requires the 'chatProvider' proposal.")));
|
|
117
117
|
continue;
|
|
118
118
|
}
|
|
119
119
|
for (const item of Iterable.wrap(extension.value)) {
|
|
120
120
|
if (( this._vendors.has(item.vendor))) {
|
|
121
121
|
extension.collector.error(( localize(
|
|
122
|
-
|
|
122
|
+
5434,
|
|
123
123
|
"The vendor '{0}' is already registered and cannot be registered twice",
|
|
124
124
|
item.vendor
|
|
125
125
|
)));
|
|
126
126
|
continue;
|
|
127
127
|
}
|
|
128
128
|
if (isFalsyOrWhitespace(item.vendor)) {
|
|
129
|
-
extension.collector.error(( localize(
|
|
129
|
+
extension.collector.error(( localize(5435, "The vendor field cannot be empty.")));
|
|
130
130
|
continue;
|
|
131
131
|
}
|
|
132
132
|
if (item.vendor.trim() !== item.vendor) {
|
|
133
|
-
extension.collector.error(( localize(
|
|
133
|
+
extension.collector.error(( localize(5436, "The vendor field cannot start or end with whitespace.")));
|
|
134
134
|
continue;
|
|
135
135
|
}
|
|
136
136
|
this._vendors.set(item.vendor, item);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { localize } from '../../../../../nls.js';
|
|
3
3
|
|
|
4
|
-
const DEFAULT_MODEL_PICKER_CATEGORY = { label: ( localize(
|
|
4
|
+
const DEFAULT_MODEL_PICKER_CATEGORY = { label: ( localize(5437, "Other Models")), order: Number.MAX_SAFE_INTEGER };
|
|
5
5
|
|
|
6
6
|
export { DEFAULT_MODEL_PICKER_CATEGORY };
|
|
@@ -12,6 +12,7 @@ export declare class ManageTodoListTool extends Disposable implements IToolImpl
|
|
|
12
12
|
constructor(chatTodoListService: IChatTodoListService, logService: ILogService);
|
|
13
13
|
invoke(invocation: IToolInvocation, _countTokens: any, _progress: any, _token: CancellationToken): Promise<IToolResult>;
|
|
14
14
|
prepareToolInvocation(context: IToolInvocationPreparationContext, _token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
15
|
+
private generatePastTenseMessage;
|
|
15
16
|
private handleRead;
|
|
16
17
|
private formatTodoListAsMarkdownTaskList;
|
|
17
18
|
}
|
|
@@ -18,6 +18,7 @@ const ManageTodoListToolData = {
|
|
|
18
18
|
canBeReferencedInPrompt: true,
|
|
19
19
|
icon: ThemeIcon.fromId(Codicon.checklist.id),
|
|
20
20
|
displayName: 'Update Todo List',
|
|
21
|
+
userDescription: 'Manage and track todo items for task planning',
|
|
21
22
|
modelDescription: 'Manage a structured todo list to track progress and plan tasks throughout your coding session. Use this tool VERY frequently to ensure task visibility and proper planning.\n\nWhen to use this tool:\n- Complex multi-step work requiring planning and tracking\n- When user provides multiple tasks or requests (numbered/comma-separated)\n- After receiving new instructions that require multiple steps\n- BEFORE starting work on any todo (mark as in-progress)\n- IMMEDIATELY after completing each todo (mark completed individually)\n- When breaking down larger tasks into smaller actionable steps\n- To give users visibility into your progress and planning\n\nWhen NOT to use:\n- Single, trivial tasks that can be completed in one step\n- Purely conversational/informational requests\n- When just reading files or performing simple searches\n\nCRITICAL workflow:\n1. Plan tasks by writing todo list with specific, actionable items\n2. Mark ONE todo as in-progress before starting work\n3. Complete the work for that specific todo\n4. Mark that todo as completed IMMEDIATELY\n5. Move to next todo and repeat\n\nTodo states:\n- not-started: Todo not yet begun\n- in-progress: Currently working (limit ONE at a time)\n- completed: Finished successfully\n\nIMPORTANT: Mark todos completed as soon as they are done. Do not batch completions.',
|
|
22
23
|
source: ToolDataSource.Internal,
|
|
23
24
|
inputSchema: {
|
|
@@ -40,7 +41,7 @@ const ManageTodoListToolData = {
|
|
|
40
41
|
},
|
|
41
42
|
title: {
|
|
42
43
|
type: 'string',
|
|
43
|
-
description: 'Concise action-oriented todo label (3-
|
|
44
|
+
description: 'Concise action-oriented todo label (3-7 words). Displayed in UI.'
|
|
44
45
|
},
|
|
45
46
|
description: {
|
|
46
47
|
type: 'string',
|
|
@@ -131,17 +132,12 @@ let ManageTodoListTool = class ManageTodoListTool extends Disposable {
|
|
|
131
132
|
switch (args.operation) {
|
|
132
133
|
case 'write': {
|
|
133
134
|
if (args.todoList) {
|
|
134
|
-
|
|
135
|
-
message = 'Creating todo list';
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
message = 'Updating todo list';
|
|
139
|
-
}
|
|
135
|
+
message = this.generatePastTenseMessage(currentTodoItems, args.todoList);
|
|
140
136
|
}
|
|
141
137
|
break;
|
|
142
138
|
}
|
|
143
139
|
case 'read': {
|
|
144
|
-
message = '
|
|
140
|
+
message = 'Read todo list';
|
|
145
141
|
break;
|
|
146
142
|
}
|
|
147
143
|
}
|
|
@@ -153,7 +149,7 @@ let ManageTodoListTool = class ManageTodoListTool extends Disposable {
|
|
|
153
149
|
status: todo.status
|
|
154
150
|
})));
|
|
155
151
|
return {
|
|
156
|
-
|
|
152
|
+
pastTenseMessage: ( new MarkdownString(message ?? 'Updated todo list')),
|
|
157
153
|
toolSpecificData: {
|
|
158
154
|
kind: 'todoList',
|
|
159
155
|
sessionId: context.chatSessionId,
|
|
@@ -161,6 +157,37 @@ let ManageTodoListTool = class ManageTodoListTool extends Disposable {
|
|
|
161
157
|
}
|
|
162
158
|
};
|
|
163
159
|
}
|
|
160
|
+
generatePastTenseMessage(currentTodos, newTodos) {
|
|
161
|
+
if (currentTodos.length === 0) {
|
|
162
|
+
return `Created ${newTodos.length} todo${newTodos.length === 1 ? '' : 's'}`;
|
|
163
|
+
}
|
|
164
|
+
const currentTodoMap = ( new Map(( currentTodos.map(todo => [todo.id, todo]))));
|
|
165
|
+
const startedTodos = newTodos.filter(newTodo => {
|
|
166
|
+
const currentTodo = currentTodoMap.get(newTodo.id);
|
|
167
|
+
return currentTodo && currentTodo.status !== 'in-progress' && newTodo.status === 'in-progress';
|
|
168
|
+
});
|
|
169
|
+
if (startedTodos.length > 0) {
|
|
170
|
+
const startedTodo = startedTodos[0];
|
|
171
|
+
const totalTodos = newTodos.length;
|
|
172
|
+
const currentPosition = newTodos.findIndex(todo => todo.id === startedTodo.id) + 1;
|
|
173
|
+
return `Starting (${currentPosition}/${totalTodos}) *${startedTodo.title}*`;
|
|
174
|
+
}
|
|
175
|
+
const completedTodos = newTodos.filter(newTodo => {
|
|
176
|
+
const currentTodo = currentTodoMap.get(newTodo.id);
|
|
177
|
+
return currentTodo && currentTodo.status !== 'completed' && newTodo.status === 'completed';
|
|
178
|
+
});
|
|
179
|
+
if (completedTodos.length > 0) {
|
|
180
|
+
const completedTodo = completedTodos[0];
|
|
181
|
+
const totalTodos = newTodos.length;
|
|
182
|
+
const currentPosition = newTodos.findIndex(todo => todo.id === completedTodo.id) + 1;
|
|
183
|
+
return `Completed (${currentPosition}/${totalTodos}) *${completedTodo.title}*`;
|
|
184
|
+
}
|
|
185
|
+
const addedTodos = newTodos.filter(newTodo => !( currentTodoMap.has(newTodo.id)));
|
|
186
|
+
if (addedTodos.length > 0) {
|
|
187
|
+
return `Added ${addedTodos.length} todo${addedTodos.length === 1 ? '' : 's'}`;
|
|
188
|
+
}
|
|
189
|
+
return 'Updated todo list';
|
|
190
|
+
}
|
|
164
191
|
handleRead(storage, sessionId) {
|
|
165
192
|
const todoItems = storage.getTodoList(sessionId);
|
|
166
193
|
if (todoItems.length === 0) {
|
|
@@ -18,17 +18,17 @@ const createCodeActionsAutoSave = (description) => {
|
|
|
18
18
|
enum: ['always', 'explicit', 'never', true, false],
|
|
19
19
|
enumDescriptions: [
|
|
20
20
|
( localize(
|
|
21
|
-
|
|
21
|
+
5511,
|
|
22
22
|
'Triggers Code Actions on explicit saves and auto saves triggered by window or focus changes.'
|
|
23
23
|
)),
|
|
24
|
-
( localize(
|
|
25
|
-
( localize(
|
|
24
|
+
( localize(5512, 'Triggers Code Actions only when explicitly saved')),
|
|
25
|
+
( localize(5513, 'Never triggers Code Actions on save')),
|
|
26
26
|
( localize(
|
|
27
|
-
|
|
27
|
+
5514,
|
|
28
28
|
'Triggers Code Actions only when explicitly saved. This value will be deprecated in favor of "explicit".'
|
|
29
29
|
)),
|
|
30
30
|
( localize(
|
|
31
|
-
|
|
31
|
+
5515,
|
|
32
32
|
'Never triggers Code Actions on save. This value will be deprecated in favor of "never".'
|
|
33
33
|
))
|
|
34
34
|
],
|
|
@@ -41,14 +41,14 @@ const createNotebookCodeActionsAutoSave = (description) => {
|
|
|
41
41
|
type: ['string', 'boolean'],
|
|
42
42
|
enum: ['explicit', 'never', true, false],
|
|
43
43
|
enumDescriptions: [
|
|
44
|
-
( localize(
|
|
45
|
-
( localize(
|
|
44
|
+
( localize(5516, 'Triggers Code Actions only when explicitly saved.')),
|
|
45
|
+
( localize(5517, 'Never triggers Code Actions on save.')),
|
|
46
46
|
( localize(
|
|
47
|
-
|
|
47
|
+
5518,
|
|
48
48
|
'Triggers Code Actions only when explicitly saved. This value will be deprecated in favor of "explicit".'
|
|
49
49
|
)),
|
|
50
50
|
( localize(
|
|
51
|
-
|
|
51
|
+
5519,
|
|
52
52
|
'Triggers Code Actions only when explicitly saved. This value will be deprecated in favor of "never".'
|
|
53
53
|
))
|
|
54
54
|
],
|
|
@@ -70,7 +70,7 @@ const codeActionsOnSaveSchema = {
|
|
|
70
70
|
}
|
|
71
71
|
],
|
|
72
72
|
markdownDescription: ( localize(
|
|
73
|
-
|
|
73
|
+
5520,
|
|
74
74
|
'Run Code Actions for the editor on save. Code Actions must be specified and the editor must not be shutting down. When {0} is set to `afterDelay`, Code Actions will only be run when the file is saved explicitly. Example: `"source.organizeImports": "explicit" `',
|
|
75
75
|
'`#files.autoSave#`'
|
|
76
76
|
)),
|
|
@@ -102,7 +102,7 @@ const notebookCodeActionsOnSaveSchema = {
|
|
|
102
102
|
}
|
|
103
103
|
],
|
|
104
104
|
markdownDescription: ( localize(
|
|
105
|
-
|
|
105
|
+
5521,
|
|
106
106
|
'Run a series of Code Actions for a notebook on save. Code Actions must be specified and the editor must not be shutting down. When {0} is set to `afterDelay`, Code Actions will only be run when the file is saved explicitly. Example: `"notebook.source.organizeImports": "explicit"`',
|
|
107
107
|
'`#files.autoSave#`'
|
|
108
108
|
)),
|
|
@@ -150,12 +150,12 @@ let CodeActionsContribution = class CodeActionsContribution extends Disposable {
|
|
|
150
150
|
for (const codeActionKind of allProvidedKinds) {
|
|
151
151
|
if (CodeActionKind.Source.contains(codeActionKind) && !properties[codeActionKind.value]) {
|
|
152
152
|
properties[codeActionKind.value] = createCodeActionsAutoSave(( localize(
|
|
153
|
-
|
|
153
|
+
5522,
|
|
154
154
|
"Controls whether '{0}' actions should be run on file save.",
|
|
155
155
|
codeActionKind.value
|
|
156
156
|
)));
|
|
157
157
|
notebookProperties[codeActionKind.value] = createNotebookCodeActionsAutoSave(( localize(
|
|
158
|
-
|
|
158
|
+
5522,
|
|
159
159
|
"Controls whether '{0}' actions should be run on file save.",
|
|
160
160
|
codeActionKind.value
|
|
161
161
|
)));
|