@codingame/monaco-vscode-katex-common 27.0.0 → 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 (181) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +2 -0
  3. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  4. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +30 -2
  5. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.js +1 -0
  6. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +17 -11
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +90 -43
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +6 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +63 -10
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +1 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +13 -10
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +28 -2
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +133 -28
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +69 -0
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -46
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +10 -10
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +38 -37
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +2 -2
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +72 -57
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  35. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
  36. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.d.ts +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.d.ts +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +1 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +3 -3
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -1
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +8 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +6 -6
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -4
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +26 -6
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +290 -126
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +9 -7
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +22 -13
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -18
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.d.ts +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +17 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +129 -117
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +0 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +56 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +20 -4
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -15
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +43 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +42 -41
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -4
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +14 -14
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +1 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +1 -1
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -1
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -2
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +61 -39
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +7 -8
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +1 -10
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +81 -191
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +31 -17
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +334 -181
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +3 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +51 -55
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -1
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +16 -9
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +2 -1
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +10 -16
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +6 -4
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +174 -10
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +2 -12
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +12 -16
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +1 -0
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +19 -4
  163. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +22 -6
  164. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  165. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +3 -1
  166. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +24 -4
  167. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  168. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
  169. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  170. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -2
  172. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +1 -1
  173. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +3 -3
  174. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +1 -1
  175. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +38 -46
  176. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  177. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  178. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  179. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  180. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  181. package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
@@ -15,7 +15,7 @@ export interface IChatInputPickerOptions {
15
15
  */
16
16
  readonly getOverflowAnchor?: () => HTMLElement | undefined;
17
17
  readonly actionContext?: IChatExecuteActionContext;
18
- readonly onlyShowIconsForDefaultActions: IObservable<boolean>;
18
+ readonly hideChevrons: IObservable<boolean>;
19
19
  readonly hoverPosition?: IHoverPositionOptions;
20
20
  }
