@codingame/monaco-vscode-chat-service-override 20.0.0 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +36 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +47 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +53 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- 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 +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/getTerminalOutputTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalTool.js +4 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/createAndRunTaskTool.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/runTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +1 -1
package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js
CHANGED
|
@@ -13,7 +13,7 @@ import { ChatViewsWelcomeExtensions } from '@codingame/monaco-vscode-e28ac690-06
|
|
|
13
13
|
const chatViewsWelcomeExtensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
14
14
|
extensionPoint: 'chatViewsWelcome',
|
|
15
15
|
jsonSchema: {
|
|
16
|
-
description: ( localize(
|
|
16
|
+
description: ( localize(5336, 'Contributes a welcome message to a chat view')),
|
|
17
17
|
type: 'array',
|
|
18
18
|
items: {
|
|
19
19
|
additionalProperties: false,
|
|
@@ -21,22 +21,22 @@ const chatViewsWelcomeExtensionPoint = ExtensionsRegistry.registerExtensionPoint
|
|
|
21
21
|
properties: {
|
|
22
22
|
icon: {
|
|
23
23
|
type: 'string',
|
|
24
|
-
description: ( localize(
|
|
24
|
+
description: ( localize(5337, 'The icon for the welcome message.')),
|
|
25
25
|
},
|
|
26
26
|
title: {
|
|
27
27
|
type: 'string',
|
|
28
|
-
description: ( localize(
|
|
28
|
+
description: ( localize(5338, 'The title of the welcome message.')),
|
|
29
29
|
},
|
|
30
30
|
content: {
|
|
31
31
|
type: 'string',
|
|
32
32
|
description: ( localize(
|
|
33
|
-
|
|
33
|
+
5339,
|
|
34
34
|
'The content of the welcome message. The first command link will be rendered as a button.'
|
|
35
35
|
)),
|
|
36
36
|
},
|
|
37
37
|
when: {
|
|
38
38
|
type: 'string',
|
|
39
|
-
description: ( localize(
|
|
39
|
+
description: ( localize(5340, 'Condition when the welcome message is shown.')),
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
},
|
|
@@ -29,7 +29,7 @@ class ChatToolInvocation {
|
|
|
29
29
|
this._isCompleteDeferred = ( new DeferredPromise());
|
|
30
30
|
this._confirmDeferred = ( new DeferredPromise());
|
|
31
31
|
this.progress = observableValue(this, { progress: 0 });
|
|
32
|
-
const defaultMessage = ( localize(
|
|
32
|
+
const defaultMessage = ( localize(5415, "Using {0}", `"${toolData.displayName}"`));
|
|
33
33
|
const invocationMessage = preparedInvocation?.invocationMessage ?? defaultMessage;
|
|
34
34
|
this.invocationMessage = invocationMessage;
|
|
35
35
|
this.pastTenseMessage = preparedInvocation?.pastTenseMessage;
|
|
@@ -294,7 +294,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
294
294
|
const liveSessionItems = ( Array.from(( this._sessionModels.values()))
|
|
295
295
|
.filter(session => !session.isImported)
|
|
296
296
|
.map(session => {
|
|
297
|
-
const title = session.title || ( localize(
|
|
297
|
+
const title = session.title || ( localize(5416, "New Chat"));
|
|
298
298
|
return {
|
|
299
299
|
sessionId: session.sessionId,
|
|
300
300
|
title,
|
|
@@ -328,7 +328,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
328
328
|
const liveSessionItems = ( Array.from(( this._sessionModels.values()))
|
|
329
329
|
.filter(session => !session.isImported)
|
|
330
330
|
.map(session => {
|
|
331
|
-
const title = session.title || ( localize(
|
|
331
|
+
const title = session.title || ( localize(5416, "New Chat"));
|
|
332
332
|
return {
|
|
333
333
|
sessionId: session.sessionId,
|
|
334
334
|
title,
|
|
@@ -767,7 +767,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
767
767
|
else {
|
|
768
768
|
if (!rawResult) {
|
|
769
769
|
this.trace('sendRequest', `Provider returned no response for session ${model.sessionId}`);
|
|
770
|
-
rawResult = { errorDetails: { message: ( localize(
|
|
770
|
+
rawResult = { errorDetails: { message: ( localize(5417, "Provider returned null response")) } };
|
|
771
771
|
}
|
|
772
772
|
const result = rawResult.errorDetails?.responseIsFiltered ? 'filtered' :
|
|
773
773
|
rawResult.errorDetails && gotProgress ? 'errorWithOutput' :
|
|
@@ -51,7 +51,7 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
|
|
|
51
51
|
}
|
|
52
52
|
e.join(this.storeTask, {
|
|
53
53
|
id: 'join.chatSessionStore',
|
|
54
|
-
label: ( localize(
|
|
54
|
+
label: ( localize(5418, "Saving chat history"))
|
|
55
55
|
});
|
|
56
56
|
}));
|
|
57
57
|
}
|
|
@@ -324,7 +324,7 @@ function isChatSessionIndex(data) {
|
|
|
324
324
|
}
|
|
325
325
|
function getSessionMetadata(session) {
|
|
326
326
|
const title = session instanceof ChatModel ?
|
|
327
|
-
(session.title || ( localize(
|
|
327
|
+
(session.title || ( localize(5419, "New Chat"))) :
|
|
328
328
|
session.customTitle ?? ChatModel.getDefaultTitle(session.requests);
|
|
329
329
|
return {
|
|
330
330
|
sessionId: session.sessionId,
|
|
@@ -70,14 +70,14 @@ let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider exte
|
|
|
70
70
|
const modelMetadata = this.findModelByName(languageModes, modelNode.value);
|
|
71
71
|
if (!modelMetadata) {
|
|
72
72
|
markers.push({
|
|
73
|
-
message: ( localize(
|
|
73
|
+
message: ( localize(5442, "Unknown model '{0}'", modelNode.value)),
|
|
74
74
|
severity: MarkerSeverity.Warning,
|
|
75
75
|
...modelNode.range,
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
else if (modeKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
|
|
79
79
|
markers.push({
|
|
80
|
-
message: ( localize(
|
|
80
|
+
message: ( localize(5443, "Model '{0}' is not suited for agent mode", modelNode.value)),
|
|
81
81
|
severity: MarkerSeverity.Warning,
|
|
82
82
|
...modelNode.range,
|
|
83
83
|
});
|
|
@@ -110,7 +110,7 @@ let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider exte
|
|
|
110
110
|
const range = tools.getToolRange(toolName);
|
|
111
111
|
if (range) {
|
|
112
112
|
markers.push({
|
|
113
|
-
message: ( localize(
|
|
113
|
+
message: ( localize(5444, "Unknown tool '{0}'", toolName)),
|
|
114
114
|
severity: MarkerSeverity.Warning,
|
|
115
115
|
...range,
|
|
116
116
|
});
|
|
@@ -50,14 +50,14 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
|
|
|
50
50
|
const descriptionRange = header.metadataUtility.description?.range;
|
|
51
51
|
if (descriptionRange?.containsPosition(position)) {
|
|
52
52
|
return this.createHover(( localize(
|
|
53
|
-
|
|
53
|
+
5445,
|
|
54
54
|
'The description of the instruction file. It can be used to provide additional context or information about the instructions and is passed to the language model as part of the prompt.'
|
|
55
55
|
)), descriptionRange);
|
|
56
56
|
}
|
|
57
57
|
const applyToRange = header.metadataUtility.applyTo?.range;
|
|
58
58
|
if (applyToRange?.containsPosition(position)) {
|
|
59
59
|
return this.createHover(( localize(
|
|
60
|
-
|
|
60
|
+
5446,
|
|
61
61
|
'One or more glob pattern (separated by comma) that describe for which files the instructions apply to. Based on these patterns, the file is automatically included in the prompt, when the context contains a file that matches one or more of these patterns. Use `**` when you want this file to always be added.\nExample: **/*.ts, **/*.js, client/**'
|
|
62
62
|
)), applyToRange);
|
|
63
63
|
}
|
|
@@ -66,38 +66,38 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
|
|
|
66
66
|
const descriptionRange = header.metadataUtility.description?.range;
|
|
67
67
|
if (descriptionRange?.containsPosition(position)) {
|
|
68
68
|
return this.createHover(( localize(
|
|
69
|
-
|
|
69
|
+
5447,
|
|
70
70
|
'The description of the mode file. It can be used to provide additional context or information about the mode to the mode author.'
|
|
71
71
|
)), descriptionRange);
|
|
72
72
|
}
|
|
73
73
|
const model = header.metadataUtility.model;
|
|
74
74
|
if (model?.range.containsPosition(position)) {
|
|
75
|
-
return this.getModelHover(model, model.range, ( localize(
|
|
75
|
+
return this.getModelHover(model, model.range, ( localize(5448, 'The model to use in this mode.')));
|
|
76
76
|
}
|
|
77
77
|
const tools = header.metadataUtility.tools;
|
|
78
78
|
if (tools?.range?.containsPosition(position)) {
|
|
79
|
-
return this.getToolHover(tools, position, ( localize(
|
|
79
|
+
return this.getToolHover(tools, position, ( localize(5449, 'The tools to use in this mode.')));
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
83
|
const descriptionRange = header.metadataUtility.description?.range;
|
|
84
84
|
if (descriptionRange?.containsPosition(position)) {
|
|
85
85
|
return this.createHover(( localize(
|
|
86
|
-
|
|
86
|
+
5450,
|
|
87
87
|
'The description of the prompt file. It can be used to provide additional context or information about the prompt to the prompt author.'
|
|
88
88
|
)), descriptionRange);
|
|
89
89
|
}
|
|
90
90
|
const model = header.metadataUtility.model;
|
|
91
91
|
if (model?.range.containsPosition(position)) {
|
|
92
|
-
return this.getModelHover(model, model.range, ( localize(
|
|
92
|
+
return this.getModelHover(model, model.range, ( localize(5451, 'The model to use in this prompt.')));
|
|
93
93
|
}
|
|
94
94
|
const tools = header.metadataUtility.tools;
|
|
95
95
|
if (tools?.range?.containsPosition(position)) {
|
|
96
|
-
return this.getToolHover(tools, position, ( localize(
|
|
96
|
+
return this.getToolHover(tools, position, ( localize(5452, 'The tools to use in this prompt.')));
|
|
97
97
|
}
|
|
98
98
|
const modeRange = header.metadataUtility.mode?.range;
|
|
99
99
|
if (modeRange?.containsPosition(position)) {
|
|
100
|
-
return this.createHover(( localize(
|
|
100
|
+
return this.createHover(( localize(5453, 'The mode (ask, edit or agent) to use when running this prompt.')), modeRange);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
return undefined;
|
|
@@ -122,7 +122,7 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
|
|
|
122
122
|
}
|
|
123
123
|
getToolsetHover(toolSet, range) {
|
|
124
124
|
const lines = [];
|
|
125
|
-
lines.push(( localize(
|
|
125
|
+
lines.push(( localize(5454, 'ToolSet: {0}\n\n', toolSet.referenceName)));
|
|
126
126
|
if (toolSet.description) {
|
|
127
127
|
lines.push(toolSet.description);
|
|
128
128
|
}
|
|
@@ -139,9 +139,9 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
|
|
|
139
139
|
if (meta && ILanguageModelChatMetadata.asQualifiedName(meta) === modelName) {
|
|
140
140
|
const lines = [];
|
|
141
141
|
lines.push(baseMessage + '\n');
|
|
142
|
-
lines.push(( localize(
|
|
143
|
-
lines.push(( localize(
|
|
144
|
-
lines.push(( localize(
|
|
142
|
+
lines.push(( localize(5455, '- Name: {0}', meta.name)));
|
|
143
|
+
lines.push(( localize(5456, '- Family: {0}', meta.family)));
|
|
144
|
+
lines.push(( localize(5457, '- Vendor: {0}', meta.vendor)));
|
|
145
145
|
if (meta.description) {
|
|
146
146
|
lines.push('', '', meta.description);
|
|
147
147
|
}
|
|
@@ -22,7 +22,7 @@ let PromptLinkDiagnosticsProvider = class PromptLinkDiagnosticsProvider extends
|
|
|
22
22
|
const stats = await this.fileService.resolveAll(( this.parser.references.map(ref => ({ resource: ref.uri }))));
|
|
23
23
|
for (let i = 0; i < stats.length; i++) {
|
|
24
24
|
if (!stats[i].success) {
|
|
25
|
-
markers.push(toMarker(this.parser.references[i], ( localize(
|
|
25
|
+
markers.push(toMarker(this.parser.references[i], ( localize(5458, 'File not found.'))));
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
this.markerService.changeOne(MARKERS_OWNER_ID, this.model.uri, markers);
|
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js
CHANGED
|
@@ -65,12 +65,12 @@ class HeaderBase extends Disposable {
|
|
|
65
65
|
if (token instanceof SimpleToken) {
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
|
-
this.issues.push(( new PromptMetadataError(token.range, ( localize(
|
|
68
|
+
this.issues.push(( new PromptMetadataError(token.range, ( localize(5459, "Unexpected token '{0}'.", token.text)))));
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
const recordName = token.nameToken.text;
|
|
72
72
|
if (( this.recordNames.has(recordName))) {
|
|
73
|
-
this.issues.push(( new PromptMetadataWarning(token.range, ( localize(
|
|
73
|
+
this.issues.push(( new PromptMetadataWarning(token.range, ( localize(5460, "Duplicate property '{0}' will be ignored.", recordName)))));
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
this.recordNames.add(recordName);
|
|
@@ -84,10 +84,10 @@ class HeaderBase extends Disposable {
|
|
|
84
84
|
if (this.handleToken(token)) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
-
this.issues.push(( new PromptMetadataWarning(token.range, ( localize(
|
|
87
|
+
this.issues.push(( new PromptMetadataWarning(token.range, ( localize(5461, "Unknown property '{0}' will be ignored.", recordName)))));
|
|
88
88
|
}
|
|
89
89
|
onError(error) {
|
|
90
|
-
this.issues.push(( new PromptMetadataError(this.token.range, ( localize(
|
|
90
|
+
this.issues.push(( new PromptMetadataError(this.token.range, ( localize(5462, "Failed to parse prompt header: {0}", error.message)))));
|
|
91
91
|
}
|
|
92
92
|
get settled() {
|
|
93
93
|
return this.stream.settled;
|
|
@@ -40,7 +40,7 @@ class PromptApplyToMetadata extends PromptStringMetadata {
|
|
|
40
40
|
}
|
|
41
41
|
if (this.languageId !== INSTRUCTIONS_LANGUAGE_ID) {
|
|
42
42
|
this.issues.push(( new PromptMetadataError(this.range, ( localize(
|
|
43
|
-
|
|
43
|
+
5463,
|
|
44
44
|
"The '{0}' header property is only valid in instruction files.",
|
|
45
45
|
this.recordName
|
|
46
46
|
)))));
|
|
@@ -49,7 +49,7 @@ class PromptApplyToMetadata extends PromptStringMetadata {
|
|
|
49
49
|
}
|
|
50
50
|
const { cleanText } = this.valueToken;
|
|
51
51
|
if (this.isValidGlob(cleanText) === false) {
|
|
52
|
-
this.issues.push(( new PromptMetadataWarning(this.valueToken.range, ( localize(
|
|
52
|
+
this.issues.push(( new PromptMetadataWarning(this.valueToken.range, ( localize(5464, "Invalid glob pattern '{0}'.", cleanText)))));
|
|
53
53
|
delete this.valueToken;
|
|
54
54
|
return this.issues;
|
|
55
55
|
}
|
|
@@ -46,7 +46,7 @@ class PromptEnumMetadata extends PromptStringMetadata {
|
|
|
46
46
|
return this.issues;
|
|
47
47
|
}
|
|
48
48
|
this.issues.push(( new PromptMetadataError(this.valueToken.range, ( localize(
|
|
49
|
-
|
|
49
|
+
5465,
|
|
50
50
|
"The '{0}' metadata must be one of {1}, got '{2}'.",
|
|
51
51
|
this.recordName,
|
|
52
52
|
( this.validValues
|
|
@@ -40,7 +40,7 @@ class PromptStringMetadata extends PromptMetadataRecord {
|
|
|
40
40
|
return this.issues;
|
|
41
41
|
}
|
|
42
42
|
this.issues.push(( new PromptMetadataError(valueToken.range, ( localize(
|
|
43
|
-
|
|
43
|
+
5466,
|
|
44
44
|
"The '{0}' metadata must be a '{1}', got '{2}'.",
|
|
45
45
|
this.recordName,
|
|
46
46
|
'string',
|
|
@@ -44,7 +44,7 @@ class PromptToolsMetadata extends PromptMetadataRecord {
|
|
|
44
44
|
const { valueToken } = this.recordToken;
|
|
45
45
|
if ((valueToken instanceof FrontMatterArray) === false) {
|
|
46
46
|
this.issues.push(( new PromptMetadataError(valueToken.range, ( localize(
|
|
47
|
-
|
|
47
|
+
5467,
|
|
48
48
|
"Must be an array of tool names, got '{0}'.",
|
|
49
49
|
(valueToken.valueTypeName.toString())
|
|
50
50
|
)))));
|
|
@@ -66,7 +66,7 @@ class PromptToolsMetadata extends PromptMetadataRecord {
|
|
|
66
66
|
if ((valueToken instanceof FrontMatterString) === false &&
|
|
67
67
|
(valueToken instanceof FrontMatterSequence) === false) {
|
|
68
68
|
issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(
|
|
69
|
-
|
|
69
|
+
5468,
|
|
70
70
|
"Unexpected tool name '{0}', expected a string literal.",
|
|
71
71
|
valueToken.text
|
|
72
72
|
)))));
|
|
@@ -74,11 +74,11 @@ class PromptToolsMetadata extends PromptMetadataRecord {
|
|
|
74
74
|
}
|
|
75
75
|
const cleanToolName = valueToken.cleanText.trim();
|
|
76
76
|
if (cleanToolName.length === 0) {
|
|
77
|
-
issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(
|
|
77
|
+
issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(5469, "Tool name cannot be empty.")))));
|
|
78
78
|
return issues;
|
|
79
79
|
}
|
|
80
80
|
if (( validToolNames.has(cleanToolName))) {
|
|
81
|
-
issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(
|
|
81
|
+
issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(5470, "Duplicate tool name '{0}'.", cleanToolName)))));
|
|
82
82
|
return issues;
|
|
83
83
|
}
|
|
84
84
|
validToolNames.set(cleanToolName, valueToken.range);
|
|
@@ -52,7 +52,7 @@ class PromptHeader extends HeaderBase {
|
|
|
52
52
|
assertDefined(mode, 'Mode metadata must have been present.');
|
|
53
53
|
assert(mode.value !== ChatModeKind.Agent, 'Mode metadata must not be agent mode.');
|
|
54
54
|
this.issues.push(( new PromptMetadataWarning(tools.range, ( localize(
|
|
55
|
-
|
|
55
|
+
5471,
|
|
56
56
|
"Tools can only be used when in 'agent' mode, but the mode is set to '{0}'. The tools will be ignored.",
|
|
57
57
|
mode.value
|
|
58
58
|
)))));
|
|
@@ -15,29 +15,29 @@ class TopError {
|
|
|
15
15
|
const { originalError, parentUri, errorSubject: subject, errorsCount } = this;
|
|
16
16
|
assert(errorsCount >= 1, `Error count must be at least 1, got '${errorsCount}'.`);
|
|
17
17
|
const moreIssuesLabel = (errorsCount > 1)
|
|
18
|
-
? ( localize(
|
|
18
|
+
? ( localize(5472, "\n(+{0} more issues)", errorsCount - 1))
|
|
19
19
|
: '';
|
|
20
20
|
if (subject === 'root') {
|
|
21
21
|
if (originalError instanceof OpenFailed) {
|
|
22
|
-
return localize(
|
|
22
|
+
return localize(5473, "Cannot open '{0}'.{1}", originalError.uri.path, moreIssuesLabel);
|
|
23
23
|
}
|
|
24
24
|
if (originalError instanceof FailedToResolveContentsStream) {
|
|
25
|
-
return localize(
|
|
25
|
+
return localize(5474, "Cannot read '{0}'.{1}", originalError.uri.path, moreIssuesLabel);
|
|
26
26
|
}
|
|
27
27
|
if (originalError instanceof RecursiveReference) {
|
|
28
|
-
return localize(
|
|
28
|
+
return localize(5475, "Recursion to itself.");
|
|
29
29
|
}
|
|
30
30
|
return originalError.message + moreIssuesLabel;
|
|
31
31
|
}
|
|
32
32
|
assertDefined(parentUri, 'Parent URI must be defined for error of non-root link.');
|
|
33
33
|
const errorMessageStart = (subject === 'child')
|
|
34
|
-
? ( localize(
|
|
35
|
-
: ( localize(
|
|
34
|
+
? ( localize(5476, "Contains"))
|
|
35
|
+
: ( localize(5477, "Indirectly referenced prompt '{0}' contains", parentUri.path));
|
|
36
36
|
const linkIssueName = (originalError instanceof RecursiveReference)
|
|
37
|
-
? ( localize(
|
|
38
|
-
: ( localize(
|
|
37
|
+
? ( localize(5478, "recursive"))
|
|
38
|
+
: ( localize(5479, "broken"));
|
|
39
39
|
return localize(
|
|
40
|
-
|
|
40
|
+
5480,
|
|
41
41
|
"{0} a {1} link to '{2}' that will be ignored.{3}",
|
|
42
42
|
errorMessageStart,
|
|
43
43
|
linkIssueName,
|
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js
CHANGED
|
@@ -82,7 +82,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
82
82
|
}
|
|
83
83
|
asPromptSlashCommand(command) {
|
|
84
84
|
if (command.match(/^[\p{L}\d_\-\.]+$/u)) {
|
|
85
|
-
return { command, detail: ( localize(
|
|
85
|
+
return { command, detail: ( localize(5481, 'Prompt file: {0}', command)) };
|
|
86
86
|
}
|
|
87
87
|
return undefined;
|
|
88
88
|
}
|
|
@@ -116,7 +116,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
116
116
|
return {
|
|
117
117
|
command,
|
|
118
118
|
detail: ( localize(
|
|
119
|
-
|
|
119
|
+
5481,
|
|
120
120
|
'Prompt file: {0}',
|
|
121
121
|
this.labelService.getUriLabel(promptPath.uri, { relative: true })
|
|
122
122
|
)),
|
|
@@ -142,7 +142,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
142
142
|
parser = this.instantiationService.createInstance(PromptParser, uri, { allowNonPromptFiles: true, languageId: MODE_LANGUAGE_ID, updateOnChange: false }).start(token);
|
|
143
143
|
const completed = await parser.settled();
|
|
144
144
|
if (!completed) {
|
|
145
|
-
throw ( new Error(( localize(
|
|
145
|
+
throw ( new Error(( localize(5482, "Prompt parser for {0} did not complete.", (uri.toString())))));
|
|
146
146
|
}
|
|
147
147
|
const body = await parser.getBody();
|
|
148
148
|
const name = getCleanPromptName(uri);
|
|
@@ -166,7 +166,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
166
166
|
parser = this.instantiationService.createInstance(PromptParser, uri, { allowNonPromptFiles: true, languageId, updateOnChange: false }).start(token);
|
|
167
167
|
const completed = await parser.settled();
|
|
168
168
|
if (!completed) {
|
|
169
|
-
throw ( new Error(( localize(
|
|
169
|
+
throw ( new Error(( localize(5482, "Prompt parser for {0} did not complete.", (uri.toString())))));
|
|
170
170
|
}
|
|
171
171
|
return {
|
|
172
172
|
uri: parser.uri,
|
|
@@ -30,7 +30,7 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
30
30
|
},
|
|
31
31
|
jsonSchema: {
|
|
32
32
|
description: ( localize(
|
|
33
|
-
|
|
33
|
+
5483,
|
|
34
34
|
'Contributes a tool that can be invoked by a language model in a chat session, or from a standalone command. Registered tools can be used by all extensions.'
|
|
35
35
|
)),
|
|
36
36
|
type: 'array',
|
|
@@ -56,7 +56,7 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
56
56
|
properties: {
|
|
57
57
|
name: {
|
|
58
58
|
description: ( localize(
|
|
59
|
-
|
|
59
|
+
5484,
|
|
60
60
|
"A unique name for this tool. This name must be a globally unique identifier, and is also used as a name when presenting this tool to a language model."
|
|
61
61
|
)),
|
|
62
62
|
type: 'string',
|
|
@@ -64,7 +64,7 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
64
64
|
},
|
|
65
65
|
toolReferenceName: {
|
|
66
66
|
markdownDescription: ( localize(
|
|
67
|
-
|
|
67
|
+
5485,
|
|
68
68
|
"If {0} is enabled for this tool, the user may use '#' with this name to invoke the tool in a query. Otherwise, the name is not required. Name must not contain whitespace.",
|
|
69
69
|
'`canBeReferencedInPrompt`'
|
|
70
70
|
)),
|
|
@@ -73,32 +73,32 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
73
73
|
},
|
|
74
74
|
displayName: {
|
|
75
75
|
description: ( localize(
|
|
76
|
-
|
|
76
|
+
5486,
|
|
77
77
|
"A human-readable name for this tool that may be used to describe it in the UI."
|
|
78
78
|
)),
|
|
79
79
|
type: 'string'
|
|
80
80
|
},
|
|
81
81
|
userDescription: {
|
|
82
|
-
description: ( localize(
|
|
82
|
+
description: ( localize(5487, "A description of this tool that may be shown to the user.")),
|
|
83
83
|
type: 'string'
|
|
84
84
|
},
|
|
85
85
|
modelDescription: {
|
|
86
86
|
description: ( localize(
|
|
87
|
-
|
|
87
|
+
5488,
|
|
88
88
|
"A description of this tool that may be used by a language model to select it."
|
|
89
89
|
)),
|
|
90
90
|
type: 'string'
|
|
91
91
|
},
|
|
92
92
|
inputSchema: {
|
|
93
93
|
description: ( localize(
|
|
94
|
-
|
|
94
|
+
5489,
|
|
95
95
|
"A JSON schema for the input this tool accepts. The input must be an object at the top level. A particular language model may not support all JSON schema features. See the documentation for the language model family you are using for more information."
|
|
96
96
|
)),
|
|
97
97
|
$ref: toolsParametersSchemaSchemaId
|
|
98
98
|
},
|
|
99
99
|
canBeReferencedInPrompt: {
|
|
100
100
|
markdownDescription: ( localize(
|
|
101
|
-
|
|
101
|
+
5490,
|
|
102
102
|
"If true, this tool shows up as an attachment that the user can add manually to their request. Chat participants will receive the tool in {0}.",
|
|
103
103
|
'`ChatRequest#toolReferences`'
|
|
104
104
|
)),
|
|
@@ -106,7 +106,7 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
106
106
|
},
|
|
107
107
|
icon: {
|
|
108
108
|
markdownDescription: ( localize(
|
|
109
|
-
|
|
109
|
+
5491,
|
|
110
110
|
"An icon that represents this tool. Either a file path, an object with file paths for dark and light themes, or a theme icon reference, like `$(zap)`"
|
|
111
111
|
)),
|
|
112
112
|
anyOf: [{
|
|
@@ -116,11 +116,11 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
116
116
|
type: 'object',
|
|
117
117
|
properties: {
|
|
118
118
|
light: {
|
|
119
|
-
description: ( localize(
|
|
119
|
+
description: ( localize(5492, 'Icon path when a light theme is used')),
|
|
120
120
|
type: 'string'
|
|
121
121
|
},
|
|
122
122
|
dark: {
|
|
123
|
-
description: ( localize(
|
|
123
|
+
description: ( localize(5493, 'Icon path when a dark theme is used')),
|
|
124
124
|
type: 'string'
|
|
125
125
|
}
|
|
126
126
|
}
|
|
@@ -128,14 +128,14 @@ const languageModelToolsExtensionPoint = ExtensionsRegistry.registerExtensionPoi
|
|
|
128
128
|
},
|
|
129
129
|
when: {
|
|
130
130
|
markdownDescription: ( localize(
|
|
131
|
-
|
|
131
|
+
5494,
|
|
132
132
|
"Condition which must be true for this tool to be enabled. Note that a tool may still be invoked by another extension even when its `when` condition is false."
|
|
133
133
|
)),
|
|
134
134
|
type: 'string'
|
|
135
135
|
},
|
|
136
136
|
tags: {
|
|
137
137
|
description: ( localize(
|
|
138
|
-
|
|
138
|
+
5495,
|
|
139
139
|
"A set of tags that roughly describe the tool's capabilities. A tool user may use these to filter the set of tools to just ones that are relevant for the task at hand, or they may want to pick a tag that can be used to identify just the tools contributed by this extension."
|
|
140
140
|
)),
|
|
141
141
|
type: 'array',
|
|
@@ -153,7 +153,7 @@ const languageModelToolSetsExtensionPoint = ExtensionsRegistry.registerExtension
|
|
|
153
153
|
deps: [languageModelToolsExtensionPoint],
|
|
154
154
|
jsonSchema: {
|
|
155
155
|
description: ( localize(
|
|
156
|
-
|
|
156
|
+
5496,
|
|
157
157
|
'Contributes a set of language model tools that can be used together.'
|
|
158
158
|
)),
|
|
159
159
|
type: 'array',
|
|
@@ -171,23 +171,23 @@ const languageModelToolSetsExtensionPoint = ExtensionsRegistry.registerExtension
|
|
|
171
171
|
properties: {
|
|
172
172
|
name: {
|
|
173
173
|
description: ( localize(
|
|
174
|
-
|
|
174
|
+
5497,
|
|
175
175
|
"A name for this tool set. Used as reference and should not contain whitespace."
|
|
176
176
|
)),
|
|
177
177
|
type: 'string',
|
|
178
178
|
pattern: '^[\\w-]+$'
|
|
179
179
|
},
|
|
180
180
|
description: {
|
|
181
|
-
description: ( localize(
|
|
181
|
+
description: ( localize(5498, "A description of this tool set.")),
|
|
182
182
|
type: 'string'
|
|
183
183
|
},
|
|
184
184
|
icon: {
|
|
185
|
-
markdownDescription: ( localize(
|
|
185
|
+
markdownDescription: ( localize(5499, "An icon that represents this tool set, like `$(zap)`")),
|
|
186
186
|
type: 'string'
|
|
187
187
|
},
|
|
188
188
|
tools: {
|
|
189
189
|
markdownDescription: ( localize(
|
|
190
|
-
|
|
190
|
+
5500,
|
|
191
191
|
"A list of tools or tool sets to include in this tool set. Cannot be empty and must reference tools by their `toolReferenceName`."
|
|
192
192
|
)),
|
|
193
193
|
type: 'array',
|
|
@@ -352,9 +352,9 @@ class LanguageModelToolDataRenderer extends Disposable {
|
|
|
352
352
|
return { data: { headers: [], rows: [] }, dispose: () => { } };
|
|
353
353
|
}
|
|
354
354
|
const headers = [
|
|
355
|
-
( localize(
|
|
356
|
-
( localize(
|
|
357
|
-
( localize(
|
|
355
|
+
( localize(5501, "Name")),
|
|
356
|
+
( localize(5502, "Display Name")),
|
|
357
|
+
( localize(5503, "Description")),
|
|
358
358
|
];
|
|
359
359
|
const rows = ( contribs.map(t => {
|
|
360
360
|
return [
|
|
@@ -374,7 +374,7 @@ class LanguageModelToolDataRenderer extends Disposable {
|
|
|
374
374
|
}
|
|
375
375
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
376
376
|
id: 'languageModelTools',
|
|
377
|
-
label: ( localize(
|
|
377
|
+
label: ( localize(5504, "Language Model Tools")),
|
|
378
378
|
access: {
|
|
379
379
|
canToggle: false
|
|
380
380
|
},
|
|
@@ -394,10 +394,10 @@ class LanguageModelToolSetDataRenderer extends Disposable {
|
|
|
394
394
|
return { data: { headers: [], rows: [] }, dispose: () => { } };
|
|
395
395
|
}
|
|
396
396
|
const headers = [
|
|
397
|
-
( localize(
|
|
398
|
-
( localize(
|
|
399
|
-
( localize(
|
|
400
|
-
( localize(
|
|
397
|
+
( localize(5505, "Name")),
|
|
398
|
+
( localize(5506, "Reference Name")),
|
|
399
|
+
( localize(5507, "Tools")),
|
|
400
|
+
( localize(5508, "Description")),
|
|
401
401
|
];
|
|
402
402
|
const rows = ( contribs.map(t => {
|
|
403
403
|
return [
|
|
@@ -418,7 +418,7 @@ class LanguageModelToolSetDataRenderer extends Disposable {
|
|
|
418
418
|
}
|
|
419
419
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
420
420
|
id: 'languageModelToolSets',
|
|
421
|
-
label: ( localize(
|
|
421
|
+
label: ( localize(5509, "Language Model Tool Sets")),
|
|
422
422
|
access: {
|
|
423
423
|
canToggle: false
|
|
424
424
|
},
|
|
@@ -21,7 +21,7 @@ var PhraseTextType;
|
|
|
21
21
|
const VoiceChatInProgress = ( new RawContextKey(
|
|
22
22
|
'voiceChatInProgress',
|
|
23
23
|
false,
|
|
24
|
-
{ type: 'boolean', description: ( localize(
|
|
24
|
+
{ type: 'boolean', description: ( localize(5510, "A speech-to-text session is in progress for chat.")) }
|
|
25
25
|
));
|
|
26
26
|
let VoiceChatService = class VoiceChatService extends Disposable {
|
|
27
27
|
static { VoiceChatService_1 = this; }
|
|
@@ -37,7 +37,7 @@ const editActionMenuItem = {
|
|
|
37
37
|
order: 0,
|
|
38
38
|
command: {
|
|
39
39
|
id: ChatSubmitAction.ID,
|
|
40
|
-
title: ( localize(
|
|
40
|
+
title: ( localize(7652, "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(7653, "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(7654, "Cancel Request")),
|
|
61
|
+
shortTitle: ( localize(7655, "Cancel")),
|
|
62
62
|
},
|
|
63
63
|
when: ( ContextKeyExpr.and(CTX_INLINE_CHAT_REQUEST_IN_PROGRESS)),
|
|
64
64
|
};
|