@codingame/monaco-vscode-chat-service-override 28.4.0 → 29.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 +18 -12
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +300 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.js +31 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +84 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +16 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +488 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +424 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +50 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +202 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/notifications.d.ts +114 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +723 -0
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +33 -0
- package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +40 -0
- package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +22 -0
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +29 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +76 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +162 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +167 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +52 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +82 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +195 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +97 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +78 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +174 -170
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +118 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +13 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +9 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +23 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +341 -196
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +79 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +22 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +15 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +85 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +668 -214
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +306 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +84 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +651 -81
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +31 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +9 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +11 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +7 -142
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.d.ts +43 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +63 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +25 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +297 -123
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +153 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +17 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +111 -171
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +5 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -186
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +31 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.d.ts +3 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.js +4 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +18 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +112 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +16 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +41 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +1 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +8 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +13 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +29 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +14 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +79 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +125 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +11 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +113 -82
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +18 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +54 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +8 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +103 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +48 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +28 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +62 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +21 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +17 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +43 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.d.ts +59 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +194 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +8 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +81 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +19 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +105 -172
- 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 +80 -65
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +56 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +70 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +40 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +33 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +21 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +362 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +15 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +90 -43
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +146 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +10 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +33 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +200 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +90 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +21 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +22 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +28 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +20 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +68 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +57 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +21 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +171 -57
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +206 -35
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +11 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +44 -22
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +450 -301
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +165 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +34 -20
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +209 -144
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +205 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +47 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
- 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 +191 -159
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +210 -233
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +19 -26
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +183 -193
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +75 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +97 -35
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.js +67 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +62 -23
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +23 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +50 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +21 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +20 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +124 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +20 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +10 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +46 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +18 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +74 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +24 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +5 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +66 -64
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +5 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +32 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +390 -114
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +21 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +70 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +61 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +94 -76
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +19 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +112 -21
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.d.ts +0 -53
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.js +0 -219
- package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +0 -89
- package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +0 -251
- package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +0 -123
- package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +0 -278
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +0 -76
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +0 -299
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +0 -67
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +0 -263
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +0 -85
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +0 -397
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -56
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +0 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.js +0 -30
- package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +0 -40
- package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +0 -28
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +0 -190
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +0 -11
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +0 -16
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +0 -20
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js
CHANGED
|
@@ -7,7 +7,7 @@ import { parse } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
|
|
|
7
7
|
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
8
8
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
9
9
|
import { ResourceMap, ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
10
|
-
import { isEqual, dirname,
|
|
10
|
+
import { isEqual, dirname, basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
11
11
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
12
12
|
import { OffsetRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/offsetRange';
|
|
13
13
|
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
@@ -25,7 +25,7 @@ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform
|
|
|
25
25
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
26
26
|
import { IUserDataProfileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service';
|
|
27
27
|
import { PromptsConfig } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/config';
|
|
28
|
-
import { getCleanPromptName, AGENT_MD_FILENAME, CLAUDE_CONFIG_FOLDER,
|
|
28
|
+
import { getCleanPromptName, AGENT_MD_FILENAME, CLAUDE_MD_FILENAME, CLAUDE_LOCAL_MD_FILENAME, CLAUDE_CONFIG_FOLDER, COPILOT_CUSTOM_INSTRUCTIONS_FILENAME, GITHUB_CONFIG_FOLDER, getSkillFolderName, PromptFileSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
|
|
29
29
|
import { PromptsType, PROMPT_LANGUAGE_ID, Target, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
30
30
|
import { PromptFilesLocator } from '../utils/promptFilesLocator.js';
|
|
31
31
|
import { PromptFileParser, PromptHeaderAttributes } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
|
|
@@ -43,7 +43,9 @@ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/
|
|
|
43
43
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
44
44
|
import { getCanonicalPluginCommandId } from '../../plugins/agentPluginService.js';
|
|
45
45
|
import { IAgentPluginService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service';
|
|
46
|
+
import { isContributionEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
|
|
46
47
|
import { assertNever } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
|
|
48
|
+
import { ChatInternalCustomizations } from '../internalCustomizations/internalCustomizations.js';
|
|
47
49
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
48
50
|
|
|
49
51
|
class SkillMissingNameError extends Error {
|
|
@@ -126,6 +128,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
126
128
|
this.promptFileProviders = [];
|
|
127
129
|
this.disabledPromptsStorageKeyPrefix = "chat.disabledPromptFiles.";
|
|
128
130
|
this.fileLocator = this.createPromptFilesLocator();
|
|
131
|
+
this.internalCustomizations = this._register(( new ChatInternalCustomizations(this.fileService)));
|
|
129
132
|
this._register(this.modelService.onModelRemoved(model => {
|
|
130
133
|
this.cachedParsedPromptFromModels.delete(model.uri);
|
|
131
134
|
}));
|
|
@@ -145,7 +148,8 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
145
148
|
Event.filter(
|
|
146
149
|
this.configurationService.onDidChangeConfiguration,
|
|
147
150
|
e => e.affectsConfiguration(PromptsConfig.USE_CUSTOM_AGENT_HOOKS)
|
|
148
|
-
)
|
|
151
|
+
),
|
|
152
|
+
this._onDidPluginPromptFilesChange.event
|
|
149
153
|
))));
|
|
150
154
|
this.cachedSlashCommands = this._register(( new CachedPromise(token => this.computePromptSlashCommands(token), () => Event.any(
|
|
151
155
|
this.getFileLocatorEvent(PromptsType.prompt),
|
|
@@ -179,11 +183,28 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
179
183
|
this._register(
|
|
180
184
|
this.watchPluginPromptFilesForType(PromptsType.agent, (plugin, reader) => plugin.agents.read(reader))
|
|
181
185
|
);
|
|
186
|
+
this._register(this.watchPluginPromptFilesForType(
|
|
187
|
+
PromptsType.instructions,
|
|
188
|
+
(plugin, reader) => plugin.instructions.read(reader)
|
|
189
|
+
));
|
|
182
190
|
this._register(autorun(reader => {
|
|
183
191
|
const plugins = this.agentPluginService.plugins.read(reader);
|
|
192
|
+
const hookFiles = [];
|
|
184
193
|
for (const plugin of plugins) {
|
|
185
|
-
plugin.
|
|
194
|
+
if (isContributionEnabled(plugin.enablement.read(reader))) {
|
|
195
|
+
for (const hook of plugin.hooks.read(reader)) {
|
|
196
|
+
hookFiles.push({
|
|
197
|
+
uri: hook.uri,
|
|
198
|
+
storage: PromptsStorage.plugin,
|
|
199
|
+
type: PromptsType.hook,
|
|
200
|
+
name: getCanonicalPluginCommandId(plugin, hook.originalId),
|
|
201
|
+
pluginUri: plugin.uri
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
186
205
|
}
|
|
206
|
+
this._pluginPromptFilesByType.set(PromptsType.hook, hookFiles);
|
|
207
|
+
this.cachedFileLocations[PromptsType.hook] = undefined;
|
|
187
208
|
this._onDidPluginHooksChange.fire();
|
|
188
209
|
}));
|
|
189
210
|
}
|
|
@@ -192,6 +213,9 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
192
213
|
const plugins = this.agentPluginService.plugins.read(reader);
|
|
193
214
|
const nextFiles = [];
|
|
194
215
|
for (const plugin of plugins) {
|
|
216
|
+
if (!isContributionEnabled(plugin.enablement.read(reader))) {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
195
219
|
for (const item of getItems(plugin, reader)) {
|
|
196
220
|
nextFiles.push({
|
|
197
221
|
uri: item.uri,
|
|
@@ -259,37 +283,14 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
259
283
|
this.getExtensionPromptFiles(type, token),
|
|
260
284
|
this._pluginPromptFilesByType.get(type) ?? []
|
|
261
285
|
]);
|
|
262
|
-
return [...prompts.flat()];
|
|
286
|
+
return [...prompts.flat(), ...this.internalCustomizations.getPromptPaths(type)];
|
|
263
287
|
}
|
|
264
|
-
async _collectSourceFolderDiagnostics(type
|
|
288
|
+
async _collectSourceFolderDiagnostics(type) {
|
|
265
289
|
const resolvedFolders = await this.fileLocator.getSourceFoldersInDiscoveryOrder(type);
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
let errorMessage;
|
|
271
|
-
if (!exists) {
|
|
272
|
-
try {
|
|
273
|
-
const stat = await this.fileService.stat(folder.uri);
|
|
274
|
-
exists = stat.isDirectory;
|
|
275
|
-
} catch (e) {
|
|
276
|
-
if (e instanceof FileOperationError && e.fileOperationResult === FileOperationResult.FILE_NOT_FOUND) {
|
|
277
|
-
exists = false;
|
|
278
|
-
} else {
|
|
279
|
-
exists = false;
|
|
280
|
-
errorMessage = e instanceof Error ? e.message : String(e);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
results.push({
|
|
285
|
-
uri: folder.uri,
|
|
286
|
-
storage: folder.storage,
|
|
287
|
-
exists,
|
|
288
|
-
fileCount,
|
|
289
|
-
errorMessage
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
return results;
|
|
290
|
+
return ( resolvedFolders.map(folder => ({
|
|
291
|
+
uri: folder.uri,
|
|
292
|
+
storage: folder.storage
|
|
293
|
+
})));
|
|
293
294
|
}
|
|
294
295
|
registerPromptFileProvider(extension, type, provider) {
|
|
295
296
|
const providerEntry = {
|
|
@@ -389,6 +390,8 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
389
390
|
}))));
|
|
390
391
|
case PromptsStorage.plugin:
|
|
391
392
|
return this._pluginPromptFilesByType.get(type) ?? [];
|
|
393
|
+
case PromptsStorage.internal:
|
|
394
|
+
return this.internalCustomizations.getPromptPaths(type);
|
|
392
395
|
default:
|
|
393
396
|
throw ( new Error(`[listPromptFilesForStorage] Unsupported prompt storage type: ${storage}`));
|
|
394
397
|
}
|
|
@@ -467,13 +470,39 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
467
470
|
return this.cachedSlashCommands.onDidChange;
|
|
468
471
|
}
|
|
469
472
|
async getPromptSlashCommands(token, sessionResource) {
|
|
470
|
-
|
|
473
|
+
const sw = StopWatch.create();
|
|
474
|
+
const result = await this.cachedSlashCommands.get(token);
|
|
475
|
+
if (sessionResource) {
|
|
476
|
+
const elapsed = sw.elapsed();
|
|
477
|
+
void this.getPromptSlashCommandDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
478
|
+
const details = result.length === 1 ? ( localize(
|
|
479
|
+
7555,
|
|
480
|
+
"Resolved {0} slash command in {1}ms",
|
|
481
|
+
result.length,
|
|
482
|
+
elapsed.toFixed(1)
|
|
483
|
+
)) : ( localize(
|
|
484
|
+
7556,
|
|
485
|
+
"Resolved {0} slash commands in {1}ms",
|
|
486
|
+
result.length,
|
|
487
|
+
elapsed.toFixed(1)
|
|
488
|
+
));
|
|
489
|
+
this._onDidLogDiscovery.fire({
|
|
490
|
+
sessionResource,
|
|
491
|
+
name: ( localize(7557, "Load Slash Commands")),
|
|
492
|
+
details,
|
|
493
|
+
discoveryInfo,
|
|
494
|
+
category: "discovery"
|
|
495
|
+
});
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
return result;
|
|
471
499
|
}
|
|
472
500
|
async computePromptSlashCommands(token) {
|
|
473
501
|
const promptFiles = await this.listPromptFiles(PromptsType.prompt, token);
|
|
474
502
|
const useAgentSkills = this.configurationService.getValue(PromptsConfig.USE_AGENT_SKILLS);
|
|
475
503
|
const skills = useAgentSkills ? await this.listPromptFiles(PromptsType.skill, token) : [];
|
|
476
|
-
const
|
|
504
|
+
const disabledSkills = this.getDisabledPromptFiles(PromptsType.skill);
|
|
505
|
+
const slashCommandFiles = [...promptFiles, ...skills.filter(s => !( disabledSkills.has(s.uri)))];
|
|
477
506
|
const details = await Promise.all(( slashCommandFiles.map(async promptPath => {
|
|
478
507
|
try {
|
|
479
508
|
const parsedPromptFile = await this.parseNew(promptPath.uri, token);
|
|
@@ -516,12 +545,14 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
516
545
|
asChatPromptSlashCommand(parsedPromptFile, promptPath) {
|
|
517
546
|
let name = parsedPromptFile?.header?.name ?? promptPath.name ?? getCleanPromptName(promptPath.uri);
|
|
518
547
|
name = name.replace(/[^\p{L}\d_\-\.:]+/gu, "-");
|
|
548
|
+
const internalSkill = this.internalCustomizations.getInternalSkillByUri(promptPath.uri);
|
|
519
549
|
return {
|
|
520
550
|
name: name,
|
|
521
551
|
description: parsedPromptFile?.header?.description ?? promptPath.description,
|
|
522
552
|
argumentHint: parsedPromptFile?.header?.argumentHint,
|
|
523
553
|
parsedPromptFile,
|
|
524
|
-
promptPath
|
|
554
|
+
promptPath,
|
|
555
|
+
when: internalSkill?.when
|
|
525
556
|
};
|
|
526
557
|
}
|
|
527
558
|
async getPromptSlashCommandName(uri, token) {
|
|
@@ -539,7 +570,8 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
539
570
|
return Event.any(
|
|
540
571
|
this.getFileLocatorEvent(PromptsType.instructions),
|
|
541
572
|
this._onDidContributedWhenChange.event,
|
|
542
|
-
this._onDidChangeInstructions.event
|
|
573
|
+
this._onDidChangeInstructions.event,
|
|
574
|
+
this._onDidPluginPromptFilesChange.event
|
|
543
575
|
);
|
|
544
576
|
}
|
|
545
577
|
async getCustomAgents(token, sessionResource) {
|
|
@@ -547,14 +579,15 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
547
579
|
const result = await this.cachedCustomAgents.get(token);
|
|
548
580
|
if (sessionResource) {
|
|
549
581
|
const elapsed = sw.elapsed();
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
582
|
+
void this.getAgentDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
583
|
+
const details = result.length === 1 ? ( localize(7558, "Resolved {0} agent in {1}ms", result.length, elapsed.toFixed(1))) : ( localize(7559, "Resolved {0} agents in {1}ms", result.length, elapsed.toFixed(1)));
|
|
584
|
+
this._onDidLogDiscovery.fire({
|
|
585
|
+
sessionResource,
|
|
586
|
+
name: ( localize(7560, "Load Agents")),
|
|
587
|
+
details,
|
|
588
|
+
discoveryInfo,
|
|
589
|
+
category: "discovery"
|
|
590
|
+
});
|
|
558
591
|
});
|
|
559
592
|
}
|
|
560
593
|
return result;
|
|
@@ -776,17 +809,19 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
776
809
|
relative: true
|
|
777
810
|
});
|
|
778
811
|
case PromptsStorage.user:
|
|
779
|
-
return localize(
|
|
812
|
+
return localize(7561, "User Data");
|
|
780
813
|
case PromptsStorage.extension:
|
|
781
814
|
{
|
|
782
815
|
return localize(
|
|
783
|
-
|
|
816
|
+
7562,
|
|
784
817
|
"Extension: {0}",
|
|
785
818
|
promptPath.extension.displayName ?? promptPath.extension.id
|
|
786
819
|
);
|
|
787
820
|
}
|
|
788
821
|
case PromptsStorage.plugin:
|
|
789
|
-
return localize(
|
|
822
|
+
return localize(7563, "Plugin");
|
|
823
|
+
case PromptsStorage.internal:
|
|
824
|
+
return localize(7564, "Built-in");
|
|
790
825
|
default:
|
|
791
826
|
assertNever(promptPath, "Unknown prompt storage type");
|
|
792
827
|
}
|
|
@@ -802,62 +837,69 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
802
837
|
}
|
|
803
838
|
return [];
|
|
804
839
|
}
|
|
805
|
-
async
|
|
840
|
+
async listAgentInstructions(token, logger) {
|
|
841
|
+
const resolvedAgentFiles = [];
|
|
842
|
+
const promises = [];
|
|
843
|
+
const includeParents = this.configurationService.getValue(PromptsConfig.USE_CUSTOMIZATIONS_IN_PARENT_REPOS) === true;
|
|
844
|
+
const rootFolders = await this.fileLocator.getWorkspaceFolderRoots(includeParents, logger);
|
|
845
|
+
const rootFiles = [];
|
|
806
846
|
const useAgentMD = this.configurationService.getValue(PromptsConfig.USE_AGENT_MD);
|
|
807
847
|
if (!useAgentMD) {
|
|
808
848
|
logger?.logInfo("Agent MD files are disabled via configuration.");
|
|
809
|
-
|
|
849
|
+
} else {
|
|
850
|
+
rootFiles.push({
|
|
851
|
+
fileName: AGENT_MD_FILENAME,
|
|
852
|
+
type: AgentFileType.agentsMd
|
|
853
|
+
});
|
|
810
854
|
}
|
|
811
|
-
return await this.fileLocator.findFilesInWorkspaceRoots(AGENT_MD_FILENAME, undefined, AgentFileType.agentsMd, token);
|
|
812
|
-
}
|
|
813
|
-
async listClaudeMDs(token, logger) {
|
|
814
855
|
const useClaudeMD = this.configurationService.getValue(PromptsConfig.USE_CLAUDE_MD);
|
|
815
856
|
if (!useClaudeMD) {
|
|
816
857
|
logger?.logInfo("Claude MD files are disabled via configuration.");
|
|
817
|
-
|
|
858
|
+
} else {
|
|
859
|
+
const claudeMdFile = {
|
|
860
|
+
fileName: CLAUDE_MD_FILENAME,
|
|
861
|
+
type: AgentFileType.claudeMd
|
|
862
|
+
};
|
|
863
|
+
rootFiles.push(claudeMdFile);
|
|
864
|
+
rootFiles.push({
|
|
865
|
+
fileName: CLAUDE_LOCAL_MD_FILENAME,
|
|
866
|
+
type: AgentFileType.claudeMd
|
|
867
|
+
});
|
|
868
|
+
promises.push(this.fileLocator.findFilesInRoots(
|
|
869
|
+
rootFolders,
|
|
870
|
+
CLAUDE_CONFIG_FOLDER,
|
|
871
|
+
[claudeMdFile],
|
|
872
|
+
token,
|
|
873
|
+
resolvedAgentFiles
|
|
874
|
+
));
|
|
875
|
+
promises.push(this.fileLocator.findFilesInRoots(
|
|
876
|
+
[await this.pathService.userHome()],
|
|
877
|
+
CLAUDE_CONFIG_FOLDER,
|
|
878
|
+
[claudeMdFile],
|
|
879
|
+
token,
|
|
880
|
+
resolvedAgentFiles
|
|
881
|
+
));
|
|
818
882
|
}
|
|
819
|
-
const results = [];
|
|
820
|
-
const userHome = await this.pathService.userHome();
|
|
821
|
-
const userClaudeFolder = joinPath(userHome, CLAUDE_CONFIG_FOLDER);
|
|
822
|
-
await Promise.all([
|
|
823
|
-
this.fileLocator.findFilesInWorkspaceRoots(CLAUDE_MD_FILENAME, undefined, AgentFileType.claudeMd, token, results),
|
|
824
|
-
this.fileLocator.findFilesInWorkspaceRoots(
|
|
825
|
-
CLAUDE_LOCAL_MD_FILENAME,
|
|
826
|
-
undefined,
|
|
827
|
-
AgentFileType.claudeMd,
|
|
828
|
-
token,
|
|
829
|
-
results
|
|
830
|
-
),
|
|
831
|
-
this.fileLocator.findFilesInWorkspaceRoots(
|
|
832
|
-
CLAUDE_MD_FILENAME,
|
|
833
|
-
CLAUDE_CONFIG_FOLDER,
|
|
834
|
-
AgentFileType.claudeMd,
|
|
835
|
-
token,
|
|
836
|
-
results
|
|
837
|
-
),
|
|
838
|
-
this.fileLocator.findFilesInRoots(
|
|
839
|
-
[userClaudeFolder],
|
|
840
|
-
CLAUDE_MD_FILENAME,
|
|
841
|
-
AgentFileType.claudeMd,
|
|
842
|
-
token,
|
|
843
|
-
results
|
|
844
|
-
)]);
|
|
845
|
-
return results.sort((a, b) => ( a.uri.toString()).localeCompare(( b.uri.toString())));
|
|
846
|
-
}
|
|
847
|
-
async listCopilotInstructionsMDs(token, logger) {
|
|
848
883
|
const useCopilotInstructionsFiles = this.configurationService.getValue(PromptsConfig.USE_COPILOT_INSTRUCTION_FILES);
|
|
849
884
|
if (!useCopilotInstructionsFiles) {
|
|
850
885
|
logger?.logInfo("Copilot instructions files are disabled via configuration.");
|
|
851
|
-
|
|
886
|
+
} else {
|
|
887
|
+
const githubConfigFiles = [{
|
|
888
|
+
fileName: COPILOT_CUSTOM_INSTRUCTIONS_FILENAME,
|
|
889
|
+
type: AgentFileType.copilotInstructionsMd
|
|
890
|
+
}];
|
|
891
|
+
promises.push(this.fileLocator.findFilesInRoots(
|
|
892
|
+
rootFolders,
|
|
893
|
+
GITHUB_CONFIG_FOLDER,
|
|
894
|
+
githubConfigFiles,
|
|
895
|
+
token,
|
|
896
|
+
resolvedAgentFiles
|
|
897
|
+
));
|
|
852
898
|
}
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
this.listAgentMDs(token, logger),
|
|
858
|
-
this.listClaudeMDs(token, logger),
|
|
859
|
-
this.listCopilotInstructionsMDs(token, logger)
|
|
860
|
-
]);
|
|
899
|
+
promises.push(
|
|
900
|
+
this.fileLocator.findFilesInRoots(rootFolders, undefined, rootFiles, token, resolvedAgentFiles)
|
|
901
|
+
);
|
|
902
|
+
await Promise.all(promises);
|
|
861
903
|
if (token.isCancellationRequested) {
|
|
862
904
|
return [];
|
|
863
905
|
}
|
|
@@ -873,9 +915,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
873
915
|
}
|
|
874
916
|
return true;
|
|
875
917
|
};
|
|
876
|
-
|
|
877
|
-
claudeMDs.forEach(add);
|
|
878
|
-
copilotInstructionsMDs.forEach(add);
|
|
918
|
+
resolvedAgentFiles.forEach(add);
|
|
879
919
|
for (const symlink of symlinks) {
|
|
880
920
|
if (( seenFileURI.has(symlink.realPath))) {
|
|
881
921
|
logger?.logInfo(
|
|
@@ -886,7 +926,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
886
926
|
seenFileURI.add(symlink.realPath);
|
|
887
927
|
}
|
|
888
928
|
}
|
|
889
|
-
return result;
|
|
929
|
+
return result.sort((a, b) => ( a.uri.toString()).localeCompare(( b.uri.toString())));
|
|
890
930
|
}
|
|
891
931
|
getAgentFileURIFromModeFile(oldURI) {
|
|
892
932
|
return this.fileLocator.getAgentFileURIFromModeFile(oldURI);
|
|
@@ -917,6 +957,9 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
917
957
|
);
|
|
918
958
|
if (type === PromptsType.agent) {
|
|
919
959
|
this.cachedCustomAgents.refresh();
|
|
960
|
+
} else if (type === PromptsType.skill) {
|
|
961
|
+
this.cachedSkills.refresh();
|
|
962
|
+
this.cachedSlashCommands.refresh();
|
|
920
963
|
}
|
|
921
964
|
}
|
|
922
965
|
sanitizeAgentSkillText(text) {
|
|
@@ -939,8 +982,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
939
982
|
throw ( new SkillMissingDescriptionError(uri));
|
|
940
983
|
}
|
|
941
984
|
const sanitizedName = this.truncateAgentSkillName(name, uri);
|
|
942
|
-
const
|
|
943
|
-
const folderName = basename(skillFolderUri);
|
|
985
|
+
const folderName = getSkillFolderName(uri);
|
|
944
986
|
if (sanitizedName !== folderName) {
|
|
945
987
|
this.logger.error(
|
|
946
988
|
`[validateAndSanitizeSkillFile] Agent skill name "${sanitizedName}" does not match folder name "${folderName}": ${uri}`
|
|
@@ -957,10 +999,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
957
999
|
const MAX_NAME_LENGTH = 64;
|
|
958
1000
|
const sanitized = this.sanitizeAgentSkillText(name);
|
|
959
1001
|
if (sanitized !== name) {
|
|
960
|
-
this.logger.
|
|
1002
|
+
this.logger.debug(`[findAgentSkills] Agent skill name contains XML tags, removed: ${uri}`);
|
|
961
1003
|
}
|
|
962
1004
|
if (sanitized.length > MAX_NAME_LENGTH) {
|
|
963
|
-
this.logger.
|
|
1005
|
+
this.logger.debug(
|
|
964
1006
|
`[findAgentSkills] Agent skill name exceeds ${MAX_NAME_LENGTH} characters, truncated: ${uri}`
|
|
965
1007
|
);
|
|
966
1008
|
return sanitized.substring(0, MAX_NAME_LENGTH);
|
|
@@ -974,12 +1016,12 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
974
1016
|
const MAX_DESCRIPTION_LENGTH = 1024;
|
|
975
1017
|
const sanitized = this.sanitizeAgentSkillText(description);
|
|
976
1018
|
if (sanitized !== description) {
|
|
977
|
-
this.logger.
|
|
1019
|
+
this.logger.debug(
|
|
978
1020
|
`[findAgentSkills] Agent skill description contains XML tags, removed: ${uri}`
|
|
979
1021
|
);
|
|
980
1022
|
}
|
|
981
1023
|
if (sanitized.length > MAX_DESCRIPTION_LENGTH) {
|
|
982
|
-
this.logger.
|
|
1024
|
+
this.logger.debug(
|
|
983
1025
|
`[findAgentSkills] Agent skill description exceeds ${MAX_DESCRIPTION_LENGTH} characters, truncated: ${uri}`
|
|
984
1026
|
);
|
|
985
1027
|
return sanitized.substring(0, MAX_DESCRIPTION_LENGTH);
|
|
@@ -998,14 +1040,15 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
998
1040
|
const result = await this.cachedSkills.get(token);
|
|
999
1041
|
if (sessionResource) {
|
|
1000
1042
|
const elapsed = sw.elapsed();
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1043
|
+
void this.getSkillDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
1044
|
+
const details = result.length === 1 ? ( localize(7565, "Resolved {0} skill in {1}ms", result.length, elapsed.toFixed(1))) : ( localize(7566, "Resolved {0} skills in {1}ms", result.length, elapsed.toFixed(1)));
|
|
1045
|
+
this._onDidLogDiscovery.fire({
|
|
1046
|
+
sessionResource,
|
|
1047
|
+
name: ( localize(7567, "Load Skills")),
|
|
1048
|
+
details,
|
|
1049
|
+
discoveryInfo,
|
|
1050
|
+
category: "discovery"
|
|
1051
|
+
});
|
|
1009
1052
|
});
|
|
1010
1053
|
}
|
|
1011
1054
|
return result;
|
|
@@ -1019,13 +1062,15 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1019
1062
|
for (const file of files) {
|
|
1020
1063
|
if (file.status === "loaded" && file.name) {
|
|
1021
1064
|
const sanitizedDescription = this.truncateAgentSkillDescription(file.description, file.uri);
|
|
1065
|
+
const internalSkill = this.internalCustomizations.getInternalSkillByUri(file.uri);
|
|
1022
1066
|
result.push({
|
|
1023
1067
|
uri: file.uri,
|
|
1024
1068
|
storage: file.storage,
|
|
1025
1069
|
name: file.name,
|
|
1026
1070
|
description: sanitizedDescription,
|
|
1027
1071
|
disableModelInvocation: file.disableModelInvocation ?? false,
|
|
1028
|
-
userInvocable: file.userInvocable ?? true
|
|
1072
|
+
userInvocable: file.userInvocable ?? true,
|
|
1073
|
+
when: internalSkill?.when
|
|
1029
1074
|
});
|
|
1030
1075
|
}
|
|
1031
1076
|
}
|
|
@@ -1081,15 +1126,16 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1081
1126
|
const result = await this.cachedHooks.get(token);
|
|
1082
1127
|
if (sessionResource) {
|
|
1083
1128
|
const elapsed = sw.elapsed();
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1129
|
+
void this.getHookDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
1130
|
+
const hookCount = result ? ( Object.values(result.hooks)).reduce((sum, arr) => sum + arr.length, 0) : 0;
|
|
1131
|
+
const details = hookCount === 1 ? ( localize(7568, "Resolved {0} hook in {1}ms", hookCount, elapsed.toFixed(1))) : ( localize(7569, "Resolved {0} hooks in {1}ms", hookCount, elapsed.toFixed(1)));
|
|
1132
|
+
this._onDidLogDiscovery.fire({
|
|
1133
|
+
sessionResource,
|
|
1134
|
+
name: ( localize(7570, "Load Hooks")),
|
|
1135
|
+
details,
|
|
1136
|
+
discoveryInfo,
|
|
1137
|
+
category: "discovery"
|
|
1138
|
+
});
|
|
1093
1139
|
});
|
|
1094
1140
|
}
|
|
1095
1141
|
return result;
|
|
@@ -1099,24 +1145,25 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1099
1145
|
const result = await this.listPromptFiles(PromptsType.instructions, token);
|
|
1100
1146
|
if (sessionResource) {
|
|
1101
1147
|
const elapsed = sw.elapsed();
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1148
|
+
void this.getInstructionsDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
1149
|
+
const details = result.length === 1 ? ( localize(
|
|
1150
|
+
7571,
|
|
1151
|
+
"Resolved {0} instruction in {1}ms",
|
|
1152
|
+
result.length,
|
|
1153
|
+
elapsed.toFixed(1)
|
|
1154
|
+
)) : ( localize(
|
|
1155
|
+
7572,
|
|
1156
|
+
"Resolved {0} instructions in {1}ms",
|
|
1157
|
+
result.length,
|
|
1158
|
+
elapsed.toFixed(1)
|
|
1159
|
+
));
|
|
1160
|
+
this._onDidLogDiscovery.fire({
|
|
1161
|
+
sessionResource,
|
|
1162
|
+
name: ( localize(7573, "Load Instructions")),
|
|
1163
|
+
details,
|
|
1164
|
+
discoveryInfo,
|
|
1165
|
+
category: "discovery"
|
|
1166
|
+
});
|
|
1120
1167
|
});
|
|
1121
1168
|
}
|
|
1122
1169
|
return result;
|
|
@@ -1189,6 +1236,9 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1189
1236
|
}
|
|
1190
1237
|
const plugins = this.agentPluginService.plugins.get();
|
|
1191
1238
|
for (const plugin of plugins) {
|
|
1239
|
+
if (!isContributionEnabled(plugin.enablement.get())) {
|
|
1240
|
+
continue;
|
|
1241
|
+
}
|
|
1192
1242
|
for (const hook of plugin.hooks.get()) {
|
|
1193
1243
|
let bucket = collectedHooks.get(hook.type);
|
|
1194
1244
|
if (!bucket) {
|
|
@@ -1209,53 +1259,6 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1209
1259
|
hasDisabledClaudeHooks
|
|
1210
1260
|
};
|
|
1211
1261
|
}
|
|
1212
|
-
async getPromptDiscoveryInfo(type, token, sessionResource) {
|
|
1213
|
-
if (sessionResource) {
|
|
1214
|
-
this._onDidLogDiscovery.fire({
|
|
1215
|
-
sessionResource,
|
|
1216
|
-
name: ( localize(7342, "Discovery {0} (Start)", type)),
|
|
1217
|
-
category: "discovery"
|
|
1218
|
-
});
|
|
1219
|
-
}
|
|
1220
|
-
const files = [];
|
|
1221
|
-
let result;
|
|
1222
|
-
if (type === PromptsType.skill) {
|
|
1223
|
-
result = await this.getSkillDiscoveryInfo(token);
|
|
1224
|
-
} else if (type === PromptsType.agent) {
|
|
1225
|
-
result = await this.getAgentDiscoveryInfo(token);
|
|
1226
|
-
} else if (type === PromptsType.prompt) {
|
|
1227
|
-
result = await this.getPromptSlashCommandDiscoveryInfo(token);
|
|
1228
|
-
} else if (type === PromptsType.instructions) {
|
|
1229
|
-
result = await this.getInstructionsDiscoveryInfo(token);
|
|
1230
|
-
} else if (type === PromptsType.hook) {
|
|
1231
|
-
result = await this.getHookDiscoveryInfo(token);
|
|
1232
|
-
} else {
|
|
1233
|
-
result = {
|
|
1234
|
-
type,
|
|
1235
|
-
files
|
|
1236
|
-
};
|
|
1237
|
-
}
|
|
1238
|
-
const loadedCount = result.files.filter(f => f.status === "loaded").length;
|
|
1239
|
-
const skippedCount = result.files.filter(f => f.status === "skipped").length;
|
|
1240
|
-
if (!result.sourceFolders) {
|
|
1241
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(type, result.files.filter(f => f.status === "loaded"));
|
|
1242
|
-
result = {
|
|
1243
|
-
...result,
|
|
1244
|
-
sourceFolders
|
|
1245
|
-
};
|
|
1246
|
-
}
|
|
1247
|
-
if (sessionResource) {
|
|
1248
|
-
const details = ( localize(7343, "{0} loaded, {1} skipped", loadedCount, skippedCount));
|
|
1249
|
-
this._onDidLogDiscovery.fire({
|
|
1250
|
-
sessionResource,
|
|
1251
|
-
name: ( localize(7344, "Discovery {0} (End)", type)),
|
|
1252
|
-
details,
|
|
1253
|
-
discoveryInfo: result,
|
|
1254
|
-
category: "discovery"
|
|
1255
|
-
});
|
|
1256
|
-
}
|
|
1257
|
-
return result;
|
|
1258
|
-
}
|
|
1259
1262
|
async getSkillDiscoveryInfo(token) {
|
|
1260
1263
|
const useAgentSkills = this.configurationService.getValue(PromptsConfig.USE_AGENT_SKILLS);
|
|
1261
1264
|
if (!useAgentSkills) {
|
|
@@ -1267,7 +1270,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1267
1270
|
skipReason: "disabled",
|
|
1268
1271
|
extensionId: promptPath.extension?.identifier?.value
|
|
1269
1272
|
})));
|
|
1270
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.skill
|
|
1273
|
+
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.skill);
|
|
1271
1274
|
return {
|
|
1272
1275
|
type: PromptsType.skill,
|
|
1273
1276
|
files,
|
|
@@ -1277,7 +1280,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1277
1280
|
const {
|
|
1278
1281
|
files
|
|
1279
1282
|
} = await this.computeSkillDiscoveryInfo(token);
|
|
1280
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.skill
|
|
1283
|
+
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.skill);
|
|
1281
1284
|
return {
|
|
1282
1285
|
type: PromptsType.skill,
|
|
1283
1286
|
files,
|
|
@@ -1301,6 +1304,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1301
1304
|
fileUri: p.uri,
|
|
1302
1305
|
storage: p.storage,
|
|
1303
1306
|
source: PromptFileSource.Plugin
|
|
1307
|
+
}))), ...( this.internalCustomizations.getSkills().map(s => ({
|
|
1308
|
+
fileUri: s.uri,
|
|
1309
|
+
storage: s.storage,
|
|
1310
|
+
source: PromptFileSource.Internal
|
|
1304
1311
|
}))));
|
|
1305
1312
|
const getPriority = skill => {
|
|
1306
1313
|
if (skill.storage === PromptsStorage.local) {
|
|
@@ -1332,41 +1339,22 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1332
1339
|
const extensionId = extensionIdByUri.get(( uri.toString()));
|
|
1333
1340
|
try {
|
|
1334
1341
|
const parsedFile = await this.parseNew(uri, token);
|
|
1335
|
-
const
|
|
1342
|
+
const folderName = getSkillFolderName(uri);
|
|
1343
|
+
let name = parsedFile.header?.name;
|
|
1336
1344
|
if (!name) {
|
|
1337
|
-
this.logger.
|
|
1338
|
-
`[computeSkillDiscoveryInfo] Agent skill file missing name attribute: ${uri}`
|
|
1345
|
+
this.logger.debug(
|
|
1346
|
+
`[computeSkillDiscoveryInfo] Agent skill file missing name attribute, using folder name "${folderName}": ${uri}`
|
|
1339
1347
|
);
|
|
1340
|
-
|
|
1341
|
-
uri,
|
|
1342
|
-
storage,
|
|
1343
|
-
status: "skipped",
|
|
1344
|
-
skipReason: "missing-name",
|
|
1345
|
-
extensionId,
|
|
1346
|
-
source
|
|
1347
|
-
});
|
|
1348
|
-
continue;
|
|
1348
|
+
name = folderName;
|
|
1349
1349
|
}
|
|
1350
1350
|
const sanitizedName = this.truncateAgentSkillName(name, uri);
|
|
1351
|
-
const skillFolderUri = dirname(uri);
|
|
1352
|
-
const folderName = basename(skillFolderUri);
|
|
1353
1351
|
if (sanitizedName !== folderName) {
|
|
1354
|
-
this.logger.
|
|
1355
|
-
`[computeSkillDiscoveryInfo] Agent skill name "${sanitizedName}" does not match folder name "${folderName}": ${uri}`
|
|
1352
|
+
this.logger.debug(
|
|
1353
|
+
`[computeSkillDiscoveryInfo] Agent skill name "${sanitizedName}" does not match folder name "${folderName}", using folder name: ${uri}`
|
|
1356
1354
|
);
|
|
1357
|
-
files.push({
|
|
1358
|
-
uri,
|
|
1359
|
-
storage,
|
|
1360
|
-
status: "skipped",
|
|
1361
|
-
skipReason: "name-mismatch",
|
|
1362
|
-
name: sanitizedName,
|
|
1363
|
-
extensionId,
|
|
1364
|
-
source
|
|
1365
|
-
});
|
|
1366
|
-
continue;
|
|
1367
1355
|
}
|
|
1368
1356
|
if (( seenNames.has(sanitizedName))) {
|
|
1369
|
-
this.logger.
|
|
1357
|
+
this.logger.debug(
|
|
1370
1358
|
`[computeSkillDiscoveryInfo] Skipping duplicate agent skill name: ${sanitizedName} at ${uri}`
|
|
1371
1359
|
);
|
|
1372
1360
|
files.push({
|
|
@@ -1382,21 +1370,6 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1382
1370
|
continue;
|
|
1383
1371
|
}
|
|
1384
1372
|
const description = parsedFile.header?.description;
|
|
1385
|
-
if (!description) {
|
|
1386
|
-
this.logger.error(
|
|
1387
|
-
`[computeSkillDiscoveryInfo] Agent skill file missing description attribute: ${uri}`
|
|
1388
|
-
);
|
|
1389
|
-
files.push({
|
|
1390
|
-
uri,
|
|
1391
|
-
storage,
|
|
1392
|
-
status: "skipped",
|
|
1393
|
-
skipReason: "missing-description",
|
|
1394
|
-
name: sanitizedName,
|
|
1395
|
-
extensionId,
|
|
1396
|
-
source
|
|
1397
|
-
});
|
|
1398
|
-
continue;
|
|
1399
|
-
}
|
|
1400
1373
|
seenNames.add(sanitizedName);
|
|
1401
1374
|
nameToUri.set(sanitizedName, uri);
|
|
1402
1375
|
const disableModelInvocation = parsedFile.header?.disableModelInvocation === true;
|
|
@@ -1474,7 +1447,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1474
1447
|
});
|
|
1475
1448
|
}
|
|
1476
1449
|
}
|
|
1477
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.agent
|
|
1450
|
+
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.agent);
|
|
1478
1451
|
return {
|
|
1479
1452
|
type: PromptsType.agent,
|
|
1480
1453
|
files,
|
|
@@ -1509,7 +1482,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1509
1482
|
});
|
|
1510
1483
|
}
|
|
1511
1484
|
}
|
|
1512
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.prompt
|
|
1485
|
+
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.prompt);
|
|
1513
1486
|
return {
|
|
1514
1487
|
type: PromptsType.prompt,
|
|
1515
1488
|
files,
|
|
@@ -1544,7 +1517,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1544
1517
|
});
|
|
1545
1518
|
}
|
|
1546
1519
|
}
|
|
1547
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.instructions
|
|
1520
|
+
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.instructions);
|
|
1548
1521
|
return {
|
|
1549
1522
|
type: PromptsType.instructions,
|
|
1550
1523
|
files,
|
|
@@ -1634,7 +1607,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1634
1607
|
});
|
|
1635
1608
|
}
|
|
1636
1609
|
}
|
|
1637
|
-
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.hook
|
|
1610
|
+
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.hook);
|
|
1638
1611
|
return {
|
|
1639
1612
|
type: PromptsType.hook,
|
|
1640
1613
|
files,
|
|
@@ -1740,6 +1713,10 @@ var IAgentSource;
|
|
|
1740
1713
|
storage: PromptsStorage.plugin,
|
|
1741
1714
|
pluginUri: promptPath.pluginUri
|
|
1742
1715
|
};
|
|
1716
|
+
} else if (promptPath.storage === PromptsStorage.internal) {
|
|
1717
|
+
return {
|
|
1718
|
+
storage: PromptsStorage.internal
|
|
1719
|
+
};
|
|
1743
1720
|
} else {
|
|
1744
1721
|
return {
|
|
1745
1722
|
storage: promptPath.storage
|