@codingame/monaco-vscode-chat-service-override 33.0.8 → 34.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 +19 -5
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +32 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +77 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +84 -17
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +235 -190
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +3 -2
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +23 -4
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +22 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +107 -8
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +272 -49
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +2 -2
- package/vscode/src/vs/platform/agentHost/common/{agentHostPermissionService.d.ts → agentHostResourceService.d.ts} +26 -0
- package/vscode/src/vs/platform/agentHost/common/{agentHostPermissionService.js → agentHostResourceService.js} +11 -1
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +13 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +26 -18
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +119 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +135 -19
- package/vscode/src/vs/platform/agentHost/common/agentService.js +8 -2
- package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.d.ts +5 -1
- package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.js +85 -22
- package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +36 -0
- package/vscode/src/vs/platform/agentHost/common/customAgents.js +12 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +81 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +103 -0
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +86 -10
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +129 -37
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +12 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +72 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.js +30 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/{reducers.js → channels-session/reducer.js} +99 -168
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +110 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/{errors.d.ts → common/errors.d.ts} +13 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/{errors.js → common/errors.js} +1 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +17 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.js +9 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +33 -8
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +2 -3
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +36 -5
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +6 -3
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +50 -0
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +138 -0
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +3 -3
- package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +12 -0
- package/vscode/src/vs/platform/networkFilter/common/settings.js +14 -0
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +4 -1
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +9 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +21 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +28 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.d.ts +31 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.js +49 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +182 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +784 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +18 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +305 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +120 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +100 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +10 -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 +16 -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 +60 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +106 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +22 -36
- 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 +21 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +38 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +40 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +15 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +23 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +119 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +104 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +177 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +44 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +103 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +9 -7
- 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 +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +38 -28
- 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/aiCustomization/aiCustomizationDebugPanel.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +22 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +15 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +8 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +112 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +62 -68
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +149 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +25 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +13 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +15 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +78 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +140 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +11 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +59 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +440 -357
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +99 -99
- 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 +20 -20
- 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 +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
- 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 +33 -33
- 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/chatEditingEditorAccessibility.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatGoalSummaryService.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatGoalSummaryService.js +115 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +28 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +187 -106
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +41 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +346 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +72 -29
- 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 +26 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +144 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +126 -80
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +32 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +40 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +25 -24
- 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/contextContrib/chatContext.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
- 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/githubRepoFetcher.js +1 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.d.ts +12 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +14 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +56 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +33 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +31 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +16 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +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 +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +24 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +5 -2
- 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/editor/chatInputCompletions.js +22 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +2 -2
- 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 +14 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +55 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.js +47 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +54 -12
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +39 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +40 -4
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +30 -8
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +205 -46
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +153 -38
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +70 -37
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +6 -28
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -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.js +150 -150
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +21 -21
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +21 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +122 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +232 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +65 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +225 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +143 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +205 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +40 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +43 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +260 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +98 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +14 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +226 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +392 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +243 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +54 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +310 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +177 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +102 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +55 -0
- 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.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +31 -9
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +177 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +518 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +297 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +2961 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +63 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +14 -14
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +118 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +223 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +81 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +63 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +349 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +75 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +192 -0
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +89 -0
- package/vscode/src/vs/workbench/services/agentHost/common/{agentHostPermissionService.js → agentHostResourceService.js} +226 -9
- package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +0 -30
- package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.d.ts +0 -119
- package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.js +0 -552
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.d.ts +0 -83
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
3
|
+
import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
3
4
|
|
|
4
5
|
var MarketplaceReferenceKind;
|
|
5
6
|
(function(MarketplaceReferenceKind) {
|
|
@@ -7,22 +8,102 @@ var MarketplaceReferenceKind;
|
|
|
7
8
|
MarketplaceReferenceKind["GitUri"] = "gitUri";
|
|
8
9
|
MarketplaceReferenceKind["LocalFileUri"] = "localFileUri";
|
|
9
10
|
})(MarketplaceReferenceKind || (MarketplaceReferenceKind = {}));
|
|
11
|
+
const _githubShorthandRe = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(?:#.+)?$/;
|
|
12
|
+
function extraKnownMarketplacesToConfigDict(entries) {
|
|
13
|
+
if (!entries?.length) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const obj = {};
|
|
17
|
+
for (const entry of entries) {
|
|
18
|
+
if (typeof entry === "string") {
|
|
19
|
+
obj[entry] = entry;
|
|
20
|
+
} else {
|
|
21
|
+
const s = entry.source;
|
|
22
|
+
const base = s.source === "github" ? s.repo : s.url;
|
|
23
|
+
obj[entry.name] = s.ref ? `${base}#${s.ref}` : base;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return obj;
|
|
27
|
+
}
|
|
28
|
+
function readConfiguredMarketplaces(configurationService) {
|
|
29
|
+
const userValues = configurationService.getValue(ChatConfiguration.PluginMarketplaces) ?? [];
|
|
30
|
+
const extraObj = configurationService.getValue(ChatConfiguration.ExtraMarketplaces) ?? {};
|
|
31
|
+
const extraValues = ( Object.entries(extraObj).map(([name, src]) => {
|
|
32
|
+
const isGithubShorthand = _githubShorthandRe.test(src);
|
|
33
|
+
return isGithubShorthand ? {
|
|
34
|
+
name,
|
|
35
|
+
source: {
|
|
36
|
+
source: "github",
|
|
37
|
+
repo: src
|
|
38
|
+
}
|
|
39
|
+
} : {
|
|
40
|
+
name,
|
|
41
|
+
source: {
|
|
42
|
+
source: "git",
|
|
43
|
+
url: src
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}));
|
|
47
|
+
return {
|
|
48
|
+
userValues,
|
|
49
|
+
extraValues,
|
|
50
|
+
effectiveValues: [...userValues, ...extraValues]
|
|
51
|
+
};
|
|
52
|
+
}
|
|
10
53
|
function parseMarketplaceReferences(values) {
|
|
11
54
|
const byCanonicalId = ( new Map());
|
|
12
55
|
for (const value of values) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
continue;
|
|
56
|
+
let parsed;
|
|
57
|
+
if (typeof value === "string") {
|
|
58
|
+
parsed = parseMarketplaceReference(value);
|
|
59
|
+
} else if (value && typeof value === "object") {
|
|
60
|
+
parsed = parseMarketplaceObjectEntry(value);
|
|
19
61
|
}
|
|
20
|
-
if (!( byCanonicalId.has(parsed.canonicalId))) {
|
|
62
|
+
if (parsed && !( byCanonicalId.has(parsed.canonicalId))) {
|
|
21
63
|
byCanonicalId.set(parsed.canonicalId, parsed);
|
|
22
64
|
}
|
|
23
65
|
}
|
|
24
66
|
return [...( byCanonicalId.values())];
|
|
25
67
|
}
|
|
68
|
+
function parseMarketplaceObjectEntry(entry) {
|
|
69
|
+
let sourceType;
|
|
70
|
+
let repo;
|
|
71
|
+
let url;
|
|
72
|
+
let ref;
|
|
73
|
+
if (entry.source && typeof entry.source === "object") {
|
|
74
|
+
const nested = entry.source;
|
|
75
|
+
sourceType = nested.source;
|
|
76
|
+
repo = nested.repo;
|
|
77
|
+
url = nested.url;
|
|
78
|
+
ref = nested.ref;
|
|
79
|
+
} else {
|
|
80
|
+
sourceType = entry.source;
|
|
81
|
+
repo = entry.repo;
|
|
82
|
+
url = entry.url;
|
|
83
|
+
ref = entry.ref;
|
|
84
|
+
}
|
|
85
|
+
let parsed;
|
|
86
|
+
if (sourceType === "github" && typeof repo === "string") {
|
|
87
|
+
parsed = parseMarketplaceReference(appendMarketplaceRef(repo, ref));
|
|
88
|
+
} else if (sourceType === "git" && typeof url === "string") {
|
|
89
|
+
parsed = parseMarketplaceReference(appendMarketplaceRef(url, ref));
|
|
90
|
+
}
|
|
91
|
+
if (parsed && typeof entry.name === "string" && entry.name.length > 0) {
|
|
92
|
+
parsed = {
|
|
93
|
+
...parsed,
|
|
94
|
+
displayLabel: entry.name
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return parsed;
|
|
98
|
+
}
|
|
99
|
+
function appendMarketplaceRef(value, ref) {
|
|
100
|
+
if (!ref) {
|
|
101
|
+
return value;
|
|
102
|
+
}
|
|
103
|
+
const fragmentIndex = value.indexOf("#");
|
|
104
|
+
const base = fragmentIndex === -1 ? value : value.slice(0, fragmentIndex);
|
|
105
|
+
return `${base}#${ref}`;
|
|
106
|
+
}
|
|
26
107
|
function deduplicateMarketplaceReferences(primary, secondary) {
|
|
27
108
|
const byCanonicalId = ( new Map());
|
|
28
109
|
for (const ref of primary) {
|
|
@@ -48,17 +129,19 @@ function parseMarketplaceReference(value) {
|
|
|
48
129
|
if (scpReference) {
|
|
49
130
|
return scpReference;
|
|
50
131
|
}
|
|
51
|
-
const shorthandMatch = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)
|
|
132
|
+
const shorthandMatch = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)(?:#(.+))?$/.exec(rawValue);
|
|
52
133
|
if (shorthandMatch) {
|
|
53
134
|
const owner = shorthandMatch[1];
|
|
54
135
|
const repo = shorthandMatch[2];
|
|
136
|
+
const ref = shorthandMatch[3];
|
|
55
137
|
return {
|
|
56
138
|
rawValue,
|
|
57
|
-
displayLabel:
|
|
139
|
+
displayLabel: rawValue,
|
|
58
140
|
cloneUrl: `https://github.com/${owner}/${repo}.git`,
|
|
59
|
-
canonicalId: getGitHubCanonicalId(owner, repo),
|
|
60
|
-
cacheSegments: ["github.com", owner, repo],
|
|
141
|
+
canonicalId: getGitHubCanonicalId(owner, repo, ref),
|
|
142
|
+
cacheSegments: ["github.com", owner, repo, ...getRefCacheSegments(ref)],
|
|
61
143
|
kind: MarketplaceReferenceKind.GitHubShorthand,
|
|
144
|
+
ref,
|
|
62
145
|
githubRepo: `${owner}/${repo}`
|
|
63
146
|
};
|
|
64
147
|
}
|
|
@@ -73,6 +156,9 @@ function parseUriMarketplaceReference(rawValue) {
|
|
|
73
156
|
}
|
|
74
157
|
const scheme = uri.scheme.toLowerCase();
|
|
75
158
|
if (scheme === "file" && /^file:\/\//i.test(rawValue)) {
|
|
159
|
+
if (uri.fragment) {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
76
162
|
const localRepositoryUri = URI.file(uri.fsPath);
|
|
77
163
|
return {
|
|
78
164
|
rawValue,
|
|
@@ -90,61 +176,84 @@ function parseUriMarketplaceReference(rawValue) {
|
|
|
90
176
|
if (!uri.authority) {
|
|
91
177
|
return undefined;
|
|
92
178
|
}
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
179
|
+
const ref = uri.fragment || undefined;
|
|
180
|
+
const cloneUri = uri.fragment ? uri.with({
|
|
181
|
+
fragment: ""
|
|
182
|
+
}) : uri;
|
|
183
|
+
const sanitizedAuthority = sanitizePathSegment(uri.authority.toLowerCase());
|
|
184
|
+
const trimmedPath = uri.path.replace(/\/+/g, "/").replace(/\/+$/g, "").replace(/^\/+/, "");
|
|
185
|
+
if (!trimmedPath) {
|
|
186
|
+
return {
|
|
187
|
+
rawValue,
|
|
188
|
+
displayLabel: rawValue,
|
|
189
|
+
cloneUrl: ( cloneUri.toString()),
|
|
190
|
+
canonicalId: appendRefSuffix(`git:${uri.authority.toLowerCase()}/`, ref),
|
|
191
|
+
cacheSegments: [sanitizedAuthority, ...getRefCacheSegments(ref)],
|
|
192
|
+
kind: MarketplaceReferenceKind.GitUri,
|
|
193
|
+
ref
|
|
194
|
+
};
|
|
96
195
|
}
|
|
97
196
|
const gitSuffix = ".git";
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
const pathWithoutGit = pathHasGitSuffix ? normalizedPath.slice(1, normalizedPath.length - gitSuffix.length) : normalizedPath.slice(1);
|
|
197
|
+
const pathHasGitSuffix = trimmedPath.toLowerCase().endsWith(gitSuffix);
|
|
198
|
+
const pathWithoutGit = pathHasGitSuffix ? trimmedPath.slice(0, trimmedPath.length - gitSuffix.length) : trimmedPath;
|
|
101
199
|
const pathSegments = ( pathWithoutGit.split("/").map(sanitizePathSegment));
|
|
102
|
-
const canonicalPath = pathHasGitSuffix ?
|
|
200
|
+
const canonicalPath = pathHasGitSuffix ? trimmedPath.toLowerCase() : `${trimmedPath.toLowerCase()}${gitSuffix}`;
|
|
103
201
|
const githubRepo = extractGitHubRepo(uri.authority, pathWithoutGit);
|
|
202
|
+
let canonicalId;
|
|
203
|
+
if (githubRepo) {
|
|
204
|
+
const [owner, repo] = githubRepo.split("/");
|
|
205
|
+
canonicalId = getGitHubCanonicalId(owner, repo, ref);
|
|
206
|
+
} else {
|
|
207
|
+
canonicalId = appendRefSuffix(`git:${uri.authority.toLowerCase()}/${canonicalPath}`, ref);
|
|
208
|
+
}
|
|
104
209
|
return {
|
|
105
210
|
rawValue,
|
|
106
211
|
displayLabel: rawValue,
|
|
107
|
-
cloneUrl:
|
|
108
|
-
canonicalId
|
|
109
|
-
cacheSegments: [sanitizedAuthority, ...pathSegments],
|
|
212
|
+
cloneUrl: ( cloneUri.toString()),
|
|
213
|
+
canonicalId,
|
|
214
|
+
cacheSegments: [sanitizedAuthority, ...pathSegments, ...getRefCacheSegments(ref)],
|
|
110
215
|
kind: MarketplaceReferenceKind.GitUri,
|
|
216
|
+
ref,
|
|
111
217
|
githubRepo
|
|
112
218
|
};
|
|
113
219
|
}
|
|
114
220
|
function parseScpMarketplaceReference(rawValue) {
|
|
115
|
-
const match = /^([^@\s]+)@([^:\s]+):(
|
|
221
|
+
const match = /^([^@\s]+)@([^:\s]+):(.+?\.git)(?:#(.+))?$/i.exec(rawValue);
|
|
116
222
|
if (!match) {
|
|
117
223
|
return undefined;
|
|
118
224
|
}
|
|
119
225
|
const gitSuffix = ".git";
|
|
120
226
|
const authority = match[2];
|
|
121
227
|
const pathWithGit = match[3].replace(/^\/+/, "");
|
|
228
|
+
const ref = match[4];
|
|
122
229
|
if (!pathWithGit.toLowerCase().endsWith(gitSuffix)) {
|
|
123
230
|
return undefined;
|
|
124
231
|
}
|
|
125
232
|
const pathWithoutGit = pathWithGit.slice(0, -gitSuffix.length);
|
|
126
233
|
const pathSegments = ( pathWithoutGit.split("/").map(sanitizePathSegment));
|
|
127
234
|
const githubRepo = extractGitHubRepo(authority, pathWithoutGit);
|
|
235
|
+
let canonicalId;
|
|
236
|
+
if (githubRepo) {
|
|
237
|
+
const [owner, repo] = githubRepo.split("/");
|
|
238
|
+
canonicalId = getGitHubCanonicalId(owner, repo, ref);
|
|
239
|
+
} else {
|
|
240
|
+
canonicalId = appendRefSuffix(`git:${authority.toLowerCase()}/${pathWithGit.toLowerCase()}`, ref);
|
|
241
|
+
}
|
|
128
242
|
return {
|
|
129
243
|
rawValue,
|
|
130
244
|
displayLabel: rawValue,
|
|
131
|
-
cloneUrl:
|
|
132
|
-
canonicalId
|
|
133
|
-
cacheSegments: [
|
|
245
|
+
cloneUrl: `${match[1]}@${authority}:${pathWithGit}`,
|
|
246
|
+
canonicalId,
|
|
247
|
+
cacheSegments: [
|
|
248
|
+
sanitizePathSegment(authority.toLowerCase()),
|
|
249
|
+
...pathSegments,
|
|
250
|
+
...getRefCacheSegments(ref)
|
|
251
|
+
],
|
|
134
252
|
kind: MarketplaceReferenceKind.GitUri,
|
|
253
|
+
ref,
|
|
135
254
|
githubRepo
|
|
136
255
|
};
|
|
137
256
|
}
|
|
138
|
-
function normalizeGitRepoPath(path) {
|
|
139
|
-
const gitSuffix = ".git";
|
|
140
|
-
const trimmed = path.replace(/\/+/g, "/").replace(/\/+$/g, "");
|
|
141
|
-
const withLeadingSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
|
|
142
|
-
const pathWithoutGit = withLeadingSlash.toLowerCase().endsWith(gitSuffix) ? withLeadingSlash.slice(1, withLeadingSlash.length - gitSuffix.length) : withLeadingSlash.slice(1);
|
|
143
|
-
if (!pathWithoutGit || !pathWithoutGit.includes("/")) {
|
|
144
|
-
return undefined;
|
|
145
|
-
}
|
|
146
|
-
return withLeadingSlash;
|
|
147
|
-
}
|
|
148
257
|
function extractGitHubRepo(authority, pathWithoutGit) {
|
|
149
258
|
if (authority.toLowerCase() !== "github.com") {
|
|
150
259
|
return undefined;
|
|
@@ -155,11 +264,17 @@ function extractGitHubRepo(authority, pathWithoutGit) {
|
|
|
155
264
|
}
|
|
156
265
|
return undefined;
|
|
157
266
|
}
|
|
158
|
-
function getGitHubCanonicalId(owner, repo) {
|
|
159
|
-
return `github:${owner.toLowerCase()}/${repo.toLowerCase()}
|
|
267
|
+
function getGitHubCanonicalId(owner, repo, ref) {
|
|
268
|
+
return appendRefSuffix(`github:${owner.toLowerCase()}/${repo.toLowerCase()}`, ref);
|
|
269
|
+
}
|
|
270
|
+
function appendRefSuffix(canonicalId, ref) {
|
|
271
|
+
return ref ? `${canonicalId}#${encodeURIComponent(ref)}` : canonicalId;
|
|
272
|
+
}
|
|
273
|
+
function getRefCacheSegments(ref) {
|
|
274
|
+
return ref ? [`ref_${encodeURIComponent(ref)}`] : [];
|
|
160
275
|
}
|
|
161
276
|
function sanitizePathSegment(value) {
|
|
162
277
|
return value.replace(/[\\/:*?"<>|]/g, "_");
|
|
163
278
|
}
|
|
164
279
|
|
|
165
|
-
export { MarketplaceReferenceKind, deduplicateMarketplaceReferences, parseMarketplaceReference, parseMarketplaceReferences };
|
|
280
|
+
export { MarketplaceReferenceKind, deduplicateMarketplaceReferences, extraKnownMarketplacesToConfigDict, parseMarketplaceObjectEntry, parseMarketplaceReference, parseMarketplaceReferences, readConfiguredMarketplaces };
|
|
@@ -9,13 +9,14 @@ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/fi
|
|
|
9
9
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
10
10
|
import { IRequestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request.service";
|
|
11
11
|
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
12
|
+
import { IExtensionsWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service";
|
|
12
13
|
import { IAgentPluginRepositoryService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.service";
|
|
13
14
|
import { IWorkspacePluginSettingsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.service";
|
|
14
15
|
import { IWorkspaceTrustManagementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service";
|
|
15
16
|
import { type IMarketplaceReference } from "./marketplaceReference.js";
|
|
16
17
|
import { IPluginMarketplaceService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.service";
|
|
17
|
-
export { deduplicateMarketplaceReferences, MarketplaceReferenceKind, parseMarketplaceReference, parseMarketplaceReferences } from "./marketplaceReference.js";
|
|
18
|
-
export type { IMarketplaceReference } from "./marketplaceReference.js";
|
|
18
|
+
export { deduplicateMarketplaceReferences, extraKnownMarketplacesToConfigDict, MarketplaceReferenceKind, parseMarketplaceReference, parseMarketplaceReferences, readConfiguredMarketplaces } from "./marketplaceReference.js";
|
|
19
|
+
export type { IConfiguredMarketplaces, IMarketplaceReference } from "./marketplaceReference.js";
|
|
19
20
|
export declare enum MarketplaceType {
|
|
20
21
|
Copilot = "copilot",
|
|
21
22
|
Claude = "claude",
|
|
@@ -46,6 +47,8 @@ export interface IGitUrlPluginSource {
|
|
|
46
47
|
readonly url: string;
|
|
47
48
|
readonly ref?: string;
|
|
48
49
|
readonly sha?: string;
|
|
50
|
+
/** Subdirectory within the repository where the plugin lives (for `git-subdir` sources). */
|
|
51
|
+
readonly path?: string;
|
|
49
52
|
}
|
|
50
53
|
export interface INpmPluginSource {
|
|
51
54
|
readonly kind: PluginSourceKind.Npm;
|
|
@@ -101,6 +104,7 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
101
104
|
private readonly _storageService;
|
|
102
105
|
private readonly _workspacePluginSettingsService;
|
|
103
106
|
private readonly _workspaceTrustService;
|
|
107
|
+
private readonly _extensionsWorkbenchService;
|
|
104
108
|
readonly _serviceBrand: undefined;
|
|
105
109
|
private readonly _gitHubMarketplaceCache;
|
|
106
110
|
private readonly _installedPluginsStore;
|
|
@@ -114,7 +118,7 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
114
118
|
readonly hasUpdatesAvailable: IObservable<boolean>;
|
|
115
119
|
readonly lastFetchedPlugins: IObservable<readonly IMarketplacePlugin[]>;
|
|
116
120
|
readonly recommendedPlugins: IObservable<ReadonlySet<string>>;
|
|
117
|
-
constructor(_configurationService: IConfigurationService, _requestService: IRequestService, environmentService: IEnvironmentService, _fileService: IFileService, _pluginRepositoryService: IAgentPluginRepositoryService, _logService: ILogService, _storageService: IStorageService, _workspacePluginSettingsService: IWorkspacePluginSettingsService, _workspaceTrustService: IWorkspaceTrustManagementService);
|
|
121
|
+
constructor(_configurationService: IConfigurationService, _requestService: IRequestService, environmentService: IEnvironmentService, _fileService: IFileService, _pluginRepositoryService: IAgentPluginRepositoryService, _logService: ILogService, _storageService: IStorageService, _workspacePluginSettingsService: IWorkspacePluginSettingsService, _workspaceTrustService: IWorkspaceTrustManagementService, _extensionsWorkbenchService: IExtensionsWorkbenchService);
|
|
118
122
|
dispose(): void;
|
|
119
123
|
clearUpdatesAvailable(): void;
|
|
120
124
|
fetchMarketplacePlugins(token: CancellationToken): Promise<IMarketplacePlugin[]>;
|
|
@@ -127,16 +131,17 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
|
|
|
127
131
|
removeInstalledPlugin(pluginUri: URI): void;
|
|
128
132
|
isMarketplaceTrusted(ref: IMarketplaceReference): boolean;
|
|
129
133
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
+
* Hydrates installed entries from marketplace metadata. Entries written
|
|
135
|
+
* by current builds include the marketplace plugin name, which is enough
|
|
136
|
+
* to re-read the full plugin descriptor from the marketplace source. Old
|
|
137
|
+
* entries without a name fall back to matching by install URI.
|
|
134
138
|
*
|
|
135
139
|
* After hydration completes the installed-plugins store is "touched" so
|
|
136
140
|
* that the derived {@link installedPlugins} observable re-evaluates with
|
|
137
141
|
* the newly available metadata.
|
|
138
142
|
*/
|
|
139
143
|
private _hydratePluginMetadata;
|
|
144
|
+
private _readPluginsForInstalledEntry;
|
|
140
145
|
/**
|
|
141
146
|
* Shared logic to parse a marketplace.json into {@link IMarketplacePlugin}
|
|
142
147
|
* objects. Used by both fetch and hydration paths.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { runWhenGlobalIdle } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
|
+
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
4
5
|
import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
6
|
import { parse } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
|
|
6
7
|
import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
|
|
@@ -19,12 +20,14 @@ import { IRequestService } from '@codingame/monaco-vscode-api/vscode/vs/platform
|
|
|
19
20
|
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
20
21
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
21
22
|
import { AutoUpdateConfigurationKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions';
|
|
23
|
+
import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service';
|
|
22
24
|
import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
23
25
|
import { IAgentPluginRepositoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.service';
|
|
24
26
|
import { FileBackedInstalledPluginsStore } from './fileBackedInstalledPluginsStore.js';
|
|
25
27
|
import { IWorkspacePluginSettingsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.service';
|
|
26
28
|
import { IWorkspaceTrustManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service';
|
|
27
|
-
import { parseMarketplaceReferences, deduplicateMarketplaceReferences, parseMarketplaceReference, MarketplaceReferenceKind } from './marketplaceReference.js';
|
|
29
|
+
import { readConfiguredMarketplaces, parseMarketplaceReferences, deduplicateMarketplaceReferences, parseMarketplaceReference, parseMarketplaceObjectEntry, MarketplaceReferenceKind } from './marketplaceReference.js';
|
|
30
|
+
export { extraKnownMarketplacesToConfigDict } from './marketplaceReference.js';
|
|
28
31
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
29
32
|
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
30
33
|
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
@@ -120,7 +123,8 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
120
123
|
_logService,
|
|
121
124
|
_storageService,
|
|
122
125
|
_workspacePluginSettingsService,
|
|
123
|
-
_workspaceTrustService
|
|
126
|
+
_workspaceTrustService,
|
|
127
|
+
_extensionsWorkbenchService
|
|
124
128
|
) {
|
|
125
129
|
super();
|
|
126
130
|
this._configurationService = _configurationService;
|
|
@@ -131,6 +135,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
131
135
|
this._storageService = _storageService;
|
|
132
136
|
this._workspacePluginSettingsService = _workspacePluginSettingsService;
|
|
133
137
|
this._workspaceTrustService = _workspaceTrustService;
|
|
138
|
+
this._extensionsWorkbenchService = _extensionsWorkbenchService;
|
|
134
139
|
this._gitHubMarketplaceCache = ( new Lazy(() => this._loadPersistedGitHubMarketplaceCache()));
|
|
135
140
|
this._pluginMetadata = ( new Map());
|
|
136
141
|
this._hasUpdatesAvailable = observableValue("hasUpdatesAvailable", false);
|
|
@@ -186,7 +191,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
186
191
|
});
|
|
187
192
|
this.onDidChangeMarketplaces = Event.any(Event.filter(
|
|
188
193
|
_configurationService.onDidChangeConfiguration,
|
|
189
|
-
e => e.affectsConfiguration(ChatConfiguration.PluginsEnabled) || e.affectsConfiguration(ChatConfiguration.PluginMarketplaces)
|
|
194
|
+
e => e.affectsConfiguration(ChatConfiguration.PluginsEnabled) || e.affectsConfiguration(ChatConfiguration.PluginMarketplaces) || e.affectsConfiguration(ChatConfiguration.ExtraMarketplaces)
|
|
190
195
|
), Event.fromObservableLight(this._workspacePluginSettingsService.extraMarketplaces), ( Event.map(this._workspaceTrustService.onDidChangeTrust, () => {})));
|
|
191
196
|
this._register(runWhenGlobalIdle(() => {
|
|
192
197
|
this._scheduleUpdateCheck();
|
|
@@ -217,8 +222,10 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
217
222
|
if (!this._configurationService.getValue(ChatConfiguration.PluginsEnabled)) {
|
|
218
223
|
return [];
|
|
219
224
|
}
|
|
220
|
-
const
|
|
221
|
-
|
|
225
|
+
const {
|
|
226
|
+
effectiveValues
|
|
227
|
+
} = readConfiguredMarketplaces(this._configurationService);
|
|
228
|
+
const configRefs = parseMarketplaceReferences(effectiveValues);
|
|
222
229
|
let allRefs;
|
|
223
230
|
if (this._workspaceTrustService.isWorkspaceTrusted()) {
|
|
224
231
|
const workspaceEntries = this._workspacePluginSettingsService.extraMarketplaces.get();
|
|
@@ -226,8 +233,9 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
226
233
|
} else {
|
|
227
234
|
allRefs = configRefs;
|
|
228
235
|
}
|
|
229
|
-
for (const value of
|
|
230
|
-
|
|
236
|
+
for (const value of effectiveValues) {
|
|
237
|
+
const parsed = typeof value === "string" ? parseMarketplaceReference(value) : (value && typeof value === "object" ? parseMarketplaceObjectEntry(value) : undefined);
|
|
238
|
+
if (!parsed) {
|
|
231
239
|
this._logService.debug(
|
|
232
240
|
`[PluginMarketplaceService] Ignoring invalid marketplace entry: ${String(value)}`
|
|
233
241
|
);
|
|
@@ -261,7 +269,8 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
261
269
|
if (token.isCancellationRequested) {
|
|
262
270
|
return undefined;
|
|
263
271
|
}
|
|
264
|
-
const
|
|
272
|
+
const ref = encodeURIComponent(reference.ref ?? "main");
|
|
273
|
+
const url = `https://raw.githubusercontent.com/${repo}/${ref}/${defPath}`;
|
|
265
274
|
try {
|
|
266
275
|
const context = await this._requestService.request({
|
|
267
276
|
type: "GET",
|
|
@@ -372,18 +381,17 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
372
381
|
}
|
|
373
382
|
addInstalledPlugin(pluginUri, plugin) {
|
|
374
383
|
this._pluginMetadata.set(( pluginUri.toString()), plugin);
|
|
384
|
+
const entry = {
|
|
385
|
+
pluginUri,
|
|
386
|
+
marketplace: plugin.marketplaceReference.rawValue,
|
|
387
|
+
name: plugin.name
|
|
388
|
+
};
|
|
375
389
|
const current = this._installedPluginsStore.get();
|
|
376
390
|
const existing = current.find(e => isEqual(e.pluginUri, pluginUri));
|
|
377
391
|
if (existing) {
|
|
378
|
-
this._installedPluginsStore.set(( current.map(c => c === existing ?
|
|
379
|
-
pluginUri,
|
|
380
|
-
marketplace: plugin.marketplaceReference.rawValue
|
|
381
|
-
} : c)), undefined);
|
|
392
|
+
this._installedPluginsStore.set(( current.map(c => c === existing ? entry : c)), undefined);
|
|
382
393
|
} else {
|
|
383
|
-
this._installedPluginsStore.set([...current,
|
|
384
|
-
pluginUri,
|
|
385
|
-
marketplace: plugin.marketplaceReference.rawValue
|
|
386
|
-
}], undefined);
|
|
394
|
+
this._installedPluginsStore.set([...current, entry], undefined);
|
|
387
395
|
}
|
|
388
396
|
}
|
|
389
397
|
removeInstalledPlugin(pluginUri) {
|
|
@@ -392,6 +400,10 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
392
400
|
this._installedPluginsStore.set(current.filter(e => !isEqual(e.pluginUri, pluginUri)), undefined);
|
|
393
401
|
}
|
|
394
402
|
isMarketplaceTrusted(ref) {
|
|
403
|
+
if (this._configurationService.getValue(ChatConfiguration.StrictMarketplaces)) {
|
|
404
|
+
const refs = parseMarketplaceReferences(readConfiguredMarketplaces(this._configurationService).extraValues);
|
|
405
|
+
return ( refs.some(r => r.canonicalId === ref.canonicalId));
|
|
406
|
+
}
|
|
395
407
|
return this._trustedMarketplacesStore.get().includes(ref.canonicalId);
|
|
396
408
|
}
|
|
397
409
|
async _hydratePluginMetadata(entries) {
|
|
@@ -409,18 +421,10 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
409
421
|
continue;
|
|
410
422
|
}
|
|
411
423
|
try {
|
|
412
|
-
const
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
if (single) {
|
|
417
|
-
plugins = [single];
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
const match = plugins.find(p => {
|
|
421
|
-
const installUri = this._pluginRepositoryService.getPluginInstallUri(p);
|
|
422
|
-
return isEqual(installUri, entry.pluginUri);
|
|
423
|
-
});
|
|
424
|
+
const plugins = await this._readPluginsForInstalledEntry(reference, CancellationToken.None);
|
|
425
|
+
const match = plugins.find(
|
|
426
|
+
p => entry.name ? p.name === entry.name : isEqual(this._pluginRepositoryService.getPluginInstallUri(p), entry.pluginUri)
|
|
427
|
+
);
|
|
424
428
|
if (match) {
|
|
425
429
|
this._pluginMetadata.set(key, match);
|
|
426
430
|
hydrated++;
|
|
@@ -434,6 +438,20 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
434
438
|
this._installedPluginsStore.set([...current], undefined);
|
|
435
439
|
}
|
|
436
440
|
}
|
|
441
|
+
async _readPluginsForInstalledEntry(reference, token) {
|
|
442
|
+
if (reference.kind === MarketplaceReferenceKind.GitHubShorthand && reference.githubRepo) {
|
|
443
|
+
return this._fetchFromGitHubRepo(reference, reference.githubRepo, token);
|
|
444
|
+
}
|
|
445
|
+
const repoDir = this._pluginRepositoryService.getRepositoryUri(reference);
|
|
446
|
+
let plugins = await this._readPluginsFromDirectory(repoDir, reference, token);
|
|
447
|
+
if (plugins.length === 0) {
|
|
448
|
+
const single = await this.readSinglePluginManifest(repoDir, reference);
|
|
449
|
+
if (single) {
|
|
450
|
+
plugins = [single];
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return plugins;
|
|
454
|
+
}
|
|
437
455
|
_parseMarketplacePlugins(json, reference, marketplaceType, repoDir) {
|
|
438
456
|
if (!json.plugins || !Array.isArray(json.plugins)) {
|
|
439
457
|
return [];
|
|
@@ -468,7 +486,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
468
486
|
}
|
|
469
487
|
}
|
|
470
488
|
_isAutoUpdateEnabled() {
|
|
471
|
-
return this.
|
|
489
|
+
return this._extensionsWorkbenchService.getAutoUpdateValue() === true;
|
|
472
490
|
}
|
|
473
491
|
_scheduleUpdateCheck() {
|
|
474
492
|
if (this._updateCheckTimer !== undefined) {
|
|
@@ -615,7 +633,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
|
|
|
615
633
|
return [];
|
|
616
634
|
}
|
|
617
635
|
};
|
|
618
|
-
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));
|
|
636
|
+
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)), ( __param(9, IExtensionsWorkbenchService))], PluginMarketplaceService));
|
|
619
637
|
function normalizeMarketplacePath(value) {
|
|
620
638
|
let normalized = value.trim().replace(/\\/g, "/");
|
|
621
639
|
normalized = normalized.replace(/^\.?\/+/, "").replace(/\/+$/g, "");
|
|
@@ -701,14 +719,15 @@ function parsePluginSource(rawSource, pluginRoot, logContext) {
|
|
|
701
719
|
};
|
|
702
720
|
}
|
|
703
721
|
case "url":
|
|
722
|
+
case "git-subdir":
|
|
704
723
|
{
|
|
705
724
|
if (typeof rawSource.url !== "string" || !rawSource.url) {
|
|
706
725
|
logContext.logService.warn(
|
|
707
|
-
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}':
|
|
726
|
+
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': ${rawSource.source} source is missing required 'url' field`
|
|
708
727
|
);
|
|
709
728
|
return undefined;
|
|
710
729
|
}
|
|
711
|
-
if (!rawSource.url.toLowerCase().endsWith(".git")) {
|
|
730
|
+
if (rawSource.source === "url" && !rawSource.url.toLowerCase().endsWith(".git")) {
|
|
712
731
|
logContext.logService.warn(
|
|
713
732
|
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source must end with '.git'`
|
|
714
733
|
);
|
|
@@ -716,13 +735,26 @@ function parsePluginSource(rawSource, pluginRoot, logContext) {
|
|
|
716
735
|
}
|
|
717
736
|
if (!isOptionalString(rawSource.ref)) {
|
|
718
737
|
logContext.logService.warn(
|
|
719
|
-
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}':
|
|
738
|
+
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': ${rawSource.source} source 'ref' must be a string when provided`
|
|
720
739
|
);
|
|
721
740
|
return undefined;
|
|
722
741
|
}
|
|
723
742
|
if (!isOptionalGitSha(rawSource.sha)) {
|
|
724
743
|
logContext.logService.warn(
|
|
725
|
-
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}':
|
|
744
|
+
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': ${rawSource.source} source 'sha' must be a full 40-character commit hash when provided`
|
|
745
|
+
);
|
|
746
|
+
return undefined;
|
|
747
|
+
}
|
|
748
|
+
if (rawSource.source === "git-subdir") {
|
|
749
|
+
if (typeof rawSource.path !== "string" || !rawSource.path) {
|
|
750
|
+
logContext.logService.warn(
|
|
751
|
+
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': git-subdir source is missing required 'path' field`
|
|
752
|
+
);
|
|
753
|
+
return undefined;
|
|
754
|
+
}
|
|
755
|
+
} else if (!isOptionalString(rawSource.path)) {
|
|
756
|
+
logContext.logService.warn(
|
|
757
|
+
`${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source 'path' must be a string when provided`
|
|
726
758
|
);
|
|
727
759
|
return undefined;
|
|
728
760
|
}
|
|
@@ -730,7 +762,8 @@ function parsePluginSource(rawSource, pluginRoot, logContext) {
|
|
|
730
762
|
kind: PluginSourceKind.GitUrl,
|
|
731
763
|
url: rawSource.url,
|
|
732
764
|
ref: rawSource.ref,
|
|
733
|
-
sha: rawSource.sha
|
|
765
|
+
sha: rawSource.sha,
|
|
766
|
+
path: rawSource.path
|
|
734
767
|
};
|
|
735
768
|
}
|
|
736
769
|
case "npm":
|
|
@@ -799,7 +832,7 @@ function hasSourceChanged(installed, marketplace) {
|
|
|
799
832
|
case PluginSourceKind.GitHub:
|
|
800
833
|
return installed.ref !== marketplace.ref || installed.sha !== marketplace.sha || installed.path !== marketplace.path;
|
|
801
834
|
case PluginSourceKind.GitUrl:
|
|
802
|
-
return installed.ref !== marketplace.ref || installed.sha !== marketplace.sha;
|
|
835
|
+
return installed.ref !== marketplace.ref || installed.sha !== marketplace.sha || installed.path !== marketplace.path;
|
|
803
836
|
case PluginSourceKind.Npm:
|
|
804
837
|
return installed.version !== marketplace.version;
|
|
805
838
|
case PluginSourceKind.Pip:
|
|
@@ -818,4 +851,4 @@ function getMarketplaceReadmeFileUri(repoDir, source) {
|
|
|
818
851
|
return normalizedSource ? joinPath(repoDir, normalizedSource, "README.md") : joinPath(repoDir, "README.md");
|
|
819
852
|
}
|
|
820
853
|
|
|
821
|
-
export { MarketplaceReferenceKind, MarketplaceType, PluginMarketplaceService, PluginSourceKind, deduplicateMarketplaceReferences, hasSourceChanged, parseMarketplaceReference, parseMarketplaceReferences, parsePluginSource };
|
|
854
|
+
export { MarketplaceReferenceKind, MarketplaceType, PluginMarketplaceService, PluginSourceKind, deduplicateMarketplaceReferences, hasSourceChanged, parseMarketplaceReference, parseMarketplaceReferences, parsePluginSource, readConfiguredMarketplaces };
|
package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js
CHANGED
|
@@ -9,7 +9,7 @@ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/fi
|
|
|
9
9
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
10
10
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
11
11
|
import { CLAUDE_CONFIG_FOLDER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
|
|
12
|
-
import {
|
|
12
|
+
import { parseMarketplaceObjectEntry } from './marketplaceReference.js';
|
|
13
13
|
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
14
14
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
15
15
|
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
@@ -18,28 +18,6 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
|
|
|
18
18
|
const SETTINGS_FILENAME = "settings.json";
|
|
19
19
|
const SETTINGS_LOCAL_FILENAME = "settings.local.json";
|
|
20
20
|
const COPILOT_CONFIG_FOLDER = ".github/copilot";
|
|
21
|
-
function marketplaceEntryToReference(entry) {
|
|
22
|
-
let sourceType;
|
|
23
|
-
let repo;
|
|
24
|
-
let url;
|
|
25
|
-
if (typeof entry.source === "object" && entry.source !== null) {
|
|
26
|
-
const nested = entry.source;
|
|
27
|
-
sourceType = nested.source;
|
|
28
|
-
repo = nested.repo;
|
|
29
|
-
url = nested.url;
|
|
30
|
-
} else {
|
|
31
|
-
sourceType = entry.source;
|
|
32
|
-
repo = entry.repo;
|
|
33
|
-
url = entry.url;
|
|
34
|
-
}
|
|
35
|
-
if (sourceType === "github" && typeof repo === "string") {
|
|
36
|
-
return parseMarketplaceReference(repo);
|
|
37
|
-
}
|
|
38
|
-
if (sourceType === "git" && typeof url === "string") {
|
|
39
|
-
return parseMarketplaceReference(url);
|
|
40
|
-
}
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
21
|
function parseEnabledPlugins(json) {
|
|
44
22
|
const result = ( new Map());
|
|
45
23
|
if (!json || typeof json !== "object" || Array.isArray(json)) {
|
|
@@ -64,17 +42,17 @@ function parseExtraMarketplaces(json, logPrefix, logService) {
|
|
|
64
42
|
logService.debug(`${logPrefix} Ignoring non-object extraKnownMarketplaces entry: ${name}`);
|
|
65
43
|
continue;
|
|
66
44
|
}
|
|
67
|
-
const reference =
|
|
45
|
+
const reference = parseMarketplaceObjectEntry({
|
|
46
|
+
...value,
|
|
47
|
+
name
|
|
48
|
+
});
|
|
68
49
|
if (!reference) {
|
|
69
50
|
logService.debug(`${logPrefix} Could not parse marketplace reference for: ${name}`);
|
|
70
51
|
continue;
|
|
71
52
|
}
|
|
72
53
|
entries.push({
|
|
73
54
|
name,
|
|
74
|
-
reference
|
|
75
|
-
...reference,
|
|
76
|
-
displayLabel: name
|
|
77
|
-
}
|
|
55
|
+
reference
|
|
78
56
|
});
|
|
79
57
|
}
|
|
80
58
|
return entries;
|