21
21
  /**
@@ -33,8 +33,9 @@ let ChatInputPickerActionViewItem = class ChatInputPickerActionViewItem extends
33
33
  );
34
34
  this.pickerOptions = pickerOptions;
35
35
  this._register(autorun(reader => {
36
- this.pickerOptions.onlyShowIconsForDefaultActions.read(reader);
36
+ const hideChevrons = this.pickerOptions.hideChevrons.read(reader);
37
37
  if (this.element) {
38
+ this.element.classList.toggle("hide-chevrons", hideChevrons);
38
39
  this.renderLabel(this.element);
39
40
  }
40
41
  }));
@@ -48,6 +49,11 @@ let ChatInputPickerActionViewItem = class ChatInputPickerActionViewItem extends
48
49
  render(container) {
49
50
  super.render(container);
50
51
  container.classList.add("chat-input-picker-item");
52
+ const hideChevrons = this.pickerOptions.hideChevrons.get();
53
+ if (this.element) {
54
+ this.element.classList.toggle("hide-chevrons", hideChevrons);
55
+ this.renderLabel(this.element);
56
+ }
51
57
  }
52
58
  };
53
59
  ChatInputPickerActionViewItem = ( __decorate([( __param(3, IActionWidgetService)), ( __param(4, IKeybindingService)), ( __param(5, IContextKeyService)), ( __param(6, ITelemetryService))], ChatInputPickerActionViewItem));
@@ -1,6 +1,7 @@
1
1
  import { IStringDictionary } from "@codingame/monaco-vscode-api/vscode/vs/base/common/collections";
2
2
  import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
3
3
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
+ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
4
5
  import { IActionListItem } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList";
5
6
  import { IActionWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service";
6
7
  import { IActionWidgetDropdownAction } from "../../../../../../platform/actionWidget/browser/actionWidgetDropdown.js";
@@ -54,11 +55,13 @@ export declare class ModelPickerWidget extends Disposable {
54
55
  readonly onDidChangeSelection: Event<ILanguageModelChatMetadataAndIdentifier>;
55
56
  private _selectedModel;
56
57
  private _badge;
58
+ private _hideChevrons;
57
59
  private _domNode;
58
60
  private _badgeIcon;
59
61
  get selectedModel(): ILanguageModelChatMetadataAndIdentifier | undefined;
60
62
  get domNode(): HTMLElement | undefined;
61
63
  constructor(_delegate: IModelPickerDelegate, _actionWidgetService: IActionWidgetService, _commandService: ICommandService, _telemetryService: ITelemetryService, _languageModelsService: ILanguageModelsService, _productService: IProductService, _entitlementService: IChatEntitlementService, _updateService: IUpdateService);
64
+ setHideChevrons(hideChevrons: IObservable<boolean>): void;
62
65
  setSelectedModel(model: ILanguageModelChatMetadataAndIdentifier | undefined): void;
63
66
  setBadge(badge: ModelPickerBadge | undefined): void;
64
67
  render(container: HTMLElement): void;
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { append, $, addDisposableListener, EventType, EventHelper, getActiveElement, isHTMLElement, reset } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
3
+ import { append, $, addDisposableListener, EventType, EventHelper, getActiveElement, isHTMLElement, isHTMLInputElement, reset } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
5
5
  import { renderIcon, renderLabelWithIcons } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
6
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
@@ -8,6 +8,7 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
8
8
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
9
9
  import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
10
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';
11
12
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
12
13
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
13
14
  import { ActionListItemKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList';
@@ -23,6 +24,7 @@ import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/
23
24
  import { semverExports } from '@codingame/monaco-vscode-api/_virtual/semver';
24
25
  import { StateType } from '@codingame/monaco-vscode-api/vscode/vs/platform/update/common/update';
25
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';
26
28
 
27
29
  function isVersionAtLeast(current, required) {
28
30
  const currentSemver = semverExports.coerce(current);
@@ -39,20 +41,20 @@ function getUpdateHoverContent(updateState) {
39
41
  switch (updateState) {
40
42
  case StateType.AvailableForDownload:
41
43
  hoverContent.appendMarkdown(( localize(
42
- 6701,
44
+ 6788,
43
45
  "This model requires a newer version of VS Code. [Download Update](command:update.downloadUpdate) to access it."
44
46
  )));
45
47
  break;
46
48
  case StateType.Downloaded:
47
49
  case StateType.Ready:
48
50
  hoverContent.appendMarkdown(( localize(
49
- 6702,
51
+ 6789,
50
52
  "This model requires a newer version of VS Code. [Restart to Update](command:update.restartToUpdate) to access it."
51
53
  )));
52
54
  break;
53
55
  default:
54
56
  hoverContent.appendMarkdown(( localize(
55
- 6703,
57
+ 6790,
56
58
  "This model requires a newer version of VS Code. [Update VS Code](command:update.checkForUpdate) to access it."
57
59
  )));
58
60
  break;
@@ -113,8 +115,8 @@ function buildModelPickerItems(
113
115
  enabled: true,
114
116
  checked: true,
115
117
  class: undefined,
116
- tooltip: ( localize(6704, "Auto")),
117
- label: ( localize(6704, "Auto")),
118
+ tooltip: ( localize(6791, "Auto")),
119
+ label: ( localize(6791, "Auto")),
118
120
  run: () => {}
119
121
  }));
120
122
  }
@@ -244,7 +246,6 @@ function buildModelPickerItems(
244
246
  });
245
247
  }
246
248
  }
247
- let hasShownActionLink = false;
248
249
  if (promotedItems.length > 0) {
249
250
  promotedItems.sort((a, b) => {
250
251
  const aAvail = a.kind === "available" ? 0 : 1;
@@ -262,19 +263,9 @@ function buildModelPickerItems(
262
263
  createModelItem(createModelAction(item.model, selectedModelId, onSelect), item.model)
263
264
  );
264
265
  } else {
265
- const showActionLink = item.reason === "upgrade" ? !hasShownActionLink : true;
266
- if (showActionLink && item.reason === "upgrade") {
267
- hasShownActionLink = true;
268
- }
269
- items.push(createUnavailableModelItem(
270
- item.id,
271
- item.entry,
272
- item.reason,
273
- manageSettingsUrl,
274
- updateStateType,
275
- undefined,
276
- showActionLink
277
- ));
266
+ items.push(
267
+ createUnavailableModelItem(item.id, item.entry, item.reason, manageSettingsUrl, updateStateType)
268
+ );
278
269
  }
279
270
  }
280
271
  }
@@ -306,12 +297,12 @@ function buildModelPickerItems(
306
297
  enabled: true,
307
298
  checked: false,
308
299
  class: undefined,
309
- tooltip: ( localize(6705, "Other Models")),
310
- label: ( localize(6705, "Other Models")),
300
+ tooltip: ( localize(6792, "Other Models")),
301
+ label: ( localize(6792, "Other Models")),
311
302
  run: () => {}
312
303
  },
313
304
  kind: ActionListItemKind.Action,
314
- label: ( localize(6705, "Other Models")),
305
+ label: ( localize(6792, "Other Models")),
315
306
  group: {
316
307
  title: "",
317
308
  icon: Codicon.chevronDown
@@ -329,8 +320,7 @@ function buildModelPickerItems(
329
320
  "update",
330
321
  manageSettingsUrl,
331
322
  updateStateType,
332
- ModelPickerSection.Other,
333
- true
323
+ ModelPickerSection.Other
334
324
  ));
335
325
  } else {
336
326
  items.push(createModelItem(
@@ -352,14 +342,14 @@ function buildModelPickerItems(
352
342
  enabled: true,
353
343
  checked: false,
354
344
  class: undefined,
355
- tooltip: ( localize(6706, "Manage Language Models")),
356
- label: ( localize(6707, "Manage Models...")),
345
+ tooltip: ( localize(6793, "Manage Language Models")),
346
+ label: ( localize(6794, "Manage Models...")),
357
347
  run: () => {
358
348
  commandService.executeCommand(MANAGE_CHAT_COMMAND_ID);
359
349
  }
360
350
  },
361
351
  kind: ActionListItemKind.Action,
362
- label: ( localize(6707, "Manage Models...")),
352
+ label: ( localize(6794, "Manage Models...")),
363
353
  group: {
364
354
  title: "",
365
355
  icon: Codicon.blank
@@ -389,29 +379,18 @@ function getModelPickerAccessibilityProvider() {
389
379
  getWidgetRole: () => "menu"
390
380
  };
391
381
  }
392
- function createUnavailableModelItem(
393
- id,
394
- entry,
395
- reason,
396
- manageSettingsUrl,
397
- updateStateType,
398
- section,
399
- showActionLink = true
400
- ) {
382
+ function createUnavailableModelItem(id, entry, reason, manageSettingsUrl, updateStateType, section) {
401
383
  let description;
402
384
  if (reason === "upgrade") {
403
- description = showActionLink ? ( new MarkdownString(( localize(
404
- 6708,
405
- "[Upgrade your plan](command:workbench.action.chat.upgradePlan \" \")"
406
- )), {
385
+ description = ( new MarkdownString(( localize(6795, "[Upgrade](command:workbench.action.chat.upgradePlan \" \")")), {
407
386
  isTrusted: true
408
- })) : undefined;
387
+ }));
409
388
  } else if (reason === "update") {
410
- description = ( localize(6709, "Update VS Code"));
389
+ description = ( localize(6796, "Update VS Code"));
411
390
  } else {
412
- description = manageSettingsUrl ? ( new MarkdownString(( localize(6710, "[Contact your admin]({0})", manageSettingsUrl)), {
391
+ description = manageSettingsUrl ? ( new MarkdownString(( localize(6797, "[Contact your admin]({0})", manageSettingsUrl)), {
413
392
  isTrusted: true
414
- })) : ( localize(6711, "Contact your admin"));
393
+ })) : ( localize(6798, "Contact your admin"));
415
394
  }
416
395
  let hoverContent;
417
396
  if (reason === "upgrade") {
@@ -420,8 +399,8 @@ function createUnavailableModelItem(
420
399
  supportThemeIcons: true
421
400
  }));
422
401
  hoverContent.appendMarkdown(( localize(
423
- 6712,
424
- "[Upgrade your plan](command:workbench.action.chat.upgradePlan \" \") to use this model."
402
+ 6799,
403
+ "[Upgrade to GitHub Copilot Pro](command:workbench.action.chat.upgradePlan \" \") with a free 30-day trial to use the best models."
425
404
  )));
426
405
  } else if (reason === "update") {
427
406
  hoverContent = getUpdateHoverContent(updateStateType);
@@ -431,7 +410,7 @@ function createUnavailableModelItem(
431
410
  supportThemeIcons: true
432
411
  }));
433
412
  hoverContent.appendMarkdown(( localize(
434
- 6713,
413
+ 6800,
435
414
  "This model is not available. Contact your administrator to enable it."
436
415
  )));
437
416
  }
@@ -491,6 +470,16 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
491
470
  this._onDidChangeSelection = this._register(( new Emitter()));
492
471
  this.onDidChangeSelection = this._onDidChangeSelection.event;
493
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
+ }
494
483
  setSelectedModel(model) {
495
484
  this._selectedModel = model;
496
485
  this._renderLabel();
@@ -505,6 +494,9 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
505
494
  this._domNode.setAttribute("role", "button");
506
495
  this._domNode.setAttribute("aria-haspopup", "true");
507
496
  this._domNode.setAttribute("aria-expanded", "false");
497
+ if (this._hideChevrons?.get()) {
498
+ this._domNode.classList.toggle("hide-chevrons", true);
499
+ }
508
500
  this._badgeIcon = append(this._domNode, $("span.model-picker-badge"));
509
501
  this._updateBadge();
510
502
  this._renderLabel();
@@ -557,10 +549,10 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
557
549
  );
558
550
  const listOptions = {
559
551
  showFilter: models.length >= 10,
560
- filterPlaceholder: ( localize(6714, "Search models")),
552
+ filterPlaceholder: ( localize(6801, "Search models")),
561
553
  focusFilterOnOpen: true,
562
554
  collapsedByDefault: ( new Set([ModelPickerSection.Other])),
563
- minWidth: 300
555
+ minWidth: 200
564
556
  };
565
557
  const previouslyFocusedElement = getActiveElement();
566
558
  const delegate = {
@@ -587,6 +579,10 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
587
579
  getModelPickerAccessibilityProvider(),
588
580
  listOptions
589
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
+ }
590
586
  }
591
587
  _updateBadge() {
592
588
  if (this._badgeIcon) {
@@ -614,14 +610,14 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
614
610
  const iconElement = renderIcon(statusIcon);
615
611
  domChildren.push(iconElement);
616
612
  }
617
- domChildren.push($("span.chat-input-picker-label", undefined, name ?? ( localize(6704, "Auto"))));
613
+ domChildren.push($("span.chat-input-picker-label", undefined, name ?? ( localize(6791, "Auto"))));
618
614
  if (this._badgeIcon) {
619
615
  domChildren.push(this._badgeIcon);
620
616
  }
621
617
  domChildren.push(...renderLabelWithIcons(`$(chevron-down)`));
622
618
  reset(this._domNode, ...domChildren);
623
- const modelName = this._selectedModel?.metadata.name ?? ( localize(6704, "Auto"));
624
- this._domNode.ariaLabel = ( localize(6715, "Pick Model, {0}", modelName));
619
+ const modelName = this._selectedModel?.metadata.name ?? ( localize(6791, "Auto"));
620
+ this._domNode.ariaLabel = ( localize(6802, "Pick Model, {0}", modelName));
625
621
  }
626
622
  };
627
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));
@@ -642,7 +638,7 @@ function getModelHoverContent(model) {
642
638
  }
643
639
  if (model.metadata.multiplier) {
644
640
  markdown.appendMarkdown(`${( localize(
645
- 6716,
641
+ 6803,
646
642
  "Each chat message counts {0} toward your premium request quota",
647
643
  model.metadata.multiplier
648
644
  ))}`);
@@ -650,7 +646,7 @@ function getModelHoverContent(model) {
650
646
  }
651
647
  if (!isAuto && (model.metadata.maxInputTokens || model.metadata.maxOutputTokens)) {
652
648
  const totalTokens = (model.metadata.maxInputTokens ?? 0) + (model.metadata.maxOutputTokens ?? 0);
653
- markdown.appendMarkdown(`${( localize(6717, "Context Size"))}: `);
649
+ markdown.appendMarkdown(`${( localize(6804, "Context Size"))}: `);
654
650
  markdown.appendMarkdown(`${formatTokenCount(totalTokens)}`);
655
651
  markdown.appendText(`\n`);
656
652
  }
@@ -0,0 +1,104 @@
1
+ import { ChatAgentLocation, ChatModeKind } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
2
+ import { ILanguageModelChatMetadataAndIdentifier } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels";
3
+ /**
4
+ * Describes the context needed for model selection decisions.
5
+ */
6
+ export interface IModelSelectionContext {
7
+ readonly location: ChatAgentLocation;
8
+ readonly currentModeKind: ChatModeKind;
9
+ readonly isInlineChatV2Enabled: boolean;
10
+ readonly sessionType: string | undefined;
11
+ }
12
+ /**
13
+ * Filter models based on session type.
14
+ * When a session has a specific type (and it's not 'local'), only models targeting that
15
+ * session type are returned. Otherwise, general-purpose models are returned.
16
+ */
17
+ export declare function filterModelsForSession(models: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined, currentModeKind: ChatModeKind, location: ChatAgentLocation, isInlineChatV2Enabled: boolean): ILanguageModelChatMetadataAndIdentifier[];
18
+ /**
19
+ * Check if a model is suitable for the current chat mode (e.g., agent mode requires tool calling).
20
+ */
21
+ export declare function isModelSupportedForMode(model: ILanguageModelChatMetadataAndIdentifier, currentModeKind: ChatModeKind): boolean;
22
+ /**
23
+ * Check if a model is suitable for inline chat (editor inline) usage.
24
+ */
25
+ export declare function isModelSupportedForInlineChat(model: ILanguageModelChatMetadataAndIdentifier, location: ChatAgentLocation, isInlineChatV2Enabled: boolean): boolean;
26
+ /**
27
+ * Check if any models in the pool target a specific session type.
28
+ */
29
+ export declare function hasModelsTargetingSession(allModels: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined): boolean;
30
+ /**
31
+ * Check if a model is valid for the current session's model pool.
32
+ * If the session has targeted models, the model must target that session type.
33
+ * If no models target this session, the model must not be session-specific.
34
+ */
35
+ export declare function isModelValidForSession(model: ILanguageModelChatMetadataAndIdentifier, allModels: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined): boolean;
36
+ /**
37
+ * Find the default model for a given location from a list of models.
38
+ * Prefers the model marked as default for the location, falls back to the first model.
39
+ */
40
+ export declare function findDefaultModel(models: ILanguageModelChatMetadataAndIdentifier[], location: ChatAgentLocation): ILanguageModelChatMetadataAndIdentifier | undefined;
41
+ /**
42
+ * Determine whether a persisted model selection should be restored.
43
+ *
44
+ * A persisted model should be restored if:
45
+ * 1. The model still exists in the available models list
46
+ * 2. Either the model wasn't the default at the time it was persisted,
47
+ * OR it is currently the default for the location
48
+ *
49
+ * This prevents scenarios where a user's explicit model choice gets overridden
50
+ * when the default model changes, while still tracking default model changes
51
+ * for users who never explicitly chose a model.
52
+ */
53
+ export declare function shouldRestorePersistedModel(persistedModelId: string, persistedAsDefault: boolean, availableModels: ILanguageModelChatMetadataAndIdentifier[], location: ChatAgentLocation): {
54
+ shouldRestore: boolean;
55
+ model: ILanguageModelChatMetadataAndIdentifier | undefined;
56
+ };
57
+ /**
58
+ * Determines whether the current model should be reset because it is no longer
59
+ * compatible with the current mode, session, or availability.
60
+ *
61
+ * Returns true if the model should be reset to default.
62
+ */
63
+ export declare function shouldResetModelToDefault(currentModel: ILanguageModelChatMetadataAndIdentifier | undefined, availableModels: ILanguageModelChatMetadataAndIdentifier[], context: IModelSelectionContext, allModels: ILanguageModelChatMetadataAndIdentifier[]): boolean;
64
+ /**
65
+ * Determines whether a model from a sync state should be applied to the current view.
66
+ *
67
+ * Returns an action:
68
+ * - `'keep'` - the view already has the same model; no change needed.
69
+ * - `'apply'` - the state model is valid; the caller should switch to it.
70
+ * - `'default'` - the state model is incompatible (wrong session pool, unsupported
71
+ * mode, or missing inline-chat capability); the caller should fall
72
+ * back to the default model for the current location.
73
+ *
74
+ * @param context Optional because some callers (e.g. unit tests, or code paths
75
+ * that only care about session-pool validation) don't have a full UI context
76
+ * available. When omitted, mode and inline-chat checks are skipped and only
77
+ * session-pool membership is validated.
78
+ */
79
+ export declare function resolveModelFromSyncState(stateModel: ILanguageModelChatMetadataAndIdentifier, currentModel: ILanguageModelChatMetadataAndIdentifier | undefined, allModels: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined, context?: IModelSelectionContext): {
80
+ action: "keep" | "apply" | "default";
81
+ };
82
+ /**
83
+ * Merges live models with cached models per-vendor.
84
+ * For vendors whose models have resolved, uses live data.
85
+ * For vendors that are contributed but haven't resolved yet (startup race), keeps cached models.
86
+ * Vendors no longer contributed are evicted from cache.
87
+ */
88
+ export declare function mergeModelsWithCache(liveModels: ILanguageModelChatMetadataAndIdentifier[], cachedModels: ILanguageModelChatMetadataAndIdentifier[], contributedVendors: Set<string>): ILanguageModelChatMetadataAndIdentifier[];
89
+ /**
90
+ * Determines whether the currently selected model should be reset to default
91
+ * when the language model list changes.
92
+ *
93
+ * Returns true if the model should be reset to default (i.e., the selected model
94
+ * is no longer in the available models list).
95
+ */
96
+ export declare function shouldResetOnModelListChange(currentModelId: string | undefined, availableModels: ILanguageModelChatMetadataAndIdentifier[]): boolean;
97
+ /**
98
+ * Determines whether a late-arriving persisted model should be restored.
99
+ * This handles the startup race where the model wasn't available during
100
+ * `initSelectedModel` but arrives later via `onDidChangeLanguageModels`.
101
+ *
102
+ * The model must pass both the persisted-default check and the `isUserSelectable` check.
103
+ */
104
+ export declare function shouldRestoreLateArrivingModel(persistedModelId: string, persistedAsDefault: boolean, model: ILanguageModelChatMetadataAndIdentifier, location: ChatAgentLocation): boolean;
@@ -0,0 +1,127 @@
1
+
2
+ import { ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
3
+ import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
4
+
5
+ function filterModelsForSession(models, sessionType, currentModeKind, location, isInlineChatV2Enabled) {
6
+ if (sessionType && sessionType !== "local" && hasModelsTargetingSession(models, sessionType)) {
7
+ return models.filter(
8
+ entry => entry.metadata?.targetChatSessionType === sessionType && entry.metadata?.isUserSelectable
9
+ );
10
+ }
11
+ return models.filter(
12
+ entry => !entry.metadata?.targetChatSessionType && entry.metadata?.isUserSelectable && isModelSupportedForMode(entry, currentModeKind) && isModelSupportedForInlineChat(entry, location, isInlineChatV2Enabled)
13
+ );
14
+ }
15
+ function isModelSupportedForMode(model, currentModeKind) {
16
+ if (currentModeKind === ChatModeKind.Agent) {
17
+ return ILanguageModelChatMetadata.suitableForAgentMode(model.metadata);
18
+ }
19
+ return true;
20
+ }
21
+ function isModelSupportedForInlineChat(model, location, isInlineChatV2Enabled) {
22
+ if (location !== ChatAgentLocation.EditorInline || !isInlineChatV2Enabled) {
23
+ return true;
24
+ }
25
+ return !!model.metadata.capabilities?.toolCalling;
26
+ }
27
+ function hasModelsTargetingSession(allModels, sessionType) {
28
+ if (!sessionType) {
29
+ return false;
30
+ }
31
+ return ( allModels.some(m => m.metadata.targetChatSessionType === sessionType));
32
+ }
33
+ function isModelValidForSession(model, allModels, sessionType) {
34
+ if (hasModelsTargetingSession(allModels, sessionType)) {
35
+ return model.metadata.targetChatSessionType === sessionType;
36
+ }
37
+ return !model.metadata.targetChatSessionType;
38
+ }
39
+ function findDefaultModel(models, location) {
40
+ return models.find(m => m.metadata.isDefaultForLocation[location]) || models[0];
41
+ }
42
+ function shouldRestorePersistedModel(persistedModelId, persistedAsDefault, availableModels, location) {
43
+ const model = availableModels.find(m => m.identifier === persistedModelId);
44
+ if (!model) {
45
+ return {
46
+ shouldRestore: false,
47
+ model: undefined
48
+ };
49
+ }
50
+ if (!persistedAsDefault || model.metadata.isDefaultForLocation[location]) {
51
+ return {
52
+ shouldRestore: true,
53
+ model
54
+ };
55
+ }
56
+ return {
57
+ shouldRestore: false,
58
+ model
59
+ };
60
+ }
61
+ function shouldResetModelToDefault(currentModel, availableModels, context, allModels) {
62
+ if (!currentModel) {
63
+ return true;
64
+ }
65
+ if (!( availableModels.some(m => m.identifier === currentModel.identifier))) {
66
+ return true;
67
+ }
68
+ if (!isModelSupportedForMode(currentModel, context.currentModeKind)) {
69
+ return true;
70
+ }
71
+ if (!isModelSupportedForInlineChat(currentModel, context.location, context.isInlineChatV2Enabled)) {
72
+ return true;
73
+ }
74
+ if (!isModelValidForSession(currentModel, allModels, context.sessionType)) {
75
+ return true;
76
+ }
77
+ return false;
78
+ }
79
+ function resolveModelFromSyncState(stateModel, currentModel, allModels, sessionType, context) {
80
+ if (currentModel && currentModel.identifier === stateModel.identifier) {
81
+ return {
82
+ action: "keep"
83
+ };
84
+ }
85
+ if (!isModelValidForSession(stateModel, allModels, sessionType)) {
86
+ return {
87
+ action: "default"
88
+ };
89
+ }
90
+ if (context) {
91
+ if (!isModelSupportedForMode(stateModel, context.currentModeKind)) {
92
+ return {
93
+ action: "default"
94
+ };
95
+ }
96
+ if (!isModelSupportedForInlineChat(stateModel, context.location, context.isInlineChatV2Enabled)) {
97
+ return {
98
+ action: "default"
99
+ };
100
+ }
101
+ }
102
+ return {
103
+ action: "apply"
104
+ };
105
+ }
106
+ function mergeModelsWithCache(liveModels, cachedModels, contributedVendors) {
107
+ if (liveModels.length > 0) {
108
+ const liveVendors = ( new Set(( liveModels.map(m => m.metadata.vendor))));
109
+ return [...liveModels, ...cachedModels.filter(m => !( liveVendors.has(m.metadata.vendor)) && ( contributedVendors.has(m.metadata.vendor)))];
110
+ }
111
+ return cachedModels;
112
+ }
113
+ function shouldResetOnModelListChange(currentModelId, availableModels) {
114
+ if (!currentModelId) {
115
+ return true;
116
+ }
117
+ return !( availableModels.some(m => m.identifier === currentModelId));
118
+ }
119
+ function shouldRestoreLateArrivingModel(persistedModelId, persistedAsDefault, model, location) {
120
+ if (!model.metadata.isUserSelectable) {
121
+ return false;
122
+ }
123
+ const result = shouldRestorePersistedModel(persistedModelId, persistedAsDefault, [model], location);
124
+ return result.shouldRestore;
125
+ }
126
+
127
+ export { filterModelsForSession, findDefaultModel, hasModelsTargetingSession, isModelSupportedForInlineChat, isModelSupportedForMode, isModelValidForSession, mergeModelsWithCache, resolveModelFromSyncState, shouldResetModelToDefault, shouldResetOnModelListChange, shouldRestoreLateArrivingModel, shouldRestorePersistedModel };
@@ -86,13 +86,13 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
86
86
  _getSessionCategory(sessionTypeItem) {
87
87
  if (isFirstPartyAgentSessionProvider(sessionTypeItem.type)) {
88
88
  return {
89
- label: ( localize(6731, "Continue In")),
89
+ label: ( localize(6818, "Continue In")),
90
90
  order: 1,
91
91
  showHeader: true
92
92
  };
93
93
  }
94
94
  return {
95
- label: ( localize(6732, "Continue In (Third Party)")),
95
+ label: ( localize(6819, "Continue In (Third Party)")),
96
96
  order: 2,
97
97
  showHeader: false
98
98
  };
@@ -101,7 +101,7 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
101
101
  const learnMoreUrl = "https://aka.ms/vscode-continue-chat-in";
102
102
  return {
103
103
  id: "workbench.action.chat.agentOverview.learnMoreHandOff",
104
- label: ( localize(6733, "Learn about agent handoff...")),
104
+ label: ( localize(6820, "Learn about agent handoff...")),
105
105
  tooltip: learnMoreUrl,
106
106
  class: undefined,
107
107
  enabled: true,
@@ -117,7 +117,7 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
117
117
  return [{
118
118
  id: "newChatSession",
119
119
  class: undefined,
120
- label: ( localize(6734, "New Chat Session")),
120
+ label: ( localize(6821, "New Chat Session")),
121
121
  tooltip: "",
122
122
  hover: {
123
123
  content: "",
@@ -127,7 +127,7 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
127
127
  icon: Codicon.plus,
128
128
  enabled: true,
129
129
  category: {
130
- label: ( localize(6735, "New Chat Session")),
130
+ label: ( localize(6822, "New Chat Session")),
131
131
  order: 0,
132
132
  showHeader: false
133
133
  },
@@ -13,7 +13,7 @@ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platfo
13
13
  import { IChatAgentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service";
14
14
  import { IChatMode } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes";
15
15
  import { IChatModeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service";
16
- import { Target } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService";
16
+ import { Target } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
17
17
  import { ChatInputPickerActionViewItem, IChatInputPickerOptions } from "./chatInputPickerActionItem.js";
18
18
  import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
19
19
  import { IWorkbenchAssignmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/assignment/common/assignmentService.service";
@@ -33,5 +33,6 @@ export declare class ModePickerActionItem extends ChatInputPickerActionViewItem
33
33
  private readonly _productService;
34
34
  constructor(action: MenuItemAction, delegate: IModePickerDelegate, pickerOptions: IChatInputPickerOptions, actionWidgetService: IActionWidgetService, chatAgentService: IChatAgentService, keybindingService: IKeybindingService, configurationService: IConfigurationService, contextKeyService: IContextKeyService, chatModeService: IChatModeService, menuService: IMenuService, commandService: ICommandService, _productService: IProductService, telemetryService: ITelemetryService, openerService: IOpenerService, assignmentService: IWorkbenchAssignmentService);
35
35
  private getModePickerActionBarActions;
36
+ render(container: HTMLElement): void;
36
37
  protected renderLabel(element: HTMLElement): IDisposable | null;
37
38
  }