@codingame/monaco-vscode-chat-service-override 32.0.1 → 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.
Files changed (257) hide show
  1. package/index.d.ts +1 -1
  2. package/index.js +15 -5
  3. package/package.json +5 -5
  4. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +170 -24
  5. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +372 -66
  6. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +18 -1
  7. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +160 -31
  8. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.d.ts +8 -0
  9. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +19 -0
  10. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +134 -0
  11. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +257 -0
  12. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +84 -3
  13. package/vscode/src/vs/platform/agentHost/common/agentService.js +9 -1
  14. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +61 -1
  15. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +61 -1
  16. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.js +3 -1
  17. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.js +1 -1
  18. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
  19. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +1 -1
  20. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +4 -4
  21. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +1 -1
  22. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +2 -7
  23. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +8 -29
  24. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  25. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +60 -60
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +10 -6
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +10 -1
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +180 -174
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +12 -12
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +12 -12
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  43. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +11 -11
  44. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  45. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  46. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
  47. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +64 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +330 -0
  49. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +24 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +77 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +6 -6
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +5 -5
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +51 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +267 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +4 -3
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +53 -53
  61. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  62. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  67. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +5 -4
  68. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -28
  69. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  70. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  71. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +26 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -6
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +150 -119
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +45 -44
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +0 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +58 -76
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +25 -25
  80. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +2 -2
  82. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +3 -3
  83. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +2 -6
  84. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +88 -70
  85. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +82 -56
  86. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +10 -8
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +2 -6
  88. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +89 -71
  89. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.d.ts +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -2843
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.d.ts +1 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +2934 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +99 -99
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +22 -22
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +33 -33
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -4
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +53 -20
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +131 -61
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +23 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +91 -15
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -21
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -28
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +14 -14
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +15 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +203 -163
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +1 -3
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +31 -54
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.d.ts +1 -0
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +88 -0
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  146. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +17 -4
  147. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.d.ts +8 -0
  148. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +91 -0
  149. package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.d.ts +52 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.js +82 -0
  151. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.d.ts +21 -1
  152. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +55 -18
  153. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  154. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  155. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.d.ts +51 -0
  156. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +106 -0
  157. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +4 -2
  158. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
  159. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
  160. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +38 -0
  161. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +59 -0
  162. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
  163. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +25 -25
  164. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
  165. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +6 -6
  166. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  167. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
  168. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  169. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  170. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +4 -6
  171. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  172. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  173. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  174. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  175. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  176. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
  177. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
  178. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +1 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +38 -28
  180. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -7
  181. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.d.ts +5 -1
  182. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.js +106 -7
  183. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -8
  184. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.d.ts +28 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +75 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/{toolInvocationParts/chatToolOutputStateCache.d.ts → chatOutputPartStateCache.d.ts} +5 -6
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/{toolInvocationParts/chatToolOutputStateCache.js → chatOutputPartStateCache.js} +19 -11
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +58 -26
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +9 -9
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +18 -9
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  198. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +13 -5
  199. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +6 -2
  200. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -6
  201. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +19 -18
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -2
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  205. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +6 -7
  206. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +14 -15
  207. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +155 -156
  208. package/vscode/src/vs/workbench/contrib/chat/common/tools/copilotToolIds.d.ts +6 -0
  209. package/vscode/src/vs/workbench/contrib/chat/common/tools/copilotToolIds.js +12 -0
  210. package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.d.ts +88 -0
  211. package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.js +25 -0
  212. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  213. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.d.ts +1 -0
  214. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +237 -0
  215. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.d.ts +66 -0
  216. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +600 -0
  217. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.d.ts +18 -0
  218. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +47 -0
  219. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.d.ts +22 -0
  220. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.js +7 -0
  221. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css +298 -0
  222. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
  223. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  224. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
  225. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  227. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  228. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  229. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  230. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +12 -1
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +78 -7
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +15 -11
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -9
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -16
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.d.ts +60 -0
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.js +286 -0
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.d.ts +24 -0
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.js +285 -0
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.d.ts +19 -12
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +415 -47
  252. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.d.ts +2 -7
  253. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +1 -1
  254. package/vscode/src/vs/base/common/defaultAccount.d.ts +0 -69
  255. package/vscode/src/vs/base/common/defaultAccount.js +0 -12
  256. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +0 -15
  257. 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;