@codingame/monaco-vscode-chat-service-override 29.1.0 → 30.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 +5 -2
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +37 -39
- package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
- package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +11 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +4 -4
- package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +132 -42
- package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +54 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +15 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +5 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +188 -51
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +7 -6
- package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +7 -2
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +6 -0
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +14 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +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.js +37 -16
- 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 +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +37 -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 +6 -6
- 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 +20 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +18 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +482 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +10 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +43 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +74 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
- 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.js +4 -4
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +27 -35
- 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 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +86 -80
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +38 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +38 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +427 -167
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +37 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +108 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +28 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +11 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +3 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +65 -68
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +64 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +288 -195
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -0
- 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 +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +19 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +54 -12
- 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 +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +50 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
- 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.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +86 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +65 -65
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +24 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +3 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +54 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +24 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +72 -14
- 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/promptFileContributions.js +181 -0
- 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 +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.js +8 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +37 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +28 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +7 -7
- 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/chatInputCompletionUtils.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +1 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +148 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
- 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 +16 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +158 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +155 -76
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +1 -2
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +31 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +228 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +190 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +25 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +130 -107
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +19 -18
- 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 +2 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +169 -266
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +12 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +149 -206
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -22
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +20 -8
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +183 -43
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +2 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +21 -21
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
- 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 +11 -11
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +3 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +26 -23
- 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/commandLineAutoApproveAnalyzer.js +12 -12
- 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/commandLineRewriter/commandLineSandboxRewriter.js +4 -9
- 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 +16 -6
- 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.js +9 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +66 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +239 -48
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +0 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +0 -208
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +0 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +0 -637
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +0 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +0 -384
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +0 -33
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +0 -47
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +0 -30
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +0 -55
- /package/vscode/src/vs/workbench/contrib/chat/{common → browser}/promptSyntax/promptFileContributions.d.ts +0 -0
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js
CHANGED
|
@@ -25,11 +25,11 @@ 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_MD_FILENAME, CLAUDE_LOCAL_MD_FILENAME, CLAUDE_CONFIG_FOLDER, COPILOT_CUSTOM_INSTRUCTIONS_FILENAME, GITHUB_CONFIG_FOLDER, getSkillFolderName
|
|
29
|
-
import { PromptsType, PROMPT_LANGUAGE_ID, Target, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
28
|
+
import { getCleanPromptName, AGENT_MD_FILENAME, CLAUDE_MD_FILENAME, CLAUDE_LOCAL_MD_FILENAME, CLAUDE_CONFIG_FOLDER, COPILOT_CUSTOM_INSTRUCTIONS_FILENAME, GITHUB_CONFIG_FOLDER, getSkillFolderName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
|
|
29
|
+
import { PromptsType, PromptFileSource, 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';
|
|
32
|
-
import { PromptsStorage,
|
|
32
|
+
import { PromptsStorage, SKILL_PROVIDER_ACTIVATION_EVENT, PROMPT_FILE_PROVIDER_ACTIVATION_EVENT, INSTRUCTIONS_PROVIDER_ACTIVATION_EVENT, CUSTOM_AGENT_PROVIDER_ACTIVATION_EVENT, AgentFileType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
|
|
33
33
|
import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
34
34
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
35
35
|
import { parseSubagentHooksFromYaml } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
|
|
@@ -45,7 +45,6 @@ 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
46
|
import { isContributionEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
|
|
47
47
|
import { assertNever } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
|
|
48
|
-
import { ChatInternalCustomizations } from '../internalCustomizations/internalCustomizations.js';
|
|
49
48
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
50
49
|
|
|
51
50
|
class SkillMissingNameError extends Error {
|
|
@@ -128,7 +127,6 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
128
127
|
this.promptFileProviders = [];
|
|
129
128
|
this.disabledPromptsStorageKeyPrefix = "chat.disabledPromptFiles.";
|
|
130
129
|
this.fileLocator = this.createPromptFilesLocator();
|
|
131
|
-
this.internalCustomizations = this._register(( new ChatInternalCustomizations(this.fileService)));
|
|
132
130
|
this._register(this.modelService.onModelRemoved(model => {
|
|
133
131
|
this.cachedParsedPromptFromModels.delete(model.uri);
|
|
134
132
|
}));
|
|
@@ -172,8 +170,12 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
172
170
|
e => e.affectsConfiguration(PromptsConfig.USE_CHAT_HOOKS) || e.affectsConfiguration(PromptsConfig.USE_CLAUDE_HOOKS)
|
|
173
171
|
), this._onDidPluginHooksChange.event, this.workspaceTrustService.onDidChangeTrust)
|
|
174
172
|
)));
|
|
175
|
-
this._register(this.
|
|
176
|
-
|
|
173
|
+
this.cachedInstructions = this._register(( new CachedPromise(token => this.computeInstructionFiles(token), () => Event.any(
|
|
174
|
+
this.getFileLocatorEvent(PromptsType.instructions),
|
|
175
|
+
this._onDidContributedWhenChange.event,
|
|
176
|
+
this._onDidChangeInstructions.event,
|
|
177
|
+
this._onDidPluginPromptFilesChange.event
|
|
178
|
+
))));
|
|
177
179
|
this._register(
|
|
178
180
|
this.watchPluginPromptFilesForType(PromptsType.prompt, (plugin, reader) => plugin.commands.read(reader))
|
|
179
181
|
);
|
|
@@ -198,7 +200,8 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
198
200
|
storage: PromptsStorage.plugin,
|
|
199
201
|
type: PromptsType.hook,
|
|
200
202
|
name: getCanonicalPluginCommandId(plugin, hook.originalId),
|
|
201
|
-
pluginUri: plugin.uri
|
|
203
|
+
pluginUri: plugin.uri,
|
|
204
|
+
source: PromptFileSource.Plugin
|
|
202
205
|
});
|
|
203
206
|
}
|
|
204
207
|
}
|
|
@@ -222,7 +225,8 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
222
225
|
storage: PromptsStorage.plugin,
|
|
223
226
|
type,
|
|
224
227
|
name: getCanonicalPluginCommandId(plugin, item.name),
|
|
225
|
-
pluginUri: plugin.uri
|
|
228
|
+
pluginUri: plugin.uri,
|
|
229
|
+
source: PromptFileSource.Plugin
|
|
226
230
|
});
|
|
227
231
|
}
|
|
228
232
|
}
|
|
@@ -283,7 +287,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
283
287
|
this.getExtensionPromptFiles(type, token),
|
|
284
288
|
this._pluginPromptFilesByType.get(type) ?? []
|
|
285
289
|
]);
|
|
286
|
-
return
|
|
290
|
+
return prompts.flat();
|
|
287
291
|
}
|
|
288
292
|
async _collectSourceFolderDiagnostics(type) {
|
|
289
293
|
const resolvedFolders = await this.fileLocator.getSourceFoldersInDiscoveryOrder(type);
|
|
@@ -358,7 +362,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
358
362
|
storage: PromptsStorage.extension,
|
|
359
363
|
type,
|
|
360
364
|
extension: providerEntry.extension,
|
|
361
|
-
source:
|
|
365
|
+
source: PromptFileSource.ExtensionAPI,
|
|
362
366
|
name: file.name,
|
|
363
367
|
description: file.description
|
|
364
368
|
});
|
|
@@ -390,8 +394,6 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
390
394
|
}))));
|
|
391
395
|
case PromptsStorage.plugin:
|
|
392
396
|
return this._pluginPromptFilesByType.get(type) ?? [];
|
|
393
|
-
case PromptsStorage.internal:
|
|
394
|
-
return this.internalCustomizations.getPromptPaths(type);
|
|
395
397
|
default:
|
|
396
398
|
throw ( new Error(`[listPromptFilesForStorage] Unsupported prompt storage type: ${storage}`));
|
|
397
399
|
}
|
|
@@ -467,7 +469,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
467
469
|
return this.fileLocator.getResolvedSourceFolders(type);
|
|
468
470
|
}
|
|
469
471
|
get onDidChangeSlashCommands() {
|
|
470
|
-
return this.cachedSlashCommands.
|
|
472
|
+
return this.cachedSlashCommands.onDidChangePromise;
|
|
471
473
|
}
|
|
472
474
|
async getPromptSlashCommands(token, sessionResource) {
|
|
473
475
|
const sw = StopWatch.create();
|
|
@@ -476,19 +478,19 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
476
478
|
const elapsed = sw.elapsed();
|
|
477
479
|
void this.getPromptSlashCommandDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
478
480
|
const details = result.length === 1 ? ( localize(
|
|
479
|
-
|
|
481
|
+
7621,
|
|
480
482
|
"Resolved {0} slash command in {1}ms",
|
|
481
483
|
result.length,
|
|
482
484
|
elapsed.toFixed(1)
|
|
483
485
|
)) : ( localize(
|
|
484
|
-
|
|
486
|
+
7622,
|
|
485
487
|
"Resolved {0} slash commands in {1}ms",
|
|
486
488
|
result.length,
|
|
487
489
|
elapsed.toFixed(1)
|
|
488
490
|
));
|
|
489
491
|
this._onDidLogDiscovery.fire({
|
|
490
492
|
sessionResource,
|
|
491
|
-
name: ( localize(
|
|
493
|
+
name: ( localize(7623, "Load Slash Commands")),
|
|
492
494
|
details,
|
|
493
495
|
discoveryInfo,
|
|
494
496
|
category: "discovery"
|
|
@@ -545,14 +547,13 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
545
547
|
asChatPromptSlashCommand(parsedPromptFile, promptPath) {
|
|
546
548
|
let name = parsedPromptFile?.header?.name ?? promptPath.name ?? getCleanPromptName(promptPath.uri);
|
|
547
549
|
name = name.replace(/[^\p{L}\d_\-\.:]+/gu, "-");
|
|
548
|
-
const internalSkill = this.internalCustomizations.getInternalSkillByUri(promptPath.uri);
|
|
549
550
|
return {
|
|
550
551
|
name: name,
|
|
551
552
|
description: parsedPromptFile?.header?.description ?? promptPath.description,
|
|
552
553
|
argumentHint: parsedPromptFile?.header?.argumentHint,
|
|
553
554
|
parsedPromptFile,
|
|
554
555
|
promptPath,
|
|
555
|
-
when:
|
|
556
|
+
when: undefined
|
|
556
557
|
};
|
|
557
558
|
}
|
|
558
559
|
async getPromptSlashCommandName(uri, token) {
|
|
@@ -564,15 +565,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
564
565
|
return slashCommand.name;
|
|
565
566
|
}
|
|
566
567
|
get onDidChangeCustomAgents() {
|
|
567
|
-
return this.cachedCustomAgents.
|
|
568
|
+
return this.cachedCustomAgents.onDidChangePromise;
|
|
568
569
|
}
|
|
569
570
|
get onDidChangeInstructions() {
|
|
570
|
-
return
|
|
571
|
-
this.getFileLocatorEvent(PromptsType.instructions),
|
|
572
|
-
this._onDidContributedWhenChange.event,
|
|
573
|
-
this._onDidChangeInstructions.event,
|
|
574
|
-
this._onDidPluginPromptFilesChange.event
|
|
575
|
-
);
|
|
571
|
+
return this.cachedInstructions.onDidChangePromise;
|
|
576
572
|
}
|
|
577
573
|
async getCustomAgents(token, sessionResource) {
|
|
578
574
|
const sw = StopWatch.create();
|
|
@@ -580,10 +576,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
580
576
|
if (sessionResource) {
|
|
581
577
|
const elapsed = sw.elapsed();
|
|
582
578
|
void this.getAgentDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
583
|
-
const details = result.length === 1 ? ( localize(
|
|
579
|
+
const details = result.length === 1 ? ( localize(7624, "Resolved {0} agent in {1}ms", result.length, elapsed.toFixed(1))) : ( localize(7625, "Resolved {0} agents in {1}ms", result.length, elapsed.toFixed(1)));
|
|
584
580
|
this._onDidLogDiscovery.fire({
|
|
585
581
|
sessionResource,
|
|
586
|
-
name: ( localize(
|
|
582
|
+
name: ( localize(7626, "Load Agents")),
|
|
587
583
|
details,
|
|
588
584
|
discoveryInfo,
|
|
589
585
|
category: "discovery"
|
|
@@ -761,7 +757,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
761
757
|
storage: PromptsStorage.extension,
|
|
762
758
|
type,
|
|
763
759
|
extension,
|
|
764
|
-
source:
|
|
760
|
+
source: PromptFileSource.ExtensionContribution
|
|
765
761
|
};
|
|
766
762
|
})();
|
|
767
763
|
bucket.set(uri, entryPromise);
|
|
@@ -809,19 +805,17 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
809
805
|
relative: true
|
|
810
806
|
});
|
|
811
807
|
case PromptsStorage.user:
|
|
812
|
-
return localize(
|
|
808
|
+
return localize(7627, "User Data");
|
|
813
809
|
case PromptsStorage.extension:
|
|
814
810
|
{
|
|
815
811
|
return localize(
|
|
816
|
-
|
|
812
|
+
7628,
|
|
817
813
|
"Extension: {0}",
|
|
818
814
|
promptPath.extension.displayName ?? promptPath.extension.id
|
|
819
815
|
);
|
|
820
816
|
}
|
|
821
817
|
case PromptsStorage.plugin:
|
|
822
|
-
return localize(
|
|
823
|
-
case PromptsStorage.internal:
|
|
824
|
-
return localize(7564, "Built-in");
|
|
818
|
+
return localize(7629, "Plugin");
|
|
825
819
|
default:
|
|
826
820
|
assertNever(promptPath, "Unknown prompt storage type");
|
|
827
821
|
}
|
|
@@ -1029,7 +1023,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1029
1023
|
return sanitized;
|
|
1030
1024
|
}
|
|
1031
1025
|
get onDidChangeSkills() {
|
|
1032
|
-
return this.cachedSkills.
|
|
1026
|
+
return this.cachedSkills.onDidChangePromise;
|
|
1033
1027
|
}
|
|
1034
1028
|
async findAgentSkills(token, sessionResource) {
|
|
1035
1029
|
const useAgentSkills = this.configurationService.getValue(PromptsConfig.USE_AGENT_SKILLS);
|
|
@@ -1041,10 +1035,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1041
1035
|
if (sessionResource) {
|
|
1042
1036
|
const elapsed = sw.elapsed();
|
|
1043
1037
|
void this.getSkillDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
1044
|
-
const details = result.length === 1 ? ( localize(
|
|
1038
|
+
const details = result.length === 1 ? ( localize(7630, "Resolved {0} skill in {1}ms", result.length, elapsed.toFixed(1))) : ( localize(7631, "Resolved {0} skills in {1}ms", result.length, elapsed.toFixed(1)));
|
|
1045
1039
|
this._onDidLogDiscovery.fire({
|
|
1046
1040
|
sessionResource,
|
|
1047
|
-
name: ( localize(
|
|
1041
|
+
name: ( localize(7632, "Load Skills")),
|
|
1048
1042
|
details,
|
|
1049
1043
|
discoveryInfo,
|
|
1050
1044
|
category: "discovery"
|
|
@@ -1054,24 +1048,27 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1054
1048
|
return result;
|
|
1055
1049
|
}
|
|
1056
1050
|
async computeAgentSkills(token) {
|
|
1057
|
-
const
|
|
1058
|
-
files,
|
|
1059
|
-
skillsBySource
|
|
1060
|
-
} = await this.computeSkillDiscoveryInfo(token);
|
|
1051
|
+
const files = await this.computeSkillDiscoveryInfo(token);
|
|
1061
1052
|
const result = [];
|
|
1053
|
+
const skillsBySource = ( new Map());
|
|
1062
1054
|
for (const file of files) {
|
|
1063
|
-
if (file.status === "loaded" && file.name) {
|
|
1064
|
-
const sanitizedDescription = this.truncateAgentSkillDescription(file.description, file.uri);
|
|
1065
|
-
const internalSkill = this.internalCustomizations.getInternalSkillByUri(file.uri);
|
|
1055
|
+
if (file.status === "loaded" && file.promptPath.name) {
|
|
1056
|
+
const sanitizedDescription = this.truncateAgentSkillDescription(file.promptPath.description, file.promptPath.uri);
|
|
1066
1057
|
result.push({
|
|
1067
|
-
uri: file.uri,
|
|
1068
|
-
storage: file.storage,
|
|
1069
|
-
name: file.name,
|
|
1058
|
+
uri: file.promptPath.uri,
|
|
1059
|
+
storage: file.promptPath.storage,
|
|
1060
|
+
name: file.promptPath.name,
|
|
1070
1061
|
description: sanitizedDescription,
|
|
1071
1062
|
disableModelInvocation: file.disableModelInvocation ?? false,
|
|
1072
1063
|
userInvocable: file.userInvocable ?? true,
|
|
1073
|
-
when:
|
|
1064
|
+
when: undefined,
|
|
1065
|
+
pluginUri: file.promptPath.pluginUri,
|
|
1066
|
+
extension: file.promptPath.extension
|
|
1074
1067
|
});
|
|
1068
|
+
const source = file.promptPath.source;
|
|
1069
|
+
if (source) {
|
|
1070
|
+
skillsBySource.set(source, (skillsBySource.get(source) || 0) + 1);
|
|
1071
|
+
}
|
|
1075
1072
|
}
|
|
1076
1073
|
}
|
|
1077
1074
|
let skippedMissingName = 0;
|
|
@@ -1128,10 +1125,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1128
1125
|
const elapsed = sw.elapsed();
|
|
1129
1126
|
void this.getHookDiscoveryInfo(token).catch(() => undefined).then(discoveryInfo => {
|
|
1130
1127
|
const hookCount = result ? ( Object.values(result.hooks)).reduce((sum, arr) => sum + arr.length, 0) : 0;
|
|
1131
|
-
const details = hookCount === 1 ? ( localize(
|
|
1128
|
+
const details = hookCount === 1 ? ( localize(7633, "Resolved {0} hook in {1}ms", hookCount, elapsed.toFixed(1))) : ( localize(7634, "Resolved {0} hooks in {1}ms", hookCount, elapsed.toFixed(1)));
|
|
1132
1129
|
this._onDidLogDiscovery.fire({
|
|
1133
1130
|
sessionResource,
|
|
1134
|
-
name: ( localize(
|
|
1131
|
+
name: ( localize(7635, "Load Hooks")),
|
|
1135
1132
|
details,
|
|
1136
1133
|
discoveryInfo,
|
|
1137
1134
|
category: "discovery"
|
|
@@ -1142,32 +1139,41 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1142
1139
|
}
|
|
1143
1140
|
async getInstructionFiles(token, sessionResource) {
|
|
1144
1141
|
const sw = StopWatch.create();
|
|
1145
|
-
const
|
|
1142
|
+
const discoveryInfo = await this.cachedInstructions.get(token);
|
|
1143
|
+
const result = ( discoveryInfo.files.filter(file => file.status === "loaded").map(file => file.promptPath));
|
|
1146
1144
|
if (sessionResource) {
|
|
1147
1145
|
const elapsed = sw.elapsed();
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
category: "discovery"
|
|
1166
|
-
});
|
|
1146
|
+
const details = result.length === 1 ? ( localize(
|
|
1147
|
+
7636,
|
|
1148
|
+
"Resolved {0} instruction in {1}ms",
|
|
1149
|
+
result.length,
|
|
1150
|
+
elapsed.toFixed(1)
|
|
1151
|
+
)) : ( localize(
|
|
1152
|
+
7637,
|
|
1153
|
+
"Resolved {0} instructions in {1}ms",
|
|
1154
|
+
result.length,
|
|
1155
|
+
elapsed.toFixed(1)
|
|
1156
|
+
));
|
|
1157
|
+
this._onDidLogDiscovery.fire({
|
|
1158
|
+
sessionResource,
|
|
1159
|
+
name: ( localize(7638, "Load Instructions")),
|
|
1160
|
+
details,
|
|
1161
|
+
discoveryInfo,
|
|
1162
|
+
category: "discovery"
|
|
1167
1163
|
});
|
|
1168
1164
|
}
|
|
1169
1165
|
return result;
|
|
1170
1166
|
}
|
|
1167
|
+
withPromptPathMetadata(promptPath, name, description) {
|
|
1168
|
+
return {
|
|
1169
|
+
...promptPath,
|
|
1170
|
+
name,
|
|
1171
|
+
description
|
|
1172
|
+
};
|
|
1173
|
+
}
|
|
1174
|
+
async computeInstructionFiles(token) {
|
|
1175
|
+
return await this.getInstructionsDiscoveryInfo(token);
|
|
1176
|
+
}
|
|
1171
1177
|
async computeHooks(token) {
|
|
1172
1178
|
const useChatHooks = this.configurationService.getValue(PromptsConfig.USE_CHAT_HOOKS);
|
|
1173
1179
|
if (!useChatHooks) {
|
|
@@ -1185,6 +1191,9 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1185
1191
|
const collectedHooks = ( new Map());
|
|
1186
1192
|
const defaultFolder = this.workspaceService.getWorkspace().folders[0];
|
|
1187
1193
|
for (const hookFile of hookFiles) {
|
|
1194
|
+
if (hookFile.storage === PromptsStorage.plugin) {
|
|
1195
|
+
continue;
|
|
1196
|
+
}
|
|
1188
1197
|
try {
|
|
1189
1198
|
const content = await this.fileService.readFile(hookFile.uri);
|
|
1190
1199
|
const json = parse(( content.value.toString()));
|
|
@@ -1264,11 +1273,9 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1264
1273
|
if (!useAgentSkills) {
|
|
1265
1274
|
const allFiles = await this.listPromptFiles(PromptsType.skill, token);
|
|
1266
1275
|
const files = ( allFiles.map(promptPath => ({
|
|
1267
|
-
uri: promptPath.uri,
|
|
1268
|
-
storage: promptPath.storage,
|
|
1269
1276
|
status: "skipped",
|
|
1270
1277
|
skipReason: "disabled",
|
|
1271
|
-
|
|
1278
|
+
promptPath
|
|
1272
1279
|
})));
|
|
1273
1280
|
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.skill);
|
|
1274
1281
|
return {
|
|
@@ -1277,9 +1284,7 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1277
1284
|
sourceFolders
|
|
1278
1285
|
};
|
|
1279
1286
|
}
|
|
1280
|
-
const
|
|
1281
|
-
files
|
|
1282
|
-
} = await this.computeSkillDiscoveryInfo(token);
|
|
1287
|
+
const files = await this.computeSkillDiscoveryInfo(token);
|
|
1283
1288
|
const sourceFolders = await this._collectSourceFolderDiagnostics(PromptsType.skill);
|
|
1284
1289
|
return {
|
|
1285
1290
|
type: PromptsType.skill,
|
|
@@ -1289,26 +1294,13 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1289
1294
|
}
|
|
1290
1295
|
async computeSkillDiscoveryInfo(token) {
|
|
1291
1296
|
const files = [];
|
|
1292
|
-
const skillsBySource = ( new Map());
|
|
1293
1297
|
const seenNames = ( new Set());
|
|
1294
1298
|
const nameToUri = ( new Map());
|
|
1295
1299
|
const allSkills = [];
|
|
1296
1300
|
const discoveredSkills = await this.fileLocator.findAgentSkills(token);
|
|
1297
1301
|
const extensionSkills = await this.getExtensionPromptFiles(PromptsType.skill, token);
|
|
1298
1302
|
const pluginSkills = this._pluginPromptFilesByType.get(PromptsType.skill) ?? [];
|
|
1299
|
-
allSkills.push(...discoveredSkills, ...
|
|
1300
|
-
fileUri: extPath.uri,
|
|
1301
|
-
storage: extPath.storage,
|
|
1302
|
-
source: extPath.source === ExtensionAgentSourceType.contribution ? PromptFileSource.ExtensionContribution : PromptFileSource.ExtensionAPI
|
|
1303
|
-
}))), ...( pluginSkills.map(p => ({
|
|
1304
|
-
fileUri: p.uri,
|
|
1305
|
-
storage: p.storage,
|
|
1306
|
-
source: PromptFileSource.Plugin
|
|
1307
|
-
}))), ...( this.internalCustomizations.getSkills().map(s => ({
|
|
1308
|
-
fileUri: s.uri,
|
|
1309
|
-
storage: s.storage,
|
|
1310
|
-
source: PromptFileSource.Internal
|
|
1311
|
-
}))));
|
|
1303
|
+
allSkills.push(...discoveredSkills, ...extensionSkills, ...pluginSkills);
|
|
1312
1304
|
const getPriority = skill => {
|
|
1313
1305
|
if (skill.storage === PromptsStorage.local) {
|
|
1314
1306
|
return 0;
|
|
@@ -1328,64 +1320,49 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1328
1320
|
return 5;
|
|
1329
1321
|
};
|
|
1330
1322
|
allSkills.sort((a, b) => getPriority(a) - getPriority(b));
|
|
1331
|
-
const extensionIdByUri = ( new Map());
|
|
1332
|
-
for (const extSkill of extensionSkills) {
|
|
1333
|
-
extensionIdByUri.set(( extSkill.uri.toString()), extSkill.extension.identifier.value);
|
|
1334
|
-
}
|
|
1335
1323
|
for (const skill of allSkills) {
|
|
1336
|
-
const uri = skill.
|
|
1337
|
-
const
|
|
1338
|
-
const source = skill.source;
|
|
1339
|
-
const extensionId = extensionIdByUri.get(( uri.toString()));
|
|
1324
|
+
const uri = skill.uri;
|
|
1325
|
+
const promptPath = skill;
|
|
1340
1326
|
try {
|
|
1341
1327
|
const parsedFile = await this.parseNew(uri, token);
|
|
1342
1328
|
const folderName = getSkillFolderName(uri);
|
|
1343
1329
|
let name = parsedFile.header?.name;
|
|
1330
|
+
const description = parsedFile.header?.description;
|
|
1344
1331
|
if (!name) {
|
|
1345
1332
|
this.logger.debug(
|
|
1346
1333
|
`[computeSkillDiscoveryInfo] Agent skill file missing name attribute, using folder name "${folderName}": ${uri}`
|
|
1347
1334
|
);
|
|
1348
1335
|
name = folderName;
|
|
1349
1336
|
}
|
|
1350
|
-
|
|
1337
|
+
let sanitizedName = this.truncateAgentSkillName(name, uri);
|
|
1351
1338
|
if (sanitizedName !== folderName) {
|
|
1352
1339
|
this.logger.debug(
|
|
1353
1340
|
`[computeSkillDiscoveryInfo] Agent skill name "${sanitizedName}" does not match folder name "${folderName}", using folder name: ${uri}`
|
|
1354
1341
|
);
|
|
1342
|
+
sanitizedName = folderName;
|
|
1355
1343
|
}
|
|
1356
1344
|
if (( seenNames.has(sanitizedName))) {
|
|
1357
1345
|
this.logger.debug(
|
|
1358
1346
|
`[computeSkillDiscoveryInfo] Skipping duplicate agent skill name: ${sanitizedName} at ${uri}`
|
|
1359
1347
|
);
|
|
1360
1348
|
files.push({
|
|
1361
|
-
uri,
|
|
1362
|
-
storage,
|
|
1363
1349
|
status: "skipped",
|
|
1364
1350
|
skipReason: "duplicate-name",
|
|
1365
|
-
name: sanitizedName,
|
|
1366
1351
|
duplicateOf: nameToUri.get(sanitizedName),
|
|
1367
|
-
|
|
1368
|
-
source
|
|
1352
|
+
promptPath: this.withPromptPathMetadata(promptPath, sanitizedName, description)
|
|
1369
1353
|
});
|
|
1370
1354
|
continue;
|
|
1371
1355
|
}
|
|
1372
|
-
const description = parsedFile.header?.description;
|
|
1373
1356
|
seenNames.add(sanitizedName);
|
|
1374
1357
|
nameToUri.set(sanitizedName, uri);
|
|
1375
1358
|
const disableModelInvocation = parsedFile.header?.disableModelInvocation === true;
|
|
1376
1359
|
const userInvocable = parsedFile.header?.userInvocable !== false;
|
|
1377
1360
|
files.push({
|
|
1378
|
-
uri,
|
|
1379
|
-
storage,
|
|
1380
1361
|
status: "loaded",
|
|
1381
|
-
|
|
1382
|
-
description,
|
|
1383
|
-
extensionId,
|
|
1384
|
-
source,
|
|
1362
|
+
promptPath: this.withPromptPathMetadata(promptPath, sanitizedName, description),
|
|
1385
1363
|
disableModelInvocation,
|
|
1386
1364
|
userInvocable
|
|
1387
1365
|
});
|
|
1388
|
-
skillsBySource.set(source, (skillsBySource.get(source) || 0) + 1);
|
|
1389
1366
|
} catch (e) {
|
|
1390
1367
|
const msg = e instanceof Error ? e.message : String(e);
|
|
1391
1368
|
this.logger.error(
|
|
@@ -1393,57 +1370,45 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1393
1370
|
msg
|
|
1394
1371
|
);
|
|
1395
1372
|
files.push({
|
|
1396
|
-
uri,
|
|
1397
|
-
storage,
|
|
1398
1373
|
status: "skipped",
|
|
1399
1374
|
skipReason: "parse-error",
|
|
1400
1375
|
errorMessage: msg,
|
|
1401
|
-
|
|
1402
|
-
source
|
|
1376
|
+
promptPath
|
|
1403
1377
|
});
|
|
1404
1378
|
}
|
|
1405
1379
|
}
|
|
1406
|
-
return
|
|
1407
|
-
files,
|
|
1408
|
-
skillsBySource
|
|
1409
|
-
};
|
|
1380
|
+
return files;
|
|
1410
1381
|
}
|
|
1411
1382
|
async getAgentDiscoveryInfo(token) {
|
|
1412
1383
|
const files = [];
|
|
1413
1384
|
const disabledAgents = this.getDisabledPromptFiles(PromptsType.agent);
|
|
1414
1385
|
const agentFiles = await this.listPromptFiles(PromptsType.agent, token);
|
|
1415
1386
|
for (const promptPath of agentFiles) {
|
|
1416
|
-
const
|
|
1417
|
-
|
|
1418
|
-
|
|
1387
|
+
const {
|
|
1388
|
+
uri
|
|
1389
|
+
} = promptPath;
|
|
1419
1390
|
if (( disabledAgents.has(uri))) {
|
|
1420
1391
|
files.push({
|
|
1421
|
-
uri,
|
|
1422
|
-
storage,
|
|
1423
1392
|
status: "skipped",
|
|
1424
1393
|
skipReason: "disabled",
|
|
1425
|
-
|
|
1394
|
+
promptPath
|
|
1426
1395
|
});
|
|
1427
1396
|
continue;
|
|
1428
1397
|
}
|
|
1429
1398
|
try {
|
|
1430
1399
|
const ast = await this.parseNew(uri, token);
|
|
1431
1400
|
const name = ast.header?.name ?? promptPath.name ?? getCleanPromptName(uri);
|
|
1401
|
+
const description = ast.header?.description ?? promptPath.description;
|
|
1432
1402
|
files.push({
|
|
1433
|
-
uri,
|
|
1434
|
-
storage,
|
|
1435
1403
|
status: "loaded",
|
|
1436
|
-
name,
|
|
1437
|
-
extensionId
|
|
1404
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, description)
|
|
1438
1405
|
});
|
|
1439
1406
|
} catch (e) {
|
|
1440
1407
|
files.push({
|
|
1441
|
-
uri,
|
|
1442
|
-
storage,
|
|
1443
1408
|
status: "skipped",
|
|
1444
1409
|
skipReason: "parse-error",
|
|
1445
1410
|
errorMessage: e instanceof Error ? e.message : String(e),
|
|
1446
|
-
|
|
1411
|
+
promptPath
|
|
1447
1412
|
});
|
|
1448
1413
|
}
|
|
1449
1414
|
}
|
|
@@ -1458,27 +1423,23 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1458
1423
|
const files = [];
|
|
1459
1424
|
const promptFiles = await this.listPromptFiles(PromptsType.prompt, token);
|
|
1460
1425
|
for (const promptPath of promptFiles) {
|
|
1461
|
-
const
|
|
1462
|
-
|
|
1463
|
-
|
|
1426
|
+
const {
|
|
1427
|
+
uri
|
|
1428
|
+
} = promptPath;
|
|
1464
1429
|
try {
|
|
1465
1430
|
const parsedPromptFile = await this.parseNew(uri, token);
|
|
1466
1431
|
const name = parsedPromptFile?.header?.name ?? promptPath.name ?? getCleanPromptName(uri);
|
|
1432
|
+
const description = parsedPromptFile?.header?.description ?? promptPath.description;
|
|
1467
1433
|
files.push({
|
|
1468
|
-
uri,
|
|
1469
|
-
storage,
|
|
1470
1434
|
status: "loaded",
|
|
1471
|
-
name,
|
|
1472
|
-
extensionId
|
|
1435
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, description)
|
|
1473
1436
|
});
|
|
1474
1437
|
} catch (e) {
|
|
1475
1438
|
files.push({
|
|
1476
|
-
uri,
|
|
1477
|
-
storage,
|
|
1478
1439
|
status: "skipped",
|
|
1479
1440
|
skipReason: "parse-error",
|
|
1480
1441
|
errorMessage: e instanceof Error ? e.message : String(e),
|
|
1481
|
-
|
|
1442
|
+
promptPath
|
|
1482
1443
|
});
|
|
1483
1444
|
}
|
|
1484
1445
|
}
|
|
@@ -1494,26 +1455,20 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1494
1455
|
const instructionsFiles = await this.listPromptFiles(PromptsType.instructions, token);
|
|
1495
1456
|
for (const promptPath of instructionsFiles) {
|
|
1496
1457
|
const uri = promptPath.uri;
|
|
1497
|
-
const storage = promptPath.storage;
|
|
1498
|
-
const extensionId = promptPath.extension?.identifier?.value;
|
|
1499
1458
|
try {
|
|
1500
1459
|
const parsedPromptFile = await this.parseNew(uri, token);
|
|
1501
1460
|
const name = parsedPromptFile?.header?.name ?? promptPath.name ?? getCleanPromptName(uri);
|
|
1461
|
+
const description = parsedPromptFile?.header?.description ?? promptPath.description;
|
|
1502
1462
|
files.push({
|
|
1503
|
-
uri,
|
|
1504
|
-
storage,
|
|
1505
1463
|
status: "loaded",
|
|
1506
|
-
name,
|
|
1507
|
-
extensionId
|
|
1464
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, description)
|
|
1508
1465
|
});
|
|
1509
1466
|
} catch (e) {
|
|
1510
1467
|
files.push({
|
|
1511
|
-
uri,
|
|
1512
|
-
storage,
|
|
1513
1468
|
status: "skipped",
|
|
1514
1469
|
skipReason: "parse-error",
|
|
1515
1470
|
errorMessage: e instanceof Error ? e.message : String(e),
|
|
1516
|
-
|
|
1471
|
+
promptPath
|
|
1517
1472
|
});
|
|
1518
1473
|
}
|
|
1519
1474
|
}
|
|
@@ -1531,29 +1486,23 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1531
1486
|
const useClaudeHooks = this.configurationService.getValue(PromptsConfig.USE_CLAUDE_HOOKS);
|
|
1532
1487
|
const hookFiles = await this.listPromptFiles(PromptsType.hook, token);
|
|
1533
1488
|
for (const promptPath of hookFiles) {
|
|
1534
|
-
const
|
|
1535
|
-
|
|
1536
|
-
|
|
1489
|
+
const {
|
|
1490
|
+
uri
|
|
1491
|
+
} = promptPath;
|
|
1537
1492
|
const name = basename(uri);
|
|
1538
1493
|
if (!this.workspaceTrustService.isWorkspaceTrusted()) {
|
|
1539
1494
|
files.push({
|
|
1540
|
-
uri: promptPath.uri,
|
|
1541
|
-
storage: promptPath.storage,
|
|
1542
1495
|
status: "skipped",
|
|
1543
1496
|
skipReason: "workspace-untrusted",
|
|
1544
|
-
|
|
1545
|
-
extensionId: promptPath.extension?.identifier?.value
|
|
1497
|
+
promptPath: this.withPromptPathMetadata(promptPath, basename(promptPath.uri), promptPath.description)
|
|
1546
1498
|
});
|
|
1547
1499
|
continue;
|
|
1548
1500
|
}
|
|
1549
1501
|
if (getHookSourceFormat(uri) === HookSourceFormat.Claude && useClaudeHooks === false) {
|
|
1550
1502
|
files.push({
|
|
1551
|
-
uri,
|
|
1552
|
-
storage,
|
|
1553
1503
|
status: "skipped",
|
|
1554
1504
|
skipReason: "claude-hooks-disabled",
|
|
1555
|
-
name,
|
|
1556
|
-
extensionId
|
|
1505
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, promptPath.description)
|
|
1557
1506
|
});
|
|
1558
1507
|
continue;
|
|
1559
1508
|
}
|
|
@@ -1562,13 +1511,10 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1562
1511
|
const json = parse(( content.value.toString()));
|
|
1563
1512
|
if (!json || typeof json !== "object") {
|
|
1564
1513
|
files.push({
|
|
1565
|
-
uri,
|
|
1566
|
-
storage,
|
|
1567
1514
|
status: "skipped",
|
|
1568
1515
|
skipReason: "parse-error",
|
|
1569
1516
|
errorMessage: "Invalid hooks file: must be a JSON object",
|
|
1570
|
-
name,
|
|
1571
|
-
extensionId
|
|
1517
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, promptPath.description)
|
|
1572
1518
|
});
|
|
1573
1519
|
continue;
|
|
1574
1520
|
}
|
|
@@ -1579,31 +1525,22 @@ let PromptsService = class PromptsService extends Disposable {
|
|
|
1579
1525
|
} = parseHooksFromFile(uri, json, workspaceRootUri, userHome);
|
|
1580
1526
|
if (disabledAllHooks) {
|
|
1581
1527
|
files.push({
|
|
1582
|
-
uri,
|
|
1583
|
-
storage,
|
|
1584
1528
|
status: "skipped",
|
|
1585
1529
|
skipReason: "all-hooks-disabled",
|
|
1586
|
-
name,
|
|
1587
|
-
extensionId
|
|
1530
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, promptPath.description)
|
|
1588
1531
|
});
|
|
1589
1532
|
continue;
|
|
1590
1533
|
}
|
|
1591
1534
|
files.push({
|
|
1592
|
-
uri,
|
|
1593
|
-
storage,
|
|
1594
1535
|
status: "loaded",
|
|
1595
|
-
name,
|
|
1596
|
-
extensionId
|
|
1536
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, promptPath.description)
|
|
1597
1537
|
});
|
|
1598
1538
|
} catch (e) {
|
|
1599
1539
|
files.push({
|
|
1600
|
-
uri,
|
|
1601
|
-
storage,
|
|
1602
1540
|
status: "skipped",
|
|
1603
1541
|
skipReason: "parse-error",
|
|
1604
1542
|
errorMessage: e instanceof Error ? e.message : String(e),
|
|
1605
|
-
name,
|
|
1606
|
-
extensionId
|
|
1543
|
+
promptPath: this.withPromptPathMetadata(promptPath, name, promptPath.description)
|
|
1607
1544
|
});
|
|
1608
1545
|
}
|
|
1609
1546
|
}
|
|
@@ -1623,30 +1560,28 @@ class CachedPromise extends Disposable {
|
|
|
1623
1560
|
this.getEvent = getEvent;
|
|
1624
1561
|
this.delay = delay;
|
|
1625
1562
|
this.cachedPromise = undefined;
|
|
1626
|
-
this.onDidUpdatePromiseEmitter =
|
|
1563
|
+
this.onDidUpdatePromiseEmitter = this._register(( new Emitter()));
|
|
1564
|
+
const delayer = this._register(( new Delayer(this.delay)));
|
|
1565
|
+
this._register(this.getEvent()(() => {
|
|
1566
|
+
this.cachedPromise = undefined;
|
|
1567
|
+
delayer.trigger(() => this.onDidUpdatePromiseEmitter.fire());
|
|
1568
|
+
}));
|
|
1627
1569
|
}
|
|
1628
|
-
get
|
|
1629
|
-
if (!this.onDidUpdatePromiseEmitter) {
|
|
1630
|
-
const emitter = this.onDidUpdatePromiseEmitter = this._register(( new Emitter()));
|
|
1631
|
-
const delayer = this._register(( new Delayer(this.delay)));
|
|
1632
|
-
this._register(this.getEvent()(() => {
|
|
1633
|
-
this.cachedPromise = undefined;
|
|
1634
|
-
delayer.trigger(() => emitter.fire());
|
|
1635
|
-
}));
|
|
1636
|
-
}
|
|
1570
|
+
get onDidChangePromise() {
|
|
1637
1571
|
return this.onDidUpdatePromiseEmitter.event;
|
|
1638
1572
|
}
|
|
1639
1573
|
get(token) {
|
|
1640
1574
|
if (this.cachedPromise !== undefined) {
|
|
1641
1575
|
return this.cachedPromise;
|
|
1642
1576
|
}
|
|
1643
|
-
const
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1577
|
+
const promise = this.computeFn(token).catch(err => {
|
|
1578
|
+
if (this.cachedPromise === promise) {
|
|
1579
|
+
this.cachedPromise = undefined;
|
|
1580
|
+
}
|
|
1581
|
+
throw err;
|
|
1582
|
+
});
|
|
1583
|
+
this.cachedPromise = promise;
|
|
1584
|
+
return promise;
|
|
1650
1585
|
}
|
|
1651
1586
|
refresh() {
|
|
1652
1587
|
this.cachedPromise = undefined;
|
|
@@ -1672,22 +1607,34 @@ class ModelChangeTracker extends Disposable {
|
|
|
1672
1607
|
}))
|
|
1673
1608
|
);
|
|
1674
1609
|
}
|
|
1610
|
+
return promptType;
|
|
1675
1611
|
};
|
|
1676
1612
|
const onRemove = (languageId, uri) => {
|
|
1677
1613
|
const promptType = getPromptsTypeForLanguageId(languageId);
|
|
1678
1614
|
if (promptType !== undefined) {
|
|
1679
1615
|
this.listeners.get(uri)?.dispose();
|
|
1680
1616
|
this.listeners.delete(uri);
|
|
1681
|
-
this.onDidPromptModelChange.fire({
|
|
1682
|
-
uri,
|
|
1683
|
-
promptType
|
|
1684
|
-
});
|
|
1685
1617
|
}
|
|
1618
|
+
return promptType;
|
|
1686
1619
|
};
|
|
1687
1620
|
this._register(modelService.onModelAdded(model => onAdd(model)));
|
|
1688
1621
|
this._register(modelService.onModelLanguageChanged(e => {
|
|
1689
|
-
onRemove(e.oldLanguageId, e.model.uri);
|
|
1690
|
-
onAdd(e.model);
|
|
1622
|
+
const removedPromptType = onRemove(e.oldLanguageId, e.model.uri);
|
|
1623
|
+
const addedPromptType = onAdd(e.model);
|
|
1624
|
+
if (removedPromptType !== addedPromptType) {
|
|
1625
|
+
if (removedPromptType) {
|
|
1626
|
+
this.onDidPromptModelChange.fire({
|
|
1627
|
+
uri: e.model.uri,
|
|
1628
|
+
promptType: removedPromptType
|
|
1629
|
+
});
|
|
1630
|
+
}
|
|
1631
|
+
if (addedPromptType) {
|
|
1632
|
+
this.onDidPromptModelChange.fire({
|
|
1633
|
+
uri: e.model.uri,
|
|
1634
|
+
promptType: addedPromptType
|
|
1635
|
+
});
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1691
1638
|
}));
|
|
1692
1639
|
this._register(
|
|
1693
1640
|
modelService.onModelRemoved(model => onRemove(model.getLanguageId(), model.uri))
|
|
@@ -1713,10 +1660,6 @@ var IAgentSource;
|
|
|
1713
1660
|
storage: PromptsStorage.plugin,
|
|
1714
1661
|
pluginUri: promptPath.pluginUri
|
|
1715
1662
|
};
|
|
1716
|
-
} else if (promptPath.storage === PromptsStorage.internal) {
|
|
1717
|
-
return {
|
|
1718
|
-
storage: PromptsStorage.internal
|
|
1719
|
-
};
|
|
1720
1663
|
} else {
|
|
1721
1664
|
return {
|
|
1722
1665
|
storage: promptPath.storage
|