@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +24 -3
- package/package.json +5 -5
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
- package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +265 -203
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
- package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
|
@@ -8,6 +8,7 @@ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
|
8
8
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
9
9
|
import { MarkerSeverity } from '@codingame/monaco-vscode-api/vscode/vs/platform/markers/common/markers';
|
|
10
10
|
import { IMarkerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/markers/common/markers.service';
|
|
11
|
+
import { ChatMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes';
|
|
11
12
|
import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
|
|
12
13
|
import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
13
14
|
import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
|
|
@@ -24,10 +25,18 @@ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
|
|
|
24
25
|
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
25
26
|
import { LEGACY_MODE_FILE_EXTENSION, AGENTS_SOURCE_FOLDER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
|
|
26
27
|
import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
|
|
28
|
+
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
27
29
|
|
|
28
|
-
const MARKERS_OWNER_ID =
|
|
30
|
+
const MARKERS_OWNER_ID = "prompts-diagnostics-provider";
|
|
29
31
|
let PromptValidator = class PromptValidator {
|
|
30
|
-
constructor(
|
|
32
|
+
constructor(
|
|
33
|
+
languageModelsService,
|
|
34
|
+
languageModelToolsService,
|
|
35
|
+
chatModeService,
|
|
36
|
+
fileService,
|
|
37
|
+
labelService,
|
|
38
|
+
promptsService
|
|
39
|
+
) {
|
|
31
40
|
this.languageModelsService = languageModelsService;
|
|
32
41
|
this.languageModelToolsService = languageModelToolsService;
|
|
33
42
|
this.chatModeService = chatModeService;
|
|
@@ -36,30 +45,58 @@ let PromptValidator = class PromptValidator {
|
|
|
36
45
|
this.promptsService = promptsService;
|
|
37
46
|
}
|
|
38
47
|
async validate(promptAST, promptType, report) {
|
|
39
|
-
promptAST.header?.errors.forEach(
|
|
40
|
-
|
|
48
|
+
promptAST.header?.errors.forEach(
|
|
49
|
+
error => report(toMarker(error.message, error.range, MarkerSeverity.Error))
|
|
50
|
+
);
|
|
51
|
+
await this.validateHeader(promptAST, promptType, report);
|
|
41
52
|
await this.validateBody(promptAST, promptType, report);
|
|
42
53
|
await this.validateFileName(promptAST, promptType, report);
|
|
54
|
+
await this.validateSkillFolderName(promptAST, promptType, report);
|
|
43
55
|
}
|
|
44
56
|
async validateFileName(promptAST, promptType, report) {
|
|
45
57
|
if (promptType === PromptsType.agent && promptAST.uri.path.endsWith(LEGACY_MODE_FILE_EXTENSION)) {
|
|
46
58
|
const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
|
|
47
59
|
if (location && (await this.fileService.canCreateFile(location))) {
|
|
48
60
|
report(toMarker(( localize(
|
|
49
|
-
|
|
61
|
+
6296,
|
|
50
62
|
"Chat modes have been renamed to agents. Please move this file to {0}",
|
|
51
63
|
(location.toString())
|
|
52
64
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
65
|
+
} else {
|
|
55
66
|
report(toMarker(( localize(
|
|
56
|
-
|
|
67
|
+
6297,
|
|
57
68
|
"Chat modes have been renamed to agents. Please move the file to {0}",
|
|
58
69
|
AGENTS_SOURCE_FOLDER
|
|
59
70
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
60
71
|
}
|
|
61
72
|
}
|
|
62
73
|
}
|
|
74
|
+
async validateSkillFolderName(promptAST, promptType, report) {
|
|
75
|
+
if (promptType !== PromptsType.skill) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const nameAttribute = promptAST.header?.attributes.find(attr => attr.key === PromptHeaderAttributes.name);
|
|
79
|
+
if (!nameAttribute || nameAttribute.value.type !== "string") {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const skillName = nameAttribute.value.value.trim();
|
|
83
|
+
if (!skillName) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const pathParts = promptAST.uri.path.split("/");
|
|
87
|
+
const skillIndex = pathParts.findIndex(part => part === "SKILL.md");
|
|
88
|
+
if (skillIndex > 0) {
|
|
89
|
+
const folderName = pathParts[skillIndex - 1];
|
|
90
|
+
if (folderName && skillName !== folderName) {
|
|
91
|
+
report(toMarker(( localize(
|
|
92
|
+
6298,
|
|
93
|
+
"The skill name '{0}' should match the folder name '{1}'.",
|
|
94
|
+
skillName,
|
|
95
|
+
folderName
|
|
96
|
+
)), nameAttribute.value.range, MarkerSeverity.Warning));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
63
100
|
async validateBody(promptAST, promptType, report) {
|
|
64
101
|
const body = promptAST.body;
|
|
65
102
|
if (!body) {
|
|
@@ -69,7 +106,7 @@ let PromptValidator = class PromptValidator {
|
|
|
69
106
|
for (const ref of body.fileReferences) {
|
|
70
107
|
const resolved = body.resolveFilePath(ref.content);
|
|
71
108
|
if (!resolved) {
|
|
72
|
-
report(toMarker(( localize(
|
|
109
|
+
report(toMarker(( localize(6299, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
|
|
73
110
|
continue;
|
|
74
111
|
}
|
|
75
112
|
if (promptAST.uri.scheme === resolved.scheme) {
|
|
@@ -79,11 +116,9 @@ let PromptValidator = class PromptValidator {
|
|
|
79
116
|
if (exists) {
|
|
80
117
|
return;
|
|
81
118
|
}
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
}
|
|
119
|
+
} catch {}
|
|
85
120
|
const loc = this.labelService.getUriLabel(resolved);
|
|
86
|
-
report(toMarker(( localize(
|
|
121
|
+
report(toMarker(( localize(6300, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
|
|
87
122
|
})());
|
|
88
123
|
}
|
|
89
124
|
}
|
|
@@ -91,7 +126,7 @@ let PromptValidator = class PromptValidator {
|
|
|
91
126
|
if (body.variableReferences.length && !isGitHubTarget) {
|
|
92
127
|
const headerTools = promptAST.header?.tools;
|
|
93
128
|
const headerTarget = promptAST.header?.target;
|
|
94
|
-
const headerToolsMap = headerTools ? this.languageModelToolsService.toToolAndToolSetEnablementMap(headerTools, headerTarget) : undefined;
|
|
129
|
+
const headerToolsMap = headerTools ? this.languageModelToolsService.toToolAndToolSetEnablementMap(headerTools, headerTarget, undefined) : undefined;
|
|
95
130
|
const available = ( new Set(this.languageModelToolsService.getFullReferenceNames()));
|
|
96
131
|
const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
|
|
97
132
|
for (const variable of body.variableReferences) {
|
|
@@ -102,32 +137,29 @@ let PromptValidator = class PromptValidator {
|
|
|
102
137
|
if (currentNames.size === 1) {
|
|
103
138
|
const newName = Array.from(currentNames)[0];
|
|
104
139
|
report(toMarker(( localize(
|
|
105
|
-
|
|
140
|
+
6301,
|
|
106
141
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
107
142
|
variable.name,
|
|
108
143
|
newName
|
|
109
144
|
)), variable.range, MarkerSeverity.Info));
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(', ');
|
|
145
|
+
} else {
|
|
146
|
+
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
|
|
113
147
|
report(toMarker(( localize(
|
|
114
|
-
|
|
148
|
+
6302,
|
|
115
149
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
116
150
|
variable.name,
|
|
117
151
|
newNames
|
|
118
152
|
)), variable.range, MarkerSeverity.Info));
|
|
119
153
|
}
|
|
120
154
|
}
|
|
155
|
+
} else {
|
|
156
|
+
report(toMarker(( localize(6303, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
|
|
121
157
|
}
|
|
122
|
-
|
|
123
|
-
report(toMarker(( localize(6024, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
else if (headerToolsMap) {
|
|
158
|
+
} else if (headerToolsMap) {
|
|
127
159
|
const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
|
|
128
160
|
if (tool && headerToolsMap.get(tool) === false) {
|
|
129
161
|
report(toMarker(( localize(
|
|
130
|
-
|
|
162
|
+
6304,
|
|
131
163
|
"Tool or toolset '{0}' also needs to be enabled in the header.",
|
|
132
164
|
variable.name
|
|
133
165
|
)), variable.range, MarkerSeverity.Warning));
|
|
@@ -137,7 +169,7 @@ let PromptValidator = class PromptValidator {
|
|
|
137
169
|
}
|
|
138
170
|
await Promise.all(fileReferenceChecks);
|
|
139
171
|
}
|
|
140
|
-
validateHeader(promptAST, promptType, report) {
|
|
172
|
+
async validateHeader(promptAST, promptType, report) {
|
|
141
173
|
const header = promptAST.header;
|
|
142
174
|
if (!header) {
|
|
143
175
|
return;
|
|
@@ -149,23 +181,28 @@ let PromptValidator = class PromptValidator {
|
|
|
149
181
|
this.validateDescription(attributes, report);
|
|
150
182
|
this.validateArgumentHint(attributes, report);
|
|
151
183
|
switch (promptType) {
|
|
152
|
-
|
|
184
|
+
case PromptsType.prompt:
|
|
185
|
+
{
|
|
153
186
|
const agent = this.validateAgent(attributes, report);
|
|
154
187
|
this.validateTools(attributes, agent?.kind ?? ChatModeKind.Agent, header.target, report);
|
|
155
188
|
this.validateModel(attributes, agent?.kind ?? ChatModeKind.Agent, report);
|
|
156
189
|
break;
|
|
157
190
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
191
|
+
case PromptsType.instructions:
|
|
192
|
+
this.validateApplyTo(attributes, report);
|
|
193
|
+
this.validateExcludeAgent(attributes, report);
|
|
194
|
+
break;
|
|
195
|
+
case PromptsType.agent:
|
|
196
|
+
{
|
|
163
197
|
this.validateTarget(attributes, report);
|
|
164
198
|
this.validateInfer(attributes, report);
|
|
199
|
+
this.validateUserInvokable(attributes, report);
|
|
200
|
+
this.validateDisableModelInvocation(attributes, report);
|
|
165
201
|
this.validateTools(attributes, ChatModeKind.Agent, header.target, report);
|
|
166
202
|
if (!isGitHubTarget) {
|
|
167
203
|
this.validateModel(attributes, ChatModeKind.Agent, report);
|
|
168
204
|
this.validateHandoffs(attributes, report);
|
|
205
|
+
await this.validateAgentsAttribute(attributes, header, report);
|
|
169
206
|
}
|
|
170
207
|
break;
|
|
171
208
|
}
|
|
@@ -177,52 +214,58 @@ let PromptValidator = class PromptValidator {
|
|
|
177
214
|
for (const attribute of attributes) {
|
|
178
215
|
if (!validAttributeNames.includes(attribute.key)) {
|
|
179
216
|
const supportedNames = ( new Lazy(
|
|
180
|
-
() => getValidAttributeNames(promptType, false, isGitHubTarget).sort().join(
|
|
217
|
+
() => getValidAttributeNames(promptType, false, isGitHubTarget).sort().join(", ")
|
|
181
218
|
));
|
|
182
219
|
switch (promptType) {
|
|
183
|
-
|
|
220
|
+
case PromptsType.prompt:
|
|
221
|
+
report(toMarker(( localize(
|
|
222
|
+
6305,
|
|
223
|
+
"Attribute '{0}' is not supported in prompt files. Supported: {1}.",
|
|
224
|
+
attribute.key,
|
|
225
|
+
supportedNames.value
|
|
226
|
+
)), attribute.range, MarkerSeverity.Warning));
|
|
227
|
+
break;
|
|
228
|
+
case PromptsType.agent:
|
|
229
|
+
if (isGitHubTarget) {
|
|
184
230
|
report(toMarker(( localize(
|
|
185
|
-
|
|
186
|
-
"Attribute '{0}' is not supported in
|
|
231
|
+
6306,
|
|
232
|
+
"Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
|
|
187
233
|
attribute.key,
|
|
188
234
|
supportedNames.value
|
|
189
235
|
)), attribute.range, MarkerSeverity.Warning));
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
236
|
+
} else {
|
|
237
|
+
if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
|
|
238
|
+
report(toMarker(( localize(
|
|
239
|
+
6307,
|
|
240
|
+
"Attribute '{0}' is ignored when running locally in VS Code.",
|
|
241
|
+
attribute.key
|
|
242
|
+
)), attribute.range, MarkerSeverity.Info));
|
|
243
|
+
} else {
|
|
193
244
|
report(toMarker(( localize(
|
|
194
|
-
|
|
195
|
-
"Attribute '{0}' is not supported in
|
|
245
|
+
6308,
|
|
246
|
+
"Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
|
|
196
247
|
attribute.key,
|
|
197
248
|
supportedNames.value
|
|
198
249
|
)), attribute.range, MarkerSeverity.Warning));
|
|
199
250
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
case PromptsType.instructions:
|
|
219
|
-
report(toMarker(( localize(
|
|
220
|
-
6030,
|
|
221
|
-
"Attribute '{0}' is not supported in instructions files. Supported: {1}.",
|
|
222
|
-
attribute.key,
|
|
223
|
-
supportedNames.value
|
|
224
|
-
)), attribute.range, MarkerSeverity.Warning));
|
|
225
|
-
break;
|
|
251
|
+
}
|
|
252
|
+
break;
|
|
253
|
+
case PromptsType.instructions:
|
|
254
|
+
report(toMarker(( localize(
|
|
255
|
+
6309,
|
|
256
|
+
"Attribute '{0}' is not supported in instructions files. Supported: {1}.",
|
|
257
|
+
attribute.key,
|
|
258
|
+
supportedNames.value
|
|
259
|
+
)), attribute.range, MarkerSeverity.Warning));
|
|
260
|
+
break;
|
|
261
|
+
case PromptsType.skill:
|
|
262
|
+
report(toMarker(( localize(
|
|
263
|
+
6310,
|
|
264
|
+
"Attribute '{0}' is not supported in skill files. Supported: {1}.",
|
|
265
|
+
attribute.key,
|
|
266
|
+
supportedNames.value
|
|
267
|
+
)), attribute.range, MarkerSeverity.Warning));
|
|
268
|
+
break;
|
|
226
269
|
}
|
|
227
270
|
}
|
|
228
271
|
}
|
|
@@ -232,12 +275,12 @@ let PromptValidator = class PromptValidator {
|
|
|
232
275
|
if (!nameAttribute) {
|
|
233
276
|
return;
|
|
234
277
|
}
|
|
235
|
-
if (nameAttribute.value.type !==
|
|
236
|
-
report(toMarker(( localize(
|
|
278
|
+
if (nameAttribute.value.type !== "string") {
|
|
279
|
+
report(toMarker(( localize(6311, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
|
|
237
280
|
return;
|
|
238
281
|
}
|
|
239
282
|
if (nameAttribute.value.value.trim().length === 0) {
|
|
240
|
-
report(toMarker(( localize(
|
|
283
|
+
report(toMarker(( localize(6312, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
|
|
241
284
|
return;
|
|
242
285
|
}
|
|
243
286
|
}
|
|
@@ -246,12 +289,12 @@ let PromptValidator = class PromptValidator {
|
|
|
246
289
|
if (!descriptionAttribute) {
|
|
247
290
|
return;
|
|
248
291
|
}
|
|
249
|
-
if (descriptionAttribute.value.type !==
|
|
250
|
-
report(toMarker(( localize(
|
|
292
|
+
if (descriptionAttribute.value.type !== "string") {
|
|
293
|
+
report(toMarker(( localize(6313, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
|
|
251
294
|
return;
|
|
252
295
|
}
|
|
253
296
|
if (descriptionAttribute.value.value.trim().length === 0) {
|
|
254
|
-
report(toMarker(( localize(
|
|
297
|
+
report(toMarker(( localize(6314, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
|
|
255
298
|
return;
|
|
256
299
|
}
|
|
257
300
|
}
|
|
@@ -260,12 +303,12 @@ let PromptValidator = class PromptValidator {
|
|
|
260
303
|
if (!argumentHintAttribute) {
|
|
261
304
|
return;
|
|
262
305
|
}
|
|
263
|
-
if (argumentHintAttribute.value.type !==
|
|
264
|
-
report(toMarker(( localize(
|
|
306
|
+
if (argumentHintAttribute.value.type !== "string") {
|
|
307
|
+
report(toMarker(( localize(6315, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
|
|
265
308
|
return;
|
|
266
309
|
}
|
|
267
310
|
if (argumentHintAttribute.value.value.trim().length === 0) {
|
|
268
|
-
report(toMarker(( localize(
|
|
311
|
+
report(toMarker(( localize(6316, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Error));
|
|
269
312
|
return;
|
|
270
313
|
}
|
|
271
314
|
}
|
|
@@ -274,33 +317,53 @@ let PromptValidator = class PromptValidator {
|
|
|
274
317
|
if (!attribute) {
|
|
275
318
|
return;
|
|
276
319
|
}
|
|
277
|
-
if (attribute.value.type !==
|
|
278
|
-
report(toMarker(( localize(
|
|
320
|
+
if (attribute.value.type !== "string" && attribute.value.type !== "array") {
|
|
321
|
+
report(toMarker(( localize(6317, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
|
|
279
322
|
return;
|
|
280
323
|
}
|
|
281
|
-
const
|
|
282
|
-
if (
|
|
283
|
-
|
|
284
|
-
|
|
324
|
+
const modelNames = [];
|
|
325
|
+
if (attribute.value.type === "string") {
|
|
326
|
+
const modelName = attribute.value.value.trim();
|
|
327
|
+
if (modelName.length === 0) {
|
|
328
|
+
report(toMarker(( localize(6318, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
modelNames.push([modelName, attribute.value.range]);
|
|
332
|
+
} else if (attribute.value.type === "array") {
|
|
333
|
+
if (attribute.value.items.length === 0) {
|
|
334
|
+
report(toMarker(( localize(6319, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
for (const item of attribute.value.items) {
|
|
338
|
+
if (item.type !== "string") {
|
|
339
|
+
report(toMarker(( localize(6320, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
const modelName = item.value.trim();
|
|
343
|
+
if (modelName.length === 0) {
|
|
344
|
+
report(toMarker(( localize(6321, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
modelNames.push([modelName, item.range]);
|
|
348
|
+
}
|
|
285
349
|
}
|
|
286
|
-
const
|
|
287
|
-
if (
|
|
350
|
+
const languageModels = this.languageModelsService.getLanguageModelIds();
|
|
351
|
+
if (languageModels.length === 0) {
|
|
288
352
|
return;
|
|
289
353
|
}
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
354
|
+
for (const [modelName, range] of modelNames) {
|
|
355
|
+
const modelMetadata = this.findModelByName(modelName);
|
|
356
|
+
if (!modelMetadata) {
|
|
357
|
+
report(toMarker(( localize(6322, "Unknown model '{0}'.", modelName)), range, MarkerSeverity.Warning));
|
|
358
|
+
} else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
|
|
359
|
+
report(toMarker(( localize(6323, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
|
|
360
|
+
}
|
|
296
361
|
}
|
|
297
362
|
}
|
|
298
|
-
findModelByName(
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
return metadata;
|
|
303
|
-
}
|
|
363
|
+
findModelByName(modelName) {
|
|
364
|
+
const metadata = this.languageModelsService.lookupLanguageModelByQualifiedName(modelName);
|
|
365
|
+
if (metadata && metadata.isUserSelectable !== false) {
|
|
366
|
+
return metadata;
|
|
304
367
|
}
|
|
305
368
|
return undefined;
|
|
306
369
|
}
|
|
@@ -310,13 +373,12 @@ let PromptValidator = class PromptValidator {
|
|
|
310
373
|
if (modeAttribute) {
|
|
311
374
|
if (agentAttribute) {
|
|
312
375
|
report(toMarker(( localize(
|
|
313
|
-
|
|
376
|
+
6324,
|
|
314
377
|
"The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
|
|
315
378
|
)), modeAttribute.range, MarkerSeverity.Warning));
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
379
|
+
} else {
|
|
318
380
|
report(toMarker(( localize(
|
|
319
|
-
|
|
381
|
+
6325,
|
|
320
382
|
"The 'mode' attribute has been deprecated. Please rename it to 'agent'."
|
|
321
383
|
)), modeAttribute.range, MarkerSeverity.Error));
|
|
322
384
|
}
|
|
@@ -325,13 +387,13 @@ let PromptValidator = class PromptValidator {
|
|
|
325
387
|
if (!attribute) {
|
|
326
388
|
return undefined;
|
|
327
389
|
}
|
|
328
|
-
if (attribute.value.type !==
|
|
329
|
-
report(toMarker(( localize(
|
|
390
|
+
if (attribute.value.type !== "string") {
|
|
391
|
+
report(toMarker(( localize(6326, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
330
392
|
return undefined;
|
|
331
393
|
}
|
|
332
394
|
const agentValue = attribute.value.value;
|
|
333
395
|
if (agentValue.trim().length === 0) {
|
|
334
|
-
report(toMarker(( localize(
|
|
396
|
+
report(toMarker(( localize(6327, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
335
397
|
return undefined;
|
|
336
398
|
}
|
|
337
399
|
return this.validateAgentValue(attribute.value, report);
|
|
@@ -346,10 +408,10 @@ let PromptValidator = class PromptValidator {
|
|
|
346
408
|
availableAgents.push(agent.name.get());
|
|
347
409
|
}
|
|
348
410
|
const errorMessage = ( localize(
|
|
349
|
-
|
|
411
|
+
6328,
|
|
350
412
|
"Unknown agent '{0}'. Available agents: {1}.",
|
|
351
413
|
value.value,
|
|
352
|
-
availableAgents.join(
|
|
414
|
+
availableAgents.join(", ")
|
|
353
415
|
));
|
|
354
416
|
report(toMarker(errorMessage, value.range, MarkerSeverity.Warning));
|
|
355
417
|
return undefined;
|
|
@@ -361,19 +423,19 @@ let PromptValidator = class PromptValidator {
|
|
|
361
423
|
}
|
|
362
424
|
if (agentKind !== ChatModeKind.Agent) {
|
|
363
425
|
report(toMarker(( localize(
|
|
364
|
-
|
|
426
|
+
6329,
|
|
365
427
|
"The 'tools' attribute is only supported when using agents. Attribute will be ignored."
|
|
366
428
|
)), attribute.range, MarkerSeverity.Warning));
|
|
367
429
|
}
|
|
368
430
|
switch (attribute.value.type) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
else {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
431
|
+
case "array":
|
|
432
|
+
if (target === Target.GitHubCopilot)
|
|
433
|
+
; else {
|
|
434
|
+
this.validateVSCodeTools(attribute.value, target, report);
|
|
435
|
+
}
|
|
436
|
+
break;
|
|
437
|
+
default:
|
|
438
|
+
report(toMarker(( localize(6330, "The 'tools' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
377
439
|
}
|
|
378
440
|
}
|
|
379
441
|
validateVSCodeTools(valueItem, target, report) {
|
|
@@ -381,34 +443,31 @@ let PromptValidator = class PromptValidator {
|
|
|
381
443
|
const available = ( new Set(this.languageModelToolsService.getFullReferenceNames()));
|
|
382
444
|
const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
|
|
383
445
|
for (const item of valueItem.items) {
|
|
384
|
-
if (item.type !==
|
|
385
|
-
report(toMarker(( localize(
|
|
386
|
-
}
|
|
387
|
-
else if (item.value) {
|
|
446
|
+
if (item.type !== "string") {
|
|
447
|
+
report(toMarker(( localize(6331, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
448
|
+
} else if (item.value) {
|
|
388
449
|
if (!( available.has(item.value))) {
|
|
389
450
|
const currentNames = deprecatedNames.get(item.value);
|
|
390
451
|
if (currentNames) {
|
|
391
452
|
if (currentNames?.size === 1) {
|
|
392
453
|
const newName = Array.from(currentNames)[0];
|
|
393
454
|
report(toMarker(( localize(
|
|
394
|
-
|
|
455
|
+
6332,
|
|
395
456
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
396
457
|
item.value,
|
|
397
458
|
newName
|
|
398
459
|
)), item.range, MarkerSeverity.Info));
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(', ');
|
|
460
|
+
} else {
|
|
461
|
+
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
|
|
402
462
|
report(toMarker(( localize(
|
|
403
|
-
|
|
463
|
+
6333,
|
|
404
464
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
405
465
|
item.value,
|
|
406
466
|
newNames
|
|
407
467
|
)), item.range, MarkerSeverity.Info));
|
|
408
468
|
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
report(toMarker(( localize(6051, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
|
|
469
|
+
} else {
|
|
470
|
+
report(toMarker(( localize(6334, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
|
|
412
471
|
}
|
|
413
472
|
}
|
|
414
473
|
}
|
|
@@ -420,27 +479,26 @@ let PromptValidator = class PromptValidator {
|
|
|
420
479
|
if (!attribute) {
|
|
421
480
|
return;
|
|
422
481
|
}
|
|
423
|
-
if (attribute.value.type !==
|
|
424
|
-
report(toMarker(( localize(
|
|
482
|
+
if (attribute.value.type !== "string") {
|
|
483
|
+
report(toMarker(( localize(6335, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
425
484
|
return;
|
|
426
485
|
}
|
|
427
486
|
const pattern = attribute.value.value;
|
|
428
487
|
try {
|
|
429
|
-
const patterns = splitGlobAware(pattern,
|
|
488
|
+
const patterns = splitGlobAware(pattern, ",");
|
|
430
489
|
if (patterns.length === 0) {
|
|
431
|
-
report(toMarker(( localize(
|
|
490
|
+
report(toMarker(( localize(6336, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
432
491
|
return;
|
|
433
492
|
}
|
|
434
493
|
for (const pattern of patterns) {
|
|
435
494
|
const globPattern = parse(pattern);
|
|
436
495
|
if (isEmptyPattern(globPattern)) {
|
|
437
|
-
report(toMarker(( localize(
|
|
496
|
+
report(toMarker(( localize(6336, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
438
497
|
return;
|
|
439
498
|
}
|
|
440
499
|
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
500
|
+
} catch (_error) {
|
|
501
|
+
report(toMarker(( localize(6336, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
444
502
|
}
|
|
445
503
|
}
|
|
446
504
|
validateExcludeAgent(attributes, report) {
|
|
@@ -448,8 +506,8 @@ let PromptValidator = class PromptValidator {
|
|
|
448
506
|
if (!attribute) {
|
|
449
507
|
return;
|
|
450
508
|
}
|
|
451
|
-
if (attribute.value.type !==
|
|
452
|
-
report(toMarker(( localize(
|
|
509
|
+
if (attribute.value.type !== "array" && attribute.value.type !== "string") {
|
|
510
|
+
report(toMarker(( localize(6337, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
|
|
453
511
|
return;
|
|
454
512
|
}
|
|
455
513
|
}
|
|
@@ -458,63 +516,67 @@ let PromptValidator = class PromptValidator {
|
|
|
458
516
|
if (!attribute) {
|
|
459
517
|
return;
|
|
460
518
|
}
|
|
461
|
-
if (attribute.value.type !==
|
|
462
|
-
report(toMarker(( localize(
|
|
519
|
+
if (attribute.value.type !== "array") {
|
|
520
|
+
report(toMarker(( localize(6338, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
463
521
|
return;
|
|
464
522
|
}
|
|
465
523
|
for (const item of attribute.value.items) {
|
|
466
|
-
if (item.type !==
|
|
524
|
+
if (item.type !== "object") {
|
|
467
525
|
report(toMarker(( localize(
|
|
468
|
-
|
|
526
|
+
6339,
|
|
469
527
|
"Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
|
|
470
528
|
)), item.range, MarkerSeverity.Error));
|
|
471
529
|
continue;
|
|
472
530
|
}
|
|
473
|
-
const required = ( new Set([
|
|
531
|
+
const required = ( new Set(["label", "agent", "prompt"]));
|
|
474
532
|
for (const prop of item.properties) {
|
|
475
533
|
switch (prop.key.value) {
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
report(toMarker(( localize(
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
534
|
+
case "label":
|
|
535
|
+
if (prop.value.type !== "string" || prop.value.value.trim().length === 0) {
|
|
536
|
+
report(toMarker(( localize(6340, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
537
|
+
}
|
|
538
|
+
break;
|
|
539
|
+
case "agent":
|
|
540
|
+
if (prop.value.type !== "string" || prop.value.value.trim().length === 0) {
|
|
541
|
+
report(toMarker(( localize(6341, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
542
|
+
} else {
|
|
543
|
+
this.validateAgentValue(prop.value, report);
|
|
544
|
+
}
|
|
545
|
+
break;
|
|
546
|
+
case "prompt":
|
|
547
|
+
if (prop.value.type !== "string") {
|
|
548
|
+
report(toMarker(( localize(6342, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
549
|
+
}
|
|
550
|
+
break;
|
|
551
|
+
case "send":
|
|
552
|
+
if (prop.value.type !== "boolean") {
|
|
553
|
+
report(toMarker(( localize(6343, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
554
|
+
}
|
|
555
|
+
break;
|
|
556
|
+
case "showContinueOn":
|
|
557
|
+
if (prop.value.type !== "boolean") {
|
|
558
|
+
report(toMarker(( localize(6344, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
559
|
+
}
|
|
560
|
+
break;
|
|
561
|
+
case "model":
|
|
562
|
+
if (prop.value.type !== "string") {
|
|
563
|
+
report(toMarker(( localize(6345, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
564
|
+
}
|
|
565
|
+
break;
|
|
566
|
+
default:
|
|
567
|
+
report(toMarker(( localize(
|
|
568
|
+
6346,
|
|
569
|
+
"Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn', 'model'.",
|
|
570
|
+
prop.key.value
|
|
571
|
+
)), prop.value.range, MarkerSeverity.Warning));
|
|
510
572
|
}
|
|
511
573
|
required.delete(prop.key.value);
|
|
512
574
|
}
|
|
513
575
|
if (required.size > 0) {
|
|
514
576
|
report(toMarker(( localize(
|
|
515
|
-
|
|
577
|
+
6347,
|
|
516
578
|
"Missing required properties {0} in handoff object.",
|
|
517
|
-
( Array.from(required).map(s => `'${s}'`)).join(
|
|
579
|
+
( Array.from(required).map(s => `'${s}'`)).join(", ")
|
|
518
580
|
)), item.range, MarkerSeverity.Error));
|
|
519
581
|
}
|
|
520
582
|
}
|
|
@@ -524,53 +586,145 @@ let PromptValidator = class PromptValidator {
|
|
|
524
586
|
if (!attribute) {
|
|
525
587
|
return;
|
|
526
588
|
}
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
589
|
+
report(toMarker(( localize(
|
|
590
|
+
6348,
|
|
591
|
+
"The 'infer' attribute is deprecated in favour of 'user-invokable' and 'disable-model-invocation'."
|
|
592
|
+
)), attribute.value.range, MarkerSeverity.Error));
|
|
531
593
|
}
|
|
532
594
|
validateTarget(attributes, report) {
|
|
533
595
|
const attribute = attributes.find(attr => attr.key === PromptHeaderAttributes.target);
|
|
534
596
|
if (!attribute) {
|
|
535
597
|
return;
|
|
536
598
|
}
|
|
537
|
-
if (attribute.value.type !==
|
|
538
|
-
report(toMarker(( localize(
|
|
599
|
+
if (attribute.value.type !== "string") {
|
|
600
|
+
report(toMarker(( localize(6349, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
539
601
|
return;
|
|
540
602
|
}
|
|
541
603
|
const targetValue = attribute.value.value.trim();
|
|
542
604
|
if (targetValue.length === 0) {
|
|
543
|
-
report(toMarker(( localize(
|
|
605
|
+
report(toMarker(( localize(6350, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
544
606
|
return;
|
|
545
607
|
}
|
|
546
|
-
const validTargets = [
|
|
608
|
+
const validTargets = ["github-copilot", "vscode"];
|
|
547
609
|
if (!validTargets.includes(targetValue)) {
|
|
548
610
|
report(toMarker(( localize(
|
|
549
|
-
|
|
611
|
+
6351,
|
|
550
612
|
"The 'target' attribute must be one of: {0}.",
|
|
551
|
-
validTargets.join(
|
|
613
|
+
validTargets.join(", ")
|
|
552
614
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
553
615
|
}
|
|
554
616
|
}
|
|
617
|
+
validateUserInvokable(attributes, report) {
|
|
618
|
+
const attribute = attributes.find(attr => attr.key === PromptHeaderAttributes.userInvokable);
|
|
619
|
+
if (!attribute) {
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
if (attribute.value.type !== "boolean") {
|
|
623
|
+
report(toMarker(( localize(6352, "The 'user-invokable' attribute must be a boolean.")), attribute.value.range, MarkerSeverity.Error));
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
validateDisableModelInvocation(attributes, report) {
|
|
628
|
+
const attribute = attributes.find(attr => attr.key === PromptHeaderAttributes.disableModelInvocation);
|
|
629
|
+
if (!attribute) {
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
if (attribute.value.type !== "boolean") {
|
|
633
|
+
report(toMarker(( localize(6353, "The 'disable-model-invocation' attribute must be a boolean.")), attribute.value.range, MarkerSeverity.Error));
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
async validateAgentsAttribute(attributes, header, report) {
|
|
638
|
+
const attribute = attributes.find(attr => attr.key === PromptHeaderAttributes.agents);
|
|
639
|
+
if (!attribute) {
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
if (attribute.value.type !== "array") {
|
|
643
|
+
report(toMarker(( localize(6354, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
const agents = await this.promptsService.getCustomAgents(CancellationToken.None);
|
|
647
|
+
const availableAgentNames = ( new Set(( agents.map(agent => agent.name))));
|
|
648
|
+
availableAgentNames.add(ChatMode.Agent.name.get());
|
|
649
|
+
const agentNames = [];
|
|
650
|
+
for (const item of attribute.value.items) {
|
|
651
|
+
if (item.type !== "string") {
|
|
652
|
+
report(toMarker(( localize(6355, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
653
|
+
} else if (item.value) {
|
|
654
|
+
agentNames.push(item.value);
|
|
655
|
+
if (item.value !== "*" && !( availableAgentNames.has(item.value))) {
|
|
656
|
+
report(toMarker(( localize(
|
|
657
|
+
6356,
|
|
658
|
+
"Unknown agent '{0}'. Available agents: {1}.",
|
|
659
|
+
item.value,
|
|
660
|
+
Array.from(availableAgentNames).join(", ")
|
|
661
|
+
)), item.range, MarkerSeverity.Warning));
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
if (agentNames.length > 0) {
|
|
666
|
+
const tools = header.tools;
|
|
667
|
+
if (tools && !tools.includes(SpecedToolAliases.agent)) {
|
|
668
|
+
report(toMarker(( localize(
|
|
669
|
+
6357,
|
|
670
|
+
"When 'agents' and 'tools' are specified, the 'agent' tool must be included in the 'tools' attribute."
|
|
671
|
+
)), attribute.value.range, MarkerSeverity.Warning));
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
555
675
|
};
|
|
556
|
-
PromptValidator = ( __decorate([
|
|
557
|
-
( __param(0, ILanguageModelsService)),
|
|
558
|
-
( __param(1, ILanguageModelToolsService)),
|
|
559
|
-
( __param(2, IChatModeService)),
|
|
560
|
-
( __param(3, IFileService)),
|
|
561
|
-
( __param(4, ILabelService)),
|
|
562
|
-
( __param(5, IPromptsService))
|
|
563
|
-
], PromptValidator));
|
|
676
|
+
PromptValidator = ( __decorate([( __param(0, ILanguageModelsService)), ( __param(1, ILanguageModelToolsService)), ( __param(2, IChatModeService)), ( __param(3, IFileService)), ( __param(4, ILabelService)), ( __param(5, IPromptsService))], PromptValidator));
|
|
564
677
|
const allAttributeNames = {
|
|
565
|
-
[PromptsType.prompt]: [
|
|
566
|
-
|
|
567
|
-
|
|
678
|
+
[PromptsType.prompt]: [
|
|
679
|
+
PromptHeaderAttributes.name,
|
|
680
|
+
PromptHeaderAttributes.description,
|
|
681
|
+
PromptHeaderAttributes.model,
|
|
682
|
+
PromptHeaderAttributes.tools,
|
|
683
|
+
PromptHeaderAttributes.mode,
|
|
684
|
+
PromptHeaderAttributes.agent,
|
|
685
|
+
PromptHeaderAttributes.argumentHint
|
|
686
|
+
],
|
|
687
|
+
[PromptsType.instructions]: [
|
|
688
|
+
PromptHeaderAttributes.name,
|
|
689
|
+
PromptHeaderAttributes.description,
|
|
690
|
+
PromptHeaderAttributes.applyTo,
|
|
691
|
+
PromptHeaderAttributes.excludeAgent
|
|
692
|
+
],
|
|
693
|
+
[PromptsType.agent]: [
|
|
694
|
+
PromptHeaderAttributes.name,
|
|
695
|
+
PromptHeaderAttributes.description,
|
|
696
|
+
PromptHeaderAttributes.model,
|
|
697
|
+
PromptHeaderAttributes.tools,
|
|
698
|
+
PromptHeaderAttributes.advancedOptions,
|
|
699
|
+
PromptHeaderAttributes.handOffs,
|
|
700
|
+
PromptHeaderAttributes.argumentHint,
|
|
701
|
+
PromptHeaderAttributes.target,
|
|
702
|
+
PromptHeaderAttributes.infer,
|
|
703
|
+
PromptHeaderAttributes.agents,
|
|
704
|
+
PromptHeaderAttributes.userInvokable,
|
|
705
|
+
PromptHeaderAttributes.disableModelInvocation
|
|
706
|
+
],
|
|
707
|
+
[PromptsType.skill]: [
|
|
708
|
+
PromptHeaderAttributes.name,
|
|
709
|
+
PromptHeaderAttributes.description,
|
|
710
|
+
PromptHeaderAttributes.license,
|
|
711
|
+
PromptHeaderAttributes.compatibility,
|
|
712
|
+
PromptHeaderAttributes.metadata
|
|
713
|
+
]
|
|
568
714
|
};
|
|
569
|
-
const githubCopilotAgentAttributeNames = [
|
|
715
|
+
const githubCopilotAgentAttributeNames = [
|
|
716
|
+
PromptHeaderAttributes.name,
|
|
717
|
+
PromptHeaderAttributes.description,
|
|
718
|
+
PromptHeaderAttributes.tools,
|
|
719
|
+
PromptHeaderAttributes.target,
|
|
720
|
+
GithubPromptHeaderAttributes.mcpServers,
|
|
721
|
+
PromptHeaderAttributes.infer
|
|
722
|
+
];
|
|
570
723
|
const recommendedAttributeNames = {
|
|
571
724
|
[PromptsType.prompt]: allAttributeNames[PromptsType.prompt].filter(name => !isNonRecommendedAttribute(name)),
|
|
572
725
|
[PromptsType.instructions]: allAttributeNames[PromptsType.instructions].filter(name => !isNonRecommendedAttribute(name)),
|
|
573
|
-
[PromptsType.agent]: allAttributeNames[PromptsType.agent].filter(name => !isNonRecommendedAttribute(name))
|
|
726
|
+
[PromptsType.agent]: allAttributeNames[PromptsType.agent].filter(name => !isNonRecommendedAttribute(name)),
|
|
727
|
+
[PromptsType.skill]: allAttributeNames[PromptsType.skill].filter(name => !isNonRecommendedAttribute(name))
|
|
574
728
|
};
|
|
575
729
|
function getValidAttributeNames(promptType, includeNonRecommended, isGitHubTarget) {
|
|
576
730
|
if (isGitHubTarget && promptType === PromptsType.agent) {
|
|
@@ -579,19 +733,140 @@ function getValidAttributeNames(promptType, includeNonRecommended, isGitHubTarge
|
|
|
579
733
|
return includeNonRecommended ? allAttributeNames[promptType] : recommendedAttributeNames[promptType];
|
|
580
734
|
}
|
|
581
735
|
function isNonRecommendedAttribute(attributeName) {
|
|
582
|
-
return attributeName === PromptHeaderAttributes.advancedOptions || attributeName === PromptHeaderAttributes.excludeAgent || attributeName === PromptHeaderAttributes.mode;
|
|
736
|
+
return attributeName === PromptHeaderAttributes.advancedOptions || attributeName === PromptHeaderAttributes.excludeAgent || attributeName === PromptHeaderAttributes.mode || attributeName === PromptHeaderAttributes.infer;
|
|
737
|
+
}
|
|
738
|
+
function getAttributeDescription(attributeName, promptType) {
|
|
739
|
+
switch (promptType) {
|
|
740
|
+
case PromptsType.instructions:
|
|
741
|
+
switch (attributeName) {
|
|
742
|
+
case PromptHeaderAttributes.name:
|
|
743
|
+
return localize(
|
|
744
|
+
6358,
|
|
745
|
+
"The name of the instruction file as shown in the UI. If not set, the name is derived from the file name."
|
|
746
|
+
);
|
|
747
|
+
case PromptHeaderAttributes.description:
|
|
748
|
+
return localize(
|
|
749
|
+
6359,
|
|
750
|
+
"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."
|
|
751
|
+
);
|
|
752
|
+
case PromptHeaderAttributes.applyTo:
|
|
753
|
+
return localize(
|
|
754
|
+
6360,
|
|
755
|
+
"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/**`"
|
|
756
|
+
);
|
|
757
|
+
}
|
|
758
|
+
break;
|
|
759
|
+
case PromptsType.skill:
|
|
760
|
+
switch (attributeName) {
|
|
761
|
+
case PromptHeaderAttributes.name:
|
|
762
|
+
return localize(6361, "The name of the skill.");
|
|
763
|
+
case PromptHeaderAttributes.description:
|
|
764
|
+
return localize(
|
|
765
|
+
6362,
|
|
766
|
+
"The description of the skill. The description is added to every request and will be used by the agent to decide when to load the skill."
|
|
767
|
+
);
|
|
768
|
+
}
|
|
769
|
+
break;
|
|
770
|
+
case PromptsType.agent:
|
|
771
|
+
switch (attributeName) {
|
|
772
|
+
case PromptHeaderAttributes.name:
|
|
773
|
+
return localize(6363, "The name of the agent as shown in the UI.");
|
|
774
|
+
case PromptHeaderAttributes.description:
|
|
775
|
+
return localize(
|
|
776
|
+
6364,
|
|
777
|
+
"The description of the custom agent, what it does and when to use it."
|
|
778
|
+
);
|
|
779
|
+
case PromptHeaderAttributes.argumentHint:
|
|
780
|
+
return localize(
|
|
781
|
+
6365,
|
|
782
|
+
"The argument-hint describes what inputs the custom agent expects or supports."
|
|
783
|
+
);
|
|
784
|
+
case PromptHeaderAttributes.model:
|
|
785
|
+
return localize(
|
|
786
|
+
6366,
|
|
787
|
+
"Specify the model that runs this custom agent. Can also be a list of models. The first available model will be used."
|
|
788
|
+
);
|
|
789
|
+
case PromptHeaderAttributes.tools:
|
|
790
|
+
return localize(6367, "The set of tools that the custom agent has access to.");
|
|
791
|
+
case PromptHeaderAttributes.handOffs:
|
|
792
|
+
return localize(6368, "Possible handoff actions when the agent has completed its task.");
|
|
793
|
+
case PromptHeaderAttributes.target:
|
|
794
|
+
return localize(
|
|
795
|
+
6369,
|
|
796
|
+
"The target to which the header attributes like tools apply to. Possible values are `github-copilot` and `vscode`."
|
|
797
|
+
);
|
|
798
|
+
case PromptHeaderAttributes.infer:
|
|
799
|
+
return localize(6370, "Controls visibility of the agent.");
|
|
800
|
+
case PromptHeaderAttributes.agents:
|
|
801
|
+
return localize(
|
|
802
|
+
6371,
|
|
803
|
+
"One or more agents that this agent can use as subagents. Use '*' to specify all available agents."
|
|
804
|
+
);
|
|
805
|
+
case PromptHeaderAttributes.userInvokable:
|
|
806
|
+
return localize(6372, "Whether the agent can be selected and invoked by users in the UI.");
|
|
807
|
+
case PromptHeaderAttributes.disableModelInvocation:
|
|
808
|
+
return localize(6373, "If true, prevents the agent from being invoked as a subagent.");
|
|
809
|
+
}
|
|
810
|
+
break;
|
|
811
|
+
case PromptsType.prompt:
|
|
812
|
+
switch (attributeName) {
|
|
813
|
+
case PromptHeaderAttributes.name:
|
|
814
|
+
return localize(
|
|
815
|
+
6374,
|
|
816
|
+
"The name of the prompt. This is also the name of the slash command that will run this prompt."
|
|
817
|
+
);
|
|
818
|
+
case PromptHeaderAttributes.description:
|
|
819
|
+
return localize(
|
|
820
|
+
6375,
|
|
821
|
+
"The description of the reusable prompt, what it does and when to use it."
|
|
822
|
+
);
|
|
823
|
+
case PromptHeaderAttributes.argumentHint:
|
|
824
|
+
return localize(
|
|
825
|
+
6376,
|
|
826
|
+
"The argument-hint describes what inputs the prompt expects or supports."
|
|
827
|
+
);
|
|
828
|
+
case PromptHeaderAttributes.model:
|
|
829
|
+
return localize(
|
|
830
|
+
6377,
|
|
831
|
+
"The model to use in this prompt. Can also be a list of models. The first available model will be used."
|
|
832
|
+
);
|
|
833
|
+
case PromptHeaderAttributes.tools:
|
|
834
|
+
return localize(6378, "The tools to use in this prompt.");
|
|
835
|
+
case PromptHeaderAttributes.agent:
|
|
836
|
+
case PromptHeaderAttributes.mode:
|
|
837
|
+
return localize(6379, "The agent to use when running this prompt.");
|
|
838
|
+
}
|
|
839
|
+
break;
|
|
840
|
+
}
|
|
841
|
+
return undefined;
|
|
583
842
|
}
|
|
584
843
|
const knownGithubCopilotTools = [
|
|
585
|
-
SpecedToolAliases.execute,
|
|
844
|
+
SpecedToolAliases.execute,
|
|
845
|
+
SpecedToolAliases.read,
|
|
846
|
+
SpecedToolAliases.edit,
|
|
847
|
+
SpecedToolAliases.search,
|
|
848
|
+
SpecedToolAliases.agent
|
|
586
849
|
];
|
|
587
850
|
function isGithubTarget(promptType, target) {
|
|
588
851
|
return promptType === PromptsType.agent && target === Target.GitHubCopilot;
|
|
589
852
|
}
|
|
590
853
|
function toMarker(message, range, severity = MarkerSeverity.Error) {
|
|
591
|
-
return {
|
|
854
|
+
return {
|
|
855
|
+
severity,
|
|
856
|
+
message,
|
|
857
|
+
...range
|
|
858
|
+
};
|
|
592
859
|
}
|
|
593
860
|
let PromptValidatorContribution = class PromptValidatorContribution extends Disposable {
|
|
594
|
-
constructor(
|
|
861
|
+
constructor(
|
|
862
|
+
modelService,
|
|
863
|
+
instantiationService,
|
|
864
|
+
markerService,
|
|
865
|
+
promptsService,
|
|
866
|
+
languageModelsService,
|
|
867
|
+
languageModelToolsService,
|
|
868
|
+
chatModeService
|
|
869
|
+
) {
|
|
595
870
|
super();
|
|
596
871
|
this.modelService = modelService;
|
|
597
872
|
this.markerService = markerService;
|
|
@@ -616,21 +891,23 @@ let PromptValidatorContribution = class PromptValidatorContribution extends Disp
|
|
|
616
891
|
trackers.set(model.uri, ( new ModelTracker(model, promptType, this.validator, this.promptsService, this.markerService)));
|
|
617
892
|
}
|
|
618
893
|
});
|
|
619
|
-
this.localDisposables.add(this.modelService.onModelAdded(
|
|
894
|
+
this.localDisposables.add(this.modelService.onModelAdded(model => {
|
|
620
895
|
const promptType = getPromptsTypeForLanguageId(model.getLanguageId());
|
|
621
896
|
if (promptType && !( trackers.has(model.uri))) {
|
|
622
897
|
trackers.set(model.uri, ( new ModelTracker(model, promptType, this.validator, this.promptsService, this.markerService)));
|
|
623
898
|
}
|
|
624
899
|
}));
|
|
625
|
-
this.localDisposables.add(this.modelService.onModelRemoved(
|
|
900
|
+
this.localDisposables.add(this.modelService.onModelRemoved(model => {
|
|
626
901
|
const tracker = trackers.get(model.uri);
|
|
627
902
|
if (tracker) {
|
|
628
903
|
tracker.dispose();
|
|
629
904
|
trackers.delete(model.uri);
|
|
630
905
|
}
|
|
631
906
|
}));
|
|
632
|
-
this.localDisposables.add(this.modelService.onModelLanguageChanged(
|
|
633
|
-
const {
|
|
907
|
+
this.localDisposables.add(this.modelService.onModelLanguageChanged(event => {
|
|
908
|
+
const {
|
|
909
|
+
model
|
|
910
|
+
} = event;
|
|
634
911
|
const tracker = trackers.get(model.uri);
|
|
635
912
|
if (tracker) {
|
|
636
913
|
tracker.dispose();
|
|
@@ -647,15 +924,7 @@ let PromptValidatorContribution = class PromptValidatorContribution extends Disp
|
|
|
647
924
|
this.localDisposables.add(this.languageModelsService.onDidChangeLanguageModels(() => validateAll()));
|
|
648
925
|
}
|
|
649
926
|
};
|
|
650
|
-
PromptValidatorContribution = ( __decorate([
|
|
651
|
-
( __param(0, IModelService)),
|
|
652
|
-
( __param(1, IInstantiationService)),
|
|
653
|
-
( __param(2, IMarkerService)),
|
|
654
|
-
( __param(3, IPromptsService)),
|
|
655
|
-
( __param(4, ILanguageModelsService)),
|
|
656
|
-
( __param(5, ILanguageModelToolsService)),
|
|
657
|
-
( __param(6, IChatModeService))
|
|
658
|
-
], PromptValidatorContribution));
|
|
927
|
+
PromptValidatorContribution = ( __decorate([( __param(0, IModelService)), ( __param(1, IInstantiationService)), ( __param(2, IMarkerService)), ( __param(3, IPromptsService)), ( __param(4, ILanguageModelsService)), ( __param(5, ILanguageModelToolsService)), ( __param(6, IChatModeService))], PromptValidatorContribution));
|
|
659
928
|
let ModelTracker = class ModelTracker extends Disposable {
|
|
660
929
|
constructor(textModel, promptType, validator, promptsService, markerService) {
|
|
661
930
|
super();
|
|
@@ -681,9 +950,6 @@ let ModelTracker = class ModelTracker extends Disposable {
|
|
|
681
950
|
super.dispose();
|
|
682
951
|
}
|
|
683
952
|
};
|
|
684
|
-
ModelTracker = ( __decorate([
|
|
685
|
-
( __param(3, IPromptsService)),
|
|
686
|
-
( __param(4, IMarkerService))
|
|
687
|
-
], ModelTracker));
|
|
953
|
+
ModelTracker = ( __decorate([( __param(3, IPromptsService)), ( __param(4, IMarkerService))], ModelTracker));
|
|
688
954
|
|
|
689
|
-
export { MARKERS_OWNER_ID, PromptValidator, PromptValidatorContribution, getValidAttributeNames, isGithubTarget, isNonRecommendedAttribute, knownGithubCopilotTools };
|
|
955
|
+
export { MARKERS_OWNER_ID, PromptValidator, PromptValidatorContribution, getAttributeDescription, getValidAttributeNames, isGithubTarget, isNonRecommendedAttribute, knownGithubCopilotTools };
|