@codingame/monaco-vscode-katex-common 26.2.2 → 28.0.0

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 (230) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +10 -4
  3. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +37 -11
  4. package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +3 -0
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +15 -4
  6. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +576 -0
  7. package/vscode/src/vs/{workbench/contrib → platform}/mcp/common/modelContextProtocolApps.js +1 -0
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +5 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +176 -17
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +127 -64
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.d.ts +1 -0
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -11
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +9 -9
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +14 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +105 -29
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +13 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +69 -43
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +35 -7
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +187 -78
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +138 -32
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -6
  28. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +394 -87
  29. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +28 -13
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +38 -19
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +113 -116
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +16 -15
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -2
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +2 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +30 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +250 -132
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  43. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
  44. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.d.ts +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +3 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +9 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +2 -4
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +7 -10
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +4 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +22 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +3 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.js +11 -3
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.d.ts +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.d.ts +0 -2
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +0 -6
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +4 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.js +6 -3
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +3 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +7 -6
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +0 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -27
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +4 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +53 -20
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +3 -2
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +24 -10
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +4 -4
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.js +11 -6
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +62 -7
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +414 -129
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +4 -3
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +19 -12
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +14 -5
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +98 -26
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.js +1 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +11 -2
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +252 -80
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.d.ts +29 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +246 -8
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +4 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +39 -18
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +6 -4
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +36 -23
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +5 -7
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +42 -37
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +12 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +65 -18
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +9 -6
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +356 -415
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +14 -7
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +102 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +68 -19
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/codeBlockPart.css +48 -15
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +5 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +47 -23
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -2
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +0 -5
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +57 -4
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +24 -8
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +18 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +103 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -18
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +44 -1
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +85 -89
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +3 -5
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +15 -17
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +4 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +41 -2
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +2 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +6 -5
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +13 -1
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.js +2 -1
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +21 -5
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +341 -88
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +13 -4
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +35 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +440 -0
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +24 -10
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +437 -241
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +77 -17
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +521 -284
  176. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
  178. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +71 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +664 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
  181. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -0
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +12 -1
  183. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +57 -16
  184. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +4 -7
  185. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +89 -49
  186. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +1 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +28 -0
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +87 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +15 -17
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +7 -4
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +563 -140
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +35 -26
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +2 -2
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +26 -23
  198. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +26 -6
  199. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +145 -79
  200. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
  201. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +35 -15
  202. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.d.ts +7 -0
  203. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +127 -30
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +1 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +20 -14
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +6 -6
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +96 -34
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +11 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +68 -27
  210. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +5 -0
  211. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +125 -13
  212. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +8 -11
  213. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +54 -45
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +11 -10
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +172 -112
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -44
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +28 -4
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +84 -3
  221. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +9 -2
  222. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +58 -41
  223. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  224. package/vscode/src/vs/workbench/contrib/mcp/common/modelContextProtocolApps.d.ts +1 -548
  225. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  227. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  229. package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
  230. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +0 -187
