@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,600 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { h, clearNode, addDisposableListener, EventType, createElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
|
+
import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
|
|
5
|
+
import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
6
|
+
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
|
+
import { clamp } from '@codingame/monaco-vscode-api/vscode/vs/base/common/numbers';
|
|
8
|
+
import { isMacintosh } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
9
|
+
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
10
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
11
|
+
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
12
|
+
import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
|
|
13
|
+
import { EditorPane } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/editor/editorPane';
|
|
14
|
+
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
15
|
+
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
16
|
+
import { IWebviewService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service';
|
|
17
|
+
import { ImageCarouselEditorInput } from './imageCarouselEditorInput.js';
|
|
18
|
+
import { isVideoMimeType } from './imageCarouselTypes.js';
|
|
19
|
+
|
|
20
|
+
var ImageCarouselEditor_1;
|
|
21
|
+
const SCALE_PINCH_FACTOR = 0.075;
|
|
22
|
+
const MAX_SCALE = 20;
|
|
23
|
+
const MIN_SCALE = 0.1;
|
|
24
|
+
const PIXELATION_THRESHOLD = 3;
|
|
25
|
+
const ZOOM_LEVELS = [
|
|
26
|
+
0.1,
|
|
27
|
+
0.2,
|
|
28
|
+
0.3,
|
|
29
|
+
0.4,
|
|
30
|
+
0.5,
|
|
31
|
+
0.6,
|
|
32
|
+
0.7,
|
|
33
|
+
0.8,
|
|
34
|
+
0.9,
|
|
35
|
+
1,
|
|
36
|
+
1.5,
|
|
37
|
+
2,
|
|
38
|
+
3,
|
|
39
|
+
5,
|
|
40
|
+
7,
|
|
41
|
+
10,
|
|
42
|
+
15,
|
|
43
|
+
20
|
|
44
|
+
];
|
|
45
|
+
let ImageCarouselEditor = class ImageCarouselEditor extends EditorPane {
|
|
46
|
+
static {
|
|
47
|
+
ImageCarouselEditor_1 = this;
|
|
48
|
+
}
|
|
49
|
+
static {
|
|
50
|
+
this.ID = "workbench.editor.imageCarousel";
|
|
51
|
+
}
|
|
52
|
+
constructor(
|
|
53
|
+
group,
|
|
54
|
+
telemetryService,
|
|
55
|
+
themeService,
|
|
56
|
+
storageService,
|
|
57
|
+
_fileService,
|
|
58
|
+
_webviewService
|
|
59
|
+
) {
|
|
60
|
+
super(
|
|
61
|
+
ImageCarouselEditor_1.ID,
|
|
62
|
+
group,
|
|
63
|
+
telemetryService,
|
|
64
|
+
themeService,
|
|
65
|
+
storageService
|
|
66
|
+
);
|
|
67
|
+
this._fileService = _fileService;
|
|
68
|
+
this._webviewService = _webviewService;
|
|
69
|
+
this._currentIndex = 0;
|
|
70
|
+
this._zoomScale = "fit";
|
|
71
|
+
this._sections = [];
|
|
72
|
+
this._flatImages = [];
|
|
73
|
+
this._contentDisposables = this._register(( new DisposableStore()));
|
|
74
|
+
this._imageDisposables = this._register(( new DisposableStore()));
|
|
75
|
+
this._blobUrlCache = ( new Map());
|
|
76
|
+
this._thumbnailElements = [];
|
|
77
|
+
}
|
|
78
|
+
createEditor(parent) {
|
|
79
|
+
this._container = h("div.image-carousel-editor").root;
|
|
80
|
+
parent.appendChild(this._container);
|
|
81
|
+
}
|
|
82
|
+
async setInput(input, options, context, token) {
|
|
83
|
+
await super.setInput(input, options, context, token);
|
|
84
|
+
this._sections = input.collection.sections;
|
|
85
|
+
this._flatImages = [];
|
|
86
|
+
for (let s = 0; s < this._sections.length; s++) {
|
|
87
|
+
for (let i = 0; i < this._sections[s].images.length; i++) {
|
|
88
|
+
this._flatImages.push({
|
|
89
|
+
sectionIndex: s,
|
|
90
|
+
imageIndexInSection: i,
|
|
91
|
+
image: this._sections[s].images[i]
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this._currentIndex = Math.min(input.startIndex, Math.max(0, this._flatImages.length - 1));
|
|
96
|
+
this.buildSlideshow();
|
|
97
|
+
}
|
|
98
|
+
clearInput() {
|
|
99
|
+
this._videoWebview?.dispose();
|
|
100
|
+
this._videoWebview = undefined;
|
|
101
|
+
this._contentDisposables.clear();
|
|
102
|
+
this._imageDisposables.clear();
|
|
103
|
+
this._revokeCachedBlobUrls();
|
|
104
|
+
this._zoomScale = "fit";
|
|
105
|
+
if (this._container) {
|
|
106
|
+
clearNode(this._container);
|
|
107
|
+
}
|
|
108
|
+
this._elements = undefined;
|
|
109
|
+
this._thumbnailElements = [];
|
|
110
|
+
super.clearInput();
|
|
111
|
+
}
|
|
112
|
+
_isCurrentVideo() {
|
|
113
|
+
const entry = this._flatImages[this._currentIndex];
|
|
114
|
+
return !!entry && isVideoMimeType(entry.image.mimeType);
|
|
115
|
+
}
|
|
116
|
+
buildSlideshow() {
|
|
117
|
+
if (!this._container) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this._contentDisposables.clear();
|
|
121
|
+
this._imageDisposables.clear();
|
|
122
|
+
this._revokeCachedBlobUrls();
|
|
123
|
+
clearNode(this._container);
|
|
124
|
+
if (this._flatImages.length === 0) {
|
|
125
|
+
const empty = h("div.empty-message");
|
|
126
|
+
empty.root.textContent = ( localize(10519, "No images to display"));
|
|
127
|
+
this._container.appendChild(empty.root);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const elements = h("div.slideshow-container", [h("div.image-area@imageArea", [h(
|
|
131
|
+
"div.main-image-container@mainImageContainer",
|
|
132
|
+
[h("img.main-image@mainImage"), h("div.video-container@videoContainer")]
|
|
133
|
+
), h("button.nav-arrow.prev-arrow@prevBtn", {
|
|
134
|
+
ariaLabel: ( localize(10520, "Previous image"))
|
|
135
|
+
}, [h("span.codicon.codicon-chevron-left", {
|
|
136
|
+
ariaHidden: "true"
|
|
137
|
+
})]), h("button.nav-arrow.next-arrow@nextBtn", {
|
|
138
|
+
ariaLabel: ( localize(10521, "Next image"))
|
|
139
|
+
}, [h("span.codicon.codicon-chevron-right", {
|
|
140
|
+
ariaHidden: "true"
|
|
141
|
+
})])]), h("div.bottom-bar@bottomBar", [h("div.image-info-bar", [
|
|
142
|
+
h("span.caption-text@captionText"),
|
|
143
|
+
h("span.caption-separator@captionSeparator"),
|
|
144
|
+
h("span.image-counter@counter")
|
|
145
|
+
]), h("div.sections-container@sectionsContainer"), h("span.sr-only@ariaStatus")])]);
|
|
146
|
+
elements.root.setAttribute("role", "group");
|
|
147
|
+
elements.root.setAttribute("aria-label", ( localize(10522, "Images Preview")));
|
|
148
|
+
elements.captionSeparator.setAttribute("aria-hidden", "true");
|
|
149
|
+
elements.ariaStatus.setAttribute("aria-live", "polite");
|
|
150
|
+
elements.ariaStatus.setAttribute("aria-atomic", "true");
|
|
151
|
+
elements.sectionsContainer.setAttribute("role", "group");
|
|
152
|
+
elements.sectionsContainer.setAttribute("aria-label", ( localize(10523, "Image thumbnails")));
|
|
153
|
+
this._elements = {
|
|
154
|
+
root: elements.root,
|
|
155
|
+
imageArea: elements.imageArea,
|
|
156
|
+
mainImageContainer: elements.mainImageContainer,
|
|
157
|
+
mainImage: elements.mainImage,
|
|
158
|
+
videoContainer: elements.videoContainer,
|
|
159
|
+
captionText: elements.captionText,
|
|
160
|
+
captionSeparator: elements.captionSeparator,
|
|
161
|
+
counter: elements.counter,
|
|
162
|
+
ariaStatus: elements.ariaStatus,
|
|
163
|
+
prevBtn: elements.prevBtn,
|
|
164
|
+
nextBtn: elements.nextBtn,
|
|
165
|
+
sectionsContainer: elements.sectionsContainer
|
|
166
|
+
};
|
|
167
|
+
this._elements.mainImage.classList.add("scale-to-fit");
|
|
168
|
+
this._elements.mainImage.alt = "";
|
|
169
|
+
this._elements.videoContainer.style.display = "none";
|
|
170
|
+
this._contentDisposables.add(addDisposableListener(this._elements.prevBtn, "click", () => {
|
|
171
|
+
if (this._currentIndex > 0) {
|
|
172
|
+
this._currentIndex--;
|
|
173
|
+
this.updateCurrentImage();
|
|
174
|
+
}
|
|
175
|
+
}));
|
|
176
|
+
this._contentDisposables.add(addDisposableListener(this._elements.nextBtn, "click", () => {
|
|
177
|
+
if (this._currentIndex < this._flatImages.length - 1) {
|
|
178
|
+
this._currentIndex++;
|
|
179
|
+
this.updateCurrentImage();
|
|
180
|
+
}
|
|
181
|
+
}));
|
|
182
|
+
this._contentDisposables.add(addDisposableListener(elements.root, EventType.KEY_DOWN, e => {
|
|
183
|
+
const event = ( new StandardKeyboardEvent(e));
|
|
184
|
+
if (event.keyCode === KeyCode.LeftArrow) {
|
|
185
|
+
this.previous();
|
|
186
|
+
event.stopPropagation();
|
|
187
|
+
event.preventDefault();
|
|
188
|
+
} else if (event.keyCode === KeyCode.RightArrow) {
|
|
189
|
+
this.next();
|
|
190
|
+
event.stopPropagation();
|
|
191
|
+
event.preventDefault();
|
|
192
|
+
}
|
|
193
|
+
}));
|
|
194
|
+
elements.root.tabIndex = 0;
|
|
195
|
+
this._contentDisposables.add(
|
|
196
|
+
addDisposableListener(this._elements.imageArea, EventType.MOUSE_WHEEL, e => {
|
|
197
|
+
if (this._isCurrentVideo()) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const isZoomModifier = isMacintosh ? e.altKey : e.ctrlKey;
|
|
201
|
+
if (!isZoomModifier && !e.ctrlKey) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
e.preventDefault();
|
|
205
|
+
if (e.deltaY === 0) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (this._zoomScale === "fit") {
|
|
209
|
+
this._initZoomFromFit();
|
|
210
|
+
}
|
|
211
|
+
const delta = e.deltaY > 0 ? 1 : -1;
|
|
212
|
+
this._applyZoom(this._zoomScale * (1 - delta * SCALE_PINCH_FACTOR));
|
|
213
|
+
}, {
|
|
214
|
+
passive: false
|
|
215
|
+
})
|
|
216
|
+
);
|
|
217
|
+
let clickCtrlPressed = false;
|
|
218
|
+
let clickAltPressed = false;
|
|
219
|
+
this._contentDisposables.add(
|
|
220
|
+
addDisposableListener(this._elements.mainImageContainer, EventType.MOUSE_DOWN, e => {
|
|
221
|
+
if (e.button !== 0) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
clickCtrlPressed = e.ctrlKey;
|
|
225
|
+
clickAltPressed = e.altKey;
|
|
226
|
+
})
|
|
227
|
+
);
|
|
228
|
+
this._contentDisposables.add(
|
|
229
|
+
addDisposableListener(this._elements.mainImageContainer, EventType.CLICK, e => {
|
|
230
|
+
if (e.button !== 0 || this._isCurrentVideo()) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const isZoomOut = isMacintosh ? clickAltPressed : clickCtrlPressed;
|
|
234
|
+
if (isZoomOut) {
|
|
235
|
+
this._zoomOut();
|
|
236
|
+
} else {
|
|
237
|
+
this._zoomIn();
|
|
238
|
+
}
|
|
239
|
+
})
|
|
240
|
+
);
|
|
241
|
+
const updateZoomCursor = e => {
|
|
242
|
+
const isZoomOut = isMacintosh ? e.altKey : e.ctrlKey;
|
|
243
|
+
this._elements.mainImageContainer.classList.toggle("zoom-out", isZoomOut);
|
|
244
|
+
};
|
|
245
|
+
this._contentDisposables.add(addDisposableListener(elements.root, EventType.KEY_DOWN, updateZoomCursor));
|
|
246
|
+
this._contentDisposables.add(addDisposableListener(elements.root, EventType.KEY_UP, updateZoomCursor));
|
|
247
|
+
this._thumbnailElements = [];
|
|
248
|
+
let flatIndex = 0;
|
|
249
|
+
for (let s = 0; s < this._sections.length; s++) {
|
|
250
|
+
const section = this._sections[s];
|
|
251
|
+
if (s > 0 && this._sections.length > 1) {
|
|
252
|
+
const separator = h("div.thumbnail-separator").root;
|
|
253
|
+
separator.setAttribute("aria-hidden", "true");
|
|
254
|
+
this._elements.sectionsContainer.appendChild(separator);
|
|
255
|
+
}
|
|
256
|
+
for (let i = 0; i < section.images.length; i++) {
|
|
257
|
+
const image = section.images[i];
|
|
258
|
+
const currentFlatIndex = flatIndex;
|
|
259
|
+
const isItemVideo = isVideoMimeType(image.mimeType);
|
|
260
|
+
const btn = createElement("button");
|
|
261
|
+
btn.className = isItemVideo ? "thumbnail video-thumbnail" : "thumbnail";
|
|
262
|
+
btn.ariaLabel = isItemVideo ? ( localize(10524, "Video {0} of {1}", currentFlatIndex + 1, this._flatImages.length)) : ( localize(10525, "Image {0} of {1}", currentFlatIndex + 1, this._flatImages.length));
|
|
263
|
+
if (isItemVideo) {
|
|
264
|
+
const icon = h("span.codicon.codicon-play.thumbnail-play-icon");
|
|
265
|
+
icon.root.setAttribute("aria-hidden", "true");
|
|
266
|
+
btn.appendChild(icon.root);
|
|
267
|
+
} else {
|
|
268
|
+
const img = createElement("img");
|
|
269
|
+
img.className = "thumbnail-image";
|
|
270
|
+
img.alt = image.name;
|
|
271
|
+
const thumbnailDisposables = this._contentDisposables.add(( new DisposableStore()));
|
|
272
|
+
const markBroken = () => {
|
|
273
|
+
if (thumbnailDisposables.isDisposed) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (!btn.classList.contains("broken")) {
|
|
277
|
+
btn.classList.add("broken");
|
|
278
|
+
img.removeAttribute("src");
|
|
279
|
+
img.alt = "";
|
|
280
|
+
img.remove();
|
|
281
|
+
const fallback = h("span.codicon.codicon-warning.thumbnail-broken-icon");
|
|
282
|
+
fallback.root.setAttribute("aria-hidden", "true");
|
|
283
|
+
btn.appendChild(fallback.root);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
this._loadBlobUrl(image).then(url => {
|
|
287
|
+
if (thumbnailDisposables.isDisposed) {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
if (url) {
|
|
291
|
+
const preloader = ( new Image());
|
|
292
|
+
thumbnailDisposables.add(addDisposableListener(preloader, "load", () => {
|
|
293
|
+
if (btn.classList.contains("broken")) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
img.src = url;
|
|
297
|
+
if (!img.parentElement) {
|
|
298
|
+
btn.appendChild(img);
|
|
299
|
+
}
|
|
300
|
+
}));
|
|
301
|
+
thumbnailDisposables.add(addDisposableListener(preloader, "error", () => {
|
|
302
|
+
markBroken();
|
|
303
|
+
}));
|
|
304
|
+
preloader.src = url;
|
|
305
|
+
} else {
|
|
306
|
+
markBroken();
|
|
307
|
+
}
|
|
308
|
+
}, () => {
|
|
309
|
+
markBroken();
|
|
310
|
+
});
|
|
311
|
+
thumbnailDisposables.add(addDisposableListener(img, "error", () => {
|
|
312
|
+
markBroken();
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
this._contentDisposables.add(addDisposableListener(btn, "click", () => {
|
|
316
|
+
this._currentIndex = currentFlatIndex;
|
|
317
|
+
this.updateCurrentImage();
|
|
318
|
+
}));
|
|
319
|
+
this._elements.sectionsContainer.appendChild(btn);
|
|
320
|
+
this._thumbnailElements.push(btn);
|
|
321
|
+
flatIndex++;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
this._container.appendChild(elements.root);
|
|
325
|
+
this.updateCurrentImage();
|
|
326
|
+
}
|
|
327
|
+
async updateCurrentImage() {
|
|
328
|
+
if (!this._elements) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
const navigationIndex = this._currentIndex;
|
|
332
|
+
const entry = this._flatImages[navigationIndex];
|
|
333
|
+
const currentImage = entry.image;
|
|
334
|
+
const isVideo = isVideoMimeType(currentImage.mimeType);
|
|
335
|
+
if (isVideo) {
|
|
336
|
+
this._elements.mainImage.style.display = "none";
|
|
337
|
+
this._elements.videoContainer.style.display = "";
|
|
338
|
+
this._elements.mainImageContainer.classList.remove("zoomed");
|
|
339
|
+
this._elements.mainImageContainer.style.cursor = "default";
|
|
340
|
+
const rawData = await this._loadRawData(currentImage);
|
|
341
|
+
if (this._currentIndex !== navigationIndex) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
const nonce = generateUuid();
|
|
345
|
+
const videoHtml = `<!DOCTYPE html>
|
|
346
|
+
<html><head>
|
|
347
|
+
<meta charset="utf-8">
|
|
348
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; media-src blob: data:; script-src 'nonce-${nonce}'; style-src 'nonce-${nonce}';">
|
|
349
|
+
<style nonce="${nonce}">html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:transparent}
|
|
350
|
+
video{width:100%;height:100%;object-fit:contain;outline:none}</style>
|
|
351
|
+
</head><body>
|
|
352
|
+
<video id="v" controls></video>
|
|
353
|
+
<script nonce="${nonce}">
|
|
354
|
+
window.addEventListener("message",function(e){var m=e.data;if(m.type==="loadVideo"){var b=new Blob([m.data],{type:m.mimeType});document.getElementById("v").src=URL.createObjectURL(b);}});
|
|
355
|
+
</script>
|
|
356
|
+
</body></html>`;
|
|
357
|
+
let webview;
|
|
358
|
+
if (!this._videoWebview) {
|
|
359
|
+
webview = this._contentDisposables.add(this._webviewService.createWebviewElement({
|
|
360
|
+
title: currentImage.name,
|
|
361
|
+
options: {
|
|
362
|
+
disableServiceWorker: true
|
|
363
|
+
},
|
|
364
|
+
contentOptions: {
|
|
365
|
+
allowScripts: true
|
|
366
|
+
},
|
|
367
|
+
extension: undefined
|
|
368
|
+
}));
|
|
369
|
+
webview.mountTo(this._elements.videoContainer, this.window);
|
|
370
|
+
this._videoWebview = webview;
|
|
371
|
+
} else {
|
|
372
|
+
webview = this._videoWebview;
|
|
373
|
+
}
|
|
374
|
+
webview.setHtml(videoHtml);
|
|
375
|
+
const buffer = rawData.buffer;
|
|
376
|
+
webview.postMessage({
|
|
377
|
+
type: "loadVideo",
|
|
378
|
+
data: buffer,
|
|
379
|
+
mimeType: currentImage.mimeType
|
|
380
|
+
}, [buffer]);
|
|
381
|
+
} else {
|
|
382
|
+
this._elements.videoContainer.style.display = "none";
|
|
383
|
+
this._elements.mainImage.style.display = "";
|
|
384
|
+
this._elements.mainImageContainer.style.cursor = "";
|
|
385
|
+
const url = await this._loadBlobUrl(currentImage);
|
|
386
|
+
if (this._currentIndex !== navigationIndex) {
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
const tmp = ( new Image());
|
|
390
|
+
tmp.src = url;
|
|
391
|
+
tmp.decode().then(() => {
|
|
392
|
+
if (this._currentIndex === navigationIndex && this._elements) {
|
|
393
|
+
this._elements.mainImage.src = url;
|
|
394
|
+
this._elements.mainImage.alt = currentImage.name;
|
|
395
|
+
}
|
|
396
|
+
}, () => {
|
|
397
|
+
if (this._currentIndex === navigationIndex && this._elements) {
|
|
398
|
+
this._elements.mainImage.src = url;
|
|
399
|
+
this._elements.mainImage.alt = currentImage.name;
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
this._applyZoom("fit");
|
|
404
|
+
if (currentImage.caption) {
|
|
405
|
+
this._elements.captionText.textContent = currentImage.caption;
|
|
406
|
+
this._elements.captionText.style.display = "";
|
|
407
|
+
this._elements.captionSeparator.style.display = "";
|
|
408
|
+
} else {
|
|
409
|
+
this._elements.captionText.textContent = "";
|
|
410
|
+
this._elements.captionText.style.display = "none";
|
|
411
|
+
this._elements.captionSeparator.style.display = "none";
|
|
412
|
+
}
|
|
413
|
+
this._elements.counter.textContent = ( localize(10526, "{0} / {1}", navigationIndex + 1, this._flatImages.length));
|
|
414
|
+
const itemKind = isVideo ? ( localize(10527, "Video")) : ( localize(10528, "Image"));
|
|
415
|
+
this._elements.ariaStatus.textContent = currentImage.caption ? ( localize(
|
|
416
|
+
10529,
|
|
417
|
+
"{0} {1} of {2}: {3}",
|
|
418
|
+
itemKind,
|
|
419
|
+
navigationIndex + 1,
|
|
420
|
+
this._flatImages.length,
|
|
421
|
+
currentImage.caption
|
|
422
|
+
)) : ( localize(
|
|
423
|
+
10530,
|
|
424
|
+
"{0} {1} of {2}: {3}",
|
|
425
|
+
itemKind,
|
|
426
|
+
navigationIndex + 1,
|
|
427
|
+
this._flatImages.length,
|
|
428
|
+
currentImage.name
|
|
429
|
+
));
|
|
430
|
+
this._elements.prevBtn.disabled = navigationIndex === 0;
|
|
431
|
+
this._elements.nextBtn.disabled = navigationIndex === this._flatImages.length - 1;
|
|
432
|
+
for (let i = 0; i < this._thumbnailElements.length; i++) {
|
|
433
|
+
const isActive = i === navigationIndex;
|
|
434
|
+
const thumbnail = this._thumbnailElements[i];
|
|
435
|
+
thumbnail.classList.toggle("active", isActive);
|
|
436
|
+
if (isActive) {
|
|
437
|
+
thumbnail.setAttribute("aria-current", "page");
|
|
438
|
+
} else {
|
|
439
|
+
thumbnail.removeAttribute("aria-current");
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
const activeThumbnail = this._thumbnailElements[navigationIndex];
|
|
443
|
+
if (activeThumbnail) {
|
|
444
|
+
activeThumbnail.scrollIntoView({
|
|
445
|
+
block: "nearest",
|
|
446
|
+
inline: "nearest"
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
if (this.input instanceof ImageCarouselEditorInput) {
|
|
450
|
+
const currentSection = this._sections[entry.sectionIndex];
|
|
451
|
+
this.input.setName(currentSection.title || this.input.collection.title);
|
|
452
|
+
}
|
|
453
|
+
this._preloadAdjacentImages();
|
|
454
|
+
}
|
|
455
|
+
async _loadBlobUrl(image) {
|
|
456
|
+
const cached = this._blobUrlCache.get(image.id);
|
|
457
|
+
if (cached) {
|
|
458
|
+
return cached;
|
|
459
|
+
}
|
|
460
|
+
let buffer;
|
|
461
|
+
if (image.data) {
|
|
462
|
+
buffer = image.data instanceof Uint8Array ? image.data : image.data.buffer;
|
|
463
|
+
} else if (image.uri) {
|
|
464
|
+
const content = await this._fileService.readFile(image.uri);
|
|
465
|
+
buffer = content.value.buffer;
|
|
466
|
+
} else {
|
|
467
|
+
return "";
|
|
468
|
+
}
|
|
469
|
+
const blob = ( new Blob([buffer], {
|
|
470
|
+
type: image.mimeType
|
|
471
|
+
}));
|
|
472
|
+
const url = URL.createObjectURL(blob);
|
|
473
|
+
this._blobUrlCache.set(image.id, url);
|
|
474
|
+
return url;
|
|
475
|
+
}
|
|
476
|
+
_revokeCachedBlobUrls() {
|
|
477
|
+
for (const url of ( this._blobUrlCache.values())) {
|
|
478
|
+
URL.revokeObjectURL(url);
|
|
479
|
+
}
|
|
480
|
+
this._blobUrlCache.clear();
|
|
481
|
+
}
|
|
482
|
+
async _loadRawData(image) {
|
|
483
|
+
if (image.data) {
|
|
484
|
+
return image.data instanceof Uint8Array ? image.data : image.data.buffer;
|
|
485
|
+
} else if (image.uri) {
|
|
486
|
+
const content = await this._fileService.readFile(image.uri);
|
|
487
|
+
return content.value.buffer;
|
|
488
|
+
}
|
|
489
|
+
return ( new Uint8Array(0));
|
|
490
|
+
}
|
|
491
|
+
_preloadAdjacentImages() {
|
|
492
|
+
for (const idx of [this._currentIndex - 1, this._currentIndex + 1]) {
|
|
493
|
+
if (idx >= 0 && idx < this._flatImages.length) {
|
|
494
|
+
const adjacentImage = this._flatImages[idx].image;
|
|
495
|
+
if (isVideoMimeType(adjacentImage.mimeType)) {
|
|
496
|
+
this._loadRawData(adjacentImage).catch(() => {});
|
|
497
|
+
} else {
|
|
498
|
+
this._loadBlobUrl(adjacentImage).then(url => {
|
|
499
|
+
const img = ( new Image());
|
|
500
|
+
img.src = url;
|
|
501
|
+
img.decode().catch(() => {});
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
previous() {
|
|
508
|
+
if (this._currentIndex > 0) {
|
|
509
|
+
this._currentIndex--;
|
|
510
|
+
this.updateCurrentImage();
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
next() {
|
|
514
|
+
if (this._currentIndex < this._flatImages.length - 1) {
|
|
515
|
+
this._currentIndex++;
|
|
516
|
+
this.updateCurrentImage();
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
_initZoomFromFit() {
|
|
520
|
+
if (!this._elements) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
const img = this._elements.mainImage;
|
|
524
|
+
if (img.naturalWidth > 0) {
|
|
525
|
+
this._zoomScale = img.clientWidth / img.naturalWidth;
|
|
526
|
+
} else {
|
|
527
|
+
this._zoomScale = 1;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
_zoomIn() {
|
|
531
|
+
if (this._zoomScale === "fit") {
|
|
532
|
+
this._initZoomFromFit();
|
|
533
|
+
}
|
|
534
|
+
const scale = this._zoomScale;
|
|
535
|
+
let i = 0;
|
|
536
|
+
for (; i < ZOOM_LEVELS.length; ++i) {
|
|
537
|
+
if (ZOOM_LEVELS[i] > scale) {
|
|
538
|
+
break;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
this._applyZoom(ZOOM_LEVELS[i] ?? MAX_SCALE);
|
|
542
|
+
}
|
|
543
|
+
_zoomOut() {
|
|
544
|
+
if (this._zoomScale === "fit") {
|
|
545
|
+
this._initZoomFromFit();
|
|
546
|
+
}
|
|
547
|
+
const scale = this._zoomScale;
|
|
548
|
+
let i = ZOOM_LEVELS.length - 1;
|
|
549
|
+
for (; i >= 0; --i) {
|
|
550
|
+
if (ZOOM_LEVELS[i] < scale) {
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
this._applyZoom(ZOOM_LEVELS[i] ?? MIN_SCALE);
|
|
555
|
+
}
|
|
556
|
+
_applyZoom(newScale) {
|
|
557
|
+
if (!this._elements) {
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
560
|
+
const container = this._elements.mainImageContainer;
|
|
561
|
+
const img = this._elements.mainImage;
|
|
562
|
+
if (newScale === "fit") {
|
|
563
|
+
this._zoomScale = "fit";
|
|
564
|
+
img.classList.add("scale-to-fit");
|
|
565
|
+
img.classList.remove("pixelated");
|
|
566
|
+
img.style.zoom = "";
|
|
567
|
+
const wasZoomed = container.classList.contains("zoomed");
|
|
568
|
+
container.classList.remove("zoomed");
|
|
569
|
+
container.classList.remove("zoom-out");
|
|
570
|
+
if (wasZoomed) {
|
|
571
|
+
container.scrollTo(0, 0);
|
|
572
|
+
}
|
|
573
|
+
} else {
|
|
574
|
+
const scale = clamp(newScale, MIN_SCALE, MAX_SCALE);
|
|
575
|
+
this._zoomScale = scale;
|
|
576
|
+
const dx = container.scrollWidth > 0 ? (container.scrollLeft + container.clientWidth / 2) / container.scrollWidth : 0.5;
|
|
577
|
+
const dy = container.scrollHeight > 0 ? (container.scrollTop + container.clientHeight / 2) / container.scrollHeight : 0.5;
|
|
578
|
+
img.classList.remove("scale-to-fit");
|
|
579
|
+
img.classList.toggle("pixelated", scale >= PIXELATION_THRESHOLD);
|
|
580
|
+
img.style.zoom = String(scale);
|
|
581
|
+
container.classList.add("zoomed");
|
|
582
|
+
const newScrollX = container.scrollWidth * dx - container.clientWidth / 2;
|
|
583
|
+
const newScrollY = container.scrollHeight * dy - container.clientHeight / 2;
|
|
584
|
+
container.scrollTo(newScrollX, newScrollY);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
focus() {
|
|
588
|
+
super.focus();
|
|
589
|
+
this._elements?.root.focus();
|
|
590
|
+
}
|
|
591
|
+
layout(dimension) {
|
|
592
|
+
if (this._container) {
|
|
593
|
+
this._container.style.width = `${dimension.width}px`;
|
|
594
|
+
this._container.style.height = `${dimension.height}px`;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
};
|
|
598
|
+
ImageCarouselEditor = ImageCarouselEditor_1 = ( __decorate([( __param(1, ITelemetryService)), ( __param(2, IThemeService)), ( __param(3, IStorageService)), ( __param(4, IFileService)), ( __param(5, IWebviewService))], ImageCarouselEditor));
|
|
599
|
+
|
|
600
|
+
export { ImageCarouselEditor };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EditorInput } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput";
|
|
2
|
+
import { EditorInputCapabilities, IUntypedEditorInput } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor";
|
|
3
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
|
+
import { IImageCarouselCollection } from "./imageCarouselTypes.js";
|
|
5
|
+
export declare class ImageCarouselEditorInput extends EditorInput {
|
|
6
|
+
readonly collection: IImageCarouselCollection;
|
|
7
|
+
readonly startIndex: number;
|
|
8
|
+
static readonly ID = "workbench.input.imageCarousel";
|
|
9
|
+
private _resource;
|
|
10
|
+
private _name;
|
|
11
|
+
get capabilities(): EditorInputCapabilities;
|
|
12
|
+
constructor(collection: IImageCarouselCollection, startIndex?: number);
|
|
13
|
+
get typeId(): string;
|
|
14
|
+
get resource(): URI;
|
|
15
|
+
getName(): string;
|
|
16
|
+
setName(name: string): void;
|
|
17
|
+
matches(other: EditorInput | IUntypedEditorInput): boolean;
|
|
18
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
|
|
2
|
+
import { EditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput';
|
|
3
|
+
import { EditorInputCapabilities } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
|
|
4
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
5
|
+
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
6
|
+
|
|
7
|
+
class ImageCarouselEditorInput extends EditorInput {
|
|
8
|
+
static {
|
|
9
|
+
this.ID = "workbench.input.imageCarousel";
|
|
10
|
+
}
|
|
11
|
+
get capabilities() {
|
|
12
|
+
return super.capabilities | EditorInputCapabilities.Singleton | EditorInputCapabilities.RequiresModal;
|
|
13
|
+
}
|
|
14
|
+
constructor(collection, startIndex = 0) {
|
|
15
|
+
super();
|
|
16
|
+
this.collection = collection;
|
|
17
|
+
this.startIndex = startIndex;
|
|
18
|
+
this._resource = ( URI.from({
|
|
19
|
+
scheme: Schemas.vscodeImageCarousel,
|
|
20
|
+
path: `/${encodeURIComponent(collection.id)}`
|
|
21
|
+
}));
|
|
22
|
+
this._name = collection.title;
|
|
23
|
+
}
|
|
24
|
+
get typeId() {
|
|
25
|
+
return ImageCarouselEditorInput.ID;
|
|
26
|
+
}
|
|
27
|
+
get resource() {
|
|
28
|
+
return this._resource;
|
|
29
|
+
}
|
|
30
|
+
getName() {
|
|
31
|
+
return this._name;
|
|
32
|
+
}
|
|
33
|
+
setName(name) {
|
|
34
|
+
if (this._name !== name) {
|
|
35
|
+
this._name = name;
|
|
36
|
+
this._onDidChangeLabel.fire();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
matches(other) {
|
|
40
|
+
if (other instanceof ImageCarouselEditorInput) {
|
|
41
|
+
return other.collection.id === this.collection.id;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ImageCarouselEditorInput };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
import { VSBuffer } from "@codingame/monaco-vscode-api/vscode/vs/base/common/buffer";
|
|
3
|
+
export interface ICarouselImage {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly mimeType: string;
|
|
7
|
+
/** In-memory image data. Omit when the image can be loaded lazily from `uri`. */
|
|
8
|
+
readonly data?: VSBuffer;
|
|
9
|
+
readonly uri?: URI;
|
|
10
|
+
readonly source?: string;
|
|
11
|
+
readonly caption?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ICarouselSection {
|
|
14
|
+
readonly title: string;
|
|
15
|
+
readonly images: ReadonlyArray<ICarouselImage>;
|
|
16
|
+
}
|
|
17
|
+
export interface IImageCarouselCollection {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly title: string;
|
|
20
|
+
readonly sections: ReadonlyArray<ICarouselSection>;
|
|
21
|
+
}
|
|
22
|
+
export declare function isVideoMimeType(mimeType: string): boolean;
|