@codingame/monaco-vscode-chat-service-override 22.1.5 → 22.1.6
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 +41 -41
- 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 +9 -9
- 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": "22.1.
|
|
3
|
+
"version": "22.1.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - chat service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,46 +15,46 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common": "22.1.
|
|
19
|
-
"@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common": "22.1.
|
|
20
|
-
"@codingame/monaco-vscode-09e9b2e8-42a8-5a68-864f-bfcdad0ca1df-common": "22.1.
|
|
21
|
-
"@codingame/monaco-vscode-1021b67c-93e5-5c78-a270-cbdb2574d980-common": "22.1.
|
|
22
|
-
"@codingame/monaco-vscode-37b3b402-09f5-5f69-89ef-ce30559f63cc-common": "22.1.
|
|
23
|
-
"@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "22.1.
|
|
24
|
-
"@codingame/monaco-vscode-5084de40-f866-5cb5-9d9b-33a10f6f235d-common": "22.1.
|
|
25
|
-
"@codingame/monaco-vscode-51e7513d-a395-525d-b226-639aa8c6cc2d-common": "22.1.
|
|
26
|
-
"@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "22.1.
|
|
27
|
-
"@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "22.1.
|
|
28
|
-
"@codingame/monaco-vscode-64322fa2-7385-5f46-935b-8f243d98004b-common": "22.1.
|
|
29
|
-
"@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "22.1.
|
|
30
|
-
"@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "22.1.
|
|
31
|
-
"@codingame/monaco-vscode-7969284a-1a12-5148-9750-fcf9656a693f-common": "22.1.
|
|
32
|
-
"@codingame/monaco-vscode-85f7fb0f-70f5-5a5e-831b-15c743a8bd11-common": "22.1.
|
|
33
|
-
"@codingame/monaco-vscode-88141f48-1af9-57ef-a278-f4b2ff6128fa-common": "22.1.
|
|
34
|
-
"@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "22.1.
|
|
35
|
-
"@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "22.1.
|
|
36
|
-
"@codingame/monaco-vscode-a175bd1a-4858-5944-9ae5-fb73305dcb13-common": "22.1.
|
|
37
|
-
"@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "22.1.
|
|
38
|
-
"@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "22.1.
|
|
39
|
-
"@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common": "22.1.
|
|
40
|
-
"@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": "22.1.
|
|
41
|
-
"@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common": "22.1.
|
|
42
|
-
"@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "22.1.
|
|
43
|
-
"@codingame/monaco-vscode-af7aa6ff-f023-5da1-803d-a085ef0e5dc3-common": "22.1.
|
|
44
|
-
"@codingame/monaco-vscode-api": "22.1.
|
|
45
|
-
"@codingame/monaco-vscode-b6d52a6d-8c8e-51f5-bcd2-1722295e31d9-common": "22.1.
|
|
46
|
-
"@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "22.1.
|
|
47
|
-
"@codingame/monaco-vscode-bb83fe45-f4c7-5673-b9f1-5c409a63f19c-common": "22.1.
|
|
48
|
-
"@codingame/monaco-vscode-bba55be6-41a2-50cd-a3cc-8bafa35bfa89-common": "22.1.
|
|
49
|
-
"@codingame/monaco-vscode-bc8c28cd-7a80-54a9-af1a-e6b1e7a7f34a-common": "22.1.
|
|
50
|
-
"@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common": "22.1.
|
|
51
|
-
"@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "22.1.
|
|
52
|
-
"@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common": "22.1.
|
|
53
|
-
"@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common": "22.1.
|
|
54
|
-
"@codingame/monaco-vscode-e4d0fd26-1b26-5583-b3f7-582e08d7b389-common": "22.1.
|
|
55
|
-
"@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common": "22.1.
|
|
56
|
-
"@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common": "22.1.
|
|
57
|
-
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "22.1.
|
|
18
|
+
"@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common": "22.1.6",
|
|
19
|
+
"@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common": "22.1.6",
|
|
20
|
+
"@codingame/monaco-vscode-09e9b2e8-42a8-5a68-864f-bfcdad0ca1df-common": "22.1.6",
|
|
21
|
+
"@codingame/monaco-vscode-1021b67c-93e5-5c78-a270-cbdb2574d980-common": "22.1.6",
|
|
22
|
+
"@codingame/monaco-vscode-37b3b402-09f5-5f69-89ef-ce30559f63cc-common": "22.1.6",
|
|
23
|
+
"@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "22.1.6",
|
|
24
|
+
"@codingame/monaco-vscode-5084de40-f866-5cb5-9d9b-33a10f6f235d-common": "22.1.6",
|
|
25
|
+
"@codingame/monaco-vscode-51e7513d-a395-525d-b226-639aa8c6cc2d-common": "22.1.6",
|
|
26
|
+
"@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "22.1.6",
|
|
27
|
+
"@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "22.1.6",
|
|
28
|
+
"@codingame/monaco-vscode-64322fa2-7385-5f46-935b-8f243d98004b-common": "22.1.6",
|
|
29
|
+
"@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "22.1.6",
|
|
30
|
+
"@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "22.1.6",
|
|
31
|
+
"@codingame/monaco-vscode-7969284a-1a12-5148-9750-fcf9656a693f-common": "22.1.6",
|
|
32
|
+
"@codingame/monaco-vscode-85f7fb0f-70f5-5a5e-831b-15c743a8bd11-common": "22.1.6",
|
|
33
|
+
"@codingame/monaco-vscode-88141f48-1af9-57ef-a278-f4b2ff6128fa-common": "22.1.6",
|
|
34
|
+
"@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "22.1.6",
|
|
35
|
+
"@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "22.1.6",
|
|
36
|
+
"@codingame/monaco-vscode-a175bd1a-4858-5944-9ae5-fb73305dcb13-common": "22.1.6",
|
|
37
|
+
"@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "22.1.6",
|
|
38
|
+
"@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "22.1.6",
|
|
39
|
+
"@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common": "22.1.6",
|
|
40
|
+
"@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": "22.1.6",
|
|
41
|
+
"@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common": "22.1.6",
|
|
42
|
+
"@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "22.1.6",
|
|
43
|
+
"@codingame/monaco-vscode-af7aa6ff-f023-5da1-803d-a085ef0e5dc3-common": "22.1.6",
|
|
44
|
+
"@codingame/monaco-vscode-api": "22.1.6",
|
|
45
|
+
"@codingame/monaco-vscode-b6d52a6d-8c8e-51f5-bcd2-1722295e31d9-common": "22.1.6",
|
|
46
|
+
"@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "22.1.6",
|
|
47
|
+
"@codingame/monaco-vscode-bb83fe45-f4c7-5673-b9f1-5c409a63f19c-common": "22.1.6",
|
|
48
|
+
"@codingame/monaco-vscode-bba55be6-41a2-50cd-a3cc-8bafa35bfa89-common": "22.1.6",
|
|
49
|
+
"@codingame/monaco-vscode-bc8c28cd-7a80-54a9-af1a-e6b1e7a7f34a-common": "22.1.6",
|
|
50
|
+
"@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common": "22.1.6",
|
|
51
|
+
"@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "22.1.6",
|
|
52
|
+
"@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common": "22.1.6",
|
|
53
|
+
"@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common": "22.1.6",
|
|
54
|
+
"@codingame/monaco-vscode-e4d0fd26-1b26-5583-b3f7-582e08d7b389-common": "22.1.6",
|
|
55
|
+
"@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common": "22.1.6",
|
|
56
|
+
"@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common": "22.1.6",
|
|
57
|
+
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "22.1.6"
|
|
58
58
|
},
|
|
59
59
|
"main": "index.js",
|
|
60
60
|
"module": "index.js",
|
|
@@ -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(9972, '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(9973, 'A unique identifier for this item.')),
|
|
23
23
|
type: 'string',
|
|
24
24
|
},
|
|
25
25
|
command: {
|
|
26
26
|
description: ( localize(
|
|
27
|
-
|
|
27
|
+
9974,
|
|
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
|
+
9975,
|
|
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(9976, '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
|
+
9977,
|
|
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(9978, '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
|
+
11509,
|
|
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
|
+
11510,
|
|
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
|
+
11511,
|
|
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
|
+
11512,
|
|
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
|
+
11513,
|
|
62
62
|
'The response can be inspected in the accessible view ({0}).',
|
|
63
63
|
openAccessibleViewKeybinding
|
|
64
64
|
)) : ( localize(
|
|
65
|
-
|
|
65
|
+
11514,
|
|
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
|
+
11515,
|
|
70
70
|
'Reach the response from the input box ({0}).',
|
|
71
71
|
focusResponseKeybinding
|
|
72
72
|
)) : ( localize(
|
|
73
|
-
|
|
73
|
+
11516,
|
|
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
|
+
11517,
|
|
78
78
|
'Reach the input box from the response ({0}).',
|
|
79
79
|
focusInputKeybinding
|
|
80
80
|
)) : ( localize(
|
|
81
|
-
|
|
81
|
+
11518,
|
|
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
|
+
11519,
|
|
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
|
+
11520,
|
|
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
|
+
11521,
|
|
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
|
+
11522,
|
|
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
|
+
11523,
|
|
102
102
|
"Use tab to reach conditional parts like commands, status, message responses and more."
|
|
103
103
|
)));
|
|
104
104
|
content.push(( localize(
|
|
105
|
-
|
|
105
|
+
11524,
|
|
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(11525, 'Open Inline Chat')),
|
|
24
|
+
category: ( localize2(11526, "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(11527, '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(11528, 'Run Chat Command')),
|
|
86
|
+
shortTitle: ( localize2(11529, '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(11530, 'Run First Chat Command')),
|
|
115
|
+
shortTitle: ( localize2(11531, '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(11532, 'Insert Chat Command')),
|
|
144
|
+
shortTitle: ( localize2(11533, '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(11534, 'Insert First Chat Command')),
|
|
174
|
+
shortTitle: ( localize2(11535, '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(11536, "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(11537, '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(11538, 'Ask about commands'));
|
|
167
167
|
}
|
|
168
168
|
async reveal(viewState) {
|
|
169
169
|
await this._createSession(viewState);
|
|
@@ -56,11 +56,11 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
56
56
|
if (subCommandsToSuggest.length > 0) {
|
|
57
57
|
let subCommandLabel;
|
|
58
58
|
if (subCommandsToSuggest.length === 1) {
|
|
59
|
-
subCommandLabel = ( localize(
|
|
59
|
+
subCommandLabel = ( localize(11540, 'Always Allow Command: {0}', subCommandsToSuggest[0]));
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
62
|
const commandSeparated = subCommandsToSuggest.join(', ');
|
|
63
|
-
subCommandLabel = ( localize(
|
|
63
|
+
subCommandLabel = ( localize(11541, 'Always Allow Commands: {0}', commandSeparated));
|
|
64
64
|
}
|
|
65
65
|
actions.push({
|
|
66
66
|
label: subCommandLabel,
|
|
@@ -78,7 +78,7 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
78
78
|
!( commandsWithSubcommands.has(commandLine)) &&
|
|
79
79
|
!( commandsWithSubSubCommands.has(commandLine))) {
|
|
80
80
|
actions.push({
|
|
81
|
-
label: ( localize(
|
|
81
|
+
label: ( localize(11542, 'Always Allow Exact Command Line')),
|
|
82
82
|
data: {
|
|
83
83
|
type: 'newRule',
|
|
84
84
|
rule: {
|
|
@@ -96,7 +96,7 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
96
96
|
actions.push(( new Separator()));
|
|
97
97
|
}
|
|
98
98
|
actions.push({
|
|
99
|
-
label: ( localize(
|
|
99
|
+
label: ( localize(11543, 'Configure Auto Approve...')),
|
|
100
100
|
data: {
|
|
101
101
|
type: 'configure'
|
|
102
102
|
}
|
|
@@ -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(11544, '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(11545, '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(11546, '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(11547, 'Terminal Selection')),
|
|
95
|
+
fullName: ( localize(11547, '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(11548, '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(11549, "Getting last terminal command")),
|
|
26
|
+
pastTenseMessage: ( localize(11550, "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(11551, '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(11552, "Checking background terminal output")),
|
|
32
|
+
pastTenseMessage: ( localize(11553, "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(11554, '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(11555, "Reading terminal selection")),
|
|
25
|
+
pastTenseMessage: ( localize(11556, "Read terminal selection")),
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -260,10 +260,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
260
260
|
if (token.isCancellationRequested || this._state === OutputMonitorState.Cancelled) {
|
|
261
261
|
return { promise: Promise.resolve(false) };
|
|
262
262
|
}
|
|
263
|
-
const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(
|
|
264
|
-
|
|
263
|
+
const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(11557, "Continue waiting for `{0}`?", command)))), ( new MarkdownString(( localize(
|
|
264
|
+
11558,
|
|
265
265
|
"This will continue to poll for output to determine when the terminal becomes idle for up to 2 minutes."
|
|
266
|
-
)))), '', ( localize(
|
|
266
|
+
)))), '', ( localize(11559, 'Yes')), ( localize(11560, 'No')), async () => true, async () => { this._state = OutputMonitorState.Cancelled; return false; });
|
|
267
267
|
return { promise: result.promise.then(p => p ?? false), part: result.part };
|
|
268
268
|
}
|
|
269
269
|
async _assessOutputForErrors(buffer, token) {
|
|
@@ -391,11 +391,11 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
391
391
|
return description ? { suggestedOption: { description, option: validOption }, sentToTerminal } : { suggestedOption: validOption, sentToTerminal };
|
|
392
392
|
}
|
|
393
393
|
async _requestFreeFormTerminalInput(token, execution, confirmationPrompt) {
|
|
394
|
-
const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(
|
|
395
|
-
|
|
394
|
+
const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(11561, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
395
|
+
11562,
|
|
396
396
|
"{0}\nPlease provide the required input to the terminal.\n\n",
|
|
397
397
|
confirmationPrompt.prompt
|
|
398
|
-
)))), '', ( localize(
|
|
398
|
+
)))), '', ( localize(11563, 'Focus terminal')), undefined, async () => { execution.instance.focus(true); return true; });
|
|
399
399
|
const inputPromise = ( new Promise(resolve => {
|
|
400
400
|
const inputDataDisposable = this._register(execution.instance.onDidInputData((data) => {
|
|
401
401
|
if (!data || data === '\r' || data === '\n' || data === '\r\n') {
|
|
@@ -412,13 +412,13 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
412
412
|
async _confirmRunInTerminal(token, suggestedOption, execution, confirmationPrompt) {
|
|
413
413
|
const suggestedOptionValue = typeof suggestedOption === 'string' ? suggestedOption : suggestedOption.option;
|
|
414
414
|
let inputDataDisposable = Disposable.None;
|
|
415
|
-
const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(
|
|
416
|
-
|
|
415
|
+
const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(11564, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
416
|
+
11565,
|
|
417
417
|
"{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
|
|
418
418
|
confirmationPrompt.prompt,
|
|
419
419
|
suggestedOptionValue,
|
|
420
420
|
typeof suggestedOption === 'string' ? '' : suggestedOption.description ? ' (' + suggestedOption.description + ')' : ''
|
|
421
|
-
)))), '', ( localize(
|
|
421
|
+
)))), '', ( localize(11566, 'Allow')), ( localize(11567, 'Focus Terminal')), async (value) => {
|
|
422
422
|
let option = undefined;
|
|
423
423
|
if (value === true) {
|
|
424
424
|
option = suggestedOptionValue;
|
|
@@ -50,7 +50,7 @@ var TerminalToolStorageKeysInternal;
|
|
|
50
50
|
const RunInTerminalToolData = {
|
|
51
51
|
id: 'run_in_terminal',
|
|
52
52
|
toolReferenceName: 'runInTerminal',
|
|
53
|
-
displayName: ( localize(
|
|
53
|
+
displayName: ( localize(11568, 'Run in Terminal')),
|
|
54
54
|
modelDescription: [
|
|
55
55
|
'This tool allows you to execute shell commands in a persistent terminal session, preserving environment variables, working directory, and other context across multiple commands.',
|
|
56
56
|
'',
|
|
@@ -78,7 +78,7 @@ const RunInTerminalToolData = {
|
|
|
78
78
|
'- Use targeted queries instead of broad scans',
|
|
79
79
|
'- Consider using \'wc -l\' to count before listing many items'
|
|
80
80
|
].join('\n'),
|
|
81
|
-
userDescription: ( localize(
|
|
81
|
+
userDescription: ( localize(11569, 'Tool for running commands in the terminal')),
|
|
82
82
|
source: ToolDataSource.Internal,
|
|
83
83
|
icon: Codicon.terminal,
|
|
84
84
|
inputSchema: {
|
|
@@ -253,7 +253,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
253
253
|
if (!isAutoApproved && (( subCommandsLowerFirstWordOnly.some(command => promptInjectionWarningCommandsLower.includes(command))) ||
|
|
254
254
|
(isPowerShell(shell, os) && ( subCommandsLowerFirstWordOnly.some(command => promptInjectionWarningCommandsLowerPwshOnly.includes(command)))))) {
|
|
255
255
|
disclaimer = ( new MarkdownString(`$(${Codicon.info.id}) ` + ( localize(
|
|
256
|
-
|
|
256
|
+
11570,
|
|
257
257
|
'Web content may contain malicious code or attempt prompt injection attacks.'
|
|
258
258
|
)), { supportThemeIcons: true }));
|
|
259
259
|
}
|
|
@@ -267,8 +267,8 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
267
267
|
}
|
|
268
268
|
confirmationMessages = (isAutoApproved && isAutoApproveAllowed) ? undefined : {
|
|
269
269
|
title: args.isBackground
|
|
270
|
-
? ( localize(
|
|
271
|
-
: ( localize(
|
|
270
|
+
? ( localize(11571, "Run `{0}` command? (background terminal)", shellType))
|
|
271
|
+
: ( localize(11572, "Run `{0}` command?", shellType)),
|
|
272
272
|
message: ( new MarkdownString(args.explanation)),
|
|
273
273
|
disclaimer,
|
|
274
274
|
terminalCustomActions: customActions,
|
|
@@ -712,7 +712,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
712
712
|
const formatRuleLinks = (result) => {
|
|
713
713
|
return ( asArray(result).map(e => {
|
|
714
714
|
const settingsUri = createCommandUri(openTerminalSettingsLinkCommandId, e.rule.sourceTarget);
|
|
715
|
-
return `[\`${e.rule.sourceText}\`](${( settingsUri.toString())} "${( localize(
|
|
715
|
+
return `[\`${e.rule.sourceText}\`](${( settingsUri.toString())} "${( localize(11573, 'View rule in settings'))}")`;
|
|
716
716
|
})).join(', ');
|
|
717
717
|
};
|
|
718
718
|
const mdTrustSettings = {
|
|
@@ -725,9 +725,9 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
725
725
|
if (isGlobalAutoApproved) {
|
|
726
726
|
const settingsUri = createCommandUri(openTerminalSettingsLinkCommandId, 'global');
|
|
727
727
|
return (new MarkdownString(`_${( localize(
|
|
728
|
-
|
|
728
|
+
11574,
|
|
729
729
|
'Auto approved by setting {0}',
|
|
730
|
-
`[\`${ChatConfiguration.GlobalAutoApprove}\`](${( settingsUri.toString())} "${( localize(
|
|
730
|
+
`[\`${ChatConfiguration.GlobalAutoApprove}\`](${( settingsUri.toString())} "${( localize(11575, 'View settings'))}")`
|
|
731
731
|
))}_`, mdTrustSettings));
|
|
732
732
|
}
|
|
733
733
|
if (isAutoApproved) {
|
|
@@ -735,7 +735,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
735
735
|
case 'commandLine': {
|
|
736
736
|
if (commandLineResult.rule) {
|
|
737
737
|
return (new MarkdownString(
|
|
738
|
-
`_${( localize(
|
|
738
|
+
`_${( localize(11576, 'Auto approved by rule {0}', formatRuleLinks(commandLineResult)))}_`,
|
|
739
739
|
mdTrustSettings
|
|
740
740
|
));
|
|
741
741
|
}
|
|
@@ -745,13 +745,13 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
745
745
|
const uniqueRules = dedupeRules(subCommandResults);
|
|
746
746
|
if (uniqueRules.length === 1) {
|
|
747
747
|
return (new MarkdownString(
|
|
748
|
-
`_${( localize(
|
|
748
|
+
`_${( localize(11576, 'Auto approved by rule {0}', formatRuleLinks(uniqueRules)))}_`,
|
|
749
749
|
mdTrustSettings
|
|
750
750
|
));
|
|
751
751
|
}
|
|
752
752
|
else if (uniqueRules.length > 1) {
|
|
753
753
|
return (new MarkdownString(
|
|
754
|
-
`_${( localize(
|
|
754
|
+
`_${( localize(11577, 'Auto approved by rules {0}', formatRuleLinks(uniqueRules)))}_`,
|
|
755
755
|
mdTrustSettings
|
|
756
756
|
));
|
|
757
757
|
}
|
|
@@ -764,7 +764,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
764
764
|
case 'commandLine': {
|
|
765
765
|
if (commandLineResult.rule) {
|
|
766
766
|
return (new MarkdownString(`_${( localize(
|
|
767
|
-
|
|
767
|
+
11578,
|
|
768
768
|
'Auto approval denied by rule {0}',
|
|
769
769
|
formatRuleLinks(commandLineResult)
|
|
770
770
|
))}_`, mdTrustSettings));
|
|
@@ -775,12 +775,12 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
775
775
|
const uniqueRules = dedupeRules(subCommandResults.filter(e => e.result === 'denied'));
|
|
776
776
|
if (uniqueRules.length === 1) {
|
|
777
777
|
return (new MarkdownString(
|
|
778
|
-
`_${( localize(
|
|
778
|
+
`_${( localize(11578, 'Auto approval denied by rule {0}', formatRuleLinks(uniqueRules)))}_`
|
|
779
779
|
));
|
|
780
780
|
}
|
|
781
781
|
else if (uniqueRules.length > 1) {
|
|
782
782
|
return (new MarkdownString(
|
|
783
|
-
`_${( localize(
|
|
783
|
+
`_${( localize(11579, 'Auto approval denied by rules {0}', formatRuleLinks(uniqueRules)))}_`
|
|
784
784
|
));
|
|
785
785
|
}
|
|
786
786
|
break;
|
|
@@ -57,7 +57,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
57
57
|
await this._fileService.writeFile(tasksJsonUri, VSBuffer.fromString(JSON.stringify(tasksJson, null, '\t')));
|
|
58
58
|
_progress.report({ message: 'Updated tasks.json file' });
|
|
59
59
|
}
|
|
60
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
60
|
+
_progress.report({ message: ( new MarkdownString(( localize(11580, 'Resolving the task')))) });
|
|
61
61
|
let task;
|
|
62
62
|
const start = Date.now();
|
|
63
63
|
while (Date.now() - start < 5000 && !token.isCancellationRequested) {
|
|
@@ -68,9 +68,9 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
68
68
|
await timeout(100);
|
|
69
69
|
}
|
|
70
70
|
if (!task) {
|
|
71
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
71
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(11581, 'Task not found: `{0}`', args.task.label)))) };
|
|
72
72
|
}
|
|
73
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
73
|
+
_progress.report({ message: ( new MarkdownString(( localize(11582, 'Running task `{0}`', args.task.label)))) });
|
|
74
74
|
const raceResult = await Promise.race([this._tasksService.run(task, undefined, TaskRunSource.ChatAgent), timeout(3000)]);
|
|
75
75
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
76
76
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
@@ -78,7 +78,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
78
78
|
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(Boolean);
|
|
79
79
|
if (!terminals || terminals.length === 0) {
|
|
80
80
|
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
81
|
-
|
|
81
|
+
11583,
|
|
82
82
|
'Task started but no terminal was found for: `{0}`',
|
|
83
83
|
args.task.label
|
|
84
84
|
)))) };
|
|
@@ -119,26 +119,26 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
119
119
|
const allTasks = await this._tasksService.tasks();
|
|
120
120
|
if (allTasks?.find(t => t._label === task.label)) {
|
|
121
121
|
return {
|
|
122
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
123
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
122
|
+
invocationMessage: ( new MarkdownString(( localize(11584, 'Task `{0}` already exists.', task.label)))),
|
|
123
|
+
pastTenseMessage: ( new MarkdownString(( localize(11585, 'Task `{0}` already exists.', task.label)))),
|
|
124
124
|
confirmationMessages: undefined
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
128
128
|
if (activeTasks.find(t => t._label === task.label)) {
|
|
129
129
|
return {
|
|
130
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
131
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
130
|
+
invocationMessage: ( new MarkdownString(( localize(11586, 'Task \`{0}\` is already running.', task.label)))),
|
|
131
|
+
pastTenseMessage: ( new MarkdownString(( localize(11586, 'Task \`{0}\` is already running.', task.label)))),
|
|
132
132
|
confirmationMessages: undefined
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
135
|
return {
|
|
136
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
137
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
136
|
+
invocationMessage: ( new MarkdownString(( localize(11587, 'Created task \`{0}\`', task.label)))),
|
|
137
|
+
pastTenseMessage: ( new MarkdownString(( localize(11588, 'Created task \`{0}\`', task.label)))),
|
|
138
138
|
confirmationMessages: {
|
|
139
|
-
title: ( localize(
|
|
139
|
+
title: ( localize(11589, 'Allow task creation and execution?')),
|
|
140
140
|
message: ( new MarkdownString(( localize(
|
|
141
|
-
|
|
141
|
+
11590,
|
|
142
142
|
'Copilot will create the task \`{0}\` with command \`{1}\`{2}.',
|
|
143
143
|
task.label,
|
|
144
144
|
task.command,
|
|
@@ -159,12 +159,12 @@ CreateAndRunTaskTool = ( __decorate([
|
|
|
159
159
|
const CreateAndRunTaskToolData = {
|
|
160
160
|
id: 'create_and_run_task',
|
|
161
161
|
toolReferenceName: 'createAndRunTask',
|
|
162
|
-
displayName: ( localize(
|
|
162
|
+
displayName: ( localize(11591, 'Create and run Task')),
|
|
163
163
|
modelDescription: ( localize(
|
|
164
|
-
|
|
164
|
+
11592,
|
|
165
165
|
'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.'
|
|
166
166
|
)),
|
|
167
|
-
userDescription: ( localize(
|
|
167
|
+
userDescription: ( localize(11593, "Create and run a task in the workspace")),
|
|
168
168
|
source: ToolDataSource.Internal,
|
|
169
169
|
inputSchema: {
|
|
170
170
|
'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(11594, '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(11595, '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(11596, '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(11597, 'Checking output for task `{0}`', taskLabel)))),
|
|
64
|
+
pastTenseMessage: ( new MarkdownString(( localize(11598, '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(11595, '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(11599, '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);
|
|
@@ -32,23 +32,23 @@ let RunTaskTool = class RunTaskTool {
|
|
|
32
32
|
const taskDefinition = getTaskDefinition(args.id);
|
|
33
33
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
34
34
|
if (!task) {
|
|
35
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
35
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11600, 'Task not found: `{0}`', args.id)))) };
|
|
36
36
|
}
|
|
37
37
|
const taskLabel = task._label;
|
|
38
38
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
39
39
|
if (activeTasks.includes(task)) {
|
|
40
|
-
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
40
|
+
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(11601, 'The task `{0}` is already running.', taskLabel)))) };
|
|
41
41
|
}
|
|
42
42
|
const raceResult = await Promise.race([this._tasksService.run(task, undefined, TaskRunSource.ChatAgent), timeout(3000)]);
|
|
43
43
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
44
44
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
45
45
|
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
46
46
|
if (!resources || resources.length === 0) {
|
|
47
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
47
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11602, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
48
48
|
}
|
|
49
49
|
const terminals = this._terminalService.instances.filter(t => ( resources.some(r => r.path === t.resource.path && r.scheme === t.resource.scheme)));
|
|
50
50
|
if (terminals.length === 0) {
|
|
51
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
51
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11602, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
52
52
|
}
|
|
53
53
|
const store = ( new DisposableStore());
|
|
54
54
|
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
|
|
@@ -85,27 +85,27 @@ let RunTaskTool = class RunTaskTool {
|
|
|
85
85
|
const taskDefinition = getTaskDefinition(args.id);
|
|
86
86
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
87
87
|
if (!task) {
|
|
88
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
88
|
+
return { invocationMessage: ( new MarkdownString(( localize(11600, 'Task not found: `{0}`', args.id)))) };
|
|
89
89
|
}
|
|
90
90
|
const taskLabel = task._label;
|
|
91
91
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
92
92
|
if (task && activeTasks.includes(task)) {
|
|
93
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
93
|
+
return { invocationMessage: ( new MarkdownString(( localize(11603, 'The task is already running.')))) };
|
|
94
94
|
}
|
|
95
95
|
if (await this._isTaskActive(task)) {
|
|
96
96
|
return {
|
|
97
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
98
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
97
|
+
invocationMessage: ( new MarkdownString(( localize(11604, '`{0}` is already running.', taskLabel)))),
|
|
98
|
+
pastTenseMessage: ( new MarkdownString(( localize(11605, '`{0}` was already running.', taskLabel)))),
|
|
99
99
|
confirmationMessages: undefined
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
return {
|
|
103
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
103
|
+
invocationMessage: ( new MarkdownString(( localize(11606, 'Running `{0}`', taskLabel)))),
|
|
104
104
|
pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground
|
|
105
|
-
? ( localize(
|
|
106
|
-
: ( localize(
|
|
105
|
+
? ( localize(11607, 'Started `{0}`', taskLabel))
|
|
106
|
+
: ( localize(11608, 'Ran `{0}`', taskLabel)))),
|
|
107
107
|
confirmationMessages: task
|
|
108
|
-
? { title: ( localize(
|
|
108
|
+
? { title: ( localize(11609, 'Allow task run?')), message: ( localize(11610, 'Allow Copilot to run the task `{0}`?', taskLabel)) }
|
|
109
109
|
: undefined
|
|
110
110
|
};
|
|
111
111
|
}
|
|
@@ -120,9 +120,9 @@ RunTaskTool = ( __decorate([
|
|
|
120
120
|
const RunTaskToolData = {
|
|
121
121
|
id: 'run_task',
|
|
122
122
|
toolReferenceName: 'runTask',
|
|
123
|
-
displayName: ( localize(
|
|
123
|
+
displayName: ( localize(11611, 'Run Task')),
|
|
124
124
|
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.',
|
|
125
|
-
userDescription: ( localize(
|
|
125
|
+
userDescription: ( localize(11612, 'Tool for running tasks in the workspace')),
|
|
126
126
|
icon: Codicon.tools,
|
|
127
127
|
source: ToolDataSource.Internal,
|
|
128
128
|
when: TasksAvailableContext,
|
|
@@ -17,7 +17,7 @@ function toolResultDetailsFromResponse(terminalResults) {
|
|
|
17
17
|
function toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults, getOutputTool) {
|
|
18
18
|
let resultSummary = '';
|
|
19
19
|
if (result?.exitCode) {
|
|
20
|
-
resultSummary = ( localize(
|
|
20
|
+
resultSummary = ( localize(11613, 'Task `{0}` failed with exit code {1}.', taskLabel, result.exitCode));
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
23
|
resultSummary += `\`${taskLabel}\` task `;
|