@@ -0,0 +1,664 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { append, $, addDisposableListener, EventType, EventHelper, getActiveElement, isHTMLElement, isHTMLInputElement, reset } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
+ import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
5
+ import { renderIcon, renderLabelWithIcons } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
6
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
7
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
9
+ import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
10
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
12
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
13
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
14
+ import { ActionListItemKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList';
15
+ import { IActionWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service';
16
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
17
+ import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
18
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
19
+ import { TelemetryTrustedValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetryUtils';
20
+ import { MANAGE_CHAT_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
21
+ import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
22
+ import { isProUser, ChatEntitlement } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
23
+ import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
24
+ import { semverExports } from '@codingame/monaco-vscode-api/_virtual/semver';
25
+ import { StateType } from '@codingame/monaco-vscode-api/vscode/vs/platform/update/common/update';
26
+ import { IUpdateService } from '@codingame/monaco-vscode-api/vscode/vs/platform/update/common/update.service';
27
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
28
+
29
+ function isVersionAtLeast(current, required) {
30
+ const currentSemver = semverExports.coerce(current);
31
+ if (!currentSemver) {
32
+ return false;
33
+ }
34
+ return semverExports.gte(currentSemver, required);
35
+ }
36
+ function getUpdateHoverContent(updateState) {
37
+ const hoverContent = ( new MarkdownString("", {
38
+ isTrusted: true,
39
+ supportThemeIcons: true
40
+ }));
41
+ switch (updateState) {
42
+ case StateType.AvailableForDownload:
43
+ hoverContent.appendMarkdown(( localize(
44
+ 6788,
45
+ "This model requires a newer version of VS Code. [Download Update](command:update.downloadUpdate) to access it."
46
+ )));
47
+ break;
48
+ case StateType.Downloaded:
49
+ case StateType.Ready:
50
+ hoverContent.appendMarkdown(( localize(
51
+ 6789,
52
+ "This model requires a newer version of VS Code. [Restart to Update](command:update.restartToUpdate) to access it."
53
+ )));
54
+ break;
55
+ default:
56
+ hoverContent.appendMarkdown(( localize(
57
+ 6790,
58
+ "This model requires a newer version of VS Code. [Update VS Code](command:update.checkForUpdate) to access it."
59
+ )));
60
+ break;
61
+ }
62
+ return hoverContent;
63
+ }
64
+ const ModelPickerSection = {
65
+ Other: "other"
66
+ };
67
+ function createModelItem(action, model) {
68
+ return {
69
+ item: action,
70
+ kind: ActionListItemKind.Action,
71
+ label: action.label,
72
+ description: action.description,
73
+ group: {
74
+ title: "",
75
+ icon: action.icon ?? ThemeIcon.fromId(action.checked ? Codicon.check.id : Codicon.blank.id)
76
+ },
77
+ hideIcon: false,
78
+ section: action.section,
79
+ hover: model ? {
80
+ content: getModelHoverContent(model)
81
+ } : undefined
82
+ };
83
+ }
84
+ function createModelAction(model, selectedModelId, onSelect, section) {
85
+ return {
86
+ id: model.identifier,
87
+ enabled: true,
88
+ icon: model.metadata.statusIcon,
89
+ checked: model.identifier === selectedModelId,
90
+ class: undefined,
91
+ description: model.metadata.multiplier ?? model.metadata.detail,
92
+ tooltip: model.metadata.name,
93
+ label: model.metadata.name,
94
+ section,
95
+ run: () => onSelect(model)
96
+ };
97
+ }
98
+ function buildModelPickerItems(
99
+ models,
100
+ selectedModelId,
101
+ recentModelIds,
102
+ controlModels,
103
+ currentVSCodeVersion,
104
+ updateStateType,
105
+ onSelect,
106
+ manageSettingsUrl,
107
+ canManageModels,
108
+ commandService,
109
+ chatEntitlementService
110
+ ) {
111
+ const items = [];
112
+ if (models.length === 0) {
113
+ items.push(createModelItem({
114
+ id: "auto",
115
+ enabled: true,
116
+ checked: true,
117
+ class: undefined,
118
+ tooltip: ( localize(6791, "Auto")),
119
+ label: ( localize(6791, "Auto")),
120
+ run: () => {}
121
+ }));
122
+ }
123
+ if (!canManageModels) {
124
+ const autoModel = models.find(m => m.metadata.id === "auto" && m.metadata.vendor === "copilot");
125
+ if (autoModel) {
126
+ items.push(
127
+ createModelItem(createModelAction(autoModel, selectedModelId, onSelect), autoModel)
128
+ );
129
+ }
130
+ const sortedModels = models.filter(m => m !== autoModel).sort((a, b) => {
131
+ const vendorCmp = a.metadata.vendor.localeCompare(b.metadata.vendor);
132
+ return vendorCmp !== 0 ? vendorCmp : a.metadata.name.localeCompare(b.metadata.name);
133
+ });
134
+ for (const model of sortedModels) {
135
+ items.push(
136
+ createModelItem(createModelAction(model, selectedModelId, onSelect), model)
137
+ );
138
+ }
139
+ return items;
140
+ }
141
+ const isPro = isProUser(chatEntitlementService.entitlement);
142
+ let otherModels = [];
143
+ if (models.length) {
144
+ const allModelsMap = ( new Map());
145
+ const modelsByMetadataId = ( new Map());
146
+ for (const model of models) {
147
+ allModelsMap.set(model.identifier, model);
148
+ modelsByMetadataId.set(model.metadata.id, model);
149
+ }
150
+ const placed = ( new Set());
151
+ const markPlaced = (identifierOrId, metadataId) => {
152
+ placed.add(identifierOrId);
153
+ if (metadataId) {
154
+ placed.add(metadataId);
155
+ }
156
+ };
157
+ const resolveModel = id => allModelsMap.get(id) ?? modelsByMetadataId.get(id);
158
+ const getUnavailableReason = entry => {
159
+ if (!isPro) {
160
+ return "upgrade";
161
+ }
162
+ if (entry.minVSCodeVersion && !isVersionAtLeast(currentVSCodeVersion, entry.minVSCodeVersion)) {
163
+ return "update";
164
+ }
165
+ return "admin";
166
+ };
167
+ const autoModel = models.find(m => m.metadata.id === "auto" && m.metadata.vendor === "copilot");
168
+ if (autoModel) {
169
+ markPlaced(autoModel.identifier, autoModel.metadata.id);
170
+ items.push(
171
+ createModelItem(createModelAction(autoModel, selectedModelId, onSelect), autoModel)
172
+ );
173
+ }
174
+ const promotedItems = [];
175
+ const tryPlaceModel = id => {
176
+ if (( placed.has(id))) {
177
+ return false;
178
+ }
179
+ const model = resolveModel(id);
180
+ if (model && !( placed.has(model.identifier))) {
181
+ markPlaced(model.identifier, model.metadata.id);
182
+ const entry = controlModels[model.metadata.id];
183
+ if (entry?.minVSCodeVersion && !isVersionAtLeast(currentVSCodeVersion, entry.minVSCodeVersion)) {
184
+ promotedItems.push({
185
+ kind: "unavailable",
186
+ id: model.metadata.id,
187
+ entry,
188
+ reason: "update"
189
+ });
190
+ } else {
191
+ promotedItems.push({
192
+ kind: "available",
193
+ model
194
+ });
195
+ }
196
+ return true;
197
+ }
198
+ if (!model) {
199
+ const entry = controlModels[id];
200
+ if (entry && !entry.exists) {
201
+ markPlaced(id);
202
+ promotedItems.push({
203
+ kind: "unavailable",
204
+ id,
205
+ entry,
206
+ reason: getUnavailableReason(entry)
207
+ });
208
+ return true;
209
+ }
210
+ }
211
+ return false;
212
+ };
213
+ if (selectedModelId && selectedModelId !== autoModel?.identifier) {
214
+ tryPlaceModel(selectedModelId);
215
+ }
216
+ for (const id of recentModelIds) {
217
+ tryPlaceModel(id);
218
+ }
219
+ for (const [entryId, entry] of Object.entries(controlModels)) {
220
+ if (!entry.featured || ( placed.has(entryId))) {
221
+ continue;
222
+ }
223
+ const model = resolveModel(entryId);
224
+ if (model && !( placed.has(model.identifier))) {
225
+ markPlaced(model.identifier, model.metadata.id);
226
+ if (entry.minVSCodeVersion && !isVersionAtLeast(currentVSCodeVersion, entry.minVSCodeVersion)) {
227
+ promotedItems.push({
228
+ kind: "unavailable",
229
+ id: entryId,
230
+ entry,
231
+ reason: "update"
232
+ });
233
+ } else {
234
+ promotedItems.push({
235
+ kind: "available",
236
+ model
237
+ });
238
+ }
239
+ } else if (!model && !entry.exists) {
240
+ markPlaced(entryId);
241
+ promotedItems.push({
242
+ kind: "unavailable",
243
+ id: entryId,
244
+ entry,
245
+ reason: getUnavailableReason(entry)
246
+ });
247
+ }
248
+ }
249
+ if (promotedItems.length > 0) {
250
+ promotedItems.sort((a, b) => {
251
+ const aAvail = a.kind === "available" ? 0 : 1;
252
+ const bAvail = b.kind === "available" ? 0 : 1;
253
+ if (aAvail !== bAvail) {
254
+ return aAvail - bAvail;
255
+ }
256
+ const aName = a.kind === "available" ? a.model.metadata.name : a.entry.label;
257
+ const bName = b.kind === "available" ? b.model.metadata.name : b.entry.label;
258
+ return aName.localeCompare(bName);
259
+ });
260
+ for (const item of promotedItems) {
261
+ if (item.kind === "available") {
262
+ items.push(
263
+ createModelItem(createModelAction(item.model, selectedModelId, onSelect), item.model)
264
+ );
265
+ } else {
266
+ items.push(
267
+ createUnavailableModelItem(item.id, item.entry, item.reason, manageSettingsUrl, updateStateType)
268
+ );
269
+ }
270
+ }
271
+ }
272
+ otherModels = models.filter(m => !( placed.has(m.identifier)) && !( placed.has(m.metadata.id))).sort((a, b) => {
273
+ const aEntry = controlModels[a.metadata.id] ?? controlModels[a.identifier];
274
+ const bEntry = controlModels[b.metadata.id] ?? controlModels[b.identifier];
275
+ const aAvail = aEntry?.minVSCodeVersion && !isVersionAtLeast(currentVSCodeVersion, aEntry.minVSCodeVersion) ? 1 : 0;
276
+ const bAvail = bEntry?.minVSCodeVersion && !isVersionAtLeast(currentVSCodeVersion, bEntry.minVSCodeVersion) ? 1 : 0;
277
+ if (aAvail !== bAvail) {
278
+ return aAvail - bAvail;
279
+ }
280
+ const aCopilot = a.metadata.vendor === "copilot" ? 0 : 1;
281
+ const bCopilot = b.metadata.vendor === "copilot" ? 0 : 1;
282
+ if (aCopilot !== bCopilot) {
283
+ return aCopilot - bCopilot;
284
+ }
285
+ const vendorCmp = a.metadata.vendor.localeCompare(b.metadata.vendor);
286
+ return vendorCmp !== 0 ? vendorCmp : a.metadata.name.localeCompare(b.metadata.name);
287
+ });
288
+ if (otherModels.length > 0) {
289
+ if (items.length > 0) {
290
+ items.push({
291
+ kind: ActionListItemKind.Separator
292
+ });
293
+ }
294
+ items.push({
295
+ item: {
296
+ id: "otherModels",
297
+ enabled: true,
298
+ checked: false,
299
+ class: undefined,
300
+ tooltip: ( localize(6792, "Other Models")),
301
+ label: ( localize(6792, "Other Models")),
302
+ run: () => {}
303
+ },
304
+ kind: ActionListItemKind.Action,
305
+ label: ( localize(6792, "Other Models")),
306
+ group: {
307
+ title: "",
308
+ icon: Codicon.chevronDown
309
+ },
310
+ hideIcon: false,
311
+ section: ModelPickerSection.Other,
312
+ isSectionToggle: true
313
+ });
314
+ for (const model of otherModels) {
315
+ const entry = controlModels[model.metadata.id] ?? controlModels[model.identifier];
316
+ if (entry?.minVSCodeVersion && !isVersionAtLeast(currentVSCodeVersion, entry.minVSCodeVersion)) {
317
+ items.push(createUnavailableModelItem(
318
+ model.metadata.id,
319
+ entry,
320
+ "update",
321
+ manageSettingsUrl,
322
+ updateStateType,
323
+ ModelPickerSection.Other
324
+ ));
325
+ } else {
326
+ items.push(createModelItem(
327
+ createModelAction(model, selectedModelId, onSelect, ModelPickerSection.Other),
328
+ model
329
+ ));
330
+ }
331
+ }
332
+ }
333
+ }
334
+ if (chatEntitlementService.entitlement === ChatEntitlement.Free || chatEntitlementService.entitlement === ChatEntitlement.Pro || chatEntitlementService.entitlement === ChatEntitlement.ProPlus || chatEntitlementService.entitlement === ChatEntitlement.Business || chatEntitlementService.entitlement === ChatEntitlement.Enterprise || chatEntitlementService.isInternal) {
335
+ items.push({
336
+ kind: ActionListItemKind.Separator,
337
+ section: otherModels.length ? ModelPickerSection.Other : undefined
338
+ });
339
+ items.push({
340
+ item: {
341
+ id: "manageModels",
342
+ enabled: true,
343
+ checked: false,
344
+ class: undefined,
345
+ tooltip: ( localize(6793, "Manage Language Models")),
346
+ label: ( localize(6794, "Manage Models...")),
347
+ run: () => {
348
+ commandService.executeCommand(MANAGE_CHAT_COMMAND_ID);
349
+ }
350
+ },
351
+ kind: ActionListItemKind.Action,
352
+ label: ( localize(6794, "Manage Models...")),
353
+ group: {
354
+ title: "",
355
+ icon: Codicon.blank
356
+ },
357
+ hideIcon: false,
358
+ section: otherModels.length ? ModelPickerSection.Other : undefined,
359
+ showAlways: true
360
+ });
361
+ }
362
+ return items;
363
+ }
364
+ function getModelPickerAccessibilityProvider() {
365
+ return {
366
+ isChecked(element) {
367
+ return element.kind === ActionListItemKind.Action ? !!element?.item?.checked : undefined;
368
+ },
369
+ getRole: element => {
370
+ switch (element.kind) {
371
+ case ActionListItemKind.Action:
372
+ return "menuitemradio";
373
+ case ActionListItemKind.Separator:
374
+ return "separator";
375
+ default:
376
+ return "separator";
377
+ }
378
+ },
379
+ getWidgetRole: () => "menu"
380
+ };
381
+ }
382
+ function createUnavailableModelItem(id, entry, reason, manageSettingsUrl, updateStateType, section) {
383
+ let description;
384
+ if (reason === "upgrade") {
385
+ description = ( new MarkdownString(( localize(6795, "[Upgrade](command:workbench.action.chat.upgradePlan \" \")")), {
386
+ isTrusted: true
387
+ }));
388
+ } else if (reason === "update") {
389
+ description = ( localize(6796, "Update VS Code"));
390
+ } else {
391
+ description = manageSettingsUrl ? ( new MarkdownString(( localize(6797, "[Contact your admin]({0})", manageSettingsUrl)), {
392
+ isTrusted: true
393
+ })) : ( localize(6798, "Contact your admin"));
394
+ }
395
+ let hoverContent;
396
+ if (reason === "upgrade") {
397
+ hoverContent = ( new MarkdownString("", {
398
+ isTrusted: true,
399
+ supportThemeIcons: true
400
+ }));
401
+ hoverContent.appendMarkdown(( localize(
402
+ 6799,
403
+ "[Upgrade to GitHub Copilot Pro](command:workbench.action.chat.upgradePlan \" \") with a free 30-day trial to use the best models."
404
+ )));
405
+ } else if (reason === "update") {
406
+ hoverContent = getUpdateHoverContent(updateStateType);
407
+ } else {
408
+ hoverContent = ( new MarkdownString("", {
409
+ isTrusted: true,
410
+ supportThemeIcons: true
411
+ }));
412
+ hoverContent.appendMarkdown(( localize(
413
+ 6800,
414
+ "This model is not available. Contact your administrator to enable it."
415
+ )));
416
+ }
417
+ return {
418
+ item: {
419
+ id,
420
+ enabled: false,
421
+ checked: false,
422
+ class: undefined,
423
+ tooltip: entry.label,
424
+ label: entry.label,
425
+ description: typeof description === "string" ? description : undefined,
426
+ run: () => {}
427
+ },
428
+ kind: ActionListItemKind.Action,
429
+ label: entry.label,
430
+ description,
431
+ group: {
432
+ title: "",
433
+ icon: ThemeIcon.fromId(Codicon.blank.id)
434
+ },
435
+ disabled: true,
436
+ hideIcon: false,
437
+ className: "chat-model-picker-unavailable",
438
+ section,
439
+ hover: {
440
+ content: hoverContent
441
+ }
442
+ };
443
+ }
444
+ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
445
+ get selectedModel() {
446
+ return this._selectedModel;
447
+ }
448
+ get domNode() {
449
+ return this._domNode;
450
+ }
451
+ constructor(
452
+ _delegate,
453
+ _actionWidgetService,
454
+ _commandService,
455
+ _telemetryService,
456
+ _languageModelsService,
457
+ _productService,
458
+ _entitlementService,
459
+ _updateService
460
+ ) {
461
+ super();
462
+ this._delegate = _delegate;
463
+ this._actionWidgetService = _actionWidgetService;
464
+ this._commandService = _commandService;
465
+ this._telemetryService = _telemetryService;
466
+ this._languageModelsService = _languageModelsService;
467
+ this._productService = _productService;
468
+ this._entitlementService = _entitlementService;
469
+ this._updateService = _updateService;
470
+ this._onDidChangeSelection = this._register(( new Emitter()));
471
+ this.onDidChangeSelection = this._onDidChangeSelection.event;
472
+ }
473
+ setHideChevrons(hideChevrons) {
474
+ this._hideChevrons = hideChevrons;
475
+ this._register(autorun(reader => {
476
+ const hide = hideChevrons.read(reader);
477
+ if (this._domNode) {
478
+ this._domNode.classList.toggle("hide-chevrons", hide);
479
+ }
480
+ this._renderLabel();
481
+ }));
482
+ }
483
+ setSelectedModel(model) {
484
+ this._selectedModel = model;
485
+ this._renderLabel();
486
+ }
487
+ setBadge(badge) {
488
+ this._badge = badge;
489
+ this._updateBadge();
490
+ }
491
+ render(container) {
492
+ this._domNode = append(container, $("a.action-label"));
493
+ this._domNode.tabIndex = 0;
494
+ this._domNode.setAttribute("role", "button");
495
+ this._domNode.setAttribute("aria-haspopup", "true");
496
+ this._domNode.setAttribute("aria-expanded", "false");
497
+ if (this._hideChevrons?.get()) {
498
+ this._domNode.classList.toggle("hide-chevrons", true);
499
+ }
500
+ this._badgeIcon = append(this._domNode, $("span.model-picker-badge"));
501
+ this._updateBadge();
502
+ this._renderLabel();
503
+ this._register(addDisposableListener(this._domNode, EventType.MOUSE_DOWN, e => {
504
+ if (e.button !== 0) {
505
+ return;
506
+ }
507
+ EventHelper.stop(e, true);
508
+ this.show();
509
+ }));
510
+ this._register(addDisposableListener(this._domNode, EventType.KEY_DOWN, e => {
511
+ const event = ( new StandardKeyboardEvent(e));
512
+ if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) {
513
+ EventHelper.stop(e, true);
514
+ this.show();
515
+ }
516
+ }));
517
+ }
518
+ show(anchor) {
519
+ const anchorElement = anchor ?? this._domNode;
520
+ if (!anchorElement) {
521
+ return;
522
+ }
523
+ const previousModel = this._selectedModel;
524
+ const onSelect = model => {
525
+ this._telemetryService.publicLog2("chat.modelChange", {
526
+ fromModel: previousModel?.metadata.vendor === "copilot" ? ( new TelemetryTrustedValue(previousModel.identifier)) : "unknown",
527
+ toModel: model.metadata.vendor === "copilot" ? ( new TelemetryTrustedValue(model.identifier)) : "unknown"
528
+ });
529
+ this._selectedModel = model;
530
+ this._renderLabel();
531
+ this._onDidChangeSelection.fire(model);
532
+ };
533
+ const models = this._delegate.getModels();
534
+ const isPro = isProUser(this._entitlementService.entitlement);
535
+ const manifest = this._languageModelsService.getModelsControlManifest();
536
+ const controlModelsForTier = isPro ? manifest.paid : manifest.free;
537
+ const items = buildModelPickerItems(
538
+ models,
539
+ this._selectedModel?.identifier,
540
+ this._languageModelsService.getRecentlyUsedModelIds(),
541
+ controlModelsForTier,
542
+ this._productService.version,
543
+ this._updateService.state.type,
544
+ onSelect,
545
+ this._productService.defaultChatAgent?.manageSettingsUrl,
546
+ this._delegate.canManageModels(),
547
+ this._commandService,
548
+ this._entitlementService
549
+ );
550
+ const listOptions = {
551
+ showFilter: models.length >= 10,
552
+ filterPlaceholder: ( localize(6801, "Search models")),
553
+ focusFilterOnOpen: true,
554
+ collapsedByDefault: ( new Set([ModelPickerSection.Other])),
555
+ minWidth: 200
556
+ };
557
+ const previouslyFocusedElement = getActiveElement();
558
+ const delegate = {
559
+ onSelect: action => {
560
+ this._actionWidgetService.hide();
561
+ action.run();
562
+ },
563
+ onHide: () => {
564
+ this._domNode?.setAttribute("aria-expanded", "false");
565
+ if (isHTMLElement(previouslyFocusedElement)) {
566
+ previouslyFocusedElement.focus();
567
+ }
568
+ }
569
+ };
570
+ this._domNode?.setAttribute("aria-expanded", "true");
571
+ this._actionWidgetService.show(
572
+ "ChatModelPicker",
573
+ false,
574
+ items,
575
+ delegate,
576
+ anchorElement,
577
+ undefined,
578
+ [],
579
+ getModelPickerAccessibilityProvider(),
580
+ listOptions
581
+ );
582
+ const activeElement = getActiveElement();
583
+ if (isHTMLInputElement(activeElement) && activeElement.classList.contains("action-list-filter-input")) {
584
+ activeElement.classList.add("chat-model-picker-filter-input");
585
+ }
586
+ }
587
+ _updateBadge() {
588
+ if (this._badgeIcon) {
589
+ if (this._badge) {
590
+ const icon = this._badge === "info" ? Codicon.info : Codicon.warning;
591
+ reset(this._badgeIcon, renderIcon(icon));
592
+ this._badgeIcon.style.display = "";
593
+ this._badgeIcon.classList.toggle("info", this._badge === "info");
594
+ this._badgeIcon.classList.toggle("warning", this._badge === "warning");
595
+ } else {
596
+ this._badgeIcon.style.display = "none";
597
+ }
598
+ }
599
+ }
600
+ _renderLabel() {
601
+ if (!this._domNode) {
602
+ return;
603
+ }
604
+ const {
605
+ name,
606
+ statusIcon
607
+ } = this._selectedModel?.metadata || {};
608
+ const domChildren = [];
609
+ if (statusIcon) {
610
+ const iconElement = renderIcon(statusIcon);
611
+ domChildren.push(iconElement);
612
+ }
613
+ domChildren.push($("span.chat-input-picker-label", undefined, name ?? ( localize(6791, "Auto"))));
614
+ if (this._badgeIcon) {
615
+ domChildren.push(this._badgeIcon);
616
+ }
617
+ domChildren.push(...renderLabelWithIcons(`$(chevron-down)`));
618
+ reset(this._domNode, ...domChildren);
619
+ const modelName = this._selectedModel?.metadata.name ?? ( localize(6791, "Auto"));
620
+ this._domNode.ariaLabel = ( localize(6802, "Pick Model, {0}", modelName));
621
+ }
622
+ };
623
+ ModelPickerWidget = ( __decorate([( __param(1, IActionWidgetService)), ( __param(2, ICommandService)), ( __param(3, ITelemetryService)), ( __param(4, ILanguageModelsService)), ( __param(5, IProductService)), ( __param(6, IChatEntitlementService)), ( __param(7, IUpdateService))], ModelPickerWidget));
624
+ function getModelHoverContent(model) {
625
+ const isAuto = model.metadata.id === "auto" && model.metadata.vendor === "copilot";
626
+ const markdown = ( new MarkdownString("", {
627
+ isTrusted: true,
628
+ supportThemeIcons: true
629
+ }));
630
+ markdown.appendMarkdown(`**${model.metadata.name}**`);
631
+ markdown.appendText(`\n`);
632
+ if (model.metadata.statusIcon && model.metadata.tooltip) {
633
+ if (model.metadata.statusIcon) {
634
+ markdown.appendMarkdown(`$(${model.metadata.statusIcon.id}) `);
635
+ }
636
+ markdown.appendMarkdown(`${model.metadata.tooltip}`);
637
+ markdown.appendText(`\n`);
638
+ }
639
+ if (model.metadata.multiplier) {
640
+ markdown.appendMarkdown(`${( localize(
641
+ 6803,
642
+ "Each chat message counts {0} toward your premium request quota",
643
+ model.metadata.multiplier
644
+ ))}`);
645
+ markdown.appendText(`\n`);
646
+ }
647
+ if (!isAuto && (model.metadata.maxInputTokens || model.metadata.maxOutputTokens)) {
648
+ const totalTokens = (model.metadata.maxInputTokens ?? 0) + (model.metadata.maxOutputTokens ?? 0);
649
+ markdown.appendMarkdown(`${( localize(6804, "Context Size"))}: `);
650
+ markdown.appendMarkdown(`${formatTokenCount(totalTokens)}`);
651
+ markdown.appendText(`\n`);
652
+ }
653
+ return markdown;
654
+ }
655
+ function formatTokenCount(count) {
656
+ if (count >= 1000000) {
657
+ return `${(count / 1000000).toFixed(1)}M`;
658
+ } else if (count >= 1000) {
659
+ return `${(count / 1000).toFixed(0)}K`;
660
+ }
661
+ return ( count.toString());
662
+ }
663
+
664
+ export { ModelPickerWidget, buildModelPickerItems, getModelPickerAccessibilityProvider };