@codingame/monaco-vscode-chat-service-override 32.0.2 → 33.0.5

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,91 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
5
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
6
+ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
7
+ import { IChatContextService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.service';
8
+ import { isProposedApiEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
9
+ import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
10
+
11
+ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
12
+ extensionPoint: "chatContext",
13
+ jsonSchema: {
14
+ description: ( localize(6786, "Contributes chat context integrations to the chat widget.")),
15
+ type: "array",
16
+ items: {
17
+ type: "object",
18
+ properties: {
19
+ id: {
20
+ description: ( localize(6787, "A unique identifier for this item.")),
21
+ type: "string"
22
+ },
23
+ icon: {
24
+ description: ( localize(6788, "The icon associated with this chat context item.")),
25
+ type: "string"
26
+ },
27
+ displayName: {
28
+ description: ( localize(
29
+ 6789,
30
+ "A user-friendly name for this item which is used for display in menus."
31
+ )),
32
+ type: "string"
33
+ }
34
+ },
35
+ required: ["id", "icon", "displayName"]
36
+ }
37
+ },
38
+ activationEventsGenerator: function*(contributions) {
39
+ for (const contrib of contributions) {
40
+ yield `onChatContextProvider:${contrib.id}`;
41
+ }
42
+ }
43
+ });
44
+ let ChatContextContribution = class ChatContextContribution extends Disposable {
45
+ static {
46
+ this.ID = "workbench.contrib.chatContextContribution";
47
+ }
48
+ constructor(_chatContextService) {
49
+ super();
50
+ this._chatContextService = _chatContextService;
51
+ extensionPoint.setHandler(extensions => {
52
+ for (const ext of extensions) {
53
+ if (!isProposedApiEnabled(ext.description)) {
54
+ continue;
55
+ }
56
+ if (!Array.isArray(ext.value)) {
57
+ continue;
58
+ }
59
+ for (const contribution of ext.value) {
60
+ const icon = contribution.icon ? ThemeIcon.fromString(contribution.icon) : undefined;
61
+ if (!icon && contribution.icon) {
62
+ ext.collector.error(( localize(
63
+ 6790,
64
+ "Invalid icon format for chat context contribution '{0}'. Icon must be in the format '{1}' or '{2}', e.g. '{3}'.",
65
+ contribution.id,
66
+ "$(iconId)",
67
+ "$(iconId~spin)",
68
+ "$(copilot)"
69
+ )));
70
+ continue;
71
+ }
72
+ if (!icon) {
73
+ continue;
74
+ }
75
+ this._chatContextService.setChatContextProvider(`${ext.description.id}-${contribution.id}`, {
76
+ title: contribution.displayName,
77
+ icon
78
+ });
79
+ }
80
+ }
81
+ });
82
+ }
83
+ };
84
+ ChatContextContribution = ( __decorate([( __param(0, IChatContextService))], ChatContextContribution));
85
+ registerWorkbenchContribution2(
86
+ ChatContextContribution.ID,
87
+ ChatContextContribution,
88
+ WorkbenchPhase.AfterRestored
89
+ );
90
+
91
+ export { ChatContextContribution };
@@ -0,0 +1,52 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { IRemoteAgentHostConnectionInfo } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/remoteAgentHostService";
3
+ export declare const COPILOT_CLI_LOCAL_AH_SCHEME = "agent-host-copilotcli";
4
+ export declare const COPILOT_CLI_EH_SCHEME = "copilotcli";
5
+ /**
6
+ * Builds the local `events.jsonl` URI under `~/.copilot/session-state/<rawId>/`.
7
+ *
8
+ * Used for both the local Agent Host Copilot CLI provider and the
9
+ * extension-host Copilot CLI provider, which share the same on-disk layout
10
+ * and the same chat session URI shape (`copilotcli:/<rawId>`).
11
+ */
12
+ export declare function buildLocalEventsUri(userHome: URI, rawSessionId: string): URI;
13
+ /**
14
+ * Builds a `vscode-agent-host://` URI for the `events.jsonl` file inside
15
+ * the host's user home directory, using the connection's reported
16
+ * `defaultDirectory` (set from `os.homedir()` on the host during the
17
+ * AHP handshake).
18
+ *
19
+ * The path is joined at the URI-path level using forward slashes, which
20
+ * works for both POSIX hosts (`/home/me`) and Windows hosts whose
21
+ * `URI.file(os.homedir()).path` is also forward-slash-rooted (e.g.
22
+ * `/c:/Users/me`). Returns `undefined` if the host did not report a
23
+ * usable `defaultDirectory`.
24
+ */
25
+ export declare function buildRemoteEventsUri(connection: IRemoteAgentHostConnectionInfo, rawSessionId: string): URI | undefined;
26
+ /**
27
+ * Parses the connection authority out of a remote AH chat session scheme
28
+ * of the form `remote-<authority>-copilotcli`. Returns `undefined` for
29
+ * any other scheme, including the local `copilotcli` scheme.
30
+ */
31
+ export declare function parseRemoteAuthorityFromScheme(scheme: string): string | undefined;
32
+ export type ResolveEventsUriResult = {
33
+ readonly kind: "ok";
34
+ readonly resource: URI;
35
+ } | {
36
+ readonly kind: "no-session";
37
+ } | {
38
+ readonly kind: "unsupported-scheme";
39
+ readonly scheme: string;
40
+ } | {
41
+ readonly kind: "remote-not-connected";
42
+ readonly authority: string;
43
+ } | {
44
+ readonly kind: "remote-no-home";
45
+ readonly authority: string;
46
+ };
47
+ /**
48
+ * Pure resolver for tests. Translates a chat session resource into the
49
+ * `events.jsonl` URI for the corresponding Copilot CLI session, or
50
+ * returns a structured error.
51
+ */
52
+ export declare function resolveEventsUri(sessionResource: URI | undefined, userHome: URI, getConnectionByAuthority: (authority: string) => IRemoteAgentHostConnectionInfo | undefined): ResolveEventsUriResult;
@@ -0,0 +1,82 @@
1
+
2
+ import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
3
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
4
+ import { agentHostAuthority, toAgentHostUri } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
5
+
6
+ const COPILOT_CLI_PROVIDER = "copilotcli";
7
+ const COPILOT_CLI_LOCAL_AH_SCHEME = `agent-host-${COPILOT_CLI_PROVIDER}`;
8
+ const COPILOT_CLI_EH_SCHEME = COPILOT_CLI_PROVIDER;
9
+ const REMOTE_PROVIDER_PREFIX = "remote-";
10
+ const REMOTE_PROVIDER_SUFFIX = `-${COPILOT_CLI_PROVIDER}`;
11
+ function buildLocalEventsUri(userHome, rawSessionId) {
12
+ return joinPath(userHome, ".copilot", "session-state", rawSessionId, "events.jsonl");
13
+ }
14
+ function buildRemoteEventsUri(connection, rawSessionId) {
15
+ const homePath = connection.defaultDirectory;
16
+ if (!homePath) {
17
+ return undefined;
18
+ }
19
+ const trimmed = homePath.endsWith("/") ? homePath.slice(0, -1) : homePath;
20
+ const remoteFileUri = ( URI.from({
21
+ scheme: "file",
22
+ path: `${trimmed}/.copilot/session-state/${rawSessionId}/events.jsonl`
23
+ }));
24
+ const authority = agentHostAuthority(connection.address);
25
+ return toAgentHostUri(remoteFileUri, authority);
26
+ }
27
+ function parseRemoteAuthorityFromScheme(scheme) {
28
+ if (!scheme.startsWith(REMOTE_PROVIDER_PREFIX) || !scheme.endsWith(REMOTE_PROVIDER_SUFFIX)) {
29
+ return undefined;
30
+ }
31
+ const authority = scheme.slice(
32
+ REMOTE_PROVIDER_PREFIX.length,
33
+ scheme.length - REMOTE_PROVIDER_SUFFIX.length
34
+ );
35
+ return authority || undefined;
36
+ }
37
+ function resolveEventsUri(sessionResource, userHome, getConnectionByAuthority) {
38
+ if (!sessionResource) {
39
+ return {
40
+ kind: "no-session"
41
+ };
42
+ }
43
+ const rawId = sessionResource.path.startsWith("/") ? sessionResource.path.substring(1) : sessionResource.path;
44
+ if (!rawId) {
45
+ return {
46
+ kind: "no-session"
47
+ };
48
+ }
49
+ if (sessionResource.scheme === COPILOT_CLI_LOCAL_AH_SCHEME || sessionResource.scheme === COPILOT_CLI_EH_SCHEME) {
50
+ return {
51
+ kind: "ok",
52
+ resource: buildLocalEventsUri(userHome, rawId)
53
+ };
54
+ }
55
+ const remoteAuthority = parseRemoteAuthorityFromScheme(sessionResource.scheme);
56
+ if (remoteAuthority) {
57
+ const connection = getConnectionByAuthority(remoteAuthority);
58
+ if (!connection) {
59
+ return {
60
+ kind: "remote-not-connected",
61
+ authority: remoteAuthority
62
+ };
63
+ }
64
+ const resource = buildRemoteEventsUri(connection, rawId);
65
+ if (!resource) {
66
+ return {
67
+ kind: "remote-no-home",
68
+ authority: remoteAuthority
69
+ };
70
+ }
71
+ return {
72
+ kind: "ok",
73
+ resource
74
+ };
75
+ }
76
+ return {
77
+ kind: "unsupported-scheme",
78
+ scheme: sessionResource.scheme
79
+ };
80
+ }
81
+
82
+ export { COPILOT_CLI_EH_SCHEME, COPILOT_CLI_LOCAL_AH_SCHEME, buildLocalEventsUri, buildRemoteEventsUri, parseRemoteAuthorityFromScheme, resolveEventsUri };
@@ -16,12 +16,32 @@ export interface DefaultModelContributionOptions {
16
16
  readonly logPrefix: string;
17
17
  /** Additional filter beyond `isUserSelectable`. Return `true` to include the model. */
18
18
  readonly filter?: (metadata: ILanguageModelChatMetadata) => boolean;
19
+ /**
20
+ * How model identifiers are encoded in the stored setting value.
21
+ * - `'qualifiedName'` (default): `${name} (${vendor})` — matches
22
+ * {@link ILanguageModelChatMetadata.asQualifiedName}. Kept for backward
23
+ * compatibility with existing settings (plan/explore agent).
24
+ * - `'vendorAndId'`: `${vendor}/${id}` — stable composite of API-stable
25
+ * fields, directly usable with `vscode.lm.selectChatModels`.
26
+ */
27
+ readonly storageFormat?: "qualifiedName" | "vendorAndId";
28
+ /**
29
+ * Optional override for the label of the default ("empty") enum entry.
30
+ * When omitted, defaults to `"Auto (Vendor Default)"`.
31
+ */
32
+ readonly defaultEntryLabel?: string;
33
+ /**
34
+ * Optional override for the description of the default ("empty") enum
35
+ * entry. See {@link defaultEntryLabel}.
36
+ */
37
+ readonly defaultEntryDescription?: string;
19
38
  }
