@codingame/monaco-vscode-chat-service-override 24.2.0 → 25.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 +35 -35
- package/package.json +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatAccessibilityService.d.ts → accessibility/chatAccessibilityService.d.ts} +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatAccessibilityService.js → accessibility/chatAccessibilityService.js} +23 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatResponseAccessibleView.d.ts → accessibility/chatResponseAccessibleView.d.ts} +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatResponseAccessibleView.js → accessibility/chatResponseAccessibleView.js} +38 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatTerminalOutputAccessibleView.js → accessibility/chatTerminalOutputAccessibleView.js} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +69 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +2 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +24 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +48 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +22 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +31 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +61 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +482 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +16 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +84 -93
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +41 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +137 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +92 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +81 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +335 -102
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +47 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +80 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatAttachmentResolveService.d.ts → attachments/chatAttachmentResolveService.d.ts} +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatAttachmentResolveService.js → attachments/chatAttachmentResolveService.js} +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatVariables.d.ts → attachments/chatVariables.d.ts} +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatVariables.js → attachments/chatVariables.js} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditing → attachments}/simpleBrowserEditorOverlay.js +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +171 -206
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditing.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -1
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +41 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +35 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatSessions.contribution.d.ts → chatSessions/chatSessions.contribution.d.ts} +7 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatSessions.contribution.js → chatSessions/chatSessions.contribution.js} +53 -106
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +18 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +64 -64
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +90 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatContextService.d.ts → contextContrib/chatContextService.d.ts} +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatContextService.js → contextContrib/chatContextService.js} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsConfirmationService.d.ts → tools/languageModelToolsConfirmationService.d.ts} +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsConfirmationService.js → tools/languageModelToolsConfirmationService.js} +47 -58
- package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsService.d.ts → tools/languageModelToolsService.d.ts} +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsService.js → tools/languageModelToolsService.js} +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatContentParts → widget/chatContentParts}/chatMarkdownAnchorService.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatLayoutService.d.ts → widget/chatLayoutService.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatWidgetService.d.ts → widget/chatWidgetService.d.ts} +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatWidgetService.js → widget/chatWidgetService.js} +27 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusWidget.d.ts → widget/input/chatStatusWidget.d.ts} +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusWidget.js → widget/input/chatStatusWidget.js} +17 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorContrib.js +12 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorHover.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatQuick.d.ts → widgetHosts/chatQuick.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatQuick.js → widgetHosts/chatQuick.js} +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditor.d.ts → widgetHosts/editor/chatEditor.d.ts} +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditor.js → widgetHosts/editor/chatEditor.js} +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewPane.d.ts → widgetHosts/viewPane/chatViewPane.d.ts} +46 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewPane.js → widgetHosts/viewPane/chatViewPane.js} +258 -154
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewTitleControl.d.ts → widgetHosts/viewPane/chatViewTitleControl.d.ts} +5 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewTitleControl.js → widgetHosts/viewPane/chatViewTitleControl.js} +97 -85
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +176 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +89 -0
- package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceImpl.d.ts → chatService/chatServiceImpl.d.ts} +16 -20
- package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceImpl.js → chatService/chatServiceImpl.js} +97 -151
- package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceTelemetry.d.ts → chatService/chatServiceTelemetry.d.ts} +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceTelemetry.js → chatService/chatServiceTelemetry.js} +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/{chatCodeMapperService.d.ts → editing/chatCodeMapperService.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/{chatModelStore.d.ts → model/chatModelStore.d.ts} +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/{chatProgressTypes → model/chatProgressTypes}/chatToolInvocation.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/{chatProgressTypes → model/chatProgressTypes}/chatToolInvocation.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/{chatSessionStore.d.ts → model/chatSessionStore.d.ts} +14 -7
- package/vscode/src/vs/workbench/contrib/chat/common/{chatSessionStore.js → model/chatSessionStore.js} +164 -39
- package/vscode/src/vs/workbench/contrib/chat/common/{chatTransferService.d.ts → model/chatTransferService.d.ts} +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/{chatTransferService.js → model/chatTransferService.js} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/{chatSlashCommands.d.ts → participants/chatSlashCommands.d.ts} +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +25 -49
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +6 -6
- 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 +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +29 -29
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +54 -54
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +11 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +83 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +11 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -10
- package/vscode/src/vs/workbench/contrib/chat/common/{chatTodoListService.d.ts → tools/chatTodoListService.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/{chatTodoListService.js → tools/chatTodoListService.js} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +29 -29
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/{chatResponseResourceFileSystemProvider.d.ts → widget/chatResponseResourceFileSystemProvider.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/{chatResponseResourceFileSystemProvider.js → widget/chatResponseResourceFileSystemProvider.js} +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +23 -23
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +47 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +15 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +33 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +6 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +12 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +17 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +12 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +10 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +22 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +100 -23
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +6 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +19 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{commandLineAutoApprover.d.ts → tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts} +11 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{commandLineAutoApprover.js → tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js} +83 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +156 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +17 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +64 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +16 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +55 -23
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +85 -46
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +9 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +0 -248
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +0 -184
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +0 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +0 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +0 -229
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +0 -102
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +0 -495
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +0 -64
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +0 -386
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -299
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +0 -142
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +0 -39
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatTerminalOutputAccessibleView.d.ts → accessibility/chatTerminalOutputAccessibleView.d.ts} +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → attachments/media}/simpleBrowserOverlay.css +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditing → attachments}/simpleBrowserEditorOverlay.d.ts +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatEditing/media}/chatEditingEditorOverlay.css +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatEditing/media}/chatEditorController.css +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatContentParts → widget/chatContentParts}/chatMarkdownAnchorService.js +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatLayoutService.js → widget/chatLayoutService.js} +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEdinputInputContentProvider.d.ts → widget/input/editor/chatEditorInputContentProvider.d.ts} +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEdinputInputContentProvider.js → widget/input/editor/chatEditorInputContentProvider.js} +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorContrib.d.ts +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/editorHoverWrapper.d.ts +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/editorHoverWrapper.js +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/media/editorHoverWrapper.css +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → widget/input/media}/chatStatusWidget.css +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/common/{chatCodeMapperService.js → editing/chatCodeMapperService.js} +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/common/{chatModelStore.js → model/chatModelStore.js} +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/common/{chatSlashCommands.js → participants/chatSlashCommands.js} +0 -0
|
@@ -12,8 +12,8 @@ import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workben
|
|
|
12
12
|
import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
13
13
|
import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
|
|
14
14
|
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
15
|
-
import { SpecedToolAliases } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
16
|
-
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
|
|
15
|
+
import { SpecedToolAliases } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
16
|
+
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
|
|
17
17
|
import { PromptsType, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
18
18
|
import { PromptHeaderAttributes, Target, GithubPromptHeaderAttributes } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
|
|
19
19
|
import { Disposable, DisposableStore, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
@@ -46,14 +46,14 @@ let PromptValidator = class PromptValidator {
|
|
|
46
46
|
const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
|
|
47
47
|
if (location && (await this.fileService.canCreateFile(location))) {
|
|
48
48
|
report(toMarker(( localize(
|
|
49
|
-
|
|
49
|
+
6018,
|
|
50
50
|
"Chat modes have been renamed to agents. Please move this file to {0}",
|
|
51
51
|
(location.toString())
|
|
52
52
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
53
53
|
}
|
|
54
54
|
else {
|
|
55
55
|
report(toMarker(( localize(
|
|
56
|
-
|
|
56
|
+
6019,
|
|
57
57
|
"Chat modes have been renamed to agents. Please move the file to {0}",
|
|
58
58
|
AGENTS_SOURCE_FOLDER
|
|
59
59
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
@@ -69,7 +69,7 @@ let PromptValidator = class PromptValidator {
|
|
|
69
69
|
for (const ref of body.fileReferences) {
|
|
70
70
|
const resolved = body.resolveFilePath(ref.content);
|
|
71
71
|
if (!resolved) {
|
|
72
|
-
report(toMarker(( localize(
|
|
72
|
+
report(toMarker(( localize(6020, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
|
|
73
73
|
continue;
|
|
74
74
|
}
|
|
75
75
|
if (promptAST.uri.scheme === resolved.scheme) {
|
|
@@ -83,7 +83,7 @@ let PromptValidator = class PromptValidator {
|
|
|
83
83
|
catch {
|
|
84
84
|
}
|
|
85
85
|
const loc = this.labelService.getUriLabel(resolved);
|
|
86
|
-
report(toMarker(( localize(
|
|
86
|
+
report(toMarker(( localize(6021, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
|
|
87
87
|
})());
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -102,7 +102,7 @@ let PromptValidator = class PromptValidator {
|
|
|
102
102
|
if (currentNames.size === 1) {
|
|
103
103
|
const newName = Array.from(currentNames)[0];
|
|
104
104
|
report(toMarker(( localize(
|
|
105
|
-
|
|
105
|
+
6022,
|
|
106
106
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
107
107
|
variable.name,
|
|
108
108
|
newName
|
|
@@ -111,7 +111,7 @@ let PromptValidator = class PromptValidator {
|
|
|
111
111
|
else {
|
|
112
112
|
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(', ');
|
|
113
113
|
report(toMarker(( localize(
|
|
114
|
-
|
|
114
|
+
6023,
|
|
115
115
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
116
116
|
variable.name,
|
|
117
117
|
newNames
|
|
@@ -120,14 +120,14 @@ let PromptValidator = class PromptValidator {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
else {
|
|
123
|
-
report(toMarker(( localize(
|
|
123
|
+
report(toMarker(( localize(6024, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
else if (headerToolsMap) {
|
|
127
127
|
const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
|
|
128
128
|
if (tool && headerToolsMap.get(tool) === false) {
|
|
129
129
|
report(toMarker(( localize(
|
|
130
|
-
|
|
130
|
+
6025,
|
|
131
131
|
"Tool or toolset '{0}' also needs to be enabled in the header.",
|
|
132
132
|
variable.name
|
|
133
133
|
)), variable.range, MarkerSeverity.Warning));
|
|
@@ -182,7 +182,7 @@ let PromptValidator = class PromptValidator {
|
|
|
182
182
|
switch (promptType) {
|
|
183
183
|
case PromptsType.prompt:
|
|
184
184
|
report(toMarker(( localize(
|
|
185
|
-
|
|
185
|
+
6026,
|
|
186
186
|
"Attribute '{0}' is not supported in prompt files. Supported: {1}.",
|
|
187
187
|
attribute.key,
|
|
188
188
|
supportedNames.value
|
|
@@ -191,7 +191,7 @@ let PromptValidator = class PromptValidator {
|
|
|
191
191
|
case PromptsType.agent:
|
|
192
192
|
if (isGitHubTarget) {
|
|
193
193
|
report(toMarker(( localize(
|
|
194
|
-
|
|
194
|
+
6027,
|
|
195
195
|
"Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
|
|
196
196
|
attribute.key,
|
|
197
197
|
supportedNames.value
|
|
@@ -200,14 +200,14 @@ let PromptValidator = class PromptValidator {
|
|
|
200
200
|
else {
|
|
201
201
|
if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
|
|
202
202
|
report(toMarker(( localize(
|
|
203
|
-
|
|
203
|
+
6028,
|
|
204
204
|
"Attribute '{0}' is ignored when running locally in VS Code.",
|
|
205
205
|
attribute.key
|
|
206
206
|
)), attribute.range, MarkerSeverity.Info));
|
|
207
207
|
}
|
|
208
208
|
else {
|
|
209
209
|
report(toMarker(( localize(
|
|
210
|
-
|
|
210
|
+
6029,
|
|
211
211
|
"Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
|
|
212
212
|
attribute.key,
|
|
213
213
|
supportedNames.value
|
|
@@ -217,7 +217,7 @@ let PromptValidator = class PromptValidator {
|
|
|
217
217
|
break;
|
|
218
218
|
case PromptsType.instructions:
|
|
219
219
|
report(toMarker(( localize(
|
|
220
|
-
|
|
220
|
+
6030,
|
|
221
221
|
"Attribute '{0}' is not supported in instructions files. Supported: {1}.",
|
|
222
222
|
attribute.key,
|
|
223
223
|
supportedNames.value
|
|
@@ -233,11 +233,11 @@ let PromptValidator = class PromptValidator {
|
|
|
233
233
|
return;
|
|
234
234
|
}
|
|
235
235
|
if (nameAttribute.value.type !== 'string') {
|
|
236
|
-
report(toMarker(( localize(
|
|
236
|
+
report(toMarker(( localize(6031, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
|
|
237
237
|
return;
|
|
238
238
|
}
|
|
239
239
|
if (nameAttribute.value.value.trim().length === 0) {
|
|
240
|
-
report(toMarker(( localize(
|
|
240
|
+
report(toMarker(( localize(6032, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
|
|
241
241
|
return;
|
|
242
242
|
}
|
|
243
243
|
}
|
|
@@ -247,11 +247,11 @@ let PromptValidator = class PromptValidator {
|
|
|
247
247
|
return;
|
|
248
248
|
}
|
|
249
249
|
if (descriptionAttribute.value.type !== 'string') {
|
|
250
|
-
report(toMarker(( localize(
|
|
250
|
+
report(toMarker(( localize(6033, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
|
|
251
251
|
return;
|
|
252
252
|
}
|
|
253
253
|
if (descriptionAttribute.value.value.trim().length === 0) {
|
|
254
|
-
report(toMarker(( localize(
|
|
254
|
+
report(toMarker(( localize(6034, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
257
257
|
}
|
|
@@ -261,11 +261,11 @@ let PromptValidator = class PromptValidator {
|
|
|
261
261
|
return;
|
|
262
262
|
}
|
|
263
263
|
if (argumentHintAttribute.value.type !== 'string') {
|
|
264
|
-
report(toMarker(( localize(
|
|
264
|
+
report(toMarker(( localize(6035, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
267
|
if (argumentHintAttribute.value.value.trim().length === 0) {
|
|
268
|
-
report(toMarker(( localize(
|
|
268
|
+
report(toMarker(( localize(6036, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Error));
|
|
269
269
|
return;
|
|
270
270
|
}
|
|
271
271
|
}
|
|
@@ -275,12 +275,12 @@ let PromptValidator = class PromptValidator {
|
|
|
275
275
|
return;
|
|
276
276
|
}
|
|
277
277
|
if (attribute.value.type !== 'string') {
|
|
278
|
-
report(toMarker(( localize(
|
|
278
|
+
report(toMarker(( localize(6037, "The 'model' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
279
279
|
return;
|
|
280
280
|
}
|
|
281
281
|
const modelName = attribute.value.value.trim();
|
|
282
282
|
if (modelName.length === 0) {
|
|
283
|
-
report(toMarker(( localize(
|
|
283
|
+
report(toMarker(( localize(6038, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
284
284
|
return;
|
|
285
285
|
}
|
|
286
286
|
const languageModes = this.languageModelsService.getLanguageModelIds();
|
|
@@ -289,10 +289,10 @@ let PromptValidator = class PromptValidator {
|
|
|
289
289
|
}
|
|
290
290
|
const modelMetadata = this.findModelByName(languageModes, modelName);
|
|
291
291
|
if (!modelMetadata) {
|
|
292
|
-
report(toMarker(( localize(
|
|
292
|
+
report(toMarker(( localize(6039, "Unknown model '{0}'.", modelName)), attribute.value.range, MarkerSeverity.Warning));
|
|
293
293
|
}
|
|
294
294
|
else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
|
|
295
|
-
report(toMarker(( localize(
|
|
295
|
+
report(toMarker(( localize(6040, "Model '{0}' is not suited for agent mode.", modelName)), attribute.value.range, MarkerSeverity.Warning));
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
findModelByName(languageModes, modelName) {
|
|
@@ -310,13 +310,13 @@ let PromptValidator = class PromptValidator {
|
|
|
310
310
|
if (modeAttribute) {
|
|
311
311
|
if (agentAttribute) {
|
|
312
312
|
report(toMarker(( localize(
|
|
313
|
-
|
|
313
|
+
6041,
|
|
314
314
|
"The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
|
|
315
315
|
)), modeAttribute.range, MarkerSeverity.Warning));
|
|
316
316
|
}
|
|
317
317
|
else {
|
|
318
318
|
report(toMarker(( localize(
|
|
319
|
-
|
|
319
|
+
6042,
|
|
320
320
|
"The 'mode' attribute has been deprecated. Please rename it to 'agent'."
|
|
321
321
|
)), modeAttribute.range, MarkerSeverity.Error));
|
|
322
322
|
}
|
|
@@ -326,12 +326,12 @@ let PromptValidator = class PromptValidator {
|
|
|
326
326
|
return undefined;
|
|
327
327
|
}
|
|
328
328
|
if (attribute.value.type !== 'string') {
|
|
329
|
-
report(toMarker(( localize(
|
|
329
|
+
report(toMarker(( localize(6043, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
330
330
|
return undefined;
|
|
331
331
|
}
|
|
332
332
|
const agentValue = attribute.value.value;
|
|
333
333
|
if (agentValue.trim().length === 0) {
|
|
334
|
-
report(toMarker(( localize(
|
|
334
|
+
report(toMarker(( localize(6044, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
335
335
|
return undefined;
|
|
336
336
|
}
|
|
337
337
|
return this.validateAgentValue(attribute.value, report);
|
|
@@ -346,7 +346,7 @@ let PromptValidator = class PromptValidator {
|
|
|
346
346
|
availableAgents.push(agent.name.get());
|
|
347
347
|
}
|
|
348
348
|
const errorMessage = ( localize(
|
|
349
|
-
|
|
349
|
+
6045,
|
|
350
350
|
"Unknown agent '{0}'. Available agents: {1}.",
|
|
351
351
|
value.value,
|
|
352
352
|
availableAgents.join(', ')
|
|
@@ -361,7 +361,7 @@ let PromptValidator = class PromptValidator {
|
|
|
361
361
|
}
|
|
362
362
|
if (agentKind !== ChatModeKind.Agent) {
|
|
363
363
|
report(toMarker(( localize(
|
|
364
|
-
|
|
364
|
+
6046,
|
|
365
365
|
"The 'tools' attribute is only supported when using agents. Attribute will be ignored."
|
|
366
366
|
)), attribute.range, MarkerSeverity.Warning));
|
|
367
367
|
}
|
|
@@ -373,7 +373,7 @@ let PromptValidator = class PromptValidator {
|
|
|
373
373
|
}
|
|
374
374
|
break;
|
|
375
375
|
default:
|
|
376
|
-
report(toMarker(( localize(
|
|
376
|
+
report(toMarker(( localize(6047, "The 'tools' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
377
377
|
}
|
|
378
378
|
}
|
|
379
379
|
validateVSCodeTools(valueItem, target, report) {
|
|
@@ -382,7 +382,7 @@ let PromptValidator = class PromptValidator {
|
|
|
382
382
|
const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
|
|
383
383
|
for (const item of valueItem.items) {
|
|
384
384
|
if (item.type !== 'string') {
|
|
385
|
-
report(toMarker(( localize(
|
|
385
|
+
report(toMarker(( localize(6048, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
386
386
|
}
|
|
387
387
|
else if (item.value) {
|
|
388
388
|
if (!( available.has(item.value))) {
|
|
@@ -391,7 +391,7 @@ let PromptValidator = class PromptValidator {
|
|
|
391
391
|
if (currentNames?.size === 1) {
|
|
392
392
|
const newName = Array.from(currentNames)[0];
|
|
393
393
|
report(toMarker(( localize(
|
|
394
|
-
|
|
394
|
+
6049,
|
|
395
395
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
396
396
|
item.value,
|
|
397
397
|
newName
|
|
@@ -400,7 +400,7 @@ let PromptValidator = class PromptValidator {
|
|
|
400
400
|
else {
|
|
401
401
|
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(', ');
|
|
402
402
|
report(toMarker(( localize(
|
|
403
|
-
|
|
403
|
+
6050,
|
|
404
404
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
405
405
|
item.value,
|
|
406
406
|
newNames
|
|
@@ -408,7 +408,7 @@ let PromptValidator = class PromptValidator {
|
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
410
|
else {
|
|
411
|
-
report(toMarker(( localize(
|
|
411
|
+
report(toMarker(( localize(6051, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
|
|
412
412
|
}
|
|
413
413
|
}
|
|
414
414
|
}
|
|
@@ -421,26 +421,26 @@ let PromptValidator = class PromptValidator {
|
|
|
421
421
|
return;
|
|
422
422
|
}
|
|
423
423
|
if (attribute.value.type !== 'string') {
|
|
424
|
-
report(toMarker(( localize(
|
|
424
|
+
report(toMarker(( localize(6052, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
425
425
|
return;
|
|
426
426
|
}
|
|
427
427
|
const pattern = attribute.value.value;
|
|
428
428
|
try {
|
|
429
429
|
const patterns = splitGlobAware(pattern, ',');
|
|
430
430
|
if (patterns.length === 0) {
|
|
431
|
-
report(toMarker(( localize(
|
|
431
|
+
report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
432
432
|
return;
|
|
433
433
|
}
|
|
434
434
|
for (const pattern of patterns) {
|
|
435
435
|
const globPattern = parse(pattern);
|
|
436
436
|
if (isEmptyPattern(globPattern)) {
|
|
437
|
-
report(toMarker(( localize(
|
|
437
|
+
report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
438
438
|
return;
|
|
439
439
|
}
|
|
440
440
|
}
|
|
441
441
|
}
|
|
442
442
|
catch (_error) {
|
|
443
|
-
report(toMarker(( localize(
|
|
443
|
+
report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
444
444
|
}
|
|
445
445
|
}
|
|
446
446
|
validateExcludeAgent(attributes, report) {
|
|
@@ -449,7 +449,7 @@ let PromptValidator = class PromptValidator {
|
|
|
449
449
|
return;
|
|
450
450
|
}
|
|
451
451
|
if (attribute.value.type !== 'array') {
|
|
452
|
-
report(toMarker(( localize(
|
|
452
|
+
report(toMarker(( localize(6054, "The 'excludeAgent' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
453
453
|
return;
|
|
454
454
|
}
|
|
455
455
|
}
|
|
@@ -459,13 +459,13 @@ let PromptValidator = class PromptValidator {
|
|
|
459
459
|
return;
|
|
460
460
|
}
|
|
461
461
|
if (attribute.value.type !== 'array') {
|
|
462
|
-
report(toMarker(( localize(
|
|
462
|
+
report(toMarker(( localize(6055, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
463
463
|
return;
|
|
464
464
|
}
|
|
465
465
|
for (const item of attribute.value.items) {
|
|
466
466
|
if (item.type !== 'object') {
|
|
467
467
|
report(toMarker(( localize(
|
|
468
|
-
|
|
468
|
+
6056,
|
|
469
469
|
"Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
|
|
470
470
|
)), item.range, MarkerSeverity.Error));
|
|
471
471
|
continue;
|
|
@@ -475,12 +475,12 @@ let PromptValidator = class PromptValidator {
|
|
|
475
475
|
switch (prop.key.value) {
|
|
476
476
|
case 'label':
|
|
477
477
|
if (prop.value.type !== 'string' || prop.value.value.trim().length === 0) {
|
|
478
|
-
report(toMarker(( localize(
|
|
478
|
+
report(toMarker(( localize(6057, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
479
479
|
}
|
|
480
480
|
break;
|
|
481
481
|
case 'agent':
|
|
482
482
|
if (prop.value.type !== 'string' || prop.value.value.trim().length === 0) {
|
|
483
|
-
report(toMarker(( localize(
|
|
483
|
+
report(toMarker(( localize(6058, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
484
484
|
}
|
|
485
485
|
else {
|
|
486
486
|
this.validateAgentValue(prop.value, report);
|
|
@@ -488,22 +488,22 @@ let PromptValidator = class PromptValidator {
|
|
|
488
488
|
break;
|
|
489
489
|
case 'prompt':
|
|
490
490
|
if (prop.value.type !== 'string') {
|
|
491
|
-
report(toMarker(( localize(
|
|
491
|
+
report(toMarker(( localize(6059, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
492
492
|
}
|
|
493
493
|
break;
|
|
494
494
|
case 'send':
|
|
495
495
|
if (prop.value.type !== 'boolean') {
|
|
496
|
-
report(toMarker(( localize(
|
|
496
|
+
report(toMarker(( localize(6060, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
497
497
|
}
|
|
498
498
|
break;
|
|
499
499
|
case 'showContinueOn':
|
|
500
500
|
if (prop.value.type !== 'boolean') {
|
|
501
|
-
report(toMarker(( localize(
|
|
501
|
+
report(toMarker(( localize(6061, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
502
502
|
}
|
|
503
503
|
break;
|
|
504
504
|
default:
|
|
505
505
|
report(toMarker(( localize(
|
|
506
|
-
|
|
506
|
+
6062,
|
|
507
507
|
"Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn'.",
|
|
508
508
|
prop.key.value
|
|
509
509
|
)), prop.value.range, MarkerSeverity.Warning));
|
|
@@ -512,7 +512,7 @@ let PromptValidator = class PromptValidator {
|
|
|
512
512
|
}
|
|
513
513
|
if (required.size > 0) {
|
|
514
514
|
report(toMarker(( localize(
|
|
515
|
-
|
|
515
|
+
6063,
|
|
516
516
|
"Missing required properties {0} in handoff object.",
|
|
517
517
|
( Array.from(required).map(s => `'${s}'`)).join(', ')
|
|
518
518
|
)), item.range, MarkerSeverity.Error));
|
|
@@ -525,7 +525,7 @@ let PromptValidator = class PromptValidator {
|
|
|
525
525
|
return;
|
|
526
526
|
}
|
|
527
527
|
if (attribute.value.type !== 'boolean') {
|
|
528
|
-
report(toMarker(( localize(
|
|
528
|
+
report(toMarker(( localize(6064, "The 'infer' attribute must be a boolean.")), attribute.value.range, MarkerSeverity.Error));
|
|
529
529
|
return;
|
|
530
530
|
}
|
|
531
531
|
}
|
|
@@ -535,18 +535,18 @@ let PromptValidator = class PromptValidator {
|
|
|
535
535
|
return;
|
|
536
536
|
}
|
|
537
537
|
if (attribute.value.type !== 'string') {
|
|
538
|
-
report(toMarker(( localize(
|
|
538
|
+
report(toMarker(( localize(6065, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
539
539
|
return;
|
|
540
540
|
}
|
|
541
541
|
const targetValue = attribute.value.value.trim();
|
|
542
542
|
if (targetValue.length === 0) {
|
|
543
|
-
report(toMarker(( localize(
|
|
543
|
+
report(toMarker(( localize(6066, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
544
544
|
return;
|
|
545
545
|
}
|
|
546
546
|
const validTargets = ['github-copilot', 'vscode'];
|
|
547
547
|
if (!validTargets.includes(targetValue)) {
|
|
548
548
|
report(toMarker(( localize(
|
|
549
|
-
|
|
549
|
+
6067,
|
|
550
550
|
"The 'target' attribute must be one of: {0}.",
|
|
551
551
|
validTargets.join(', ')
|
|
552
552
|
)), attribute.value.range, MarkerSeverity.Error));
|
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts
CHANGED
|
@@ -14,10 +14,12 @@ import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/l
|
|
|
14
14
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
15
15
|
import { IFilesConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service";
|
|
16
16
|
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
17
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
17
18
|
import { IUserDataProfileService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service";
|
|
19
|
+
import { IDefaultAccountService } from "@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount.service";
|
|
18
20
|
import { PromptsType } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
|
|
19
21
|
import { ParsedPromptFile } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser";
|
|
20
|
-
import { IChatPromptSlashCommand, ICustomAgent, IPromptPath,
|
|
22
|
+
import { IChatPromptSlashCommand, ICustomAgent, IPromptPath, IAgentSkill, PromptsStorage, ICustomAgentQueryOptions, IExternalCustomAgent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService";
|
|
21
23
|
import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
|
|
22
24
|
/**
|
|
23
25
|
* Provides prompt services.
|
|
@@ -33,6 +35,8 @@ export declare class PromptsService extends Disposable implements IPromptsServic
|
|
|
33
35
|
private readonly filesConfigService;
|
|
34
36
|
private readonly storageService;
|
|
35
37
|
private readonly extensionService;
|
|
38
|
+
private readonly defaultAccountService;
|
|
39
|
+
private readonly telemetryService;
|
|
36
40
|
readonly _serviceBrand: undefined;
|
|
37
41
|
/**
|
|
38
42
|
* Prompt files locator utility.
|
|
@@ -65,7 +69,7 @@ export declare class PromptsService extends Disposable implements IPromptsServic
|
|
|
65
69
|
* Contributed files from extensions keyed by prompt type then name.
|
|
66
70
|
*/
|
|
67
71
|
private readonly contributedFiles;
|
|
68
|
-
constructor(logger: ILogService, labelService: ILabelService, modelService: IModelService, instantiationService: IInstantiationService, userDataService: IUserDataProfileService, configurationService: IConfigurationService, fileService: IFileService, filesConfigService: IFilesConfigurationService, storageService: IStorageService, extensionService: IExtensionService);
|
|
72
|
+
constructor(logger: ILogService, labelService: ILabelService, modelService: IModelService, instantiationService: IInstantiationService, userDataService: IUserDataProfileService, configurationService: IConfigurationService, fileService: IFileService, filesConfigService: IFilesConfigurationService, storageService: IStorageService, extensionService: IExtensionService, defaultAccountService: IDefaultAccountService, telemetryService: ITelemetryService);
|
|
69
73
|
private getFileLocatorEvent;
|
|
70
74
|
getParsedPromptFile(textModel: ITextModel): ParsedPromptFile;
|
|
71
75
|
listPromptFiles(type: PromptsType, token: CancellationToken): Promise<readonly IPromptPath[]>;
|
|
@@ -103,7 +107,7 @@ export declare class PromptsService extends Disposable implements IPromptsServic
|
|
|
103
107
|
getCustomAgents(token: CancellationToken): Promise<readonly ICustomAgent[]>;
|
|
104
108
|
private computeCustomAgents;
|
|
105
109
|
parseNew(uri: URI, token: CancellationToken): Promise<ParsedPromptFile>;
|
|
106
|
-
registerContributedFile(type: PromptsType,
|
|
110
|
+
registerContributedFile(type: PromptsType, uri: URI, extension: IExtensionDescription, name?: string, description?: string): Readonly<IDisposable>;
|
|
107
111
|
getPromptLocationLabel(promptPath: IPromptPath): string;
|
|
108
112
|
findAgentMDsInWorkspace(token: CancellationToken): Promise<URI[]>;
|
|
109
113
|
listAgentMDs(token: CancellationToken, includeNested: boolean): Promise<URI[]>;
|
|
@@ -112,5 +116,8 @@ export declare class PromptsService extends Disposable implements IPromptsServic
|
|
|
112
116
|
private readonly disabledPromptsStorageKeyPrefix;
|
|
113
117
|
getDisabledPromptFiles(type: PromptsType): ResourceSet;
|
|
114
118
|
setDisabledPromptFiles(type: PromptsType, uris: ResourceSet): void;
|
|
115
|
-
|
|
119
|
+
private sanitizeAgentSkillText;
|
|
120
|
+
private truncateAgentSkillName;
|
|
121
|
+
private truncateAgentSkillDescription;
|
|
122
|
+
findAgentSkills(token: CancellationToken): Promise<IAgentSkill[] | undefined>;
|
|
116
123
|
}
|
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js
CHANGED
|
@@ -19,8 +19,10 @@ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log
|
|
|
19
19
|
import { IFilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service';
|
|
20
20
|
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
21
21
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
22
|
+
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
22
23
|
import { IUserDataProfileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service';
|
|
23
24
|
import { PromptsConfig } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/config';
|
|
25
|
+
import { IDefaultAccountService } from '@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount.service';
|
|
24
26
|
import { getCleanPromptName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
|
|
25
27
|
import { PromptsType, PROMPT_LANGUAGE_ID, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
26
28
|
import { PromptFilesLocator } from '../utils/promptFilesLocator.js';
|
|
@@ -30,7 +32,7 @@ import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/asyn
|
|
|
30
32
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
31
33
|
|
|
32
34
|
let PromptsService = class PromptsService extends Disposable {
|
|
33
|
-
constructor(logger, labelService, modelService, instantiationService, userDataService, configurationService, fileService, filesConfigService, storageService, extensionService) {
|
|
35
|
+
constructor(logger, labelService, modelService, instantiationService, userDataService, configurationService, fileService, filesConfigService, storageService, extensionService, defaultAccountService, telemetryService) {
|
|
34
36
|
super();
|
|
35
37
|
this.logger = logger;
|
|
36
38
|
this.labelService = labelService;
|
|
@@ -42,6 +44,8 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
42
44
|
this.filesConfigService = filesConfigService;
|
|
43
45
|
this.storageService = storageService;
|
|
44
46
|
this.extensionService = extensionService;
|
|
47
|
+
this.defaultAccountService = defaultAccountService;
|
|
48
|
+
this.telemetryService = telemetryService;
|
|
45
49
|
this.cachedParsedPromptFromModels = ( new ResourceMap());
|
|
46
50
|
this.cachedFileLocations = {};
|
|
47
51
|
this.fileLocatorEvents = {};
|
|
@@ -346,7 +350,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
346
350
|
}
|
|
347
351
|
return ( new PromptFileParser()).parse(uri, ( fileContent.value.toString()));
|
|
348
352
|
}
|
|
349
|
-
registerContributedFile(type,
|
|
353
|
+
registerContributedFile(type, uri, extension, name, description) {
|
|
350
354
|
const bucket = this.contributedFiles[type];
|
|
351
355
|
if (( bucket.has(uri))) {
|
|
352
356
|
return Disposable.None;
|
|
@@ -384,10 +388,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
384
388
|
getPromptLocationLabel(promptPath) {
|
|
385
389
|
switch (promptPath.storage) {
|
|
386
390
|
case PromptsStorage.local: return this.labelService.getUriLabel(dirname(promptPath.uri), { relative: true });
|
|
387
|
-
case PromptsStorage.user: return localize(
|
|
391
|
+
case PromptsStorage.user: return localize(6068, 'User Data');
|
|
388
392
|
case PromptsStorage.extension: {
|
|
389
393
|
return localize(
|
|
390
|
-
|
|
394
|
+
6069,
|
|
391
395
|
'Extension: {0}',
|
|
392
396
|
promptPath.extension.displayName ?? promptPath.extension.id
|
|
393
397
|
);
|
|
@@ -447,29 +451,88 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
447
451
|
this.cachedCustomAgents.refresh();
|
|
448
452
|
}
|
|
449
453
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
454
|
+
sanitizeAgentSkillText(text) {
|
|
455
|
+
return text.replace(/<[^>]+>/g, '');
|
|
456
|
+
}
|
|
457
|
+
truncateAgentSkillName(name, uri) {
|
|
458
|
+
const MAX_NAME_LENGTH = 64;
|
|
459
|
+
const sanitized = this.sanitizeAgentSkillText(name);
|
|
460
|
+
if (sanitized !== name) {
|
|
461
|
+
this.logger.warn(`[findAgentSkills] Agent skill name contains XML tags, removed: ${uri}`);
|
|
462
|
+
}
|
|
463
|
+
if (sanitized.length > MAX_NAME_LENGTH) {
|
|
464
|
+
this.logger.warn(`[findAgentSkills] Agent skill name exceeds ${MAX_NAME_LENGTH} characters, truncated: ${uri}`);
|
|
465
|
+
return sanitized.substring(0, MAX_NAME_LENGTH);
|
|
466
|
+
}
|
|
467
|
+
return sanitized;
|
|
468
|
+
}
|
|
469
|
+
truncateAgentSkillDescription(description, uri) {
|
|
470
|
+
if (!description) {
|
|
471
|
+
return undefined;
|
|
472
|
+
}
|
|
473
|
+
const MAX_DESCRIPTION_LENGTH = 1024;
|
|
474
|
+
const sanitized = this.sanitizeAgentSkillText(description);
|
|
475
|
+
if (sanitized !== description) {
|
|
476
|
+
this.logger.warn(`[findAgentSkills] Agent skill description contains XML tags, removed: ${uri}`);
|
|
477
|
+
}
|
|
478
|
+
if (sanitized.length > MAX_DESCRIPTION_LENGTH) {
|
|
479
|
+
this.logger.warn(`[findAgentSkills] Agent skill description exceeds ${MAX_DESCRIPTION_LENGTH} characters, truncated: ${uri}`);
|
|
480
|
+
return sanitized.substring(0, MAX_DESCRIPTION_LENGTH);
|
|
481
|
+
}
|
|
482
|
+
return sanitized;
|
|
483
|
+
}
|
|
484
|
+
async findAgentSkills(token) {
|
|
485
|
+
const useAgentSkills = this.configurationService.getValue(PromptsConfig.USE_AGENT_SKILLS);
|
|
486
|
+
const defaultAccount = await this.defaultAccountService.getDefaultAccount();
|
|
487
|
+
const previewFeaturesEnabled = defaultAccount?.chat_preview_features_enabled ?? true;
|
|
488
|
+
if (useAgentSkills && previewFeaturesEnabled) {
|
|
453
489
|
const result = [];
|
|
454
|
-
const
|
|
490
|
+
const seenNames = ( new Set());
|
|
491
|
+
const skillTypes = ( new Map());
|
|
492
|
+
let skippedMissingName = 0;
|
|
493
|
+
let skippedDuplicateName = 0;
|
|
494
|
+
let skippedParseFailed = 0;
|
|
495
|
+
const process = async (uri, skillType, scopeType) => {
|
|
455
496
|
try {
|
|
456
497
|
const parsedFile = await this.parseNew(uri, token);
|
|
457
498
|
const name = parsedFile.header?.name;
|
|
458
|
-
if (name) {
|
|
459
|
-
|
|
499
|
+
if (!name) {
|
|
500
|
+
skippedMissingName++;
|
|
501
|
+
this.logger.error(`[findAgentSkills] Agent skill file missing name attribute: ${uri}`);
|
|
502
|
+
return;
|
|
460
503
|
}
|
|
461
|
-
|
|
462
|
-
|
|
504
|
+
const sanitizedName = this.truncateAgentSkillName(name, uri);
|
|
505
|
+
if (( seenNames.has(sanitizedName))) {
|
|
506
|
+
skippedDuplicateName++;
|
|
507
|
+
this.logger.warn(`[findAgentSkills] Skipping duplicate agent skill name: ${sanitizedName} at ${uri}`);
|
|
508
|
+
return;
|
|
463
509
|
}
|
|
510
|
+
seenNames.add(sanitizedName);
|
|
511
|
+
const sanitizedDescription = this.truncateAgentSkillDescription(parsedFile.header?.description, uri);
|
|
512
|
+
result.push({ uri, type: scopeType, name: sanitizedName, description: sanitizedDescription });
|
|
513
|
+
skillTypes.set(skillType, (skillTypes.get(skillType) || 0) + 1);
|
|
464
514
|
}
|
|
465
515
|
catch (e) {
|
|
466
|
-
|
|
516
|
+
skippedParseFailed++;
|
|
517
|
+
this.logger.error(`[findAgentSkills] Failed to parse Agent skill file: ${uri}`, e instanceof Error ? e.message : String(e));
|
|
467
518
|
}
|
|
468
519
|
};
|
|
469
|
-
const workspaceSkills = await this.fileLocator.
|
|
470
|
-
await Promise.all(( workspaceSkills.map(uri => process(uri, 'project'))));
|
|
471
|
-
const userSkills = await this.fileLocator.
|
|
472
|
-
await Promise.all(( userSkills.map(uri => process(uri, 'personal'))));
|
|
520
|
+
const workspaceSkills = await this.fileLocator.findAgentSkillsInWorkspace(token);
|
|
521
|
+
await Promise.all(( workspaceSkills.map(({ uri, type }) => process(uri, type, 'project'))));
|
|
522
|
+
const userSkills = await this.fileLocator.findAgentSkillsInUserHome(token);
|
|
523
|
+
await Promise.all(( userSkills.map(({ uri, type }) => process(uri, type, 'personal'))));
|
|
524
|
+
this.telemetryService.publicLog2('agentSkillsFound', {
|
|
525
|
+
totalSkillsFound: result.length,
|
|
526
|
+
claudePersonal: skillTypes.get('claude-personal') ?? 0,
|
|
527
|
+
claudeWorkspace: skillTypes.get('claude-workspace') ?? 0,
|
|
528
|
+
copilotPersonal: skillTypes.get('copilot-personal') ?? 0,
|
|
529
|
+
githubWorkspace: skillTypes.get('github-workspace') ?? 0,
|
|
530
|
+
customPersonal: skillTypes.get('custom-personal') ?? 0,
|
|
531
|
+
customWorkspace: skillTypes.get('custom-workspace') ?? 0,
|
|
532
|
+
skippedDuplicateName,
|
|
533
|
+
skippedMissingName,
|
|
534
|
+
skippedParseFailed
|
|
535
|
+
});
|
|
473
536
|
return result;
|
|
474
537
|
}
|
|
475
538
|
return undefined;
|
|
@@ -485,7 +548,9 @@ PromptsService = ( __decorate([
|
|
|
485
548
|
( __param(6, IFileService)),
|
|
486
549
|
( __param(7, IFilesConfigurationService)),
|
|
487
550
|
( __param(8, IStorageService)),
|
|
488
|
-
( __param(9, IExtensionService))
|
|
551
|
+
( __param(9, IExtensionService)),
|
|
552
|
+
( __param(10, IDefaultAccountService)),
|
|
553
|
+
( __param(11, ITelemetryService))
|
|
489
554
|
], PromptsService));
|
|
490
555
|
class CachedPromise extends Disposable {
|
|
491
556
|
constructor(computeFn, getEvent, delay = 0) {
|