@codingame/monaco-vscode-chat-service-override 21.3.1 → 21.3.3
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/package.json +38 -38
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +24 -24
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +8 -8
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +6 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +15 -15
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-chat-service-override",
|
|
3
|
-
"version": "21.3.
|
|
3
|
+
"version": "21.3.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - chat service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,43 +15,43 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common": "21.3.
|
|
19
|
-
"@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common": "21.3.
|
|
20
|
-
"@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common": "21.3.
|
|
21
|
-
"@codingame/monaco-vscode-1021b67c-93e5-5c78-a270-cbdb2574d980-common": "21.3.
|
|
22
|
-
"@codingame/monaco-vscode-23b6fb38-5e58-5886-b34b-27abc4f5df02-common": "21.3.
|
|
23
|
-
"@codingame/monaco-vscode-4dda7789-5a25-5e8b-b2de-c2f11b1b96e5-common": "21.3.
|
|
24
|
-
"@codingame/monaco-vscode-4fad3647-b95d-5c19-bab1-bb9de627a5ec-common": "21.3.
|
|
25
|
-
"@codingame/monaco-vscode-5e2c24a1-3217-55e8-bc90-521eaf7df5a6-common": "21.3.
|
|
26
|
-
"@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "21.3.
|
|
27
|
-
"@codingame/monaco-vscode-64322fa2-7385-5f46-935b-8f243d98004b-common": "21.3.
|
|
28
|
-
"@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "21.3.
|
|
29
|
-
"@codingame/monaco-vscode-71c8dbff-4c98-552f-aef0-e72b00fdcfc0-common": "21.3.
|
|
30
|
-
"@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "21.3.
|
|
31
|
-
"@codingame/monaco-vscode-85f7fb0f-70f5-5a5e-831b-15c743a8bd11-common": "21.3.
|
|
32
|
-
"@codingame/monaco-vscode-88141f48-1af9-57ef-a278-f4b2ff6128fa-common": "21.3.
|
|
33
|
-
"@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "21.3.
|
|
34
|
-
"@codingame/monaco-vscode-9a5ab9e7-d838-5831-9eb4-e79ea3764dcb-common": "21.3.
|
|
35
|
-
"@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "21.3.
|
|
36
|
-
"@codingame/monaco-vscode-a175bd1a-4858-5944-9ae5-fb73305dcb13-common": "21.3.
|
|
37
|
-
"@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "21.3.
|
|
38
|
-
"@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common": "21.3.
|
|
39
|
-
"@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common": "21.3.
|
|
40
|
-
"@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "21.3.
|
|
41
|
-
"@codingame/monaco-vscode-api": "21.3.
|
|
42
|
-
"@codingame/monaco-vscode-b6d52a6d-8c8e-51f5-bcd2-1722295e31d9-common": "21.3.
|
|
43
|
-
"@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "21.3.
|
|
44
|
-
"@codingame/monaco-vscode-bb83fe45-f4c7-5673-b9f1-5c409a63f19c-common": "21.3.
|
|
45
|
-
"@codingame/monaco-vscode-bba55be6-41a2-50cd-a3cc-8bafa35bfa89-common": "21.3.
|
|
46
|
-
"@codingame/monaco-vscode-bc8c28cd-7a80-54a9-af1a-e6b1e7a7f34a-common": "21.3.
|
|
47
|
-
"@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common": "21.3.
|
|
48
|
-
"@codingame/monaco-vscode-d0569cfb-4706-5ad6-b0b0-5115ad8685db-common": "21.3.
|
|
49
|
-
"@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common": "21.3.
|
|
50
|
-
"@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common": "21.3.
|
|
51
|
-
"@codingame/monaco-vscode-e4d0fd26-1b26-5583-b3f7-582e08d7b389-common": "21.3.
|
|
52
|
-
"@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common": "21.3.
|
|
53
|
-
"@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common": "21.3.
|
|
54
|
-
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "21.3.
|
|
18
|
+
"@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common": "21.3.3",
|
|
19
|
+
"@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common": "21.3.3",
|
|
20
|
+
"@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common": "21.3.3",
|
|
21
|
+
"@codingame/monaco-vscode-1021b67c-93e5-5c78-a270-cbdb2574d980-common": "21.3.3",
|
|
22
|
+
"@codingame/monaco-vscode-23b6fb38-5e58-5886-b34b-27abc4f5df02-common": "21.3.3",
|
|
23
|
+
"@codingame/monaco-vscode-4dda7789-5a25-5e8b-b2de-c2f11b1b96e5-common": "21.3.3",
|
|
24
|
+
"@codingame/monaco-vscode-4fad3647-b95d-5c19-bab1-bb9de627a5ec-common": "21.3.3",
|
|
25
|
+
"@codingame/monaco-vscode-5e2c24a1-3217-55e8-bc90-521eaf7df5a6-common": "21.3.3",
|
|
26
|
+
"@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "21.3.3",
|
|
27
|
+
"@codingame/monaco-vscode-64322fa2-7385-5f46-935b-8f243d98004b-common": "21.3.3",
|
|
28
|
+
"@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "21.3.3",
|
|
29
|
+
"@codingame/monaco-vscode-71c8dbff-4c98-552f-aef0-e72b00fdcfc0-common": "21.3.3",
|
|
30
|
+
"@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "21.3.3",
|
|
31
|
+
"@codingame/monaco-vscode-85f7fb0f-70f5-5a5e-831b-15c743a8bd11-common": "21.3.3",
|
|
32
|
+
"@codingame/monaco-vscode-88141f48-1af9-57ef-a278-f4b2ff6128fa-common": "21.3.3",
|
|
33
|
+
"@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "21.3.3",
|
|
34
|
+
"@codingame/monaco-vscode-9a5ab9e7-d838-5831-9eb4-e79ea3764dcb-common": "21.3.3",
|
|
35
|
+
"@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "21.3.3",
|
|
36
|
+
"@codingame/monaco-vscode-a175bd1a-4858-5944-9ae5-fb73305dcb13-common": "21.3.3",
|
|
37
|
+
"@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "21.3.3",
|
|
38
|
+
"@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common": "21.3.3",
|
|
39
|
+
"@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common": "21.3.3",
|
|
40
|
+
"@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "21.3.3",
|
|
41
|
+
"@codingame/monaco-vscode-api": "21.3.3",
|
|
42
|
+
"@codingame/monaco-vscode-b6d52a6d-8c8e-51f5-bcd2-1722295e31d9-common": "21.3.3",
|
|
43
|
+
"@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "21.3.3",
|
|
44
|
+
"@codingame/monaco-vscode-bb83fe45-f4c7-5673-b9f1-5c409a63f19c-common": "21.3.3",
|
|
45
|
+
"@codingame/monaco-vscode-bba55be6-41a2-50cd-a3cc-8bafa35bfa89-common": "21.3.3",
|
|
46
|
+
"@codingame/monaco-vscode-bc8c28cd-7a80-54a9-af1a-e6b1e7a7f34a-common": "21.3.3",
|
|
47
|
+
"@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common": "21.3.3",
|
|
48
|
+
"@codingame/monaco-vscode-d0569cfb-4706-5ad6-b0b0-5115ad8685db-common": "21.3.3",
|
|
49
|
+
"@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common": "21.3.3",
|
|
50
|
+
"@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common": "21.3.3",
|
|
51
|
+
"@codingame/monaco-vscode-e4d0fd26-1b26-5583-b3f7-582e08d7b389-common": "21.3.3",
|
|
52
|
+
"@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common": "21.3.3",
|
|
53
|
+
"@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common": "21.3.3",
|
|
54
|
+
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "21.3.3"
|
|
55
55
|
},
|
|
56
56
|
"main": "index.js",
|
|
57
57
|
"module": "index.js",
|
|
@@ -37,7 +37,7 @@ const editActionMenuItem = {
|
|
|
37
37
|
order: 0,
|
|
38
38
|
command: {
|
|
39
39
|
id: ChatSubmitAction.ID,
|
|
40
|
-
title: ( localize(
|
|
40
|
+
title: ( localize(7804, "Edit Code")),
|
|
41
41
|
},
|
|
42
42
|
when: ( ContextKeyExpr.and(ChatContextKeys.inputHasText, ( CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated()), CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_HAS_AGENT)),
|
|
43
43
|
};
|
|
@@ -46,7 +46,7 @@ const generateActionMenuItem = {
|
|
|
46
46
|
order: 0,
|
|
47
47
|
command: {
|
|
48
48
|
id: ChatSubmitAction.ID,
|
|
49
|
-
title: ( localize(
|
|
49
|
+
title: ( localize(7805, "Generate")),
|
|
50
50
|
},
|
|
51
51
|
when: ( ContextKeyExpr.and(ChatContextKeys.inputHasText, ( CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated()), ( CTX_INLINE_CHAT_EDITING.toNegated()), CTX_INLINE_CHAT_HAS_AGENT)),
|
|
52
52
|
};
|
|
@@ -57,8 +57,8 @@ const cancelActionMenuItem = {
|
|
|
57
57
|
order: 0,
|
|
58
58
|
command: {
|
|
59
59
|
id: CancelAction.ID,
|
|
60
|
-
title: ( localize(
|
|
61
|
-
shortTitle: ( localize(
|
|
60
|
+
title: ( localize(7806, "Cancel Request")),
|
|
61
|
+
shortTitle: ( localize(7807, "Cancel")),
|
|
62
62
|
},
|
|
63
63
|
when: ( ContextKeyExpr.and(CTX_INLINE_CHAT_REQUEST_IN_PROGRESS)),
|
|
64
64
|
};
|
|
@@ -29,13 +29,13 @@ import { IInlineChatSessionService } from '@codingame/monaco-vscode-api/vscode/v
|
|
|
29
29
|
|
|
30
30
|
CommandsRegistry.registerCommandAlias('interactiveEditor.start', 'inlineChat.start');
|
|
31
31
|
CommandsRegistry.registerCommandAlias('interactive.acceptChanges', ACTION_ACCEPT_CHANGES);
|
|
32
|
-
const START_INLINE_CHAT = registerIcon('start-inline-chat', Codicon.sparkle, ( localize(
|
|
32
|
+
const START_INLINE_CHAT = registerIcon('start-inline-chat', Codicon.sparkle, ( localize(7808, 'Icon which spawns the inline chat from the editor toolbar.')));
|
|
33
33
|
const inlineChatContextKey = ( ContextKeyExpr.and(( ContextKeyExpr.or(CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_HAS_AGENT2)), CTX_INLINE_CHAT_POSSIBLE, EditorContextKeys.writable, ( EditorContextKeys.editorSimpleInput.negate())));
|
|
34
34
|
class StartSessionAction extends Action2 {
|
|
35
35
|
constructor() {
|
|
36
36
|
super({
|
|
37
37
|
id: ACTION_START,
|
|
38
|
-
title: ( localize2(
|
|
38
|
+
title: ( localize2(7809, 'Open Inline Chat')),
|
|
39
39
|
category: AbstractInline1ChatAction.category,
|
|
40
40
|
f1: true,
|
|
41
41
|
precondition: inlineChatContextKey,
|
|
@@ -91,7 +91,7 @@ class FocusInlineChat extends EditorAction2 {
|
|
|
91
91
|
constructor() {
|
|
92
92
|
super({
|
|
93
93
|
id: 'inlineChat.focus',
|
|
94
|
-
title: ( localize2(
|
|
94
|
+
title: ( localize2(7810, "Focus Input")),
|
|
95
95
|
f1: true,
|
|
96
96
|
category: AbstractInline1ChatAction.category,
|
|
97
97
|
precondition: ( ContextKeyExpr.and(EditorContextKeys.editorTextFocus, CTX_INLINE_CHAT_VISIBLE, ( CTX_INLINE_CHAT_FOCUSED.negate()), ( CONTEXT_ACCESSIBILITY_MODE_ENABLED.negate()))),
|
|
@@ -114,7 +114,7 @@ class UnstashSessionAction extends EditorAction2 {
|
|
|
114
114
|
constructor() {
|
|
115
115
|
super({
|
|
116
116
|
id: 'inlineChat.unstash',
|
|
117
|
-
title: ( localize2(
|
|
117
|
+
title: ( localize2(7811, "Resume Last Dismissed Inline Chat")),
|
|
118
118
|
category: AbstractInline1ChatAction.category,
|
|
119
119
|
precondition: ( ContextKeyExpr.and(CTX_INLINE_CHAT_HAS_STASHED_SESSION, EditorContextKeys.writable)),
|
|
120
120
|
keybinding: {
|
|
@@ -136,7 +136,7 @@ class UnstashSessionAction extends EditorAction2 {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
class AbstractInline1ChatAction extends EditorAction2 {
|
|
139
|
-
static { this.category = ( localize2(
|
|
139
|
+
static { this.category = ( localize2(7812, "Inline Chat")); }
|
|
140
140
|
constructor(desc) {
|
|
141
141
|
const massageMenu = (menu) => {
|
|
142
142
|
if (Array.isArray(menu)) {
|
|
@@ -198,7 +198,7 @@ class ArrowOutUpAction extends AbstractInline1ChatAction {
|
|
|
198
198
|
constructor() {
|
|
199
199
|
super({
|
|
200
200
|
id: 'inlineChat.arrowOutUp',
|
|
201
|
-
title: ( localize(
|
|
201
|
+
title: ( localize(7813, 'Cursor Up')),
|
|
202
202
|
precondition: ( ContextKeyExpr.and(
|
|
203
203
|
CTX_INLINE_CHAT_FOCUSED,
|
|
204
204
|
CTX_INLINE_CHAT_INNER_CURSOR_FIRST,
|
|
@@ -219,7 +219,7 @@ class ArrowOutDownAction extends AbstractInline1ChatAction {
|
|
|
219
219
|
constructor() {
|
|
220
220
|
super({
|
|
221
221
|
id: 'inlineChat.arrowOutDown',
|
|
222
|
-
title: ( localize(
|
|
222
|
+
title: ( localize(7814, 'Cursor Down')),
|
|
223
223
|
precondition: ( ContextKeyExpr.and(CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_INNER_CURSOR_LAST, ( EditorContextKeys.isEmbeddedDiffEditor.negate()), ( CONTEXT_ACCESSIBILITY_MODE_ENABLED.negate()))),
|
|
224
224
|
keybinding: {
|
|
225
225
|
weight: KeybindingWeight.EditorCore,
|
|
@@ -235,8 +235,8 @@ class AcceptChanges extends AbstractInline1ChatAction {
|
|
|
235
235
|
constructor() {
|
|
236
236
|
super({
|
|
237
237
|
id: ACTION_ACCEPT_CHANGES,
|
|
238
|
-
title: ( localize2(
|
|
239
|
-
shortTitle: ( localize(
|
|
238
|
+
title: ( localize2(7815, "Accept Changes")),
|
|
239
|
+
shortTitle: ( localize(7816, 'Accept')),
|
|
240
240
|
icon: Codicon.check,
|
|
241
241
|
f1: true,
|
|
242
242
|
precondition: ( ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE)),
|
|
@@ -264,7 +264,7 @@ class DiscardHunkAction extends AbstractInline1ChatAction {
|
|
|
264
264
|
constructor() {
|
|
265
265
|
super({
|
|
266
266
|
id: ACTION_DISCARD_CHANGES,
|
|
267
|
-
title: ( localize(
|
|
267
|
+
title: ( localize(7817, 'Discard')),
|
|
268
268
|
icon: Codicon.chromeClose,
|
|
269
269
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
270
270
|
menu: [{
|
|
@@ -287,8 +287,8 @@ class RerunAction extends AbstractInline1ChatAction {
|
|
|
287
287
|
constructor() {
|
|
288
288
|
super({
|
|
289
289
|
id: ACTION_REGENERATE_RESPONSE,
|
|
290
|
-
title: ( localize2(
|
|
291
|
-
shortTitle: ( localize(
|
|
290
|
+
title: ( localize2(7818, "Rerun Request")),
|
|
291
|
+
shortTitle: ( localize(7819, 'Rerun')),
|
|
292
292
|
f1: false,
|
|
293
293
|
icon: Codicon.refresh,
|
|
294
294
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
@@ -327,7 +327,7 @@ class CloseAction extends AbstractInline1ChatAction {
|
|
|
327
327
|
constructor() {
|
|
328
328
|
super({
|
|
329
329
|
id: 'inlineChat.close',
|
|
330
|
-
title: ( localize(
|
|
330
|
+
title: ( localize(7820, 'Close')),
|
|
331
331
|
icon: Codicon.close,
|
|
332
332
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
333
333
|
keybinding: {
|
|
@@ -354,7 +354,7 @@ class ConfigureInlineChatAction extends AbstractInline1ChatAction {
|
|
|
354
354
|
constructor() {
|
|
355
355
|
super({
|
|
356
356
|
id: 'inlineChat.configure',
|
|
357
|
-
title: ( localize2(
|
|
357
|
+
title: ( localize2(7821, 'Configure Inline Chat')),
|
|
358
358
|
icon: Codicon.settingsGear,
|
|
359
359
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
360
360
|
f1: true,
|
|
@@ -373,7 +373,7 @@ class MoveToNextHunk extends AbstractInline1ChatAction {
|
|
|
373
373
|
constructor() {
|
|
374
374
|
super({
|
|
375
375
|
id: 'inlineChat.moveToNextHunk',
|
|
376
|
-
title: ( localize2(
|
|
376
|
+
title: ( localize2(7822, 'Move to Next Change')),
|
|
377
377
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
378
378
|
f1: true,
|
|
379
379
|
keybinding: {
|
|
@@ -390,7 +390,7 @@ class MoveToPreviousHunk extends AbstractInline1ChatAction {
|
|
|
390
390
|
constructor() {
|
|
391
391
|
super({
|
|
392
392
|
id: 'inlineChat.moveToPreviousHunk',
|
|
393
|
-
title: ( localize2(
|
|
393
|
+
title: ( localize2(7823, 'Move to Previous Change')),
|
|
394
394
|
f1: true,
|
|
395
395
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
396
396
|
keybinding: {
|
|
@@ -407,7 +407,7 @@ class ViewInChatAction extends AbstractInline1ChatAction {
|
|
|
407
407
|
constructor() {
|
|
408
408
|
super({
|
|
409
409
|
id: ACTION_VIEW_IN_CHAT,
|
|
410
|
-
title: ( localize(
|
|
410
|
+
title: ( localize(7824, 'View in Chat')),
|
|
411
411
|
icon: Codicon.chatSparkle,
|
|
412
412
|
precondition: CTX_INLINE_CHAT_VISIBLE,
|
|
413
413
|
menu: [{
|
|
@@ -437,7 +437,7 @@ class ToggleDiffForChange extends AbstractInline1ChatAction {
|
|
|
437
437
|
super({
|
|
438
438
|
id: ACTION_TOGGLE_DIFF,
|
|
439
439
|
precondition: ( ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE, CTX_INLINE_CHAT_CHANGE_HAS_DIFF)),
|
|
440
|
-
title: ( localize2(
|
|
440
|
+
title: ( localize2(7825, 'Toggle Changes')),
|
|
441
441
|
icon: Codicon.diffSingle,
|
|
442
442
|
toggled: {
|
|
443
443
|
condition: CTX_INLINE_CHAT_CHANGE_SHOWS_DIFF,
|
|
@@ -459,7 +459,7 @@ class ToggleDiffForChange extends AbstractInline1ChatAction {
|
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
461
|
class AbstractInline2ChatAction extends EditorAction2 {
|
|
462
|
-
static { this.category = ( localize2(
|
|
462
|
+
static { this.category = ( localize2(7812, "Inline Chat")); }
|
|
463
463
|
constructor(desc) {
|
|
464
464
|
const massageMenu = (menu) => {
|
|
465
465
|
if (Array.isArray(menu)) {
|
|
@@ -522,8 +522,8 @@ class KeepOrUndoSessionAction extends AbstractInline2ChatAction {
|
|
|
522
522
|
super({
|
|
523
523
|
id,
|
|
524
524
|
title: _keep
|
|
525
|
-
? ( localize2(
|
|
526
|
-
: ( localize2(
|
|
525
|
+
? ( localize2(7826, "Keep"))
|
|
526
|
+
: ( localize2(7827, "Undo")),
|
|
527
527
|
f1: true,
|
|
528
528
|
icon: _keep ? Codicon.check : Codicon.discard,
|
|
529
529
|
precondition: ( ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE, ( ctxHasRequestInProgress.negate()))),
|
|
@@ -578,7 +578,7 @@ class CloseSessionAction2 extends AbstractInline2ChatAction {
|
|
|
578
578
|
constructor() {
|
|
579
579
|
super({
|
|
580
580
|
id: 'inlineChat2.close',
|
|
581
|
-
title: ( localize2(
|
|
581
|
+
title: ( localize2(7828, "Close")),
|
|
582
582
|
f1: true,
|
|
583
583
|
icon: Codicon.close,
|
|
584
584
|
precondition: ( ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE, ( ctxHasRequestInProgress.negate()), ( ContextKeyExpr.or(( ctxRequestCount.isEqualTo(0)), ( ctxHasEditorModification.negate()))))),
|
|
@@ -614,7 +614,7 @@ class RevealWidget extends AbstractInline2ChatAction {
|
|
|
614
614
|
constructor() {
|
|
615
615
|
super({
|
|
616
616
|
id: 'inlineChat2.reveal',
|
|
617
|
-
title: ( localize2(
|
|
617
|
+
title: ( localize2(7829, "Toggle Inline Chat")),
|
|
618
618
|
f1: true,
|
|
619
619
|
icon: Codicon.chatSparkle,
|
|
620
620
|
precondition: ( ContextKeyExpr.and(( ctxIsGlobalEditingSession.negate()), ContextKeyExpr.greaterEquals(ctxRequestCount.key, 1))),
|
|
@@ -642,7 +642,7 @@ class CancelRequestAction extends AbstractInline2ChatAction {
|
|
|
642
642
|
constructor() {
|
|
643
643
|
super({
|
|
644
644
|
id: 'inlineChat2.cancelRequest',
|
|
645
|
-
title: ( localize2(
|
|
645
|
+
title: ( localize2(7830, "Cancel Request")),
|
|
646
646
|
f1: true,
|
|
647
647
|
icon: Codicon.stopCircle,
|
|
648
648
|
precondition: ( ContextKeyExpr.and(( ctxIsGlobalEditingSession.negate()), ctxHasRequestInProgress)),
|
|
@@ -53,14 +53,14 @@ const IGNORED_LANGUAGE_IDS = ( new Set([
|
|
|
53
53
|
PROMPT_LANGUAGE_ID,
|
|
54
54
|
MODE_FILE_EXTENSION
|
|
55
55
|
]));
|
|
56
|
-
const CTX_INLINE_CHAT_SHOWING_HINT = ( new RawContextKey('inlineChatShowingHint', false, ( localize(
|
|
56
|
+
const CTX_INLINE_CHAT_SHOWING_HINT = ( new RawContextKey('inlineChatShowingHint', false, ( localize(7837, "Whether inline chat shows a contextual hint"))));
|
|
57
57
|
const _inlineChatActionId = 'inlineChat.startWithCurrentLine';
|
|
58
58
|
class InlineChatExpandLineAction extends EditorAction2 {
|
|
59
59
|
constructor() {
|
|
60
60
|
super({
|
|
61
61
|
id: _inlineChatActionId,
|
|
62
62
|
category: AbstractInline1ChatAction.category,
|
|
63
|
-
title: ( localize2(
|
|
63
|
+
title: ( localize2(7838, "Start in Editor with Current Line")),
|
|
64
64
|
f1: true,
|
|
65
65
|
precondition: ( ContextKeyExpr.and(( CTX_INLINE_CHAT_VISIBLE.negate()), CTX_INLINE_CHAT_HAS_AGENT, EditorContextKeys.writable)),
|
|
66
66
|
keybinding: [{
|
|
@@ -103,7 +103,7 @@ class ShowInlineChatHintAction extends EditorAction2 {
|
|
|
103
103
|
super({
|
|
104
104
|
id: 'inlineChat.showHint',
|
|
105
105
|
category: AbstractInline1ChatAction.category,
|
|
106
|
-
title: ( localize2(
|
|
106
|
+
title: ( localize2(7839, "Show Inline Chat Hint")),
|
|
107
107
|
f1: false,
|
|
108
108
|
precondition: ( ContextKeyExpr.and(( CTX_INLINE_CHAT_VISIBLE.negate()), CTX_INLINE_CHAT_HAS_AGENT, EditorContextKeys.writable)),
|
|
109
109
|
});
|
|
@@ -231,15 +231,15 @@ let InlineChatHintsController = class InlineChatHintsController extends Disposab
|
|
|
231
231
|
this._ctxShowingHint.reset();
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
|
-
const agentName = chatAgentService.getDefaultAgent(ChatAgentLocation.Editor)?.name ?? ( localize(
|
|
234
|
+
const agentName = chatAgentService.getDefaultAgent(ChatAgentLocation.Editor)?.name ?? ( localize(7840, "Chat"));
|
|
235
235
|
const { position, isEol, isWhitespace, kb, model } = showData;
|
|
236
236
|
const inlineClassName = ['a' , 'inline-chat-hint', 'inline-chat-hint-text'];
|
|
237
237
|
let content;
|
|
238
238
|
if (isWhitespace) {
|
|
239
|
-
content = '\u00a0' + ( localize(
|
|
239
|
+
content = '\u00a0' + ( localize(7841, "{0} to edit with {1}", kb, agentName));
|
|
240
240
|
}
|
|
241
241
|
else if (isEol) {
|
|
242
|
-
content = '\u00a0' + ( localize(
|
|
242
|
+
content = '\u00a0' + ( localize(7842, "{0} to continue with {1}", kb, agentName));
|
|
243
243
|
}
|
|
244
244
|
else {
|
|
245
245
|
content = '\u200a' + kb + '\u200a';
|
|
@@ -268,7 +268,7 @@ let InlineChatHintsController = class InlineChatHintsController extends Disposab
|
|
|
268
268
|
getActions: () => [
|
|
269
269
|
toAction({
|
|
270
270
|
id: 'inlineChat.disableHint',
|
|
271
|
-
label: ( localize(
|
|
271
|
+
label: ( localize(7843, "Disable Inline Chat Hint")),
|
|
272
272
|
run: async () => {
|
|
273
273
|
await this._configurationService.updateValue(setting, false);
|
|
274
274
|
}
|
|
@@ -296,7 +296,7 @@ class HideInlineChatHintAction extends EditorAction2 {
|
|
|
296
296
|
constructor() {
|
|
297
297
|
super({
|
|
298
298
|
id: 'inlineChat.hideHint',
|
|
299
|
-
title: ( localize2(
|
|
299
|
+
title: ( localize2(7844, "Hide Inline Chat Hint")),
|
|
300
300
|
precondition: CTX_INLINE_CHAT_SHOWING_HINT,
|
|
301
301
|
keybinding: {
|
|
302
302
|
weight: KeybindingWeight.EditorContrib - 10,
|
|
@@ -13,42 +13,42 @@ import { IRemoteCodingAgentsService } from '@codingame/monaco-vscode-api/vscode/
|
|
|
13
13
|
const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
14
14
|
extensionPoint: 'remoteCodingAgents',
|
|
15
15
|
jsonSchema: {
|
|
16
|
-
description: ( localize(
|
|
16
|
+
description: ( localize(9881, 'Contributes remote coding agent integrations to the chat widget.')),
|
|
17
17
|
type: 'array',
|
|
18
18
|
items: {
|
|
19
19
|
type: 'object',
|
|
20
20
|
properties: {
|
|
21
21
|
id: {
|
|
22
|
-
description: ( localize(
|
|
22
|
+
description: ( localize(9882, 'A unique identifier for this item.')),
|
|
23
23
|
type: 'string',
|
|
24
24
|
},
|
|
25
25
|
command: {
|
|
26
26
|
description: ( localize(
|
|
27
|
-
|
|
27
|
+
9883,
|
|
28
28
|
'Identifier of the command to execute. The command must be declared in the "commands" section.'
|
|
29
29
|
)),
|
|
30
30
|
type: 'string'
|
|
31
31
|
},
|
|
32
32
|
displayName: {
|
|
33
33
|
description: ( localize(
|
|
34
|
-
|
|
34
|
+
9884,
|
|
35
35
|
'A user-friendly name for this item which is used for display in menus.'
|
|
36
36
|
)),
|
|
37
37
|
type: 'string'
|
|
38
38
|
},
|
|
39
39
|
description: {
|
|
40
|
-
description: ( localize(
|
|
40
|
+
description: ( localize(9885, 'Description of the remote agent for use in menus and tooltips.')),
|
|
41
41
|
type: 'string'
|
|
42
42
|
},
|
|
43
43
|
followUpRegex: {
|
|
44
44
|
description: ( localize(
|
|
45
|
-
|
|
45
|
+
9886,
|
|
46
46
|
'The last occurrence of pattern in an existing chat conversation is sent to the contributing extension to facilitate follow-up responses.'
|
|
47
47
|
)),
|
|
48
48
|
type: 'string',
|
|
49
49
|
},
|
|
50
50
|
when: {
|
|
51
|
-
description: ( localize(
|
|
51
|
+
description: ( localize(9887, 'Condition which must be true to show this item.')),
|
|
52
52
|
type: 'string'
|
|
53
53
|
},
|
|
54
54
|
},
|
|
@@ -41,68 +41,68 @@ function getAccessibilityHelpText(accessor) {
|
|
|
41
41
|
const focusResponseKeybinding = keybindingService.lookupKeybinding('chat.action.focus')?.getAriaLabel();
|
|
42
42
|
const focusInputKeybinding = keybindingService.lookupKeybinding('workbench.action.chat.focusInput')?.getAriaLabel();
|
|
43
43
|
content.push(( localize(
|
|
44
|
-
|
|
44
|
+
11408,
|
|
45
45
|
"Inline chat occurs within a terminal. It is useful for suggesting terminal commands. Keep in mind that AI generated code may be incorrect."
|
|
46
46
|
)));
|
|
47
47
|
content.push(( localize(
|
|
48
|
-
|
|
48
|
+
11409,
|
|
49
49
|
"It can be activated using the command: Terminal: Start Chat ({0}), which will focus the input box.",
|
|
50
50
|
startChatKeybinding
|
|
51
51
|
)));
|
|
52
52
|
content.push(makeRequestKeybinding ? ( localize(
|
|
53
|
-
|
|
53
|
+
11410,
|
|
54
54
|
"The input box is where the user can type a request and can make the request ({0}). The widget will be closed and all content will be discarded when the Escape key is pressed and the terminal will regain focus.",
|
|
55
55
|
makeRequestKeybinding
|
|
56
56
|
)) : ( localize(
|
|
57
|
-
|
|
57
|
+
11411,
|
|
58
58
|
"The input box is where the user can type a request and can make the request by tabbing to the Make Request button, which is not currently triggerable via keybindings. The widget will be closed and all content will be discarded when the Escape key is pressed and the terminal will regain focus."
|
|
59
59
|
)));
|
|
60
60
|
content.push(openAccessibleViewKeybinding ? ( localize(
|
|
61
|
-
|
|
61
|
+
11412,
|
|
62
62
|
'The response can be inspected in the accessible view ({0}).',
|
|
63
63
|
openAccessibleViewKeybinding
|
|
64
64
|
)) : ( localize(
|
|
65
|
-
|
|
65
|
+
11413,
|
|
66
66
|
'With the input box focused, inspect the response in the accessible view via the Open Accessible View command, which is currently not triggerable by a keybinding.'
|
|
67
67
|
)));
|
|
68
68
|
content.push(focusResponseKeybinding ? ( localize(
|
|
69
|
-
|
|
69
|
+
11414,
|
|
70
70
|
'Reach the response from the input box ({0}).',
|
|
71
71
|
focusResponseKeybinding
|
|
72
72
|
)) : ( localize(
|
|
73
|
-
|
|
73
|
+
11415,
|
|
74
74
|
'Reach the response from the input box by tabbing or assigning a keybinding for the command: Focus Terminal Response.'
|
|
75
75
|
)));
|
|
76
76
|
content.push(focusInputKeybinding ? ( localize(
|
|
77
|
-
|
|
77
|
+
11416,
|
|
78
78
|
'Reach the input box from the response ({0}).',
|
|
79
79
|
focusInputKeybinding
|
|
80
80
|
)) : ( localize(
|
|
81
|
-
|
|
81
|
+
11417,
|
|
82
82
|
'Reach the response from the input box by shift+tabbing or assigning a keybinding for the command: Focus Terminal Input.'
|
|
83
83
|
)));
|
|
84
84
|
content.push(runCommandKeybinding ? ( localize(
|
|
85
|
-
|
|
85
|
+
11418,
|
|
86
86
|
'With focus in the input box or command editor, the Terminal: Run Chat Command ({0}) action.',
|
|
87
87
|
runCommandKeybinding
|
|
88
88
|
)) : ( localize(
|
|
89
|
-
|
|
89
|
+
11419,
|
|
90
90
|
'Run a command by tabbing to the button as the action is currently not triggerable by a keybinding.'
|
|
91
91
|
)));
|
|
92
92
|
content.push(insertCommandKeybinding ? ( localize(
|
|
93
|
-
|
|
93
|
+
11420,
|
|
94
94
|
'With focus in the input box command editor, the Terminal: Insert Chat Command ({0}) action.',
|
|
95
95
|
insertCommandKeybinding
|
|
96
96
|
)) : ( localize(
|
|
97
|
-
|
|
97
|
+
11421,
|
|
98
98
|
'Insert a command by tabbing to the button as the action is currently not triggerable by a keybinding.'
|
|
99
99
|
)));
|
|
100
100
|
content.push(( localize(
|
|
101
|
-
|
|
101
|
+
11422,
|
|
102
102
|
"Use tab to reach conditional parts like commands, status, message responses and more."
|
|
103
103
|
)));
|
|
104
104
|
content.push(( localize(
|
|
105
|
-
|
|
105
|
+
11423,
|
|
106
106
|
"Accessibility Signals can be changed via settings with a prefix of signals.chat. By default, if a request takes more than 4 seconds, you will hear a sound indicating that progress is still occurring."
|
|
107
107
|
)));
|
|
108
108
|
return content.join('\n');
|
|
@@ -20,8 +20,8 @@ import { activeChatController } from './terminalChatControllerHolder.js';
|
|
|
20
20
|
|
|
21
21
|
registerActiveXtermAction({
|
|
22
22
|
id: TerminalChatCommandId.Start,
|
|
23
|
-
title: ( localize2(
|
|
24
|
-
category: ( localize2(
|
|
23
|
+
title: ( localize2(11424, 'Open Inline Chat')),
|
|
24
|
+
category: ( localize2(11425, "Terminal")),
|
|
25
25
|
keybinding: {
|
|
26
26
|
primary: KeyMod.CtrlCmd | KeyCode.KeyI,
|
|
27
27
|
when: ( ContextKeyExpr.and(TerminalContextKeys.focusInAny)),
|
|
@@ -57,7 +57,7 @@ registerActiveXtermAction({
|
|
|
57
57
|
});
|
|
58
58
|
registerActiveXtermAction({
|
|
59
59
|
id: TerminalChatCommandId.Close,
|
|
60
|
-
title: ( localize2(
|
|
60
|
+
title: ( localize2(11426, 'Close')),
|
|
61
61
|
category: AbstractInline1ChatAction.category,
|
|
62
62
|
keybinding: {
|
|
63
63
|
primary: KeyCode.Escape,
|
|
@@ -82,8 +82,8 @@ registerActiveXtermAction({
|
|
|
82
82
|
});
|
|
83
83
|
registerActiveXtermAction({
|
|
84
84
|
id: TerminalChatCommandId.RunCommand,
|
|
85
|
-
title: ( localize2(
|
|
86
|
-
shortTitle: ( localize2(
|
|
85
|
+
title: ( localize2(11427, 'Run Chat Command')),
|
|
86
|
+
shortTitle: ( localize2(11428, 'Run')),
|
|
87
87
|
category: AbstractInline1ChatAction.category,
|
|
88
88
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.or(
|
|
89
89
|
TerminalContextKeys.processSupported,
|
|
@@ -111,8 +111,8 @@ registerActiveXtermAction({
|
|
|
111
111
|
});
|
|
112
112
|
registerActiveXtermAction({
|
|
113
113
|
id: TerminalChatCommandId.RunFirstCommand,
|
|
114
|
-
title: ( localize2(
|
|
115
|
-
shortTitle: ( localize2(
|
|
114
|
+
title: ( localize2(11429, 'Run First Chat Command')),
|
|
115
|
+
shortTitle: ( localize2(11430, 'Run First')),
|
|
116
116
|
category: AbstractInline1ChatAction.category,
|
|
117
117
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.or(
|
|
118
118
|
TerminalContextKeys.processSupported,
|
|
@@ -140,8 +140,8 @@ registerActiveXtermAction({
|
|
|
140
140
|
});
|
|
141
141
|
registerActiveXtermAction({
|
|
142
142
|
id: TerminalChatCommandId.InsertCommand,
|
|
143
|
-
title: ( localize2(
|
|
144
|
-
shortTitle: ( localize2(
|
|
143
|
+
title: ( localize2(11431, 'Insert Chat Command')),
|
|
144
|
+
shortTitle: ( localize2(11432, 'Insert')),
|
|
145
145
|
category: AbstractInline1ChatAction.category,
|
|
146
146
|
icon: Codicon.insert,
|
|
147
147
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.or(
|
|
@@ -170,8 +170,8 @@ registerActiveXtermAction({
|
|
|
170
170
|
});
|
|
171
171
|
registerActiveXtermAction({
|
|
172
172
|
id: TerminalChatCommandId.InsertFirstCommand,
|
|
173
|
-
title: ( localize2(
|
|
174
|
-
shortTitle: ( localize2(
|
|
173
|
+
title: ( localize2(11433, 'Insert First Chat Command')),
|
|
174
|
+
shortTitle: ( localize2(11434, 'Insert First')),
|
|
175
175
|
category: AbstractInline1ChatAction.category,
|
|
176
176
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.or(
|
|
177
177
|
TerminalContextKeys.processSupported,
|
|
@@ -199,7 +199,7 @@ registerActiveXtermAction({
|
|
|
199
199
|
});
|
|
200
200
|
registerActiveXtermAction({
|
|
201
201
|
id: TerminalChatCommandId.RerunRequest,
|
|
202
|
-
title: ( localize2(
|
|
202
|
+
title: ( localize2(11435, "Rerun Request")),
|
|
203
203
|
f1: false,
|
|
204
204
|
icon: Codicon.refresh,
|
|
205
205
|
category: AbstractInline1ChatAction.category,
|
|
@@ -240,7 +240,7 @@ registerActiveXtermAction({
|
|
|
240
240
|
});
|
|
241
241
|
registerActiveXtermAction({
|
|
242
242
|
id: TerminalChatCommandId.ViewInChat,
|
|
243
|
-
title: ( localize2(
|
|
243
|
+
title: ( localize2(11436, 'View in Chat')),
|
|
244
244
|
category: AbstractInline1ChatAction.category,
|
|
245
245
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.or(
|
|
246
246
|
TerminalContextKeys.processSupported,
|
|
@@ -163,7 +163,7 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
163
163
|
}
|
|
164
164
|
_resetPlaceholder() {
|
|
165
165
|
const defaultAgent = this._chatAgentService.getDefaultAgent(ChatAgentLocation.Terminal);
|
|
166
|
-
this.inlineChatWidget.placeholder = defaultAgent?.description ?? ( localize(
|
|
166
|
+
this.inlineChatWidget.placeholder = defaultAgent?.description ?? ( localize(11437, 'Ask about commands'));
|
|
167
167
|
}
|
|
168
168
|
async reveal(viewState) {
|
|
169
169
|
await this._createSession(viewState);
|
|
@@ -46,11 +46,11 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
46
46
|
if (subCommandsToSuggest.length > 0) {
|
|
47
47
|
let subCommandLabel;
|
|
48
48
|
if (subCommandsToSuggest.length === 1) {
|
|
49
|
-
subCommandLabel = ( localize(
|
|
49
|
+
subCommandLabel = ( localize(11439, 'Always Allow Command: {0}', subCommandsToSuggest[0]));
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
52
52
|
const commandSeparated = subCommandsToSuggest.join(', ');
|
|
53
|
-
subCommandLabel = ( localize(
|
|
53
|
+
subCommandLabel = ( localize(11440, 'Always Allow Commands: {0}', commandSeparated));
|
|
54
54
|
}
|
|
55
55
|
actions.push({
|
|
56
56
|
label: subCommandLabel,
|
|
@@ -68,7 +68,7 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
68
68
|
!( commandsWithSubcommands.has(commandLine)) &&
|
|
69
69
|
!( commandsWithSubSubCommands.has(commandLine))) {
|
|
70
70
|
actions.push({
|
|
71
|
-
label: ( localize(
|
|
71
|
+
label: ( localize(11441, 'Always Allow Exact Command Line')),
|
|
72
72
|
data: {
|
|
73
73
|
type: 'newRule',
|
|
74
74
|
rule: {
|
|
@@ -86,7 +86,7 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
86
86
|
actions.push(( new Separator()));
|
|
87
87
|
}
|
|
88
88
|
actions.push({
|
|
89
|
-
label: ( localize(
|
|
89
|
+
label: ( localize(11442, 'Configure Auto Approve...')),
|
|
90
90
|
data: {
|
|
91
91
|
type: 'configure'
|
|
92
92
|
}
|
|
@@ -36,7 +36,7 @@ let ChatAgentToolsContribution = class ChatAgentToolsContribution extends Dispos
|
|
|
36
36
|
this._register(toolsService.registerTool(GetTerminalOutputToolData, getTerminalOutputTool));
|
|
37
37
|
const runCommandsToolSet = this._register(toolsService.createToolSet(ToolDataSource.Internal, 'runCommands', 'runCommands', {
|
|
38
38
|
icon: ThemeIcon.fromId(Codicon.terminal.id),
|
|
39
|
-
description: ( localize(
|
|
39
|
+
description: ( localize(11443, 'Runs commands in the terminal'))
|
|
40
40
|
}));
|
|
41
41
|
runCommandsToolSet.addTool(RunInTerminalToolData);
|
|
42
42
|
runCommandsToolSet.addTool(GetTerminalOutputToolData);
|
|
@@ -53,7 +53,7 @@ let ChatAgentToolsContribution = class ChatAgentToolsContribution extends Dispos
|
|
|
53
53
|
const createAndRunTaskTool = instantiationService.createInstance(CreateAndRunTaskTool);
|
|
54
54
|
this._register(toolsService.registerTool(CreateAndRunTaskToolData, createAndRunTaskTool));
|
|
55
55
|
const runTasksToolSet = this._register(toolsService.createToolSet(ToolDataSource.Internal, 'runTasks', 'runTasks', {
|
|
56
|
-
description: ( localize(
|
|
56
|
+
description: ( localize(11444, 'Runs tasks and gets their output for your workspace')),
|
|
57
57
|
}));
|
|
58
58
|
runTasksToolSet.addTool(RunTaskToolData);
|
|
59
59
|
runTasksToolSet.addTool(GetTaskOutputToolData);
|
|
@@ -67,7 +67,7 @@ ChatAgentToolsContribution = ( __decorate([
|
|
|
67
67
|
registerWorkbenchContribution2(ChatAgentToolsContribution.ID, ChatAgentToolsContribution, WorkbenchPhase.AfterRestored);
|
|
68
68
|
registerActiveInstanceAction({
|
|
69
69
|
id: TerminalChatAgentToolsCommandId.ChatAddTerminalSelection,
|
|
70
|
-
title: ( localize(
|
|
70
|
+
title: ( localize(11445, 'Add Terminal Selection to Chat')),
|
|
71
71
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, sharedWhenClause.terminalAvailable)),
|
|
72
72
|
menu: [
|
|
73
73
|
{
|
|
@@ -91,8 +91,8 @@ registerActiveInstanceAction({
|
|
|
91
91
|
chatView.attachmentModel.addContext({
|
|
92
92
|
id: `terminal-selection-${Date.now()}`,
|
|
93
93
|
kind: 'generic',
|
|
94
|
-
name: ( localize(
|
|
95
|
-
fullName: ( localize(
|
|
94
|
+
name: ( localize(11446, 'Terminal Selection')),
|
|
95
|
+
fullName: ( localize(11446, 'Terminal Selection')),
|
|
96
96
|
value: selection,
|
|
97
97
|
icon: Codicon.terminal
|
|
98
98
|
});
|
|
@@ -10,7 +10,7 @@ import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workben
|
|
|
10
10
|
const GetTerminalLastCommandToolData = {
|
|
11
11
|
id: 'terminal_last_command',
|
|
12
12
|
toolReferenceName: 'terminalLastCommand',
|
|
13
|
-
displayName: ( localize(
|
|
13
|
+
displayName: ( localize(11447, 'Get Terminal Last Command')),
|
|
14
14
|
modelDescription: 'Get the last command run in the active terminal.',
|
|
15
15
|
source: ToolDataSource.Internal,
|
|
16
16
|
icon: Codicon.terminal,
|
|
@@ -22,8 +22,8 @@ let GetTerminalLastCommandTool = class GetTerminalLastCommandTool extends Dispos
|
|
|
22
22
|
}
|
|
23
23
|
async prepareToolInvocation(context, token) {
|
|
24
24
|
return {
|
|
25
|
-
invocationMessage: ( localize(
|
|
26
|
-
pastTenseMessage: ( localize(
|
|
25
|
+
invocationMessage: ( localize(11448, "Getting last terminal command")),
|
|
26
|
+
pastTenseMessage: ( localize(11449, "Got last terminal command")),
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -8,7 +8,7 @@ import { RunInTerminalTool } from './runInTerminalTool.js';
|
|
|
8
8
|
const GetTerminalOutputToolData = {
|
|
9
9
|
id: 'get_terminal_output',
|
|
10
10
|
toolReferenceName: 'getTerminalOutput',
|
|
11
|
-
displayName: ( localize(
|
|
11
|
+
displayName: ( localize(11450, 'Get Terminal Output')),
|
|
12
12
|
modelDescription: 'Get the output of a terminal command previously started with run_in_terminal',
|
|
13
13
|
icon: Codicon.terminal,
|
|
14
14
|
source: ToolDataSource.Internal,
|
|
@@ -28,8 +28,8 @@ const GetTerminalOutputToolData = {
|
|
|
28
28
|
class GetTerminalOutputTool extends Disposable {
|
|
29
29
|
async prepareToolInvocation(context, token) {
|
|
30
30
|
return {
|
|
31
|
-
invocationMessage: ( localize(
|
|
32
|
-
pastTenseMessage: ( localize(
|
|
31
|
+
invocationMessage: ( localize(11451, "Checking background terminal output")),
|
|
32
|
+
pastTenseMessage: ( localize(11452, "Checked background terminal output")),
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -9,7 +9,7 @@ import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workben
|
|
|
9
9
|
const GetTerminalSelectionToolData = {
|
|
10
10
|
id: 'terminal_selection',
|
|
11
11
|
toolReferenceName: 'terminalSelection',
|
|
12
|
-
displayName: ( localize(
|
|
12
|
+
displayName: ( localize(11453, 'Get Terminal Selection')),
|
|
13
13
|
modelDescription: 'Get the current selection in the active terminal.',
|
|
14
14
|
source: ToolDataSource.Internal,
|
|
15
15
|
icon: Codicon.terminal,
|
|
@@ -21,8 +21,8 @@ let GetTerminalSelectionTool = class GetTerminalSelectionTool extends Disposable
|
|
|
21
21
|
}
|
|
22
22
|
async prepareToolInvocation(context, token) {
|
|
23
23
|
return {
|
|
24
|
-
invocationMessage: ( localize(
|
|
25
|
-
pastTenseMessage: ( localize(
|
|
24
|
+
invocationMessage: ( localize(11454, "Reading terminal selection")),
|
|
25
|
+
pastTenseMessage: ( localize(11455, "Read terminal selection")),
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -234,10 +234,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
234
234
|
if (request) {
|
|
235
235
|
let part = undefined;
|
|
236
236
|
const promise = ( new Promise(resolve => {
|
|
237
|
-
const thePart = part = this._register(( new ChatElicitationRequestPart(( new MarkdownString(( localize(
|
|
238
|
-
|
|
237
|
+
const thePart = part = this._register(( new ChatElicitationRequestPart(( new MarkdownString(( localize(11456, "Continue waiting for `{0}`?", command)))), ( new MarkdownString(( localize(
|
|
238
|
+
11457,
|
|
239
239
|
"This will continue to poll for output to determine when the terminal becomes idle for up to 2 minutes."
|
|
240
|
-
)))), '', ( localize(
|
|
240
|
+
)))), '', ( localize(11458, 'Yes')), ( localize(11459, 'No')), async () => {
|
|
241
241
|
thePart.state = 'accepted';
|
|
242
242
|
thePart.hide();
|
|
243
243
|
thePart.dispose();
|
|
@@ -379,13 +379,13 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
379
379
|
}
|
|
380
380
|
const suggestedOptionValue = typeof suggestedOption === 'string' ? suggestedOption : suggestedOption.option;
|
|
381
381
|
const userPrompt = ( new Promise(resolve => {
|
|
382
|
-
const thePart = this._register(( new ChatElicitationRequestPart(( new MarkdownString(( localize(
|
|
383
|
-
|
|
382
|
+
const thePart = this._register(( new ChatElicitationRequestPart(( new MarkdownString(( localize(11460, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
383
|
+
11461,
|
|
384
384
|
"{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
|
|
385
385
|
confirmationPrompt.prompt,
|
|
386
386
|
suggestedOptionValue,
|
|
387
387
|
typeof suggestedOption === 'string' ? '' : suggestedOption.description ? ' (' + suggestedOption.description + ')' : ''
|
|
388
|
-
)))), '', ( localize(
|
|
388
|
+
)))), '', ( localize(11462, 'Allow')), ( localize(11463, 'Focus Terminal')), async (value) => {
|
|
389
389
|
thePart.state = 'accepted';
|
|
390
390
|
thePart.hide();
|
|
391
391
|
thePart.dispose();
|
|
@@ -49,7 +49,7 @@ var TerminalToolStorageKeysInternal;
|
|
|
49
49
|
const RunInTerminalToolData = {
|
|
50
50
|
id: 'run_in_terminal',
|
|
51
51
|
toolReferenceName: 'runInTerminal',
|
|
52
|
-
displayName: ( localize(
|
|
52
|
+
displayName: ( localize(11464, 'Run in Terminal')),
|
|
53
53
|
modelDescription: [
|
|
54
54
|
'This tool allows you to execute shell commands in a persistent terminal session, preserving environment variables, working directory, and other context across multiple commands.',
|
|
55
55
|
'',
|
|
@@ -77,7 +77,7 @@ const RunInTerminalToolData = {
|
|
|
77
77
|
'- Use targeted queries instead of broad scans',
|
|
78
78
|
'- Consider using \'wc -l\' to count before listing many items'
|
|
79
79
|
].join('\n'),
|
|
80
|
-
userDescription: ( localize(
|
|
80
|
+
userDescription: ( localize(11465, 'Tool for running commands in the terminal')),
|
|
81
81
|
source: ToolDataSource.Internal,
|
|
82
82
|
icon: Codicon.terminal,
|
|
83
83
|
inputSchema: {
|
|
@@ -252,7 +252,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
252
252
|
if (!isAutoApproved && (( subCommandsLowerFirstWordOnly.some(command => promptInjectionWarningCommandsLower.includes(command))) ||
|
|
253
253
|
(isPowerShell(shell, os) && ( subCommandsLowerFirstWordOnly.some(command => promptInjectionWarningCommandsLowerPwshOnly.includes(command)))))) {
|
|
254
254
|
disclaimer = ( new MarkdownString(`$(${Codicon.info.id}) ` + ( localize(
|
|
255
|
-
|
|
255
|
+
11466,
|
|
256
256
|
'Web content may contain malicious code or attempt prompt injection attacks.'
|
|
257
257
|
)), { supportThemeIcons: true }));
|
|
258
258
|
}
|
|
@@ -266,8 +266,8 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
266
266
|
}
|
|
267
267
|
confirmationMessages = (isAutoApproved && isAutoApproveAllowed) ? undefined : {
|
|
268
268
|
title: args.isBackground
|
|
269
|
-
? ( localize(
|
|
270
|
-
: ( localize(
|
|
269
|
+
? ( localize(11467, "Run `{0}` command? (background terminal)", shellType))
|
|
270
|
+
: ( localize(11468, "Run `{0}` command?", shellType)),
|
|
271
271
|
message: ( new MarkdownString(args.explanation)),
|
|
272
272
|
disclaimer,
|
|
273
273
|
terminalCustomActions: customActions,
|
|
@@ -650,16 +650,16 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
650
650
|
_createAutoApproveInfo(isAutoApproved, isDenied, autoApproveReason, subCommandResults, commandLineResult) {
|
|
651
651
|
function formatRuleLinks(result) {
|
|
652
652
|
return ( asArray(result).map(e => {
|
|
653
|
-
return `[\`${e.rule.sourceText}\`](settings_${e.rule.sourceTarget} "${( localize(
|
|
653
|
+
return `[\`${e.rule.sourceText}\`](settings_${e.rule.sourceTarget} "${( localize(11469, 'View rule in settings'))}")`;
|
|
654
654
|
})).join(', ');
|
|
655
655
|
}
|
|
656
656
|
const config = this._configurationService.inspect(ChatConfiguration.GlobalAutoApprove);
|
|
657
657
|
const isGlobalAutoApproved = config?.value ?? config.defaultValue;
|
|
658
658
|
if (isGlobalAutoApproved) {
|
|
659
659
|
return (new MarkdownString(`_${( localize(
|
|
660
|
-
|
|
660
|
+
11470,
|
|
661
661
|
'Auto approved by setting {0}',
|
|
662
|
-
`[\`${ChatConfiguration.GlobalAutoApprove}\`](settings_global "${( localize(
|
|
662
|
+
`[\`${ChatConfiguration.GlobalAutoApprove}\`](settings_global "${( localize(11471, 'View settings'))}")`
|
|
663
663
|
))}_`));
|
|
664
664
|
}
|
|
665
665
|
if (isAutoApproved) {
|
|
@@ -667,7 +667,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
667
667
|
case 'commandLine': {
|
|
668
668
|
if (commandLineResult.rule) {
|
|
669
669
|
return (new MarkdownString(
|
|
670
|
-
`_${( localize(
|
|
670
|
+
`_${( localize(11472, 'Auto approved by rule {0}', formatRuleLinks(commandLineResult)))}_`
|
|
671
671
|
));
|
|
672
672
|
}
|
|
673
673
|
break;
|
|
@@ -676,12 +676,12 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
676
676
|
const uniqueRules = Array.from(( new Set(subCommandResults)));
|
|
677
677
|
if (uniqueRules.length === 1) {
|
|
678
678
|
return (new MarkdownString(
|
|
679
|
-
`_${( localize(
|
|
679
|
+
`_${( localize(11472, 'Auto approved by rule {0}', formatRuleLinks(uniqueRules)))}_`
|
|
680
680
|
));
|
|
681
681
|
}
|
|
682
682
|
else if (uniqueRules.length > 1) {
|
|
683
683
|
return (new MarkdownString(
|
|
684
|
-
`_${( localize(
|
|
684
|
+
`_${( localize(11473, 'Auto approved by rules {0}', formatRuleLinks(uniqueRules)))}_`
|
|
685
685
|
));
|
|
686
686
|
}
|
|
687
687
|
break;
|
|
@@ -693,7 +693,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
693
693
|
case 'commandLine': {
|
|
694
694
|
if (commandLineResult.rule) {
|
|
695
695
|
return (new MarkdownString(`_${( localize(
|
|
696
|
-
|
|
696
|
+
11474,
|
|
697
697
|
'Auto approval denied by rule {0}',
|
|
698
698
|
formatRuleLinks(commandLineResult)
|
|
699
699
|
))}_`));
|
|
@@ -705,12 +705,12 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
705
705
|
const uniqueRules = Array.from(( new Set(deniedRules)));
|
|
706
706
|
if (uniqueRules.length === 1) {
|
|
707
707
|
return (new MarkdownString(
|
|
708
|
-
`_${( localize(
|
|
708
|
+
`_${( localize(11474, 'Auto approval denied by rule {0}', formatRuleLinks(uniqueRules)))}_`
|
|
709
709
|
));
|
|
710
710
|
}
|
|
711
711
|
else if (uniqueRules.length > 1) {
|
|
712
712
|
return (new MarkdownString(
|
|
713
|
-
`_${( localize(
|
|
713
|
+
`_${( localize(11475, 'Auto approval denied by rules {0}', formatRuleLinks(uniqueRules)))}_`
|
|
714
714
|
));
|
|
715
715
|
}
|
|
716
716
|
break;
|
|
@@ -56,7 +56,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
56
56
|
await this._fileService.writeFile(tasksJsonUri, VSBuffer.fromString(JSON.stringify(tasksJson, null, '\t')));
|
|
57
57
|
_progress.report({ message: 'Updated tasks.json file' });
|
|
58
58
|
}
|
|
59
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
59
|
+
_progress.report({ message: ( new MarkdownString(( localize(11476, 'Resolving the task')))) });
|
|
60
60
|
let task;
|
|
61
61
|
const start = Date.now();
|
|
62
62
|
while (Date.now() - start < 5000 && !token.isCancellationRequested) {
|
|
@@ -67,9 +67,9 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
67
67
|
await timeout(100);
|
|
68
68
|
}
|
|
69
69
|
if (!task) {
|
|
70
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
70
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(11477, 'Task not found: `{0}`', args.task.label)))) };
|
|
71
71
|
}
|
|
72
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
72
|
+
_progress.report({ message: ( new MarkdownString(( localize(11478, 'Running task `{0}`', args.task.label)))) });
|
|
73
73
|
const raceResult = await Promise.race([this._tasksService.run(task), timeout(3000)]);
|
|
74
74
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
75
75
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
@@ -77,7 +77,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
77
77
|
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(Boolean);
|
|
78
78
|
if (!terminals || terminals.length === 0) {
|
|
79
79
|
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
80
|
-
|
|
80
|
+
11479,
|
|
81
81
|
'Task started but no terminal was found for: `{0}`',
|
|
82
82
|
args.task.label
|
|
83
83
|
)))) };
|
|
@@ -115,26 +115,26 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
115
115
|
const allTasks = await this._tasksService.tasks();
|
|
116
116
|
if (allTasks?.find(t => t._label === task.label)) {
|
|
117
117
|
return {
|
|
118
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
119
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
118
|
+
invocationMessage: ( new MarkdownString(( localize(11480, 'Task `{0}` already exists.', task.label)))),
|
|
119
|
+
pastTenseMessage: ( new MarkdownString(( localize(11481, 'Task `{0}` already exists.', task.label)))),
|
|
120
120
|
confirmationMessages: undefined
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
123
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
124
124
|
if (activeTasks.find(t => t._label === task.label)) {
|
|
125
125
|
return {
|
|
126
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
127
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
126
|
+
invocationMessage: ( new MarkdownString(( localize(11482, 'Task \`{0}\` is already running.', task.label)))),
|
|
127
|
+
pastTenseMessage: ( new MarkdownString(( localize(11482, 'Task \`{0}\` is already running.', task.label)))),
|
|
128
128
|
confirmationMessages: undefined
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
return {
|
|
132
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
133
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
132
|
+
invocationMessage: ( new MarkdownString(( localize(11483, 'Created task \`{0}\`', task.label)))),
|
|
133
|
+
pastTenseMessage: ( new MarkdownString(( localize(11484, 'Created task \`{0}\`', task.label)))),
|
|
134
134
|
confirmationMessages: {
|
|
135
|
-
title: ( localize(
|
|
135
|
+
title: ( localize(11485, 'Allow task creation and execution?')),
|
|
136
136
|
message: ( new MarkdownString(( localize(
|
|
137
|
-
|
|
137
|
+
11486,
|
|
138
138
|
'Copilot will create the task \`{0}\` with command \`{1}\`{2}.',
|
|
139
139
|
task.label,
|
|
140
140
|
task.command,
|
|
@@ -155,12 +155,12 @@ CreateAndRunTaskTool = ( __decorate([
|
|
|
155
155
|
const CreateAndRunTaskToolData = {
|
|
156
156
|
id: 'create_and_run_task',
|
|
157
157
|
toolReferenceName: 'createAndRunTask',
|
|
158
|
-
displayName: ( localize(
|
|
158
|
+
displayName: ( localize(11487, 'Create and run Task')),
|
|
159
159
|
modelDescription: ( localize(
|
|
160
|
-
|
|
160
|
+
11488,
|
|
161
161
|
'Creates and runs a build, run, or custom task for the workspace by generating or adding to a tasks.json file based on the project structure (such as package.json or README.md). If the user asks to build, run, launch and they have no tasks.json file, use this tool. If they ask to create or add a task, use this tool.'
|
|
162
162
|
)),
|
|
163
|
-
userDescription: ( localize(
|
|
163
|
+
userDescription: ( localize(11489, "Create and run a task in the workspace")),
|
|
164
164
|
source: ToolDataSource.Internal,
|
|
165
165
|
inputSchema: {
|
|
166
166
|
'type': 'object',
|
|
@@ -16,7 +16,7 @@ import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './
|
|
|
16
16
|
const GetTaskOutputToolData = {
|
|
17
17
|
id: 'get_task_output',
|
|
18
18
|
toolReferenceName: 'getTaskOutput',
|
|
19
|
-
displayName: ( localize(
|
|
19
|
+
displayName: ( localize(11490, 'Get Task Output')),
|
|
20
20
|
modelDescription: 'Get the output of a task',
|
|
21
21
|
source: ToolDataSource.Internal,
|
|
22
22
|
when: TasksAvailableContext,
|
|
@@ -52,16 +52,16 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
52
52
|
const taskDefinition = getTaskDefinition(args.id);
|
|
53
53
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
54
54
|
if (!task) {
|
|
55
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
55
|
+
return { invocationMessage: ( new MarkdownString(( localize(11491, 'Task not found: `{0}`', args.id)))) };
|
|
56
56
|
}
|
|
57
57
|
const taskLabel = task._label;
|
|
58
58
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
59
59
|
if (activeTasks.includes(task)) {
|
|
60
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
60
|
+
return { invocationMessage: ( new MarkdownString(( localize(11492, 'The task `{0}` is already running.', taskLabel)))) };
|
|
61
61
|
}
|
|
62
62
|
return {
|
|
63
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
64
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
63
|
+
invocationMessage: ( new MarkdownString(( localize(11493, 'Checking output for task `{0}`', taskLabel)))),
|
|
64
|
+
pastTenseMessage: ( new MarkdownString(( localize(11494, 'Checked output for task `{0}`', taskLabel)))),
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -69,14 +69,14 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
69
69
|
const taskDefinition = getTaskDefinition(args.id);
|
|
70
70
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
71
71
|
if (!task) {
|
|
72
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
72
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11491, 'Task not found: `{0}`', args.id)))) };
|
|
73
73
|
}
|
|
74
74
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
75
75
|
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
76
76
|
const taskLabel = task._label;
|
|
77
77
|
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(t => !!t);
|
|
78
78
|
if (!terminals || terminals.length === 0) {
|
|
79
|
-
return { content: [{ kind: 'text', value: `Terminal not found for task ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
79
|
+
return { content: [{ kind: 'text', value: `Terminal not found for task ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11495, 'Terminal not found for task `{0}`', taskLabel)))) };
|
|
80
80
|
}
|
|
81
81
|
const store = ( new DisposableStore());
|
|
82
82
|
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
|
|
@@ -31,23 +31,23 @@ let RunTaskTool = class RunTaskTool {
|
|
|
31
31
|
const taskDefinition = getTaskDefinition(args.id);
|
|
32
32
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
33
33
|
if (!task) {
|
|
34
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
34
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11496, 'Task not found: `{0}`', args.id)))) };
|
|
35
35
|
}
|
|
36
36
|
const taskLabel = task._label;
|
|
37
37
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
38
38
|
if (activeTasks.includes(task)) {
|
|
39
|
-
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
39
|
+
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(11497, 'The task `{0}` is already running.', taskLabel)))) };
|
|
40
40
|
}
|
|
41
41
|
const raceResult = await Promise.race([this._tasksService.run(task), timeout(3000)]);
|
|
42
42
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
43
43
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
44
44
|
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
45
45
|
if (!resources || resources.length === 0) {
|
|
46
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
46
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11498, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
47
47
|
}
|
|
48
48
|
const terminals = this._terminalService.instances.filter(t => ( resources.some(r => r.path === t.resource.path && r.scheme === t.resource.scheme)));
|
|
49
49
|
if (terminals.length === 0) {
|
|
50
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
50
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11498, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
51
51
|
}
|
|
52
52
|
const store = ( new DisposableStore());
|
|
53
53
|
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
|
|
@@ -81,27 +81,27 @@ let RunTaskTool = class RunTaskTool {
|
|
|
81
81
|
const taskDefinition = getTaskDefinition(args.id);
|
|
82
82
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
83
83
|
if (!task) {
|
|
84
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
84
|
+
return { invocationMessage: ( new MarkdownString(( localize(11496, 'Task not found: `{0}`', args.id)))) };
|
|
85
85
|
}
|
|
86
86
|
const taskLabel = task._label;
|
|
87
87
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
88
88
|
if (task && activeTasks.includes(task)) {
|
|
89
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
89
|
+
return { invocationMessage: ( new MarkdownString(( localize(11499, 'The task is already running.')))) };
|
|
90
90
|
}
|
|
91
91
|
if (await this._isTaskActive(task)) {
|
|
92
92
|
return {
|
|
93
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
94
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
93
|
+
invocationMessage: ( new MarkdownString(( localize(11500, '`{0}` is already running.', taskLabel)))),
|
|
94
|
+
pastTenseMessage: ( new MarkdownString(( localize(11501, '`{0}` was already running.', taskLabel)))),
|
|
95
95
|
confirmationMessages: undefined
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
return {
|
|
99
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
99
|
+
invocationMessage: ( new MarkdownString(( localize(11502, 'Running `{0}`', taskLabel)))),
|
|
100
100
|
pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground
|
|
101
|
-
? ( localize(
|
|
102
|
-
: ( localize(
|
|
101
|
+
? ( localize(11503, 'Started `{0}`', taskLabel))
|
|
102
|
+
: ( localize(11504, 'Ran `{0}`', taskLabel)))),
|
|
103
103
|
confirmationMessages: task
|
|
104
|
-
? { title: ( localize(
|
|
104
|
+
? { title: ( localize(11505, 'Allow task run?')), message: ( localize(11506, 'Allow Copilot to run the task `{0}`?', taskLabel)) }
|
|
105
105
|
: undefined
|
|
106
106
|
};
|
|
107
107
|
}
|
|
@@ -116,9 +116,9 @@ RunTaskTool = ( __decorate([
|
|
|
116
116
|
const RunTaskToolData = {
|
|
117
117
|
id: 'run_task',
|
|
118
118
|
toolReferenceName: 'runTask',
|
|
119
|
-
displayName: ( localize(
|
|
119
|
+
displayName: ( localize(11507, 'Run Task')),
|
|
120
120
|
modelDescription: 'Runs a VS Code task.\n\n- If you see that an appropriate task exists for building or running code, prefer to use this tool to run the task instead of using the run_in_terminal tool.\n- Make sure that any appropriate build or watch task is running before trying to run tests or execute code.\n- If the user asks to run a task, use this tool to do so.',
|
|
121
|
-
userDescription: ( localize(
|
|
121
|
+
userDescription: ( localize(11508, 'Tool for running tasks in the workspace')),
|
|
122
122
|
icon: Codicon.tools,
|
|
123
123
|
source: ToolDataSource.Internal,
|
|
124
124
|
when: TasksAvailableContext,
|
|
@@ -17,7 +17,7 @@ function toolResultDetailsFromResponse(terminalResults) {
|
|
|
17
17
|
function toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults) {
|
|
18
18
|
let resultSummary = '';
|
|
19
19
|
if (result?.exitCode) {
|
|
20
|
-
resultSummary = ( localize(
|
|
20
|
+
resultSummary = ( localize(11509, 'Task `{0}` failed with exit code {1}.', taskLabel, result.exitCode));
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
23
|
resultSummary += `\`${taskLabel}\` task `;
|