20
39
  /**
21
40
  * Creates the initial static arrays used by configuration registration code.
22
41
  * The returned arrays are mutated in-place by {@link DefaultModelContribution}.
42
+ *
23
43
  */
24
- export declare function createDefaultModelArrays(): DefaultModelArrays;
44
+ export declare function createDefaultModelArrays(defaultEntryLabel?: string, defaultEntryDescription?: string): DefaultModelArrays;
25
45
  /**
26
46
  * Shared base class for workbench contributions that populate a dynamic enum
27
47
  * of language models for a settings picker.
@@ -7,14 +7,13 @@ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log
7
7
  import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
8
8
  import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
9
9
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
10
- import { DEFAULT_MODEL_PICKER_CATEGORY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/widget/input/modelPickerWidget';
11
10
 
12
11
  const configurationRegistry = ( Registry.as(Extensions.Configuration));
13
- function createDefaultModelArrays() {
12
+ function createDefaultModelArrays(defaultEntryLabel, defaultEntryDescription) {
14
13
  return {
15
14
  modelIds: [""],
16
- modelLabels: [( localize(6722, "Auto (Vendor Default)"))],
17
- modelDescriptions: [( localize(6723, "Use the vendor's default model"))]
15
+ modelLabels: [defaultEntryLabel ?? ( localize(6791, "Auto (Vendor Default)"))],
16
+ modelDescriptions: [defaultEntryDescription ?? ( localize(6792, "Use the vendor's default model"))]
18
17
  };
19
18
  }
20
19
  let DefaultModelContribution = class DefaultModelContribution extends Disposable {
@@ -39,15 +38,18 @@ let DefaultModelContribution = class DefaultModelContribution extends Disposable
39
38
  configKey,
40
39
  configSectionId,
41
40
  logPrefix,
42
- filter
41
+ filter,
42
+ storageFormat,
43
+ defaultEntryLabel,
44
+ defaultEntryDescription
43
45
  } = this._options;
44
46
  try {
45
47
  modelIds.length = 0;
46
48
  modelLabels.length = 0;
47
49
  modelDescriptions.length = 0;
48
50
  modelIds.push("");
49
- modelLabels.push(( localize(6722, "Auto (Vendor Default)")));
50
- modelDescriptions.push(( localize(6723, "Use the vendor's default model")));
51
+ modelLabels.push(defaultEntryLabel ?? ( localize(6791, "Auto (Vendor Default)")));
52
+ modelDescriptions.push(defaultEntryDescription ?? ( localize(6792, "Use the vendor's default model")));
51
53
  const models = [];
52
54
  const allModelIds = this._languageModelsService.getLanguageModelIds();
53
55
  for (const modelId of allModelIds) {
@@ -65,8 +67,16 @@ let DefaultModelContribution = class DefaultModelContribution extends Disposable
65
67
  this._logService.error(`${logPrefix} Error looking up model ${modelId}:`, e);
66
68
  }
67
69
  }
70
+ const vendors = this._languageModelsService.getVendors();
71
+ const visibleVendors = ( new Set(( vendors.map(vendor => vendor.vendor))));
68
72
  const supportedModels = models.filter(model => {
69
- if (!model.metadata?.isUserSelectable) {
73
+ if (!( visibleVendors.has(model.metadata.vendor))) {
74
+ return false;
75
+ }
76
+ if (model.metadata?.isUserSelectable === false) {
77
+ return false;
78
+ }
79
+ if (model.metadata?.targetChatSessionType !== undefined) {
70
80
  return false;
71
81
  }
72
82
  if (filter && !filter(model.metadata)) {
@@ -74,19 +84,46 @@ let DefaultModelContribution = class DefaultModelContribution extends Disposable
74
84
  }
75
85
  return true;
76
86
  });
77
- supportedModels.sort((a, b) => {
78
- const aCategory = a.metadata.modelPickerCategory ?? DEFAULT_MODEL_PICKER_CATEGORY;
79
- const bCategory = b.metadata.modelPickerCategory ?? DEFAULT_MODEL_PICKER_CATEGORY;
80
- if (aCategory.order !== bCategory.order) {
81
- return aCategory.order - bCategory.order;
87
+ supportedModels.sort((a, b) => a.metadata.name.localeCompare(b.metadata.name));
88
+ const vendorDisplayNames = ( new Map());
89
+ for (const vendor of vendors) {
90
+ vendorDisplayNames.set(vendor.vendor, vendor.displayName);
91
+ }
92
+ const ambiguousVendorIds = ( new Set());
93
+ if (storageFormat === "vendorAndId") {
94
+ const counts = ( new Map());
95
+ for (const model of models) {
96
+ const key = `${model.metadata.vendor}/${model.metadata.id}`;
97
+ counts.set(key, (counts.get(key) ?? 0) + 1);
82
98
  }
83
- return a.metadata.name.localeCompare(b.metadata.name);
84
- });
99
+ for (const [key, count] of counts) {
100
+ if (count > 1) {
101
+ ambiguousVendorIds.add(key);
102
+ }
103
+ }
104
+ }
85
105
  for (const model of supportedModels) {
86
106
  try {
87
- const qualifiedName = ILanguageModelChatMetadata.asQualifiedName(model.metadata);
88
- modelIds.push(qualifiedName);
89
- modelLabels.push(model.metadata.name);
107
+ const storedId = storageFormat === "vendorAndId" ? `${model.metadata.vendor}/${model.metadata.id}` : ILanguageModelChatMetadata.asQualifiedName(model.metadata);
108
+ if (( ambiguousVendorIds.has(storedId))) {
109
+ this._logService.trace(
110
+ `${logPrefix} Skipping model '${model.metadata.name}' (${storedId}): key collides with another registered model.`
111
+ );
112
+ continue;
113
+ }
114
+ const vendorDisplayName = vendorDisplayNames.get(model.metadata.vendor);
115
+ if (!vendorDisplayName) {
116
+ this._logService.trace(
117
+ `${logPrefix} No vendor descriptor for '${model.metadata.vendor}' (model '${model.metadata.id}'); falling back to vendor id in label.`
118
+ );
119
+ }
120
+ modelIds.push(storedId);
121
+ modelLabels.push(( localize(
122
+ 6793,
123
+ "{0} ({1})",
124
+ model.metadata.name,
125
+ vendorDisplayName ?? model.metadata.vendor
126
+ )));
90
127
  modelDescriptions.push(model.metadata.tooltip ?? model.metadata.detail ?? "");
91
128
  } catch (e) {
92
129
  this._logService.error(`${logPrefix} Error adding model ${model.metadata.name}:`, e);
@@ -5,16 +5,16 @@ import { WorkbenchState } from '@codingame/monaco-vscode-api/vscode/vs/platform/
5
5
  import { ContributionEnablementState, isContributionDisabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
6
6
 
7
7
  function createEnablementActions(key, enablementModel, idPrefix) {
8
- return [( new Action(`${idPrefix}.enable`, ( localize(6724, "Enable")), undefined, true, () => {
8
+ return [( new Action(`${idPrefix}.enable`, ( localize(6794, "Enable")), undefined, true, () => {
9
9
  enablementModel.setEnabled(key, ContributionEnablementState.EnabledProfile);
10
10
  return Promise.resolve();
11
- })), ( new Action(`${idPrefix}.enableForWorkspace`, ( localize(6725, "Enable (Workspace)")), undefined, true, () => {
11
+ })), ( new Action(`${idPrefix}.enableForWorkspace`, ( localize(6795, "Enable (Workspace)")), undefined, true, () => {
12
12
  enablementModel.setEnabled(key, ContributionEnablementState.EnabledWorkspace);
13
13
  return Promise.resolve();
14
- })), ( new Action(`${idPrefix}.disable`, ( localize(6726, "Disable")), undefined, true, () => {
14
+ })), ( new Action(`${idPrefix}.disable`, ( localize(6796, "Disable")), undefined, true, () => {
15
15
  enablementModel.setEnabled(key, ContributionEnablementState.DisabledProfile);
16
16
  return Promise.resolve();
17
- })), ( new Action(`${idPrefix}.disableForWorkspace`, ( localize(6727, "Disable (Workspace)")), undefined, true, () => {
17
+ })), ( new Action(`${idPrefix}.disableForWorkspace`, ( localize(6797, "Disable (Workspace)")), undefined, true, () => {
18
18
  enablementModel.setEnabled(key, ContributionEnablementState.DisabledWorkspace);
19
19
  return Promise.resolve();
20
20
  }))];
@@ -46,8 +46,8 @@ let EnablementStatusWidget = class EnablementStatusWidget extends Disposable {
46
46
  };
47
47
  EnablementStatusWidget = ( __decorate([( __param(3, IMarkdownRendererService))], EnablementStatusWidget));
48
48
  const pluginEnablementLabels = {
49
- disabledProfile: ( localize(6728, "This plugin is disabled.")),
50
- disabledWorkspace: ( localize(6729, "This plugin is disabled for this workspace."))
49
+ disabledProfile: ( localize(6798, "This plugin is disabled.")),
50
+ disabledWorkspace: ( localize(6799, "This plugin is disabled for this workspace."))
51
51
  };
52
52
 
53
53
  export { EnablementStatusWidget, pluginEnablementLabels };
@@ -0,0 +1,51 @@
1
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
3
+ import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
4
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
5
+ import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
6
+ import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
7
+ import { ILanguageModelsConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelsConfiguration.service";
8
+ /**
9
+ * Owns the `github.copilot.hasByokModels` context key. The key is true iff:
10
+ * - `github.copilot.clientByokEnabled` is true (set by `ChatEntitlementService` + Copilot extension),
11
+ * - `chat.offlineByok` is enabled and `chat.aiDisabled` is off, and
12
+ * - the `LanguageModelsService` has at least one resolved, user-selectable non-Copilot model
13
+ * (signalled by the `chatNonCopilotModelsAreUserSelectable` context key).
14
+ *
15
+ * Verifying the last condition is expensive: it requires activating each BYOK-contributing
16
+ * extension and round-tripping into its provider. To avoid paying that cost just to gate UI,
17
+ * this contribution never triggers such activations itself. The strategy is:
18
+ *
19
+ * 1. On startup, optimistically restore the last persisted answer from
20
+ * `chat.hasByokModels.lastKnown` so UI surfaces gated by this key are correct on warm
21
+ * reload before anything else runs.
22
+ * 2. Whenever the `chatNonCopilotModelsAreUserSelectable` signal flips on — which happens
23
+ * naturally when something else resolves a BYOK vendor (notably `ChatInputPart`, which
24
+ * activates the previously selected model's vendor when restoring its persisted selection) —
25
+ * record `true` and persist it.
26
+ * 3. Once extensions are fully scanned, if there are no configured non-Copilot vendors in the
27
+ * language-models configuration, override a stale optimistic `true` with `false`. Same on
28
+ * runtime removal of all groups, and when the feature flag flips off.
29
+ *
30
+ * The trade-off is the first-time experience: a brand-new user must pick a BYOK model once
31
+ * before this contribution observes the signal and persists the answer. From then on, the
32
+ * answer survives reloads without any activation cost — users without BYOK pay nothing.
33
+ *
34
+ * Eager so the key is bound at workbench startup before any sign-in UI surfaces render.
35
+ */
36
+ export declare class HasByokModelsContribution extends Disposable implements IWorkbenchContribution {
37
+ private readonly _languageModelsConfigurationService;
38
+ private readonly _contextKeyService;
39
+ private readonly _configurationService;
40
+ private readonly _storageService;
41
+ static readonly ID = "workbench.contrib.hasByokModels";
42
+ private static readonly STORAGE_KEY_LAST_KNOWN;
43
+ private static readonly TRACKED_KEYS;
44
+ private readonly _hasByokModels;
45
+ private _extensionsRegistered;
46
+ constructor(_languageModelsConfigurationService: ILanguageModelsConfigurationService, _contextKeyService: IContextKeyService, _configurationService: IConfigurationService, _storageService: IStorageService, extensionService: IExtensionService);
47
+ private _isFeatureEnabled;
48
+ private _restore;
49
+ private _setResult;
50
+ private _update;
51
+ }
@@ -0,0 +1,106 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
4
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
6
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
7
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
8
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
9
+ import { ChatEntitlementContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
10
+ import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
11
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
12
+ import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
13
+ import { COPILOT_VENDOR_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
14
+ import { ILanguageModelsConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelsConfiguration.service';
15
+
16
+ var HasByokModelsContribution_1;
17
+ let HasByokModelsContribution = class HasByokModelsContribution extends Disposable {
18
+ static {
19
+ HasByokModelsContribution_1 = this;
20
+ }
21
+ static {
22
+ this.ID = "workbench.contrib.hasByokModels";
23
+ }
24
+ static {
25
+ this.STORAGE_KEY_LAST_KNOWN = "chat.hasByokModels.lastKnown";
26
+ }
27
+ static {
28
+ this.TRACKED_KEYS = ( new Set([
29
+ ChatEntitlementContextKeys.clientByokEnabled.key,
30
+ ChatContextKeys.nonCopilotLanguageModelsAreUserSelectable.key
31
+ ]));
32
+ }
33
+ constructor(
34
+ _languageModelsConfigurationService,
35
+ _contextKeyService,
36
+ _configurationService,
37
+ _storageService,
38
+ extensionService
39
+ ) {
40
+ super();
41
+ this._languageModelsConfigurationService = _languageModelsConfigurationService;
42
+ this._contextKeyService = _contextKeyService;
43
+ this._configurationService = _configurationService;
44
+ this._storageService = _storageService;
45
+ this._extensionsRegistered = false;
46
+ this._hasByokModels = ChatEntitlementContextKeys.hasByokModels.bindTo(this._contextKeyService);
47
+ this._restore();
48
+ this._update();
49
+ extensionService.whenInstalledExtensionsRegistered().then(() => {
50
+ if (!this._store.isDisposed) {
51
+ this._extensionsRegistered = true;
52
+ this._update();
53
+ }
54
+ });
55
+ this._register(Event.any(Event.filter(
56
+ this._configurationService.onDidChangeConfiguration,
57
+ e => e.affectsConfiguration(ChatConfiguration.OfflineByok) || e.affectsConfiguration(ChatConfiguration.AIDisabled)
58
+ ), Event.filter(
59
+ this._contextKeyService.onDidChangeContext,
60
+ e => e.affectsSome(HasByokModelsContribution_1.TRACKED_KEYS)
61
+ ), this._languageModelsConfigurationService.onDidChangeLanguageModelGroups)(() => this._update()));
62
+ }
63
+ _isFeatureEnabled() {
64
+ return !this._configurationService.getValue(ChatConfiguration.AIDisabled) && !!this._configurationService.getValue(ChatConfiguration.OfflineByok) && !!this._contextKeyService.getContextKeyValue(ChatEntitlementContextKeys.clientByokEnabled.key);
65
+ }
66
+ _restore() {
67
+ if (!this._isFeatureEnabled()) {
68
+ this._hasByokModels.set(false);
69
+ return;
70
+ }
71
+ this._hasByokModels.set(this._storageService.getBoolean(
72
+ HasByokModelsContribution_1.STORAGE_KEY_LAST_KNOWN,
73
+ StorageScope.APPLICATION,
74
+ false
75
+ ));
76
+ }
77
+ _setResult(value) {
78
+ this._hasByokModels.set(value);
79
+ this._storageService.store(
80
+ HasByokModelsContribution_1.STORAGE_KEY_LAST_KNOWN,
81
+ value,
82
+ StorageScope.APPLICATION,
83
+ StorageTarget.MACHINE
84
+ );
85
+ }
86
+ _update() {
87
+ if (!this._isFeatureEnabled()) {
88
+ this._setResult(false);
89
+ return;
90
+ }
91
+ if (this._contextKeyService.getContextKeyValue(ChatContextKeys.nonCopilotLanguageModelsAreUserSelectable.key)) {
92
+ this._setResult(true);
93
+ return;
94
+ }
95
+ if (!this._extensionsRegistered) {
96
+ return;
97
+ }
98
+ const hasByokVendor = ( this._languageModelsConfigurationService.getLanguageModelsProviderGroups().some(g => g.vendor !== COPILOT_VENDOR_ID));
99
+ if (!hasByokVendor) {
100
+ this._setResult(false);
101
+ }
102
+ }
103
+ };
104
+ HasByokModelsContribution = HasByokModelsContribution_1 = ( __decorate([( __param(0, ILanguageModelsConfigurationService)), ( __param(1, IContextKeyService)), ( __param(2, IConfigurationService)), ( __param(3, IStorageService)), ( __param(4, IExtensionService))], HasByokModelsContribution));
105
+
106
+ export { HasByokModelsContribution };
@@ -44,7 +44,9 @@ let LanguageModelsConfigurationService = class LanguageModelsConfigurationServic
44
44
  this.languageModelsProviderGroups = [];
45
45
  this.modelsConfigurationFile = uriIdentityService.extUri.joinPath(userDataProfileService.currentProfile.location, "chatLanguageModels.json");
46
46
  this.updateLanguageModelsConfiguration();
47
- this._register(fileService.watch(this.modelsConfigurationFile));
47
+ this._register(
48
+ fileService.watch(uriIdentityService.extUri.dirname(this.modelsConfigurationFile))
49
+ );
48
50
  this._register(fileService.onDidFilesChange(e => {
49
51
  if (e.contains(this.modelsConfigurationFile)) {
50
52
  this.updateLanguageModelsConfiguration();
@@ -340,7 +342,7 @@ let ChatLanguageModelsDataContribution = class ChatLanguageModelsDataContributio
340
342
  },
341
343
  settings: {
342
344
  type: "object",
343
- description: ( localize(6730, "Per-model settings"))
345
+ description: ( localize(6800, "Per-model settings"))
344
346
  }
345
347
  },
346
348
  allOf: [...( vendors.map(vendor => ({
@@ -34,7 +34,7 @@ class NavigatePlanReviewFeedbackAction extends Action2 {
34
34
  constructor(_next) {
35
35
  super({
36
36
  id: _next ? navigateNextPlanReviewFeedbackActionId : navigatePreviousPlanReviewFeedbackActionId,
37
- title: _next ? ( localize2(6731, "Go to Next Feedback Comment")) : ( localize2(6732, "Go to Previous Feedback Comment")),
37
+ title: _next ? ( localize2(6801, "Go to Next Feedback Comment")) : ( localize2(6802, "Go to Previous Feedback Comment")),
38
38
  icon: _next ? Codicon.arrowDown : Codicon.arrowUp,
39
39
  category: CHAT_CATEGORY,
40
40
  f1: true,
@@ -73,8 +73,8 @@ class ClearAllPlanReviewFeedbackAction extends Action2 {
73
73
  constructor() {
74
74
  super({
75
75
  id: clearAllPlanReviewFeedbackActionId,
76
- title: ( localize2(6733, "Clear")),
77
- tooltip: ( localize2(6734, "Clear All Feedback")),
76
+ title: ( localize2(6803, "Clear")),
77
+ tooltip: ( localize2(6804, "Clear All Feedback")),
78
78
  icon: Codicon.clearAll,
79
79
  category: CHAT_CATEGORY,
80
80
  f1: true,
@@ -111,7 +111,7 @@ function registerPlanReviewFeedbackEditorActions() {
111
111
  MenuRegistry.appendMenuItem(PlanReviewFeedbackMenuId, {
112
112
  command: {
113
113
  id: navigationBearingFakeActionId,
114
- title: ( localize(6735, "Navigation Status")),
114
+ title: ( localize(6805, "Navigation Status")),
115
115
  precondition: ( ContextKeyExpr.false())
116
116
  },
117
117
  group: "navigate",