@codingame/monaco-vscode-chat-service-override 32.0.2 → 33.0.4
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.d.ts +1 -1
- package/index.js +15 -5
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +170 -24
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +372 -66
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +18 -1
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +160 -31
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.d.ts +8 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +19 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +134 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +257 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +84 -3
- package/vscode/src/vs/platform/agentHost/common/agentService.js +9 -1
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +61 -1
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +61 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.js +3 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +4 -4
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +1 -1
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +2 -7
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +8 -29
- 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 +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +10 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +180 -174
- 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 +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +12 -12
- 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 +64 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +330 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +77 -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.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +267 -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 +53 -53
- 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.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -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/agentSessions/localAgentSessionsController.js +26 -0
- 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 +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +150 -119
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +45 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +58 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +25 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +2 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +88 -70
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +82 -56
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +2 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +89 -71
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -2843
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +2934 -0
- 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/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 +4 -4
- 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/chatImageCarouselService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +53 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +131 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +23 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +91 -15
- 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/chatSetupContributions.js +23 -21
- 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 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +15 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +203 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +31 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +88 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +17 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +91 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.js +82 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.d.ts +21 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +55 -18
- 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/hasByokModelsContribution.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +106 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +4 -2
- 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 +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +59 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +25 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +6 -6
- 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.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 +4 -6
- 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.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +38 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.js +106 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +75 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/{toolInvocationParts/chatToolOutputStateCache.d.ts → chatOutputPartStateCache.d.ts} +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/{toolInvocationParts/chatToolOutputStateCache.js → chatOutputPartStateCache.js} +19 -11
- 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/agentHostInputCompletions.js +58 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +9 -9
- 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.js +18 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +13 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +6 -2
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +19 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -2
- 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 +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +155 -156
- package/vscode/src/vs/workbench/contrib/chat/common/tools/copilotToolIds.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/copilotToolIds.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.d.ts +88 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.js +25 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +237 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +600 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +47 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.js +7 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css +298 -0
- 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 +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
- 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 +12 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +78 -7
- 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/runInTerminalConfirmationTool.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +15 -11
- 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 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.js +286 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.js +285 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.d.ts +19 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +415 -47
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.d.ts +2 -7
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +1 -1
- package/vscode/src/vs/base/common/defaultAccount.d.ts +0 -69
- package/vscode/src/vs/base/common/defaultAccount.js +0 -12
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +0 -15
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +0 -85
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
var CopilotToolId;
|
|
4
|
+
(function (CopilotToolId) {
|
|
5
|
+
CopilotToolId["ReadFile"] = "copilot_readFile";
|
|
6
|
+
})(CopilotToolId || (CopilotToolId = {}));
|
|
7
|
+
var CopilotChatSettingId;
|
|
8
|
+
(function (CopilotChatSettingId) {
|
|
9
|
+
CopilotChatSettingId["Gpt55ReadFileToolEnabled"] = "github.copilot.chat.gpt55ReadFileTool.enabled";
|
|
10
|
+
})(CopilotChatSettingId || (CopilotChatSettingId = {}));
|
|
11
|
+
|
|
12
|
+
export { CopilotChatSettingId, CopilotToolId };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of running a {@link IToolResultFilter}.
|
|
3
|
+
*
|
|
4
|
+
* `text` is the new text to substitute back into the corresponding text part.
|
|
5
|
+
* `compressed` is `true` if any compression actually happened — used purely
|
|
6
|
+
* for telemetry / accounting.
|
|
7
|
+
*/
|
|
8
|
+
export interface IToolResultFilterOutput {
|
|
9
|
+
readonly text: string;
|
|
10
|
+
readonly compressed: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A pure function that compresses a single text part of a tool result.
|
|
14
|
+
*
|
|
15
|
+
* Implementations MUST never make output worse than the input. If a filter
|
|
16
|
+
* cannot improve a piece of text, it should return the original `text` and
|
|
17
|
+
* `compressed: false`.
|
|
18
|
+
*/
|
|
19
|
+
export interface IToolResultFilter {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
/** Tool ids this filter applies to. */
|
|
22
|
+
readonly toolIds: readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Decide whether this filter wants to handle the result. May inspect tool
|
|
25
|
+
* input (e.g. for `run_in_terminal`, the command being run).
|
|
26
|
+
*/
|
|
27
|
+
matches(toolId: string, input: unknown): boolean;
|
|
28
|
+
apply(text: string, input: unknown): IToolResultFilterOutput;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result of looking up a tool invocation in an {@link IToolResultCache}.
|
|
32
|
+
*/
|
|
33
|
+
export interface IToolResultCacheHit {
|
|
34
|
+
/** The cached output content from the previous run. */
|
|
35
|
+
readonly text: string;
|
|
36
|
+
/** Wall-clock timestamp (ms since epoch) of when the cached entry was produced. */
|
|
37
|
+
readonly timestamp: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A read-through / write-through cache for tool results. Used to implement
|
|
41
|
+
* "same as last run" response dedup for read-only, deterministic tool calls.
|
|
42
|
+
*
|
|
43
|
+
* The compressor invokes caches in this order on every `maybeCompress` call:
|
|
44
|
+
* 1. `observe(toolId, input)` — caches may use this hook to invalidate
|
|
45
|
+
* sibling entries (e.g. a `git commit` clears `git status` / `git diff`).
|
|
46
|
+
* 2. `lookup(toolId, input)` — if any cache returns a hit, the compressor
|
|
47
|
+
* substitutes the result with a single-line "same output as last run"
|
|
48
|
+
* reply and emits `cacheHit: true` telemetry.
|
|
49
|
+
* 3. If no hit, after compression the compressor calls `record` so the
|
|
50
|
+
* cache can store the (possibly compressed) output.
|
|
51
|
+
*/
|
|
52
|
+
export interface IToolResultCache {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
readonly toolIds: readonly string[];
|
|
55
|
+
observe(toolId: string, input: unknown): void;
|
|
56
|
+
lookup(toolId: string, input: unknown): IToolResultCacheHit | undefined;
|
|
57
|
+
record(toolId: string, input: unknown, text: string): void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Heuristically decide whether a text part should be excluded from filter
|
|
61
|
+
* rewriting because it carries structured data the model is likely to parse.
|
|
62
|
+
*
|
|
63
|
+
* Currently detects:
|
|
64
|
+
* - Top-level JSON objects/arrays (parsed to verify)
|
|
65
|
+
* - YAML documents (leading `---` header)
|
|
66
|
+
* - TOML-style documents (leading `[section]` header)
|
|
67
|
+
*
|
|
68
|
+
* Returning `true` means: the registry will NOT pass this text part to any
|
|
69
|
+
* filter, even if the filter says it matches.
|
|
70
|
+
*
|
|
71
|
+
* This is intentionally cheap and conservative — false negatives just mean
|
|
72
|
+
* a filter may decline to compress; false positives could corrupt structured
|
|
73
|
+
* payloads.
|
|
74
|
+
*/
|
|
75
|
+
export declare function isProtectedFromCompression(text: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Outputs below this many characters (UTF-16 code units, i.e.
|
|
78
|
+
* `string.length`) are not worth compressing: filter savings on short
|
|
79
|
+
* outputs rarely outweigh the banner overhead, and skipping them avoids
|
|
80
|
+
* the agent issuing redundant `read_file` / `get_terminal_output` calls
|
|
81
|
+
* to recover content that would have fit uncompressed.
|
|
82
|
+
*/
|
|
83
|
+
export declare const MIN_COMPRESSIBLE_LENGTH = 1024;
|
|
84
|
+
/**
|
|
85
|
+
* Format the banner that gets prepended to compressed text parts so the
|
|
86
|
+
* model knows compression happened, which filters fired, and how to opt out.
|
|
87
|
+
*/
|
|
88
|
+
export declare function formatCompressionBanner(filterIds: readonly string[], beforeChars: number, afterChars: number): string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
function isProtectedFromCompression(text) {
|
|
4
|
+
const trimmed = text.trim();
|
|
5
|
+
if (!trimmed) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const first = trimmed[0];
|
|
9
|
+
const last = trimmed[trimmed.length - 1];
|
|
10
|
+
if ((first === '{' && last === '}') || (first === '[' && last === ']')) {
|
|
11
|
+
try {
|
|
12
|
+
JSON.parse(trimmed);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (/^---\s*\n/.test(trimmed) || /^\[[A-Za-z_][A-Za-z0-9_.-]*\]\s*\n/.test(trimmed)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const MIN_COMPRESSIBLE_LENGTH = 1024;
|
|
24
|
+
|
|
25
|
+
export { MIN_COMPRESSIBLE_LENGTH, isProtectedFromCompression };
|
|
@@ -20,7 +20,7 @@ var PhraseTextType;
|
|
|
20
20
|
})(PhraseTextType || (PhraseTextType = {}));
|
|
21
21
|
const VoiceChatInProgress = ( new RawContextKey("voiceChatInProgress", false, {
|
|
22
22
|
type: "boolean",
|
|
23
|
-
description: ( localize(
|
|
23
|
+
description: ( localize(8240, "A speech-to-text session is in progress for chat."))
|
|
24
24
|
}));
|
|
25
25
|
let VoiceChatService = class VoiceChatService extends Disposable {
|
|
26
26
|
static {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
|
|
2
|
+
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
|
+
import * as imageCarousel from './media/imageCarousel.css';
|
|
4
|
+
import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
5
|
+
import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors';
|
|
6
|
+
import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
|
|
7
|
+
import { EditorPaneDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/editor';
|
|
8
|
+
import { EditorExtensions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
|
|
9
|
+
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
10
|
+
import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
|
|
11
|
+
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
12
|
+
import { ImageCarouselEditor } from './imageCarouselEditor.js';
|
|
13
|
+
import { ImageCarouselEditorInput } from './imageCarouselEditorInput.js';
|
|
14
|
+
import { Action2, registerAction2, MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
15
|
+
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
16
|
+
import { ExplorerFolderContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/common/files';
|
|
17
|
+
import { IExplorerService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/browser/files.service';
|
|
18
|
+
import { ResourceContextKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
19
|
+
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
20
|
+
import { getMediaMime } from '@codingame/monaco-vscode-api/vscode/vs/base/common/mime';
|
|
21
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
22
|
+
import { extname, basename, dirname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
23
|
+
import { ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
24
|
+
import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
|
|
25
|
+
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
26
|
+
import { Extensions } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configurationRegistry';
|
|
27
|
+
|
|
28
|
+
registerCss(imageCarousel);
|
|
29
|
+
( Registry.as(Extensions.Configuration)).registerConfiguration({
|
|
30
|
+
id: "imageCarousel",
|
|
31
|
+
title: ( localize(10509, "Images Preview")),
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
"imageCarousel.explorerContextMenu.enabled": {
|
|
35
|
+
type: "boolean",
|
|
36
|
+
default: true,
|
|
37
|
+
markdownDescription: ( localize(
|
|
38
|
+
10510,
|
|
39
|
+
"Controls whether the **Open in Images Preview** option appears in the Explorer context menu."
|
|
40
|
+
)),
|
|
41
|
+
tags: ["experimental"]
|
|
42
|
+
},
|
|
43
|
+
"imageCarousel.chat.enabled": {
|
|
44
|
+
type: "boolean",
|
|
45
|
+
default: true,
|
|
46
|
+
description: ( localize(
|
|
47
|
+
10511,
|
|
48
|
+
"Controls whether clicking an image attachment in chat opens the Images Preview viewer."
|
|
49
|
+
)),
|
|
50
|
+
tags: ["experimental"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(
|
|
55
|
+
EditorPaneDescriptor.create(ImageCarouselEditor, ImageCarouselEditor.ID, ( localize(10512, "Images Preview"))),
|
|
56
|
+
[( new SyncDescriptor(ImageCarouselEditorInput))]
|
|
57
|
+
);
|
|
58
|
+
class ImageCarouselEditorInputSerializer {
|
|
59
|
+
canSerialize() {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
serialize() {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
deserialize() {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
( Registry.as(EditorExtensions.EditorFactory)).registerEditorSerializer(ImageCarouselEditorInput.ID, ImageCarouselEditorInputSerializer);
|
|
70
|
+
function isCollectionArgs(args) {
|
|
71
|
+
return typeof args === "object" && args !== null && typeof args.collection === "object" && typeof args.startIndex === "number";
|
|
72
|
+
}
|
|
73
|
+
function isSingleImageArgs(args) {
|
|
74
|
+
return typeof args === "object" && args !== null && typeof args.name === "string" && typeof args.mimeType === "string" && args.data instanceof Uint8Array;
|
|
75
|
+
}
|
|
76
|
+
class OpenImageInCarouselAction extends Action2 {
|
|
77
|
+
constructor() {
|
|
78
|
+
super({
|
|
79
|
+
id: "workbench.action.chat.openImageInCarousel",
|
|
80
|
+
title: ( localize2(10513, "Open in Images Preview")),
|
|
81
|
+
f1: false
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async run(accessor, args) {
|
|
85
|
+
const editorService = accessor.get(IEditorService);
|
|
86
|
+
let collection;
|
|
87
|
+
let startIndex;
|
|
88
|
+
if (isCollectionArgs(args)) {
|
|
89
|
+
collection = args.collection;
|
|
90
|
+
startIndex = args.startIndex;
|
|
91
|
+
} else if (isSingleImageArgs(args)) {
|
|
92
|
+
collection = {
|
|
93
|
+
id: generateUuid(),
|
|
94
|
+
title: args.title ?? ( localize(10514, "Images Preview")),
|
|
95
|
+
sections: [{
|
|
96
|
+
title: "",
|
|
97
|
+
images: [{
|
|
98
|
+
id: generateUuid(),
|
|
99
|
+
name: args.name,
|
|
100
|
+
mimeType: args.mimeType,
|
|
101
|
+
data: VSBuffer.wrap(args.data)
|
|
102
|
+
}]
|
|
103
|
+
}]
|
|
104
|
+
};
|
|
105
|
+
startIndex = 0;
|
|
106
|
+
} else {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const input = ( new ImageCarouselEditorInput(collection, startIndex));
|
|
110
|
+
await editorService.openEditor(input, {
|
|
111
|
+
pinned: true
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
registerAction2(OpenImageInCarouselAction);
|
|
116
|
+
const MEDIA_EXTENSION_REGEX = /^\.(png|jpg|jpeg|jpe|gif|webp|svg|bmp|ico|mp4|webm|mov)$/i;
|
|
117
|
+
function isMediaResource(uri) {
|
|
118
|
+
return MEDIA_EXTENSION_REGEX.test(extname(uri));
|
|
119
|
+
}
|
|
120
|
+
async function collectImageFilesFromFolder(fileService, folderUri) {
|
|
121
|
+
const stat = await fileService.resolve(folderUri);
|
|
122
|
+
const imageUris = [];
|
|
123
|
+
if (stat.children) {
|
|
124
|
+
for (const child of stat.children) {
|
|
125
|
+
if (child.isFile && isMediaResource(child.resource)) {
|
|
126
|
+
imageUris.push(child.resource);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
imageUris.sort((a, b) => basename(a).localeCompare(basename(b)));
|
|
131
|
+
return imageUris;
|
|
132
|
+
}
|
|
133
|
+
function createImageEntries(uris) {
|
|
134
|
+
return ( uris.map(uri => ({
|
|
135
|
+
id: generateUuid(),
|
|
136
|
+
name: basename(uri),
|
|
137
|
+
mimeType: getMediaMime(uri.path) ?? "image/png",
|
|
138
|
+
uri
|
|
139
|
+
})));
|
|
140
|
+
}
|
|
141
|
+
class OpenImagesInCarouselFromExplorerAction extends Action2 {
|
|
142
|
+
constructor() {
|
|
143
|
+
super({
|
|
144
|
+
id: "workbench.action.openImagesInCarousel",
|
|
145
|
+
title: ( localize2(10515, "Open in Images Preview")),
|
|
146
|
+
f1: false,
|
|
147
|
+
menu: [{
|
|
148
|
+
id: MenuId.ExplorerContext,
|
|
149
|
+
group: "navigation",
|
|
150
|
+
order: 25,
|
|
151
|
+
when: ( ContextKeyExpr.and(( ContextKeyExpr.has("config.imageCarousel.explorerContextMenu.enabled")), ( ContextKeyExpr.or(ExplorerFolderContext, ( ContextKeyExpr.regex(ResourceContextKey.Extension.key, MEDIA_EXTENSION_REGEX))))))
|
|
152
|
+
}]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async run(accessor, resource) {
|
|
156
|
+
const explorerService = accessor.get(IExplorerService);
|
|
157
|
+
const fileService = accessor.get(IFileService);
|
|
158
|
+
const editorService = accessor.get(IEditorService);
|
|
159
|
+
const notificationService = accessor.get(INotificationService);
|
|
160
|
+
const contextService = accessor.get(IWorkspaceContextService);
|
|
161
|
+
const context = explorerService.getContext(true);
|
|
162
|
+
let imageUris = [];
|
|
163
|
+
let startUri;
|
|
164
|
+
try {
|
|
165
|
+
if (context.length === 0) {
|
|
166
|
+
let folderUri;
|
|
167
|
+
if (URI.isUri(resource)) {
|
|
168
|
+
folderUri = resource;
|
|
169
|
+
} else {
|
|
170
|
+
const folders = contextService.getWorkspace().folders;
|
|
171
|
+
if (folders.length > 0) {
|
|
172
|
+
folderUri = folders[0].uri;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (folderUri) {
|
|
176
|
+
imageUris = await collectImageFilesFromFolder(fileService, folderUri);
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
const hasSingleImageFile = context.length === 1 && !context[0].isDirectory && isMediaResource(context[0].resource);
|
|
180
|
+
if (hasSingleImageFile) {
|
|
181
|
+
startUri = context[0].resource;
|
|
182
|
+
const parentUri = dirname(context[0].resource);
|
|
183
|
+
imageUris = await collectImageFilesFromFolder(fileService, parentUri);
|
|
184
|
+
} else {
|
|
185
|
+
const seen = ( new ResourceSet());
|
|
186
|
+
for (const item of context) {
|
|
187
|
+
if (item.isDirectory) {
|
|
188
|
+
const folderImages = await collectImageFilesFromFolder(fileService, item.resource);
|
|
189
|
+
for (const uri of folderImages) {
|
|
190
|
+
if (!( seen.has(uri))) {
|
|
191
|
+
seen.add(uri);
|
|
192
|
+
imageUris.push(uri);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} else if (isMediaResource(item.resource)) {
|
|
196
|
+
if (!( seen.has(item.resource))) {
|
|
197
|
+
seen.add(item.resource);
|
|
198
|
+
imageUris.push(item.resource);
|
|
199
|
+
if (!startUri) {
|
|
200
|
+
startUri = item.resource;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
} catch {
|
|
208
|
+
notificationService.error(( localize(10516, "Could not read folder contents.")));
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (imageUris.length === 0) {
|
|
212
|
+
notificationService.info(( localize(10517, "No images found in this folder.")));
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const images = createImageEntries(imageUris);
|
|
216
|
+
let startIndex = 0;
|
|
217
|
+
if (startUri) {
|
|
218
|
+
const idx = images.findIndex(img => img.uri?.toString() === ( startUri.toString()));
|
|
219
|
+
if (idx >= 0) {
|
|
220
|
+
startIndex = idx;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const collection = {
|
|
224
|
+
id: generateUuid(),
|
|
225
|
+
title: ( localize(10518, "Images Preview")),
|
|
226
|
+
sections: [{
|
|
227
|
+
title: "",
|
|
228
|
+
images
|
|
229
|
+
}]
|
|
230
|
+
};
|
|
231
|
+
const input = ( new ImageCarouselEditorInput(collection, startIndex));
|
|
232
|
+
await editorService.openEditor(input, {
|
|
233
|
+
pinned: true
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
registerAction2(OpenImagesInCarouselFromExplorerAction);
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Dimension } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/dom";
|
|
2
|
+
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
3
|
+
import { IEditorOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/editor/common/editor";
|
|
4
|
+
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
5
|
+
import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
|
|
6
|
+
import { EditorPane } from "@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/editor/editorPane";
|
|
7
|
+
import { IEditorOpenContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor";
|
|
8
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
9
|
+
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
10
|
+
import { IEditorGroup } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService";
|
|
11
|
+
import { IWebviewService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service";
|
|
12
|
+
import { ImageCarouselEditorInput } from "./imageCarouselEditorInput.js";
|
|
13
|
+
export declare class ImageCarouselEditor extends EditorPane {
|
|
14
|
+
private readonly _fileService;
|
|
15
|
+
private readonly _webviewService;
|
|
16
|
+
static readonly ID = "workbench.editor.imageCarousel";
|
|
17
|
+
private _container;
|
|
18
|
+
private _currentIndex;
|
|
19
|
+
private _zoomScale;
|
|
20
|
+
private _sections;
|
|
21
|
+
private _flatImages;
|
|
22
|
+
private readonly _contentDisposables;
|
|
23
|
+
private readonly _imageDisposables;
|
|
24
|
+
private readonly _blobUrlCache;
|
|
25
|
+
private _videoWebview;
|
|
26
|
+
private _elements;
|
|
27
|
+
private _thumbnailElements;
|
|
28
|
+
constructor(group: IEditorGroup, telemetryService: ITelemetryService, themeService: IThemeService, storageService: IStorageService, _fileService: IFileService, _webviewService: IWebviewService);
|
|
29
|
+
protected createEditor(parent: HTMLElement): void;
|
|
30
|
+
setInput(input: ImageCarouselEditorInput, options: IEditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<void>;
|
|
31
|
+
clearInput(): void;
|
|
32
|
+
private _isCurrentVideo;
|
|
33
|
+
/**
|
|
34
|
+
* Build the full DOM skeleton. Called once per setInput.
|
|
35
|
+
*/
|
|
36
|
+
private buildSlideshow;
|
|
37
|
+
/**
|
|
38
|
+
* Update only the changing parts: main image src, caption, button states, thumbnail selection.
|
|
39
|
+
* No DOM teardown/rebuild — eliminates the blank flash.
|
|
40
|
+
*/
|
|
41
|
+
private updateCurrentImage;
|
|
42
|
+
private _loadBlobUrl;
|
|
43
|
+
private _revokeCachedBlobUrls;
|
|
44
|
+
private _loadRawData;
|
|
45
|
+
private _preloadAdjacentImages;
|
|
46
|
+
previous(): void;
|
|
47
|
+
next(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Compute the current display scale when transitioning from 'fit' to numeric zoom.
|
|
50
|
+
*/
|
|
51
|
+
private _initZoomFromFit;
|
|
52
|
+
/**
|
|
53
|
+
* Zoom in to the next predefined zoom level.
|
|
54
|
+
*/
|
|
55
|
+
private _zoomIn;
|
|
56
|
+
/**
|
|
57
|
+
* Zoom out to the previous predefined zoom level.
|
|
58
|
+
*/
|
|
59
|
+
private _zoomOut;
|
|
60
|
+
/**
|
|
61
|
+
* Apply fit-to-container or numeric zoom with scroll-center preservation.
|
|
62
|
+
*/
|
|
63
|
+
private _applyZoom;
|
|
64
|
+
focus(): void;
|
|
65
|
+
layout(dimension: Dimension): void;
|
|
66
|
+
}
|