@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
|
@@ -4,6 +4,7 @@ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/l
|
|
|
4
4
|
import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
5
5
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
6
6
|
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
7
|
+
import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
|
|
7
8
|
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
8
9
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
9
10
|
import { IRequestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request.service";
|
|
@@ -90,7 +91,6 @@ interface IJsonPluginSource {
|
|
|
90
91
|
export interface IMarketplaceInstalledPlugin {
|
|
91
92
|
readonly pluginUri: URI;
|
|
92
93
|
readonly plugin: IMarketplacePlugin;
|
|
93
|
-
readonly enabled: boolean;
|
|
94
94
|
}
|
|
95
95
|
export declare class PluginMarketplaceService extends Disposable implements IPluginMarketplaceService {
|
|
96
96
|
private readonly _configurationService;
|
|
@@ -104,6 +104,7 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
104
104
|
readonly _serviceBrand: undefined;
|
|
105
105
|
private readonly _gitHubMarketplaceCache;
|
|
106
106
|
private readonly _installedPluginsStore;
|
|
107
|
+
private readonly _pluginMetadata;
|
|
107
108
|
private readonly _trustedMarketplacesStore;
|
|
108
109
|
private readonly _lastFetchedPluginsStore;
|
|
109
110
|
private readonly _hasUpdatesAvailable;
|
|
@@ -113,7 +114,7 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
113
114
|
readonly hasUpdatesAvailable: IObservable<boolean>;
|
|
114
115
|
readonly lastFetchedPlugins: IObservable<readonly IMarketplacePlugin[]>;
|
|
115
116
|
readonly recommendedPlugins: IObservable<ReadonlySet<string>>;
|
|
116
|
-
constructor(_configurationService: IConfigurationService, _requestService: IRequestService, _fileService: IFileService, _pluginRepositoryService: IAgentPluginRepositoryService, _logService: ILogService, _storageService: IStorageService, _workspacePluginSettingsService: IWorkspacePluginSettingsService, _workspaceTrustService: IWorkspaceTrustManagementService);
|
|
117
|
+
constructor(_configurationService: IConfigurationService, _requestService: IRequestService, environmentService: IEnvironmentService, _fileService: IFileService, _pluginRepositoryService: IAgentPluginRepositoryService, _logService: ILogService, _storageService: IStorageService, _workspacePluginSettingsService: IWorkspacePluginSettingsService, _workspaceTrustService: IWorkspaceTrustManagementService);
|
|
117
118
|
dispose(): void;
|
|
118
119
|
clearUpdatesAvailable(): void;
|
|
119
120
|
fetchMarketplacePlugins(token: CancellationToken): Promise<IMarketplacePlugin[]>;
|
|
@@ -124,8 +125,23 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
124
125
|
getMarketplacePluginMetadata(pluginUri: URI): IMarketplacePlugin | undefined;
|
|
125
126
|
addInstalledPlugin(pluginUri: URI, plugin: IMarketplacePlugin): void;
|
|
126
127
|
removeInstalledPlugin(pluginUri: URI): void;
|
|
127
|
-
setInstalledPluginEnabled(pluginUri: URI, enabled: boolean): void;
|
|
128
128
|
isMarketplaceTrusted(ref: IMarketplaceReference): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* For each plugin URI that has no cached metadata, walk up the directory
|
|
131
|
+
* tree from the plugin towards the agent-plugins root looking for a
|
|
132
|
+
* marketplace definition file. When found, read the marketplace plugins
|
|
133
|
+
* and match by source path to populate {@link _pluginMetadata}.
|
|
134
|
+
*
|
|
135
|
+
* After hydration completes the installed-plugins store is "touched" so
|
|
136
|
+
* that the derived {@link installedPlugins} observable re-evaluates with
|
|
137
|
+
* the newly available metadata.
|
|
138
|
+
*/
|
|
139
|
+
private _hydratePluginMetadata;
|
|
140
|
+
/**
|
|
141
|
+
* Shared logic to parse a marketplace.json into {@link IMarketplacePlugin}
|
|
142
|
+
* objects. Used by both fetch and hydration paths.
|
|
143
|
+
*/
|
|
144
|
+
private _parseMarketplacePlugins;
|
|
129
145
|
trustMarketplace(ref: IMarketplaceReference): void;
|
|
130
146
|
private _isAutoUpdateEnabled;
|
|
131
147
|
/**
|
|
@@ -137,6 +153,12 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
137
153
|
private _fetchFromClonedRepo;
|
|
138
154
|
readPluginsFromDirectory(repoDir: URI, reference: IMarketplaceReference): Promise<IMarketplacePlugin[]>;
|
|
139
155
|
private _readPluginsFromDirectory;
|
|
156
|
+
/**
|
|
157
|
+
* Iterates over {@link MARKETPLACE_DEFINITIONS} paths, calling
|
|
158
|
+
* {@link readJson} for each to obtain the parsed JSON. Returns the
|
|
159
|
+
* plugins from the first definition that yields a valid result.
|
|
160
|
+
*/
|
|
161
|
+
private _readPluginsFromDefinitions;
|
|
140
162
|
}
|
|
141
163
|
/**
|
|
142
164
|
* Parse a raw `source` field from marketplace.json into a structured
|
|
@@ -7,9 +7,10 @@ import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
|
|
|
7
7
|
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
8
8
|
import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
|
|
9
9
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
10
|
-
import { isEqualOrParent, isEqual,
|
|
10
|
+
import { joinPath, isEqualOrParent, isEqual, normalizePath, relativePath } 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 { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
13
|
+
import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
|
|
13
14
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
14
15
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
15
16
|
import { observableMemento } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/observableMemento';
|
|
@@ -20,12 +21,14 @@ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform
|
|
|
20
21
|
import { AutoUpdateConfigurationKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions';
|
|
21
22
|
import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
22
23
|
import { IAgentPluginRepositoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.service';
|
|
24
|
+
import { FileBackedInstalledPluginsStore } from './fileBackedInstalledPluginsStore.js';
|
|
23
25
|
import { IWorkspacePluginSettingsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.service';
|
|
24
26
|
import { IWorkspaceTrustManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service';
|
|
25
27
|
import { parseMarketplaceReferences, deduplicateMarketplaceReferences, parseMarketplaceReference, MarketplaceReferenceKind } from './marketplaceReference.js';
|
|
26
28
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
27
29
|
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
28
30
|
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
31
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
29
32
|
|
|
30
33
|
var MarketplaceType;
|
|
31
34
|
(function(MarketplaceType) {
|
|
@@ -70,15 +73,6 @@ function ensureSourceDescriptor(plugin) {
|
|
|
70
73
|
}
|
|
71
74
|
};
|
|
72
75
|
}
|
|
73
|
-
const installedPluginsMemento = observableMemento({
|
|
74
|
-
defaultValue: [],
|
|
75
|
-
key: "chat.plugins.installed.v1",
|
|
76
|
-
toStorage: value => JSON.stringify(value),
|
|
77
|
-
fromStorage: value => {
|
|
78
|
-
const parsed = JSON.parse(value);
|
|
79
|
-
return Array.isArray(parsed) ? parsed : [];
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
76
|
const trustedMarketplacesMemento = observableMemento({
|
|
83
77
|
defaultValue: [],
|
|
84
78
|
key: "chat.plugins.trustedMarketplaces.v1",
|
|
@@ -110,6 +104,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
110
104
|
constructor(
|
|
111
105
|
_configurationService,
|
|
112
106
|
_requestService,
|
|
107
|
+
environmentService,
|
|
113
108
|
_fileService,
|
|
114
109
|
_pluginRepositoryService,
|
|
115
110
|
_logService,
|
|
@@ -127,11 +122,17 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
127
122
|
this._workspacePluginSettingsService = _workspacePluginSettingsService;
|
|
128
123
|
this._workspaceTrustService = _workspaceTrustService;
|
|
129
124
|
this._gitHubMarketplaceCache = ( new Lazy(() => this._loadPersistedGitHubMarketplaceCache()));
|
|
125
|
+
this._pluginMetadata = ( new Map());
|
|
130
126
|
this._hasUpdatesAvailable = observableValue("hasUpdatesAvailable", false);
|
|
131
127
|
this.hasUpdatesAvailable = this._hasUpdatesAvailable;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
128
|
+
const oldCacheRoot = joinPath(environmentService.cacheHome, "agentPlugins");
|
|
129
|
+
this._installedPluginsStore = this._register(( new FileBackedInstalledPluginsStore(
|
|
130
|
+
_pluginRepositoryService.agentPluginsHome,
|
|
131
|
+
oldCacheRoot,
|
|
132
|
+
_fileService,
|
|
133
|
+
_logService,
|
|
134
|
+
_storageService
|
|
135
|
+
)));
|
|
135
136
|
this._trustedMarketplacesStore = this._register(
|
|
136
137
|
trustedMarketplacesMemento(StorageScope.APPLICATION, StorageTarget.MACHINE, _storageService)
|
|
137
138
|
);
|
|
@@ -142,10 +143,19 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
142
143
|
const revived = revive(s);
|
|
143
144
|
return ( revived.plugins.map(ensureSourceDescriptor));
|
|
144
145
|
}));
|
|
145
|
-
this.installedPlugins = ( this._installedPluginsStore.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
this.installedPlugins = ( this._installedPluginsStore.value.map(entries => {
|
|
147
|
+
const result = [];
|
|
148
|
+
for (const e of entries) {
|
|
149
|
+
const plugin = this._pluginMetadata.get(( e.pluginUri.toString()));
|
|
150
|
+
if (plugin) {
|
|
151
|
+
result.push({
|
|
152
|
+
pluginUri: e.pluginUri,
|
|
153
|
+
plugin
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}));
|
|
149
159
|
const workspaceTrusted = observableFromEvent(
|
|
150
160
|
this,
|
|
151
161
|
this._workspaceTrustService.onDidChangeTrust,
|
|
@@ -175,6 +185,13 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
175
185
|
e => e.affectsConfiguration(AutoUpdateConfigurationKey)
|
|
176
186
|
)(() => this._scheduleUpdateCheck()));
|
|
177
187
|
}));
|
|
188
|
+
this._register(autorun(reader => {
|
|
189
|
+
const entries = this._installedPluginsStore.value.read(reader);
|
|
190
|
+
const unhydrated = entries.filter(e => !( this._pluginMetadata.has(( e.pluginUri.toString()))));
|
|
191
|
+
if (unhydrated.length > 0) {
|
|
192
|
+
this._hydratePluginMetadata(unhydrated);
|
|
193
|
+
}
|
|
194
|
+
}));
|
|
178
195
|
}
|
|
179
196
|
dispose() {
|
|
180
197
|
if (this._updateCheckTimer !== undefined) {
|
|
@@ -230,11 +247,11 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
230
247
|
})));
|
|
231
248
|
}
|
|
232
249
|
let repoMayBePrivate = true;
|
|
233
|
-
|
|
250
|
+
const plugins = await this._readPluginsFromDefinitions(reference, async defPath => {
|
|
234
251
|
if (token.isCancellationRequested) {
|
|
235
|
-
return
|
|
252
|
+
return undefined;
|
|
236
253
|
}
|
|
237
|
-
const url = `https://raw.githubusercontent.com/${repo}/main/${
|
|
254
|
+
const url = `https://raw.githubusercontent.com/${repo}/main/${defPath}`;
|
|
238
255
|
try {
|
|
239
256
|
const context = await this._requestService.request({
|
|
240
257
|
type: "GET",
|
|
@@ -247,51 +264,25 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
247
264
|
this._logService.debug(
|
|
248
265
|
`[PluginMarketplaceService] ${url} returned status ${statusCode}, skipping`
|
|
249
266
|
);
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
const json = await asJson(context);
|
|
253
|
-
if (!json?.plugins || !Array.isArray(json.plugins)) {
|
|
254
|
-
this._logService.debug(
|
|
255
|
-
`[PluginMarketplaceService] ${url} did not contain a valid plugins array, skipping`
|
|
256
|
-
);
|
|
257
|
-
continue;
|
|
267
|
+
return undefined;
|
|
258
268
|
}
|
|
259
|
-
|
|
260
|
-
const sourceDescriptor = parsePluginSource(p.source, json.metadata?.pluginRoot, {
|
|
261
|
-
pluginName: p.name,
|
|
262
|
-
logService: this._logService,
|
|
263
|
-
logPrefix: `[PluginMarketplaceService]`
|
|
264
|
-
});
|
|
265
|
-
if (!sourceDescriptor) {
|
|
266
|
-
return [];
|
|
267
|
-
}
|
|
268
|
-
const source = sourceDescriptor.kind === PluginSourceKind.RelativePath ? sourceDescriptor.path : "";
|
|
269
|
-
return [{
|
|
270
|
-
name: p.name,
|
|
271
|
-
description: p.description ?? "",
|
|
272
|
-
version: p.version ?? "",
|
|
273
|
-
source,
|
|
274
|
-
sourceDescriptor,
|
|
275
|
-
marketplace: reference.displayLabel,
|
|
276
|
-
marketplaceReference: reference,
|
|
277
|
-
marketplaceType: def.type,
|
|
278
|
-
readmeUri: getMarketplaceReadmeUri(repo, source)
|
|
279
|
-
}];
|
|
280
|
-
});
|
|
281
|
-
cache.set(reference.canonicalId, {
|
|
282
|
-
plugins,
|
|
283
|
-
expiresAt: Date.now() + GITHUB_MARKETPLACE_CACHE_TTL_MS,
|
|
284
|
-
referenceRawValue: reference.rawValue
|
|
285
|
-
});
|
|
286
|
-
this._savePersistedGitHubMarketplaceCache(cache);
|
|
287
|
-
return plugins;
|
|
269
|
+
return (await asJson(context)) ?? undefined;
|
|
288
270
|
} catch (err) {
|
|
289
271
|
this._logService.debug(
|
|
290
272
|
`[PluginMarketplaceService] Failed to fetch marketplace.json from ${url}:`,
|
|
291
273
|
err
|
|
292
274
|
);
|
|
293
|
-
|
|
275
|
+
return undefined;
|
|
294
276
|
}
|
|
277
|
+
});
|
|
278
|
+
if (plugins.length > 0) {
|
|
279
|
+
cache.set(reference.canonicalId, {
|
|
280
|
+
plugins,
|
|
281
|
+
expiresAt: Date.now() + GITHUB_MARKETPLACE_CACHE_TTL_MS,
|
|
282
|
+
referenceRawValue: reference.rawValue
|
|
283
|
+
});
|
|
284
|
+
this._savePersistedGitHubMarketplaceCache(cache);
|
|
285
|
+
return plugins;
|
|
295
286
|
}
|
|
296
287
|
if (repoMayBePrivate) {
|
|
297
288
|
this._logService.debug(
|
|
@@ -367,40 +358,93 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
367
358
|
);
|
|
368
359
|
}
|
|
369
360
|
getMarketplacePluginMetadata(pluginUri) {
|
|
370
|
-
|
|
371
|
-
return installed.find(e => isEqualOrParent(pluginUri, e.pluginUri))?.plugin;
|
|
361
|
+
return this._pluginMetadata.get(( pluginUri.toString())) ?? [...this._pluginMetadata.entries()].find(([key]) => isEqualOrParent(pluginUri, ( URI.parse(key))))?.[1];
|
|
372
362
|
}
|
|
373
363
|
addInstalledPlugin(pluginUri, plugin) {
|
|
374
|
-
|
|
364
|
+
this._pluginMetadata.set(( pluginUri.toString()), plugin);
|
|
365
|
+
const current = this._installedPluginsStore.get();
|
|
375
366
|
const existing = current.find(e => isEqual(e.pluginUri, pluginUri));
|
|
376
367
|
if (existing) {
|
|
377
368
|
this._installedPluginsStore.set(( current.map(c => c === existing ? {
|
|
378
369
|
pluginUri,
|
|
379
|
-
plugin
|
|
380
|
-
enabled: existing.enabled
|
|
370
|
+
marketplace: plugin.marketplaceReference.rawValue
|
|
381
371
|
} : c)), undefined);
|
|
382
372
|
} else {
|
|
383
373
|
this._installedPluginsStore.set([...current, {
|
|
384
374
|
pluginUri,
|
|
385
|
-
plugin
|
|
386
|
-
enabled: true
|
|
375
|
+
marketplace: plugin.marketplaceReference.rawValue
|
|
387
376
|
}], undefined);
|
|
388
377
|
}
|
|
389
378
|
}
|
|
390
379
|
removeInstalledPlugin(pluginUri) {
|
|
391
|
-
|
|
380
|
+
this._pluginMetadata.delete(( pluginUri.toString()));
|
|
381
|
+
const current = this._installedPluginsStore.get();
|
|
392
382
|
this._installedPluginsStore.set(current.filter(e => !isEqual(e.pluginUri, pluginUri)), undefined);
|
|
393
383
|
}
|
|
394
|
-
setInstalledPluginEnabled(pluginUri, enabled) {
|
|
395
|
-
const current = this.installedPlugins.get();
|
|
396
|
-
this._installedPluginsStore.set(( current.map(e => isEqual(e.pluginUri, pluginUri) ? {
|
|
397
|
-
...e,
|
|
398
|
-
enabled
|
|
399
|
-
} : e)), undefined);
|
|
400
|
-
}
|
|
401
384
|
isMarketplaceTrusted(ref) {
|
|
402
385
|
return this._trustedMarketplacesStore.get().includes(ref.canonicalId);
|
|
403
386
|
}
|
|
387
|
+
async _hydratePluginMetadata(entries) {
|
|
388
|
+
let hydrated = 0;
|
|
389
|
+
for (const entry of entries) {
|
|
390
|
+
const key = ( entry.pluginUri.toString());
|
|
391
|
+
if (( this._pluginMetadata.has(key))) {
|
|
392
|
+
continue;
|
|
393
|
+
}
|
|
394
|
+
const reference = parseMarketplaceReference(entry.marketplace);
|
|
395
|
+
if (!reference) {
|
|
396
|
+
this._logService.debug(
|
|
397
|
+
`[PluginMarketplaceService] Cannot parse marketplace reference '${entry.marketplace}' for ${key}`
|
|
398
|
+
);
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
try {
|
|
402
|
+
const repoDir = this._pluginRepositoryService.getRepositoryUri(reference);
|
|
403
|
+
const plugins = await this._readPluginsFromDirectory(repoDir, reference);
|
|
404
|
+
const match = plugins.find(p => {
|
|
405
|
+
const installUri = this._pluginRepositoryService.getPluginInstallUri(p);
|
|
406
|
+
return isEqual(installUri, entry.pluginUri);
|
|
407
|
+
});
|
|
408
|
+
if (match) {
|
|
409
|
+
this._pluginMetadata.set(key, match);
|
|
410
|
+
hydrated++;
|
|
411
|
+
}
|
|
412
|
+
} catch (err) {
|
|
413
|
+
this._logService.debug(`[PluginMarketplaceService] Failed to hydrate metadata for ${key}:`, err);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (hydrated > 0) {
|
|
417
|
+
const current = this._installedPluginsStore.get();
|
|
418
|
+
this._installedPluginsStore.set([...current], undefined);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
_parseMarketplacePlugins(json, reference, marketplaceType, repoDir) {
|
|
422
|
+
if (!json.plugins || !Array.isArray(json.plugins)) {
|
|
423
|
+
return [];
|
|
424
|
+
}
|
|
425
|
+
return json.plugins.filter(p => typeof p.name === "string" && !!p.name).flatMap(p => {
|
|
426
|
+
const sourceDescriptor = parsePluginSource(p.source, json.metadata?.pluginRoot, {
|
|
427
|
+
pluginName: p.name,
|
|
428
|
+
logService: this._logService,
|
|
429
|
+
logPrefix: "[PluginMarketplaceService]"
|
|
430
|
+
});
|
|
431
|
+
if (!sourceDescriptor) {
|
|
432
|
+
return [];
|
|
433
|
+
}
|
|
434
|
+
const source = sourceDescriptor.kind === PluginSourceKind.RelativePath ? sourceDescriptor.path : "";
|
|
435
|
+
return [{
|
|
436
|
+
name: p.name,
|
|
437
|
+
description: p.description ?? "",
|
|
438
|
+
version: p.version ?? "",
|
|
439
|
+
source,
|
|
440
|
+
sourceDescriptor,
|
|
441
|
+
marketplace: reference.displayLabel,
|
|
442
|
+
marketplaceReference: reference,
|
|
443
|
+
marketplaceType,
|
|
444
|
+
readmeUri: repoDir ? getMarketplaceReadmeFileUri(repoDir, source) : getMarketplaceReadmeUri(reference.githubRepo ?? "", source)
|
|
445
|
+
}];
|
|
446
|
+
});
|
|
447
|
+
}
|
|
404
448
|
trustMarketplace(ref) {
|
|
405
449
|
const current = this._trustedMarketplacesStore.get();
|
|
406
450
|
if (!current.includes(ref.canonicalId)) {
|
|
@@ -426,7 +470,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
426
470
|
async _runUpdateCheck() {
|
|
427
471
|
this._updateCheckTimer = undefined;
|
|
428
472
|
try {
|
|
429
|
-
const installed = this.installedPlugins.get()
|
|
473
|
+
const installed = this.installedPlugins.get();
|
|
430
474
|
if (installed.length === 0) {
|
|
431
475
|
return;
|
|
432
476
|
}
|
|
@@ -483,44 +527,26 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
483
527
|
return this._readPluginsFromDirectory(repoDir, reference);
|
|
484
528
|
}
|
|
485
529
|
async _readPluginsFromDirectory(repoDir, reference, token) {
|
|
486
|
-
|
|
530
|
+
return this._readPluginsFromDefinitions(reference, async defPath => {
|
|
487
531
|
if (token?.isCancellationRequested) {
|
|
488
|
-
return
|
|
532
|
+
return undefined;
|
|
489
533
|
}
|
|
490
|
-
const definitionUri = joinPath(repoDir,
|
|
491
|
-
let json;
|
|
534
|
+
const definitionUri = joinPath(repoDir, defPath);
|
|
492
535
|
try {
|
|
493
536
|
const contents = await this._fileService.readFile(definitionUri);
|
|
494
|
-
|
|
537
|
+
return parse(( contents.value.toString()));
|
|
495
538
|
} catch {
|
|
496
|
-
|
|
539
|
+
return undefined;
|
|
497
540
|
}
|
|
541
|
+
}, repoDir);
|
|
542
|
+
}
|
|
543
|
+
async _readPluginsFromDefinitions(reference, readJson, repoDir) {
|
|
544
|
+
for (const def of MARKETPLACE_DEFINITIONS) {
|
|
545
|
+
const json = await readJson(def.path);
|
|
498
546
|
if (!json?.plugins || !Array.isArray(json.plugins)) {
|
|
499
|
-
this._logService.debug(`[PluginMarketplaceService] ${( definitionUri.toString())} did not contain a valid plugins array, skipping`);
|
|
500
547
|
continue;
|
|
501
548
|
}
|
|
502
|
-
return
|
|
503
|
-
const sourceDescriptor = parsePluginSource(p.source, json.metadata?.pluginRoot, {
|
|
504
|
-
pluginName: p.name,
|
|
505
|
-
logService: this._logService,
|
|
506
|
-
logPrefix: `[PluginMarketplaceService]`
|
|
507
|
-
});
|
|
508
|
-
if (!sourceDescriptor) {
|
|
509
|
-
return [];
|
|
510
|
-
}
|
|
511
|
-
const source = sourceDescriptor.kind === PluginSourceKind.RelativePath ? sourceDescriptor.path : "";
|
|
512
|
-
return [{
|
|
513
|
-
name: p.name,
|
|
514
|
-
description: p.description ?? "",
|
|
515
|
-
version: p.version ?? "",
|
|
516
|
-
source,
|
|
517
|
-
sourceDescriptor,
|
|
518
|
-
marketplace: reference.displayLabel,
|
|
519
|
-
marketplaceReference: reference,
|
|
520
|
-
marketplaceType: def.type,
|
|
521
|
-
readmeUri: getMarketplaceReadmeFileUri(repoDir, source)
|
|
522
|
-
}];
|
|
523
|
-
});
|
|
549
|
+
return this._parseMarketplacePlugins(json, reference, def.type, repoDir);
|
|
524
550
|
}
|
|
525
551
|
this._logService.debug(
|
|
526
552
|
`[PluginMarketplaceService] No marketplace.json found in ${reference.rawValue}`
|
|
@@ -528,7 +554,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
528
554
|
return [];
|
|
529
555
|
}
|
|
530
556
|
};
|
|
531
|
-
PluginMarketplaceService = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IRequestService)), ( __param(2,
|
|
557
|
+
PluginMarketplaceService = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IRequestService)), ( __param(2, IEnvironmentService)), ( __param(3, IFileService)), ( __param(4, IAgentPluginRepositoryService)), ( __param(5, ILogService)), ( __param(6, IStorageService)), ( __param(7, IWorkspacePluginSettingsService)), ( __param(8, IWorkspaceTrustManagementService))], PluginMarketplaceService));
|
|
532
558
|
function normalizeMarketplacePath(value) {
|
|
533
559
|
let normalized = value.trim().replace(/\\/g, "/");
|
|
534
560
|
normalized = normalized.replace(/^\.?\/+/, "").replace(/\/+$/g, "");
|
|
@@ -539,9 +565,6 @@ function resolvePluginSource(pluginRoot, source) {
|
|
|
539
565
|
const normalizedSource = normalizeMarketplacePath(source);
|
|
540
566
|
const repoRoot = URI.file("/");
|
|
541
567
|
const pluginRootUri = normalizedRoot ? normalizePath(joinPath(repoRoot, normalizedRoot)) : repoRoot;
|
|
542
|
-
if (!normalizedSource) {
|
|
543
|
-
return normalizedRoot || undefined;
|
|
544
|
-
}
|
|
545
568
|
if (normalizedRoot && (normalizedSource === normalizedRoot || normalizedSource.startsWith(`${normalizedRoot}/`))) {
|
|
546
569
|
return normalizedSource;
|
|
547
570
|
}
|
package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js
CHANGED
|
@@ -25,7 +25,7 @@ function registerChatFilesExtensionPoint(point) {
|
|
|
25
25
|
return ExtensionsRegistry.registerExtensionPoint({
|
|
26
26
|
extensionPoint: point,
|
|
27
27
|
jsonSchema: {
|
|
28
|
-
description: ( localize(
|
|
28
|
+
description: ( localize(7315, "Contributes {0} for chat prompts.", point)),
|
|
29
29
|
type: "array",
|
|
30
30
|
items: {
|
|
31
31
|
additionalProperties: false,
|
|
@@ -39,23 +39,23 @@ function registerChatFilesExtensionPoint(point) {
|
|
|
39
39
|
properties: {
|
|
40
40
|
path: {
|
|
41
41
|
description: point === ChatContributionPoint.chatSkills ? ( localize(
|
|
42
|
-
|
|
42
|
+
7316,
|
|
43
43
|
"Path to the SKILL.md file relative to the extension root. The folder name must match the \"name\" property in SKILL.md."
|
|
44
|
-
)) : ( localize(
|
|
44
|
+
)) : ( localize(7317, "Path to the file relative to the extension root.")),
|
|
45
45
|
type: "string"
|
|
46
46
|
},
|
|
47
47
|
name: {
|
|
48
|
-
description: ( localize(
|
|
49
|
-
deprecationMessage: ( localize(
|
|
48
|
+
description: ( localize(7318, "(Optional) Name for this entry.")),
|
|
49
|
+
deprecationMessage: ( localize(7319, "Specify \"name\" in the prompt file itself instead.")),
|
|
50
50
|
type: "string"
|
|
51
51
|
},
|
|
52
52
|
description: {
|
|
53
|
-
description: ( localize(
|
|
54
|
-
deprecationMessage: ( localize(
|
|
53
|
+
description: ( localize(7320, "(Optional) Description of the entry.")),
|
|
54
|
+
deprecationMessage: ( localize(7321, "Specify \"description\" in the prompt file itself instead.")),
|
|
55
55
|
type: "string"
|
|
56
56
|
},
|
|
57
57
|
when: {
|
|
58
|
-
description: ( localize(
|
|
58
|
+
description: ( localize(7322, "(Optional) A condition which must be true to enable this entry.")),
|
|
59
59
|
type: "string"
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -106,7 +106,7 @@ let ChatPromptFilesExtensionPointHandler = class ChatPromptFilesExtensionPointHa
|
|
|
106
106
|
for (const raw of ext.value) {
|
|
107
107
|
if (!raw.path) {
|
|
108
108
|
ext.collector.error(( localize(
|
|
109
|
-
|
|
109
|
+
7323,
|
|
110
110
|
"Extension '{0}' cannot register {1} entry without path.",
|
|
111
111
|
ext.description.identifier.value,
|
|
112
112
|
contributionPoint
|
|
@@ -116,7 +116,7 @@ let ChatPromptFilesExtensionPointHandler = class ChatPromptFilesExtensionPointHa
|
|
|
116
116
|
const fileUri = joinPath(ext.description.extensionLocation, raw.path);
|
|
117
117
|
if (!isEqualOrParent(fileUri, ext.description.extensionLocation)) {
|
|
118
118
|
ext.collector.error(( localize(
|
|
119
|
-
|
|
119
|
+
7324,
|
|
120
120
|
"Extension '{0}' {1} entry '{2}' resolves outside the extension.",
|
|
121
121
|
ext.description.identifier.value,
|
|
122
122
|
contributionPoint,
|
|
@@ -126,7 +126,7 @@ let ChatPromptFilesExtensionPointHandler = class ChatPromptFilesExtensionPointHa
|
|
|
126
126
|
}
|
|
127
127
|
if (raw.when && !ContextKeyExpr.deserialize(raw.when)) {
|
|
128
128
|
ext.collector.error(( localize(
|
|
129
|
-
|
|
129
|
+
7325,
|
|
130
130
|
"Extension '{0}' {1} entry '{2}' has an invalid when clause: '{3}'.",
|
|
131
131
|
ext.description.identifier.value,
|
|
132
132
|
contributionPoint,
|
|
@@ -141,7 +141,7 @@ let ChatPromptFilesExtensionPointHandler = class ChatPromptFilesExtensionPointHa
|
|
|
141
141
|
} catch (e) {
|
|
142
142
|
const msg = e instanceof Error ? e.message : String(e);
|
|
143
143
|
ext.collector.error(( localize(
|
|
144
|
-
|
|
144
|
+
7326,
|
|
145
145
|
"Extension '{0}' {1}. Failed to register {2}: {3}",
|
|
146
146
|
ext.description.identifier.value,
|
|
147
147
|
contributionPoint,
|
|
@@ -175,7 +175,8 @@ CommandsRegistry.registerCommand("_listExtensionPromptFiles", async accessor =>
|
|
|
175
175
|
if (file.storage === PromptsStorage.extension) {
|
|
176
176
|
result.push({
|
|
177
177
|
uri: file.uri.toJSON(),
|
|
178
|
-
type: file.type
|
|
178
|
+
type: file.type,
|
|
179
|
+
extensionId: file.extension.identifier.value
|
|
179
180
|
});
|
|
180
181
|
}
|
|
181
182
|
}
|
|
@@ -201,7 +202,7 @@ class ChatPromptFilesDataRenderer extends Disposable {
|
|
|
201
202
|
dispose: () => {}
|
|
202
203
|
};
|
|
203
204
|
}
|
|
204
|
-
const headers = [( localize(
|
|
205
|
+
const headers = [( localize(7327, "Name")), ( localize(7328, "Description")), ( localize(7329, "Path"))];
|
|
205
206
|
const rows = ( contributions.map(d => {
|
|
206
207
|
return [d.name ?? "-", d.description ?? "-", d.path];
|
|
207
208
|
}));
|
|
@@ -216,7 +217,7 @@ class ChatPromptFilesDataRenderer extends Disposable {
|
|
|
216
217
|
}
|
|
217
218
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
218
219
|
id: ChatContributionPoint.chatPromptFiles,
|
|
219
|
-
label: ( localize(
|
|
220
|
+
label: ( localize(7330, "Chat Prompt Files")),
|
|
220
221
|
access: {
|
|
221
222
|
canToggle: false
|
|
222
223
|
},
|
|
@@ -224,7 +225,7 @@ class ChatPromptFilesDataRenderer extends Disposable {
|
|
|
224
225
|
});
|
|
225
226
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
226
227
|
id: ChatContributionPoint.chatInstructions,
|
|
227
|
-
label: ( localize(
|
|
228
|
+
label: ( localize(7331, "Chat Instructions")),
|
|
228
229
|
access: {
|
|
229
230
|
canToggle: false
|
|
230
231
|
},
|
|
@@ -232,7 +233,7 @@ class ChatPromptFilesDataRenderer extends Disposable {
|
|
|
232
233
|
});
|
|
233
234
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
234
235
|
id: ChatContributionPoint.chatAgents,
|
|
235
|
-
label: ( localize(
|
|
236
|
+
label: ( localize(7332, "Chat Agents")),
|
|
236
237
|
access: {
|
|
237
238
|
canToggle: false
|
|
238
239
|
},
|
|
@@ -240,7 +241,7 @@ class ChatPromptFilesDataRenderer extends Disposable {
|
|
|
240
241
|
});
|
|
241
242
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
242
243
|
id: ChatContributionPoint.chatSkills,
|
|
243
|
-
label: ( localize(
|
|
244
|
+
label: ( localize(7333, "Chat Skills")),
|
|
244
245
|
access: {
|
|
245
246
|
canToggle: false
|
|
246
247
|
},
|
|
@@ -76,7 +76,7 @@ let PromptCodeActionProvider = class PromptCodeActionProvider {
|
|
|
76
76
|
modeAttr.range.startLineNumber,
|
|
77
77
|
modeAttr.range.startColumn + modeAttr.key.length
|
|
78
78
|
));
|
|
79
|
-
result.push(this.createCodeAction(model, keyRange, ( localize(
|
|
79
|
+
result.push(this.createCodeAction(model, keyRange, ( localize(7377, "Rename to 'agent'")), [asWorkspaceTextEdit(model, {
|
|
80
80
|
range: keyRange,
|
|
81
81
|
text: "agent"
|
|
82
82
|
})]));
|
|
@@ -93,7 +93,7 @@ let PromptCodeActionProvider = class PromptCodeActionProvider {
|
|
|
93
93
|
copy: false
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
|
-
result.push(this.createCodeAction(model, ( new Range(1, 1, 1, 4)), ( localize(
|
|
96
|
+
result.push(this.createCodeAction(model, ( new Range(1, 1, 1, 4)), ( localize(7378, "Migrate to custom agent file")), [edit]));
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
@@ -140,7 +140,7 @@ let PromptCodeActionProvider = class PromptCodeActionProvider {
|
|
|
140
140
|
};
|
|
141
141
|
edits.push(edit);
|
|
142
142
|
if (item.range.containsRange(range)) {
|
|
143
|
-
result.push(this.createCodeAction(model, item.range, ( localize(
|
|
143
|
+
result.push(this.createCodeAction(model, item.range, ( localize(7379, "Update to '{0}'", newName)), [asWorkspaceTextEdit(model, edit)]));
|
|
144
144
|
}
|
|
145
145
|
} else {
|
|
146
146
|
const newNamesArray = Array.from(newNames).sort((a, b) => a.localeCompare(b));
|
|
@@ -159,13 +159,13 @@ let PromptCodeActionProvider = class PromptCodeActionProvider {
|
|
|
159
159
|
};
|
|
160
160
|
edits.push(edit);
|
|
161
161
|
if (item.range.containsRange(range)) {
|
|
162
|
-
result.push(this.createCodeAction(model, item.range, ( localize(
|
|
162
|
+
result.push(this.createCodeAction(model, item.range, ( localize(7380, "Expand to {0} tools", newNames.size)), [asWorkspaceTextEdit(model, edit)]));
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
if (edits.length && result.length === 0 || edits.length > 1) {
|
|
168
|
-
result.push(this.createCodeAction(model, value.range, ( localize(
|
|
168
|
+
result.push(this.createCodeAction(model, value.range, ( localize(7381, "Update all tool names")), ( edits.map(edit => asWorkspaceTextEdit(model, edit)))));
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
};
|