@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
@@ -5,6 +5,8 @@ import * as chatModelsWidget from './media/chatModelsWidget.css';
5
5
  import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
6
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
7
7
  import { $ as $$1, append, clearNode, getTotalWidth, Dimension } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
8
+ import { DomScrollableElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/scrollbar/scrollableElement';
9
+ import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
8
10
  import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
9
11
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
10
12
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
@@ -46,7 +48,7 @@ const VENDOR_ROW_HEIGHT = 30;
46
48
  const MODEL_ROW_HEIGHT = 26;
47
49
  class ModelsFilterAction extends Action {
48
50
  constructor() {
49
- super("workbench.models.filter", ( localize(6409, "Filter")), ThemeIcon.asClassName(Codicon.filter));
51
+ super("workbench.models.filter", ( localize(6469, "Filter")), ThemeIcon.asClassName(Codicon.filter));
50
52
  }
51
53
  async run() {}
52
54
  }
@@ -97,7 +99,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
97
99
  return {
98
100
  id: `provider-${vendor}`,
99
101
  label: displayName,
100
- tooltip: ( localize(6410, "Filter by {0}", displayName)),
102
+ tooltip: ( localize(6470, "Filter by {0}", displayName)),
101
103
  class: undefined,
102
104
  enabled: true,
103
105
  checked: isChecked,
@@ -114,7 +116,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
114
116
  return {
115
117
  id: `capability-${capability}`,
116
118
  label,
117
- tooltip: ( localize(6411, "Filter by {0}", label)),
119
+ tooltip: ( localize(6471, "Filter by {0}", label)),
118
120
  class: undefined,
119
121
  enabled: true,
120
122
  checked: isChecked,
@@ -130,7 +132,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
130
132
  }
131
133
  getActions() {
132
134
  const actions = [];
133
- actions.push(this.createCapabilityAction("tools", ( localize(6412, "Tools"))), this.createCapabilityAction("vision", ( localize(6413, "Vision"))), this.createCapabilityAction("agent", ( localize(6414, "Agent Mode"))));
135
+ actions.push(this.createCapabilityAction("tools", ( localize(6472, "Tools"))), this.createCapabilityAction("vision", ( localize(6473, "Vision"))), this.createCapabilityAction("agent", ( localize(6474, "Agent Mode"))));
134
136
  const configuredVendors = this.viewModel.getConfiguredVendors();
135
137
  if (configuredVendors.length > 1) {
136
138
  actions.push(( new Separator()));
@@ -212,7 +214,7 @@ class GutterColumnRenderer extends ModelsTableColumnRenderer {
212
214
  if (templateData.listRowElement) {
213
215
  templateData.listRowElement.setAttribute("aria-expanded", entry.collapsed ? "false" : "true");
214
216
  }
215
- const label = entry.collapsed ? ( localize(6415, "Expand")) : ( localize(6416, "Collapse"));
217
+ const label = entry.collapsed ? ( localize(6475, "Expand")) : ( localize(6476, "Collapse"));
216
218
  const toggleCollapseAction = {
217
219
  id: "toggleCollapse",
218
220
  label,
@@ -381,18 +383,18 @@ let CombinedCostColumnRenderer = class CombinedCostColumnRenderer extends Models
381
383
  } = entry.model.metadata;
382
384
  const hasCost = inputCost !== undefined || outputCost !== undefined || cacheCost !== undefined;
383
385
  if (hasCost) {
384
- templateData.inputCell.textContent = inputCost !== undefined ? ( localize(6417, "In: {0}", inputCost)) : "";
385
- templateData.outputCell.textContent = outputCost !== undefined ? ( localize(6418, "Out: {0}", outputCost)) : "";
386
- templateData.cacheCell.textContent = cacheCost !== undefined ? ( localize(6419, "Cache: {0}", cacheCost)) : "";
386
+ templateData.inputCell.textContent = inputCost !== undefined ? ( localize(6477, "In: {0}", inputCost)) : "";
387
+ templateData.outputCell.textContent = outputCost !== undefined ? ( localize(6478, "Out: {0}", outputCost)) : "";
388
+ templateData.cacheCell.textContent = cacheCost !== undefined ? ( localize(6479, "Cache: {0}", cacheCost)) : "";
387
389
  const parts = [];
388
390
  if (inputCost !== undefined) {
389
- parts.push(inputCost === 1 ? ( localize(6420, "Input: {0} credit per 1M tokens", inputCost)) : ( localize(6421, "Input: {0} credits per 1M tokens", inputCost)));
391
+ parts.push(inputCost === 1 ? ( localize(6480, "Input: {0} credit per 1M tokens", inputCost)) : ( localize(6481, "Input: {0} credits per 1M tokens", inputCost)));
390
392
  }
391
393
  if (outputCost !== undefined) {
392
- parts.push(outputCost === 1 ? ( localize(6422, "Output: {0} credit per 1M tokens", outputCost)) : ( localize(6423, "Output: {0} credits per 1M tokens", outputCost)));
394
+ parts.push(outputCost === 1 ? ( localize(6482, "Output: {0} credit per 1M tokens", outputCost)) : ( localize(6483, "Output: {0} credits per 1M tokens", outputCost)));
393
395
  }
394
396
  if (cacheCost !== undefined) {
395
- parts.push(cacheCost === 1 ? ( localize(6424, "Cache: {0} credit per 1M tokens", cacheCost)) : ( localize(6425, "Cache: {0} credits per 1M tokens", cacheCost)));
397
+ parts.push(cacheCost === 1 ? ( localize(6484, "Cache: {0} credit per 1M tokens", cacheCost)) : ( localize(6485, "Cache: {0} credits per 1M tokens", cacheCost)));
396
398
  }
397
399
  templateData.elementDisposables.add(
398
400
  this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
@@ -409,7 +411,7 @@ let CombinedCostColumnRenderer = class CombinedCostColumnRenderer extends Models
409
411
  templateData.inputCell.textContent = pricingText;
410
412
  templateData.elementDisposables.add(
411
413
  this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
412
- content: ( localize(6426, "Pricing: {0}", pricingText)),
414
+ content: ( localize(6486, "Pricing: {0}", pricingText)),
413
415
  appearance: {
414
416
  compact: true,
415
417
  skipFadeInAnimation: true
@@ -463,7 +465,7 @@ let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTa
463
465
  const tokenDiv = append(templateData.tokenLimitsElement, $(".token-limit-item"));
464
466
  const tokenText = append(tokenDiv, $("span"));
465
467
  tokenText.textContent = formatTokenCount(totalTokens);
466
- markdown.appendMarkdown(`${( localize(6427, "Context Size"))}: `);
468
+ markdown.appendMarkdown(`${( localize(6487, "Context Size"))}: `);
467
469
  markdown.appendMarkdown(`${formatTokenCount(totalTokens)}`);
468
470
  }
469
471
  templateData.elementDisposables.add(
@@ -518,7 +520,7 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
518
520
  templateData.elementDisposables.add(this.createCapabilityButton(
519
521
  templateData.metadataRow,
520
522
  capabilityMatches?.includes("toolCalling") || false,
521
- ( localize(6428, "Tools")),
523
+ ( localize(6488, "Tools")),
522
524
  "tools"
523
525
  ));
524
526
  }
@@ -526,7 +528,7 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
526
528
  templateData.elementDisposables.add(this.createCapabilityButton(
527
529
  templateData.metadataRow,
528
530
  capabilityMatches?.includes("vision") || false,
529
- ( localize(6429, "Vision")),
531
+ ( localize(6489, "Vision")),
530
532
  "vision"
531
533
  ));
532
534
  }
@@ -601,17 +603,17 @@ let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColum
601
603
  if (vendorEntry.vendor.configuration) {
602
604
  secondaryActions.push(toAction({
603
605
  id: "configureAction",
604
- label: ( localize(6430, "Configure...")),
606
+ label: ( localize(6490, "Configure...")),
605
607
  run: () => this.languageModelsService.configureLanguageModelsProviderGroup(vendorEntry.vendor.vendor, vendorEntry.group.name)
606
608
  }));
607
609
  secondaryActions.push(toAction({
608
610
  id: "deleteAction",
609
- label: ( localize(6431, "Delete")),
611
+ label: ( localize(6491, "Delete")),
610
612
  class: ThemeIcon.asClassName(Codicon.trash),
611
613
  run: async () => {
612
614
  const result = await this.dialogService.confirm({
613
615
  type: "info",
614
- message: ( localize(6432, "Would you like to delete {0}?", vendorEntry.group.name))
616
+ message: ( localize(6492, "Would you like to delete {0}?", vendorEntry.group.name))
615
617
  });
616
618
  if (!result.confirmed) {
617
619
  return;
@@ -623,7 +625,7 @@ let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColum
623
625
  } else if (vendorEntry.vendor.managementCommand) {
624
626
  primaryActions.push(toAction({
625
627
  id: "manageVendor",
626
- label: ( localize(6433, "Manage {0}...", vendorEntry.group.name)),
628
+ label: ( localize(6493, "Manage {0}...", vendorEntry.group.name)),
627
629
  class: ThemeIcon.asClassName(Codicon.gear),
628
630
  run: async () => {
629
631
  await this.commandService.executeCommand(vendorEntry.vendor.managementCommand, vendorEntry.vendor.vendor);
@@ -635,17 +637,36 @@ let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColum
635
637
  }
636
638
  renderGroupElement(entry, index, templateData) {}
637
639
  renderModelElement(entry, index, templateData) {
638
- const configActions = this.languageModelsService.getModelConfigurationActions(entry.model.identifier);
639
- if (configActions.length === 0 && !entry.model.metadata.configurationSchema) {
640
- return;
640
+ const primaryActions = [];
641
+ if (entry.model.metadata.id !== "auto") {
642
+ primaryActions.push(this.createPinAction(entry.model.identifier));
641
643
  }
644
+ const configActions = this.languageModelsService.getModelConfigurationActions(entry.model.identifier);
642
645
  const secondaryActions = [...configActions];
643
- secondaryActions.push(toAction({
644
- id: "configureModel",
645
- label: ( localize(6434, "Configure...")),
646
- run: () => this.languageModelsService.configureModel(entry.model.identifier)
647
- }));
648
- templateData.actionBar.setActions([], secondaryActions);
646
+ if (configActions.length > 0 || entry.model.metadata.configurationSchema) {
647
+ secondaryActions.push(toAction({
648
+ id: "configureModel",
649
+ label: ( localize(6494, "Configure...")),
650
+ run: () => this.languageModelsService.configureModel(entry.model.identifier)
651
+ }));
652
+ }
653
+ templateData.actionBar.setActions(primaryActions, secondaryActions);
654
+ }
655
+ createPinAction(modelIdentifier) {
656
+ const isPinned = this.languageModelsService.isModelPinned(modelIdentifier);
657
+ return toAction({
658
+ id: isPinned ? `unpin.${modelIdentifier}` : `pin.${modelIdentifier}`,
659
+ label: isPinned ? ( localize(6495, "Unpin Model")) : ( localize(6496, "Pin Model")),
660
+ class: ThemeIcon.asClassName(isPinned ? Codicon.pinned : Codicon.pin),
661
+ run: () => {
662
+ if (isPinned) {
663
+ this.languageModelsService.unpinModel(modelIdentifier);
664
+ } else {
665
+ this.languageModelsService.pinModel(modelIdentifier);
666
+ }
667
+ this.viewModel.refresh();
668
+ }
669
+ });
649
670
  }
650
671
  };
651
672
  ActionsColumnRenderer = ActionsColumnRenderer_1 = ( __decorate([( __param(1, IInstantiationService)), ( __param(2, ILanguageModelsService)), ( __param(3, IDialogService)), ( __param(4, ICommandService)), ( __param(5, IContextMenuService))], ActionsColumnRenderer));
@@ -714,6 +735,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
714
735
  this.contextKeyService = contextKeyService;
715
736
  this._onDidChangeItemCount = this._register(( new Emitter()));
716
737
  this.onDidChangeItemCount = this._onDidChangeItemCount.event;
738
+ this.tableMinWidth = 0;
717
739
  this.dropdownActions = [];
718
740
  this.tableDisposables = this._register(( new DisposableStore()));
719
741
  this.searchFocusContextKey = CONTEXT_MODELS_SEARCH_FOCUS.bindTo(this.contextKeyService);
@@ -726,7 +748,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
726
748
  }
727
749
  create(container) {
728
750
  const searchAndButtonContainer = append(container, $(".models-search-and-button-container"));
729
- const placeholder = ( localize(6435, "Type to search..."));
751
+ const placeholder = ( localize(6497, "Type to search..."));
730
752
  const searchContainer = append(searchAndButtonContainer, $(".models-search-container"));
731
753
  this.searchWidget = this._register(
732
754
  this.instantiationService.createInstance(SuggestEnabledInput, "chatModelsWidget.searchbox", searchContainer, {
@@ -757,8 +779,8 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
757
779
  })
758
780
  );
759
781
  const filterAction = this._register(( new ModelsFilterAction()));
760
- const clearSearchAction = this._register(( new Action("workbench.models.clearSearch", ( localize(6436, "Clear Search")), ThemeIcon.asClassName(preferencesClearInputIcon), false, () => this.clearSearch())));
761
- const collapseAllAction = this._register(( new Action("workbench.models.collapseAll", ( localize(6437, "Collapse All")), ThemeIcon.asClassName(Codicon.collapseAll), false, () => {
782
+ const clearSearchAction = this._register(( new Action("workbench.models.clearSearch", ( localize(6498, "Clear Search")), ThemeIcon.asClassName(preferencesClearInputIcon), false, () => this.clearSearch())));
783
+ const collapseAllAction = this._register(( new Action("workbench.models.collapseAll", ( localize(6499, "Collapse All")), ThemeIcon.asClassName(Codicon.collapseAll), false, () => {
762
784
  this.viewModel.collapseAll();
763
785
  })));
764
786
  collapseAllAction.enabled = ( this.viewModel.viewModelEntries.some(e => isLanguageModelGroupEntry(e) || isLanguageModelProviderEntry(e)));
@@ -791,7 +813,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
791
813
  supportIcons: true
792
814
  };
793
815
  this.addButton = this._register(( new Button(this.addButtonContainer, buttonOptions)));
794
- this.addButton.label = `$(${Codicon.add.id}) ${( localize(6438, "Add Models..."))}`;
816
+ this.addButton.label = `$(${Codicon.add.id}) ${( localize(6500, "Add Models..."))}`;
795
817
  this.addButton.element.classList.add("models-add-model-button");
796
818
  this.updateAddModelsButton();
797
819
  this._register(this.addButton.onDidClick(e => {
@@ -809,9 +831,15 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
809
831
  this.updateAddModelsButton();
810
832
  this.createTable();
811
833
  }));
834
+ this._register(
835
+ this.chatEntitlementService.onDidChangeUsageBasedBilling(() => this.createTable())
836
+ );
812
837
  this._register(
813
838
  this.languageModelsService.onDidChangeLanguageModelVendors(() => this.updateAddModelsButton())
814
839
  );
840
+ this._register(
841
+ this.languageModelsService.onDidChangePinnedModels(() => this.viewModel.refresh())
842
+ );
815
843
  this._register(this.contextKeyService.onDidChangeContext(e => {
816
844
  if (e.affectsSome(( new Set(["github.copilot.clientByokEnabled"])))) {
817
845
  this.updateAddModelsButton();
@@ -821,6 +849,15 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
821
849
  createTable() {
822
850
  this.tableDisposables.clear();
823
851
  clearNode(this.tableContainer);
852
+ this.tableViewport = $(".models-table-viewport");
853
+ this.tableInner = append(this.tableViewport, $(".models-table-inner"));
854
+ this.tableScrollable = this.tableDisposables.add(( new DomScrollableElement(this.tableViewport, {
855
+ horizontal: ScrollbarVisibility.Auto,
856
+ vertical: ScrollbarVisibility.Hidden,
857
+ useShadows: false,
858
+ scrollYToX: true
859
+ })));
860
+ this.tableContainer.appendChild(this.tableScrollable.getDomNode());
824
861
  const gutterColumnRenderer = this.instantiationService.createInstance(GutterColumnRenderer, this.viewModel);
825
862
  const modelNameColumnRenderer = this.instantiationService.createInstance(ModelNameColumnRenderer);
826
863
  const combinedCostColumnRenderer = this.instantiationService.createInstance(CombinedCostColumnRenderer);
@@ -848,7 +885,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
848
885
  return row;
849
886
  }
850
887
  }, {
851
- label: ( localize(6439, "Name")),
888
+ label: ( localize(6501, "Name")),
852
889
  tooltip: "",
853
890
  weight: 0.35,
854
891
  minimumWidth: 200,
@@ -857,11 +894,9 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
857
894
  return row;
858
895
  }
859
896
  }];
860
- const hasAnyCostFields = ( this.viewModel.viewModelEntries.some(
861
- e => !isLanguageModelProviderEntry(e) && !isLanguageModelGroupEntry(e) && !isStatusEntry(e) && (e.model.metadata.inputCost !== undefined || e.model.metadata.outputCost !== undefined || e.model.metadata.cacheCost !== undefined)
862
- ));
897
+ const isUBB = this.chatEntitlementService.quotas.usageBasedBilling === true;
863
898
  columns.push({
864
- label: ( localize(6440, "Context Size")),
899
+ label: ( localize(6502, "Context Size")),
865
900
  tooltip: "",
866
901
  weight: 0.1,
867
902
  minimumWidth: 140,
@@ -870,7 +905,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
870
905
  return row;
871
906
  }
872
907
  }, {
873
- label: ( localize(6441, "Capabilities")),
908
+ label: ( localize(6503, "Capabilities")),
874
909
  tooltip: "",
875
910
  weight: 0.15,
876
911
  minimumWidth: 180,
@@ -879,10 +914,10 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
879
914
  return row;
880
915
  }
881
916
  }, {
882
- label: hasAnyCostFields ? ( localize(6442, "Cost (Credits per 1M Tokens)")) : ( localize(6443, "Pricing")),
917
+ label: isUBB ? ( localize(6504, "Cost (Credits per 1M Tokens)")) : ( localize(6505, "Pricing")),
883
918
  tooltip: "",
884
- weight: hasAnyCostFields ? 0.24 : 0.15,
885
- minimumWidth: hasAnyCostFields ? 240 : 200,
919
+ weight: isUBB ? 0.24 : 0.15,
920
+ minimumWidth: isUBB ? 240 : 200,
886
921
  templateId: CombinedCostColumnRenderer.TEMPLATE_ID,
887
922
  project(row) {
888
923
  return row;
@@ -898,8 +933,10 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
898
933
  return row;
899
934
  }
900
935
  });
936
+ this.tableMinWidth = columns.reduce((sum, c) => sum + c.minimumWidth, 0);
937
+ this.tableInner.style.minWidth = `${this.tableMinWidth}px`;
901
938
  this.table = this.tableDisposables.add(
902
- this.instantiationService.createInstance(WorkbenchTable, "ModelsWidget", this.tableContainer, ( new Delegate()), columns, [
939
+ this.instantiationService.createInstance(WorkbenchTable, "ModelsWidget", this.tableInner, ( new Delegate()), columns, [
903
940
  gutterColumnRenderer,
904
941
  modelNameColumnRenderer,
905
942
  combinedCostColumnRenderer,
@@ -915,50 +952,50 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
915
952
  accessibilityProvider: {
916
953
  getAriaLabel: e => {
917
954
  if (isLanguageModelProviderEntry(e)) {
918
- return localize(6444, "{0} Models", e.vendorEntry.group.name);
955
+ return localize(6506, "{0} Models", e.vendorEntry.group.name);
919
956
  } else if (isLanguageModelGroupEntry(e)) {
920
- return e.id === "visible" ? ( localize(6445, "Visible Models")) : ( localize(6446, "Hidden Models"));
957
+ return e.id === "visible" ? ( localize(6507, "Visible Models")) : ( localize(6508, "Hidden Models"));
921
958
  } else if (isStatusEntry(e)) {
922
- return localize(6447, "Status: {0}", e.message);
959
+ return localize(6509, "Status: {0}", e.message);
923
960
  }
924
961
  const ariaLabels = [];
925
962
  ariaLabels.push(( localize(
926
- 6448,
963
+ 6510,
927
964
  "{0} from {1}",
928
965
  e.model.metadata.name,
929
966
  e.model.provider.vendor.displayName
930
967
  )));
931
968
  if (e.model.metadata.maxInputTokens || e.model.metadata.maxOutputTokens) {
932
969
  const totalTokens = (e.model.metadata.maxInputTokens ?? 0) + (e.model.metadata.maxOutputTokens ?? 0);
933
- ariaLabels.push(( localize(6449, "Context size: {0} tokens", formatTokenCount(totalTokens))));
970
+ ariaLabels.push(( localize(6511, "Context size: {0} tokens", formatTokenCount(totalTokens))));
934
971
  }
935
972
  if (e.model.metadata.capabilities) {
936
973
  ariaLabels.push(( localize(
937
- 6450,
974
+ 6512,
938
975
  "Capabilities: {0}",
939
976
  ( Object.keys(e.model.metadata.capabilities)).join(", ")
940
977
  )));
941
978
  }
942
979
  const pricingText = e.model.metadata.pricing ?? "-";
943
980
  if (pricingText !== "-") {
944
- ariaLabels.push(( localize(6451, "Pricing: {0}", pricingText)));
981
+ ariaLabels.push(( localize(6513, "Pricing: {0}", pricingText)));
945
982
  }
946
983
  if (e.model.metadata.inputCost !== undefined) {
947
- ariaLabels.push(e.model.metadata.inputCost === 1 ? ( localize(6452, "Input cost: {0} credit per 1M tokens", e.model.metadata.inputCost)) : ( localize(6453, "Input cost: {0} credits per 1M tokens", e.model.metadata.inputCost)));
984
+ ariaLabels.push(e.model.metadata.inputCost === 1 ? ( localize(6514, "Input cost: {0} credit per 1M tokens", e.model.metadata.inputCost)) : ( localize(6515, "Input cost: {0} credits per 1M tokens", e.model.metadata.inputCost)));
948
985
  }
949
986
  if (e.model.metadata.outputCost !== undefined) {
950
- ariaLabels.push(e.model.metadata.outputCost === 1 ? ( localize(6454, "Output cost: {0} credit per 1M tokens", e.model.metadata.outputCost)) : ( localize(
951
- 6455,
987
+ ariaLabels.push(e.model.metadata.outputCost === 1 ? ( localize(6516, "Output cost: {0} credit per 1M tokens", e.model.metadata.outputCost)) : ( localize(
988
+ 6517,
952
989
  "Output cost: {0} credits per 1M tokens",
953
990
  e.model.metadata.outputCost
954
991
  )));
955
992
  }
956
993
  if (e.model.metadata.cacheCost !== undefined) {
957
- ariaLabels.push(e.model.metadata.cacheCost === 1 ? ( localize(6456, "Cache cost: {0} credit per 1M tokens", e.model.metadata.cacheCost)) : ( localize(6457, "Cache cost: {0} credits per 1M tokens", e.model.metadata.cacheCost)));
994
+ ariaLabels.push(e.model.metadata.cacheCost === 1 ? ( localize(6518, "Cache cost: {0} credit per 1M tokens", e.model.metadata.cacheCost)) : ( localize(6519, "Cache cost: {0} credits per 1M tokens", e.model.metadata.cacheCost)));
958
995
  }
959
996
  return ariaLabels.join(". ");
960
997
  },
961
- getWidgetAriaLabel: () => ( localize(6458, "Language Models"))
998
+ getWidgetAriaLabel: () => ( localize(6520, "Language Models"))
962
999
  },
963
1000
  multipleSelectionSupport: true,
964
1001
  setRowLineHeight: false,
@@ -979,6 +1016,24 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
979
1016
  let configureGroup;
980
1017
  let configureVendor;
981
1018
  if (selectedModelEntries.length) {
1019
+ const pinnableEntries = selectedModelEntries.filter(e => e.model.metadata.id !== "auto");
1020
+ if (pinnableEntries.length > 0) {
1021
+ const allPinned = pinnableEntries.every(e => this.languageModelsService.isModelPinned(e.model.identifier));
1022
+ actions.push(toAction({
1023
+ id: allPinned ? "unpinModels" : "pinModels",
1024
+ label: allPinned ? ( localize(6495, "Unpin Model")) : ( localize(6496, "Pin Model")),
1025
+ class: ThemeIcon.asClassName(allPinned ? Codicon.pinned : Codicon.pin),
1026
+ run: () => {
1027
+ for (const entry of pinnableEntries) {
1028
+ if (allPinned) {
1029
+ this.languageModelsService.unpinModel(entry.model.identifier);
1030
+ } else {
1031
+ this.languageModelsService.pinModel(entry.model.identifier);
1032
+ }
1033
+ }
1034
+ }
1035
+ }));
1036
+ }
982
1037
  if (selectedModelEntries.length === 1) {
983
1038
  const configActions = this.languageModelsService.getModelConfigurationActions(selectedModelEntries[0].model.identifier);
984
1039
  if (configActions.length) {
@@ -1009,7 +1064,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
1009
1064
  if (configureVendor.managementCommand) {
1010
1065
  actions.push(toAction({
1011
1066
  id: "configureVendor",
1012
- label: ( localize(6459, "Configure")),
1067
+ label: ( localize(6521, "Configure")),
1013
1068
  run: async () => {
1014
1069
  await this.commandService.executeCommand(configureVendor.managementCommand, configureVendor.vendor);
1015
1070
  await this.viewModel.refresh();
@@ -1018,7 +1073,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
1018
1073
  } else {
1019
1074
  actions.push(toAction({
1020
1075
  id: "configureVendor",
1021
- label: ( localize(6459, "Configure")),
1076
+ label: ( localize(6521, "Configure")),
1022
1077
  run: () => this.languageModelsService.configureLanguageModelsProviderGroup(configureVendor.vendor, configureGroup)
1023
1078
  }));
1024
1079
  }
@@ -1078,16 +1133,29 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
1078
1133
  const configurableVendors = this.languageModelsService.getVendors().filter(vendor => vendor.managementCommand || vendor.configuration);
1079
1134
  const entitlement = this.chatEntitlementService.entitlement;
1080
1135
  const isManagedEntitlement = entitlement === ChatEntitlement.Business || entitlement === ChatEntitlement.Enterprise;
1081
- const supportsAddingModels = this.chatEntitlementService.isInternal || (isManagedEntitlement && this.chatEntitlementService.clientByokEnabled) || (entitlement !== ChatEntitlement.Unknown && entitlement !== ChatEntitlement.Available && !isManagedEntitlement);
1136
+ const supportsAddingModels = this.chatEntitlementService.isInternal || this.chatEntitlementService.clientByokEnabled || (entitlement !== ChatEntitlement.Unknown && entitlement !== ChatEntitlement.Available && !isManagedEntitlement);
1082
1137
  this.addButton.enabled = supportsAddingModels && configurableVendors.length > 0;
1083
- this.addButton.setTitle(!supportsAddingModels && isManagedEntitlement ? ( localize(6460, "Adding models is managed by your organization")) : "");
1084
- this.dropdownActions = ( configurableVendors.map(vendor => toAction({
1138
+ this.addButton.setTitle(!supportsAddingModels && isManagedEntitlement ? ( localize(6522, "Adding models is managed by your organization")) : "");
1139
+ const customEndpointVendor = configurableVendors.find(v => v.vendor === "customendpoint");
1140
+ const customOaiVendor = configurableVendors.find(v => v.vendor === "customoai");
1141
+ const sortedVendors = configurableVendors.filter(v => v.vendor !== "customendpoint" && v.vendor !== "customoai").sort((a, b) => a.displayName.localeCompare(b.displayName));
1142
+ if (customOaiVendor) {
1143
+ sortedVendors.push(customOaiVendor);
1144
+ }
1145
+ const toVendorAction = vendor => toAction({
1085
1146
  id: `enable-${vendor.vendor}`,
1086
1147
  label: vendor.displayName,
1087
1148
  run: async () => {
1088
1149
  await this.addModelsForVendor(vendor);
1089
1150
  }
1090
- })));
1151
+ });
1152
+ this.dropdownActions = ( sortedVendors.map(toVendorAction));
1153
+ if (customEndpointVendor) {
1154
+ if (this.dropdownActions.length > 0) {
1155
+ this.dropdownActions.push(( new Separator()));
1156
+ }
1157
+ this.dropdownActions.push(toVendorAction(customEndpointVendor));
1158
+ }
1091
1159
  }
1092
1160
  filterModels() {
1093
1161
  this.delayedFiltering.trigger(() => {
@@ -1106,7 +1174,9 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
1106
1174
  ));
1107
1175
  const tableHeight = height - 40;
1108
1176
  this.tableContainer.style.height = `${tableHeight}px`;
1109
- this.table.layout(tableHeight, width);
1177
+ const tableWidth = Math.max(width, this.tableMinWidth);
1178
+ this.table.layout(tableHeight, tableWidth);
1179
+ this.tableScrollable?.scanDomNode();
1110
1180
  }
1111
1181
  focusSearch() {
1112
1182
  this.searchWidget.focus();
@@ -52,6 +52,28 @@
52
52
  width: 100%;
53
53
  border-spacing: 0;
54
54
  border-collapse: separate;
55
+ overflow: hidden;
56
+ }
57
+
58
+ .models-widget .models-table-container > .monaco-scrollable-element {
59
+ width: 100%;
60
+ height: 100%;
61
+ }
62
+
63
+ .models-widget .models-table-container .models-table-viewport {
64
+ width: 100%;
65
+ height: 100%;
66
+ overflow-x: auto;
67
+ overflow-y: hidden;
68
+ scrollbar-width: none;
69
+ }
70
+
71
+ .models-widget .models-table-container .models-table-viewport::-webkit-scrollbar {
72
+ display: none;
73
+ }
74
+
75
+ .models-widget .models-table-container .models-table-inner {
76
+ height: 100%;
55
77
  }
56
78
 
57
79
  .models-widget .models-table-container .monaco-table-tr {
@@ -4,12 +4,19 @@ import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/
4
4
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
5
5
  import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
6
6
  import { ExtensionIdentifier } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions";
7
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
7
8
  import { IWebview } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview";
8
9
  import { IWebviewService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service";
9
10
  import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
11
+ import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
10
12
  import { IChatOutputRendererService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.service";
11
13
  export interface IChatOutputItemRenderer {
12
- renderOutputPart(mime: string, data: Uint8Array, webview: IWebview, token: CancellationToken): Promise<void>;
14
+ renderOutputPart(mime: string, data: Uint8Array, webview: IWebview, context: IChatOutputRenderContext, token: CancellationToken): Promise<void>;
15
+ }
16
+ export interface IChatOutputRenderContext {
17
+ readonly codeBlockContext?: {
18
+ readonly languageIdentifier: string;
19
+ };
13
20
  }
14
21
  export interface RegisterOptions {
15
22
  readonly extension?: {
@@ -23,19 +30,32 @@ export interface RenderedOutputPart extends IDisposable {
23
30
  reinitialize(): void;
24
31
  }
25
32
  export interface RenderOutputPartWebviewOptions {
26
- readonly origin?: string;
33
+ readonly title?: string;
27
34
  readonly webviewState?: string;
35
+ readonly chatSessionResource?: URI;
36
+ }
37
+ export interface RenderCodeBlockWebviewOptions extends RenderOutputPartWebviewOptions {
38
+ readonly chatSessionResource: URI;
28
39
  }
29
40
  export declare class ChatOutputRendererService extends Disposable implements IChatOutputRendererService {
30
41
  private readonly _contextKeyService;
31
42
  private readonly _extensionService;
32
43
  private readonly _webviewService;
44
+ private readonly _chatWidgetService;
33
45
  _serviceBrand: undefined;
46
+ private readonly _originStore;
34
47
  private readonly _contributions;
35
48
  private readonly _renderers;
36
- constructor(_contextKeyService: IContextKeyService, _extensionService: IExtensionService, _webviewService: IWebviewService);
49
+ constructor(_contextKeyService: IContextKeyService, _extensionService: IExtensionService, _webviewService: IWebviewService, _chatWidgetService: IChatWidgetService, storageService: IStorageService);
37
50
  registerRenderer(viewType: string, renderer: IChatOutputItemRenderer, options: RegisterOptions): IDisposable;
51
+ hasCodeBlockRenderer(languageIdentifier: string): boolean;
38
52
  renderOutputPart(mime: string, data: Uint8Array, parent: HTMLElement, webviewOptions: RenderOutputPartWebviewOptions, token: CancellationToken): Promise<RenderedOutputPart>;
53
+ renderCodeBlock(languageIdentifier: string, data: Uint8Array, parent: HTMLElement, webviewOptions: RenderCodeBlockWebviewOptions, token: CancellationToken): Promise<RenderedOutputPart>;
54
+ private doRenderOutputPart;
55
+ private delegateScrollToChatWidget;
56
+ private getOrigin;
57
+ private getRendererForMime;
58
+ private getRendererForCodeBlock;
39
59
  private getRenderer;
40
60
  private updateContributions;
41
61
  }