@codingame/monaco-vscode-katex-common 34.1.3 → 35.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 (244) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/base/browser/animationSync.d.ts +36 -0
  3. package/vscode/src/vs/base/browser/animationSync.js +23 -0
  4. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.js +23 -2
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +3 -2
  6. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.d.ts +5 -5
  7. package/vscode/src/vs/platform/agentHost/common/fileEditDiff.d.ts +32 -0
  8. package/vscode/src/vs/platform/agentHost/common/fileEditDiff.js +33 -0
  9. package/vscode/src/vs/platform/agentHost/common/meta/agentFeedbackAnnotations.d.ts +90 -0
  10. package/vscode/src/vs/platform/agentHost/common/meta/agentFeedbackAttachments.d.ts +30 -0
  11. package/vscode/src/vs/platform/agentHost/common/meta/agentToolCallMeta.d.ts +65 -0
  12. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.d.ts +16 -5
  13. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.js +3 -2
  14. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-resource-watch/reducer.d.ts +21 -0
  15. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +8 -0
  16. package/vscode/src/vs/platform/agentHost/common/state/sessionReducers.d.ts +9 -0
  17. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +2 -2
  18. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +29 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +105 -28
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +15 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +74 -44
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +2 -2
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +98 -24
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +8 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +31 -4
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +45 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +163 -37
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostFolderPickerActionItem.d.ts +47 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostFolderPickerActionItem.js +172 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +3 -1
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +7 -4
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionReferenceAttachment.d.ts +12 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSnapshotController.d.ts +116 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSnapshotController.js +348 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/stateToProgressAdapter.d.ts +211 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/stateToProgressAdapter.js +64 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +18 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +13 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +30 -18
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +4 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +29 -4
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +24 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +119 -41
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +27 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionTypeAvailability.d.ts +63 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionTypeAvailability.js +97 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +5 -6
  56. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +105 -88
  57. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -13
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.d.ts +1 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +46 -48
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +28 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +98 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +3 -3
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +9 -7
  64. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatTurnPills.css +162 -0
  65. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +9 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +95 -24
  67. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +22 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +151 -20
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +20 -2
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +5 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +61 -17
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAutoModeResolutionContentPart.d.ts +20 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAutoModeResolutionContentPart.js +55 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +6 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +81 -30
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.d.ts +11 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.js +13 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +9 -33
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.d.ts +6 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.js +21 -11
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +6 -2
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -19
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpAuthenticationContentPart.d.ts +35 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpAuthenticationContentPart.js +140 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersStartingContentPart.d.ts +24 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersStartingContentPart.js +58 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +3 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +29 -8
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +1 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +44 -44
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +12 -66
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +39 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +167 -43
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +1 -15
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +9 -86
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSystemNotificationContentPart.d.ts +12 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSystemNotificationContentPart.js +23 -0
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +9 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +141 -72
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +2 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +17 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTurnPillsPart.d.ts +29 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTurnPillsPart.js +110 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatAgentFeedbackReviewConfirmation.css +133 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatAutoModeResolution.css +30 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +4 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +18 -8
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +23 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +33 -18
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentContent.css +23 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +44 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +2 -0
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +9 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +21 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatAgentFeedbackReviewConfirmationSubPart.d.ts +48 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatAgentFeedbackReviewConfirmationSubPart.js +279 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +43 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +53 -15
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +7 -9
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +24 -10
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/{chatMissingSandboxDepsConfirmationSubPart.d.ts → chatSandboxPrerequisiteConfirmationSubPart.d.ts} +3 -2
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/{chatMissingSandboxDepsConfirmationSubPart.js → chatSandboxPrerequisiteConfirmationSubPart.js} +14 -10
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +0 -1
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +30 -59
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +41 -29
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +12 -9
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +43 -35
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +2 -1
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +11 -8
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeHelper.d.ts +18 -0
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeHelper.js +51 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +4 -4
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +18 -3
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +266 -98
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +1 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +8 -3
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatRestoreCheckpointActionViewItem.d.ts +32 -0
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatRestoreCheckpointActionViewItem.js +135 -0
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatTurnPills.d.ts +85 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatTurnPills.js +275 -0
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +18 -1
  176. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +84 -37
  177. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  178. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.js +4 -4
  179. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +14 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +52 -4
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +187 -13
  183. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +435 -139
  184. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatePersistence.d.ts +6 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatePersistence.js +21 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationLogic.d.ts +50 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationLogic.js +49 -0
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationStore.d.ts +79 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationStore.js +127 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +84 -8
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +658 -430
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +72 -8
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +82 -7
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -2
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.d.ts +3 -3
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.js +6 -3
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +2 -1
  198. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -9
  199. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatGoalBannerWidget.css +2 -2
  200. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +28 -12
  201. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +15 -14
  203. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +60 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +18 -7
  205. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +49 -1
  206. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +141 -81
  207. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +7 -15
  208. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +30 -47
  209. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  210. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerInputActionItem.d.ts +20 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerInputActionItem.js +18 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +469 -148
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +11 -2
  214. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +79 -28
  215. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +71 -2
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +107 -45
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +20 -0
  218. package/vscode/src/vs/workbench/contrib/chat/common/chatErrorMessages.d.ts +110 -0
  219. package/vscode/src/vs/workbench/contrib/chat/common/chatErrorMessages.js +37 -0
  220. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +4 -1
  221. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +13 -11
  222. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +8 -1
  223. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +57 -21
  224. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  225. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
  226. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  227. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  229. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpToolCallUI.d.ts +39 -8
  231. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpToolCallUI.js +168 -72
  232. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  233. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  235. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  236. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  238. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  239. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  240. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  241. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  242. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  243. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.d.ts +0 -30
  244. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.js +0 -147
@@ -95,6 +95,7 @@ registerCss(chat);
95
95
  registerCss(chatAgentHover);
96
96
  registerCss(chatViewWelcome);
97
97
  const $ = $$1;
98
+ const SESSIONS_CHAT_ITEM_HORIZONTAL_PADDING = 64;
98
99
  function isQuickChat(widget) {
99
100
  return isIChatResourceViewContext(widget.viewContext) && Boolean(widget.viewContext.isQuickChat);
100
101
  }
@@ -116,7 +117,7 @@ const supportsAllAttachments = {
116
117
  supportsHandOffs: true,
117
118
  supportsCheckpoints: true
118
119
  };
119
- const DISCLAIMER = ( localize(7657, "AI responses may be inaccurate"));
120
+ const DISCLAIMER = ( localize(8223, "AI responses may be inaccurate"));
120
121
  let ChatWidget = class ChatWidget extends Disposable {
121
122
  static {
122
123
  ChatWidget_1 = this;
@@ -293,6 +294,7 @@ let ChatWidget = class ChatWidget extends Disposable {
293
294
  this._gettingStartedTipPart = this._register(( new MutableDisposable()));
294
295
  this.visibleChangeCount = 0;
295
296
  this._visible = false;
297
+ this._inputVisible = true;
296
298
  this._isRenderingWelcome = false;
297
299
  this._attachmentCapabilities = supportsAllAttachments;
298
300
  this._goalBannerDismissedForCurrentRequest = false;
@@ -302,6 +304,9 @@ let ChatWidget = class ChatWidget extends Disposable {
302
304
  this._viewModelObs = observableFromEvent(this, this.onDidChangeViewModel, () => this.viewModel);
303
305
  this._lockedToCodingAgentContextKey = ChatContextKeys.lockedToCodingAgent.bindTo(this.contextKeyService);
304
306
  this._lockedCodingAgentIdContextKey = ChatContextKeys.lockedCodingAgentId.bindTo(this.contextKeyService);
307
+ this._readOnlyContextKey = ChatContextKeys.readOnly.bindTo(this.contextKeyService);
308
+ this._chatIsAgentHostSessionContextKey = ChatContextKeys.chatIsAgentHostSession.bindTo(this.contextKeyService);
309
+ this._chatAgentHostProviderIdContextKey = ChatContextKeys.chatAgentHostProviderId.bindTo(this.contextKeyService);
305
310
  this._chatSessionSupportsForkContextKey = ChatContextKeys.chatSessionSupportsFork.bindTo(this.contextKeyService);
306
311
  this._agentSupportsAttachmentsContextKey = ChatContextKeys.agentSupportsAttachments.bindTo(this.contextKeyService);
307
312
  this._sessionIsEmptyContextKey = ChatContextKeys.chatSessionIsEmpty.bindTo(this.contextKeyService);
@@ -616,6 +621,7 @@ let ChatWidget = class ChatWidget extends Disposable {
616
621
  this.renderWelcomeViewContentIfNeeded();
617
622
  this.createList(this.listContainer, {
618
623
  editable: !isInlineChat(this) && !isQuickChat(this),
624
+ contentHorizontalPadding: this.viewOptions.isSessionsWindow ? SESSIONS_CHAT_ITEM_HORIZONTAL_PADDING : undefined,
619
625
  ...this.viewOptions.rendererOptions,
620
626
  renderStyle
621
627
  });
@@ -686,6 +692,11 @@ let ChatWidget = class ChatWidget extends Disposable {
686
692
  }
687
693
  }
688
694
  focusInput() {
695
+ if (!this._inputVisible) {
696
+ this.listWidget.focusLastItem(true);
697
+ this._onDidFocus.fire();
698
+ return;
699
+ }
689
700
  this.input.focus();
690
701
  this._onDidFocus.fire();
691
702
  }
@@ -807,7 +818,8 @@ let ChatWidget = class ChatWidget extends Disposable {
807
818
  this.lockToCodingAgent(
808
819
  this._lockedAgent.name,
809
820
  this._lockedAgent.displayName,
810
- this._lockedAgent.id
821
+ this._lockedAgent.id,
822
+ this._lockedAgent.agentHostProviderId
811
823
  );
812
824
  } else {
813
825
  this.unlockFromCodingAgent();
@@ -880,7 +892,7 @@ let ChatWidget = class ChatWidget extends Disposable {
880
892
  if (this.chatEntitlementService.anonymous && !this.chatEntitlementService.sentiment.completed) {
881
893
  const providers = product.defaultChatAgent.provider;
882
894
  additionalMessage = ( new MarkdownString(( localize(
883
- 7658,
895
+ 8224,
884
896
  "By continuing with {0} Copilot, you agree to {1}'s [Terms]({2}) and [Privacy Statement]({3}).",
885
897
  providers.default.name,
886
898
  providers.default.name,
@@ -962,7 +974,7 @@ let ChatWidget = class ChatWidget extends Disposable {
962
974
  return ( new MarkdownString(""));
963
975
  } else if (this._instructionFilesExist === false) {
964
976
  return (new MarkdownString(localize(
965
- 7659,
977
+ 8225,
966
978
  "[Generate Agent Instructions]({0}) to onboard AI onto your codebase.",
967
979
  `command:${GENERATE_AGENT_INSTRUCTIONS_COMMAND_ID}`
968
980
  ), {
@@ -988,19 +1000,19 @@ let ChatWidget = class ChatWidget extends Disposable {
988
1000
  const providerTitle = contribution?.welcomeTitle;
989
1001
  const providerMessage = contribution?.welcomeMessage;
990
1002
  const message = providerMessage ? ( new MarkdownString(providerMessage)) : (this._lockedAgent?.prefix === "@copilot " ? ( new MarkdownString(( localize(
991
- 7660,
1003
+ 8226,
992
1004
  "This chat session will be forwarded to the {0} [coding agent]({1}) where work is completed in the background. ",
993
1005
  this._lockedAgent.prefix,
994
1006
  "https://aka.ms/coding-agent-docs"
995
1007
  )) + DISCLAIMER, {
996
1008
  isTrusted: true
997
1009
  })) : ( new MarkdownString(( localize(
998
- 7661,
1010
+ 8227,
999
1011
  "This chat session will be forwarded to the {0} coding agent where work is completed in the background. ",
1000
1012
  this._lockedAgent?.prefix
1001
1013
  )) + DISCLAIMER)));
1002
1014
  return {
1003
- title: providerTitle ?? ( localize(7662, "Delegate to {0}", this._lockedAgent?.prefix)),
1015
+ title: providerTitle ?? ( localize(8228, "Delegate to {0}", this._lockedAgent?.prefix)),
1004
1016
  message,
1005
1017
  icon: providerIcon ?? Codicon.sendToRemoteAgent,
1006
1018
  additionalMessage,
@@ -1009,11 +1021,11 @@ let ChatWidget = class ChatWidget extends Disposable {
1009
1021
  }
1010
1022
  let title;
1011
1023
  if (this.input.currentModeKind === ChatModeKind.Ask) {
1012
- title = ( localize(7663, "Ask about your code"));
1024
+ title = ( localize(8229, "Ask about your code"));
1013
1025
  } else if (this.input.currentModeKind === ChatModeKind.Edit) {
1014
- title = ( localize(7664, "Edit in context"));
1026
+ title = ( localize(8230, "Edit in context"));
1015
1027
  } else {
1016
- title = ( localize(7665, "Build with Agent"));
1028
+ title = ( localize(8231, "Build with Agent"));
1017
1029
  }
1018
1030
  return {
1019
1031
  title,
@@ -1059,8 +1071,6 @@ let ChatWidget = class ChatWidget extends Disposable {
1059
1071
  const modes = this.input.currentChatModesObs.get();
1060
1072
  if (modeInfo?.modeInstructions?.name) {
1061
1073
  responseMode = modes.findModeByName(modeInfo.modeInstructions.name);
1062
- } else if (modeInfo?.modeId) {
1063
- responseMode = modes.findModeById(modeInfo.modeId);
1064
1074
  } else {
1065
1075
  responseMode = this.input.currentModeObs.get();
1066
1076
  }
@@ -1259,6 +1269,24 @@ let ChatWidget = class ChatWidget extends Disposable {
1259
1269
  );
1260
1270
  }
1261
1271
  }
1272
+ setReadOnly(readOnly) {
1273
+ this._readOnlyContextKey.set(readOnly);
1274
+ this.setInputVisible(!readOnly);
1275
+ }
1276
+ setInputVisible(visible) {
1277
+ const changed = this._inputVisible !== visible;
1278
+ this._inputVisible = visible;
1279
+ this._applyInputVisibility();
1280
+ if (changed && this.bodyDimension) {
1281
+ this._layoutListForInputHeight();
1282
+ }
1283
+ }
1284
+ _applyInputVisibility() {
1285
+ const inputElement = this.inputPartDisposable.value?.element;
1286
+ if (inputElement) {
1287
+ inputElement.style.display = this._inputVisible ? "" : "none";
1288
+ }
1289
+ }
1262
1290
  setVisible(visible) {
1263
1291
  const wasVisible = this._visible;
1264
1292
  this._visible = visible;
@@ -1388,14 +1416,14 @@ let ChatWidget = class ChatWidget extends Disposable {
1388
1416
  this.input.setPermissionLevel(
1389
1417
  this.inputPart.currentModeInfo.permissionLevel ?? ChatPermissionLevel.Default
1390
1418
  );
1391
- if (currentElement.modelId) {
1392
- this.input.switchModelByIdentifier(currentElement.modelId);
1393
- }
1394
1419
  this.input.setEditing(true, isEditingSentRequest);
1395
1420
  this._onDidChangeActiveInputEditor.fire();
1396
1421
  } else {
1397
1422
  this.inputPart.element.classList.add("editing");
1398
1423
  }
1424
+ if (currentElement.modelId) {
1425
+ this.input.switchModelByIdentifier(currentElement.modelId);
1426
+ }
1399
1427
  this.inputPart.toggleChatInputOverlay(!isInput);
1400
1428
  if (currentContext.length > 0) {
1401
1429
  this.input.attachmentModel.addContext(...currentContext);
@@ -1548,6 +1576,7 @@ let ChatWidget = class ChatWidget extends Disposable {
1548
1576
  }));
1549
1577
  }
1550
1578
  this.input.render(container, "", this);
1579
+ this._applyInputVisibility();
1551
1580
  if (this.bodyDimension?.width) {
1552
1581
  this.input.layout(this.bodyDimension.width);
1553
1582
  }
@@ -1730,7 +1759,7 @@ let ChatWidget = class ChatWidget extends Disposable {
1730
1759
  let placeholder = this.chatSessionsService.getChatSessionContribution(this._lockedAgent.id)?.inputPlaceholder;
1731
1760
  if (!placeholder) {
1732
1761
  placeholder = ( localize(
1733
- 7666,
1762
+ 8232,
1734
1763
  "Chat with {0}",
1735
1764
  this._lockedAgent.displayName || this._lockedAgent.name
1736
1765
  ));
@@ -1793,7 +1822,7 @@ let ChatWidget = class ChatWidget extends Disposable {
1793
1822
  this._hasPendingRequestsContextKey.set(pendingCount > 0);
1794
1823
  const steeringCount = pendingRequests.filter(pending => pending.kind === ChatRequestQueueKind.Steering).length;
1795
1824
  if (announceSteering && steeringCount > 0 && lastSteeringCount === 0) {
1796
- status(( localize(7667, "Steering")));
1825
+ status(( localize(8233, "Steering")));
1797
1826
  }
1798
1827
  lastSteeringCount = steeringCount;
1799
1828
  };
@@ -1867,18 +1896,21 @@ let ChatWidget = class ChatWidget extends Disposable {
1867
1896
  getContrib(id) {
1868
1897
  return this.contribs.find(c => c.id === id);
1869
1898
  }
1870
- lockToCodingAgent(name, displayName, agentId) {
1871
- if (this._lockedAgent?.id === agentId && this._lockedAgent.name === name && this._lockedAgent.displayName === displayName) {
1899
+ lockToCodingAgent(name, displayName, agentId, agentHostProviderId) {
1900
+ if (this._lockedAgent?.id === agentId && this._lockedAgent.name === name && this._lockedAgent.displayName === displayName && this._lockedAgent.agentHostProviderId === agentHostProviderId) {
1872
1901
  return;
1873
1902
  }
1874
1903
  this._lockedAgent = {
1875
1904
  id: agentId,
1876
1905
  name,
1877
1906
  prefix: `@${name} `,
1878
- displayName
1907
+ displayName,
1908
+ agentHostProviderId
1879
1909
  };
1880
1910
  this._lockedToCodingAgentContextKey.set(true);
1881
1911
  this._lockedCodingAgentIdContextKey.set(agentId);
1912
+ this._chatIsAgentHostSessionContextKey.set(!!agentHostProviderId);
1913
+ this._chatAgentHostProviderIdContextKey.set(agentHostProviderId ?? "");
1882
1914
  this.renderWelcomeViewContentIfNeeded();
1883
1915
  const agent = this.chatAgentService.getAgent(agentId);
1884
1916
  this._updateAgentCapabilitiesContextKeys(agent);
@@ -1900,6 +1932,8 @@ let ChatWidget = class ChatWidget extends Disposable {
1900
1932
  this._lockedAgent = undefined;
1901
1933
  this._lockedToCodingAgentContextKey.set(false);
1902
1934
  this._lockedCodingAgentIdContextKey.set("");
1935
+ this._chatIsAgentHostSessionContextKey.set(false);
1936
+ this._chatAgentHostProviderIdContextKey.set("");
1903
1937
  this._chatSessionSupportsForkContextKey.set(false);
1904
1938
  this._updateAgentCapabilitiesContextKeys(undefined);
1905
1939
  this.renderWelcomeViewContentIfNeeded();
@@ -1948,6 +1982,7 @@ let ChatWidget = class ChatWidget extends Disposable {
1948
1982
  attempt: lastRequest.attempt + 1,
1949
1983
  location: this.location,
1950
1984
  userSelectedModelId: this.input.currentLanguageModel,
1985
+ userSelectedModelConfiguration: this.input.currentLanguageModel ? this.input.getModelConfiguration(this.input.currentLanguageModel) : undefined,
1951
1986
  modeInfo: this.input.currentModeInfo
1952
1987
  };
1953
1988
  const result = await this.chatService.resendRequest(lastRequest, options);
@@ -1981,9 +2016,11 @@ let ChatWidget = class ChatWidget extends Disposable {
1981
2016
  if (!inputPart) {
1982
2017
  return;
1983
2018
  }
2019
+ const sessionResource = this.viewModel?.model.sessionResource;
2020
+ const isLocalHarness = !!sessionResource && getChatSessionType(sessionResource) === localChatSessionType;
1984
2021
  const permissionLevel = inputPart.currentModeInfo?.permissionLevel;
1985
2022
  const goalModeOn = this.configurationService.getValue(ChatConfiguration.AutopilotAdvancedEnabled) === true;
1986
- if (permissionLevel !== ChatPermissionLevel.Autopilot || !goalModeOn) {
2023
+ if (!isLocalHarness || permissionLevel !== ChatPermissionLevel.Autopilot || !goalModeOn) {
1987
2024
  this._cancelGoalSummary();
1988
2025
  inputPart.clearGoalBanner();
1989
2026
  return;
@@ -2097,15 +2134,19 @@ let ChatWidget = class ChatWidget extends Disposable {
2097
2134
  };
2098
2135
  const isUserQuery = !query;
2099
2136
  const isEditing = this.viewModel?.editing;
2137
+ let cancelledCurrentRequest = false;
2100
2138
  if (isEditing) {
2101
2139
  this.inputPart?.clearToolConfirmationCarousel();
2102
2140
  const editingPendingRequest = this.viewModel.editing.pendingKind;
2103
2141
  if (editingPendingRequest !== undefined) {
2104
2142
  const editingRequestId = this.viewModel.editing.id;
2105
2143
  this.chatService.removePendingRequest(this.viewModel.sessionResource, editingRequestId);
2106
- options.queue ??= editingPendingRequest;
2144
+ if (!options.cancelCurrentRequest) {
2145
+ options.queue ??= editingPendingRequest;
2146
+ }
2107
2147
  } else {
2108
2148
  await this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource, "acceptInput-editing");
2149
+ cancelledCurrentRequest = true;
2109
2150
  options.queue = undefined;
2110
2151
  }
2111
2152
  const preserveCheckpoint = this._lockedAgent && !!this._attachmentCapabilities.supportsCheckpoints;
@@ -2118,12 +2159,17 @@ let ChatWidget = class ChatWidget extends Disposable {
2118
2159
  }
2119
2160
  }
2120
2161
  const model = this.viewModel.model;
2162
+ if (options.cancelCurrentRequest && model.requestInProgress.get() && !cancelledCurrentRequest) {
2163
+ await this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource, "acceptInput-stopAndSend");
2164
+ cancelledCurrentRequest = true;
2165
+ options.queue = undefined;
2166
+ }
2121
2167
  const requestInProgress = model.requestInProgress.get();
2122
- if (model.requestNeedsInput.get() && !model.getPendingRequests().length) {
2168
+ if (!options.cancelCurrentRequest && model.requestNeedsInput.get() && !model.getPendingRequests().length) {
2123
2169
  await this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource, "acceptInput-needsInput");
2124
2170
  options.queue ??= ChatRequestQueueKind.Queued;
2125
2171
  }
2126
- if (requestInProgress) {
2172
+ if (requestInProgress && !options.cancelCurrentRequest) {
2127
2173
  options.queue ??= ChatRequestQueueKind.Queued;
2128
2174
  }
2129
2175
  if (!requestInProgress && !isEditing && !(await this.confirmPendingRequestsBeforeSend(model, options))) {
@@ -2165,32 +2211,33 @@ let ChatWidget = class ChatWidget extends Disposable {
2165
2211
  }
2166
2212
  this.viewModel.model.setCheckpoint(undefined);
2167
2213
  }
2168
- const enabledTools = this.input.currentModeKind === ChatModeKind.Agent ? this.input.selectedToolsModel.userSelectedTools.get() : undefined;
2169
- const enabledSubAgents = this.input.currentModeKind === ChatModeKind.Agent ? this.input.currentModeObs.get().agents?.get() : undefined;
2170
2214
  const resolvedImageVariables = await this._resolveDirectoryImageAttachments(requestInputs.attachedContext.asArray());
2171
2215
  const submittedSessionResource = this.viewModel.sessionResource;
2172
2216
  const contribution = this._lockedAgent ? this.chatSessionsService.getChatSessionContribution(this._lockedAgent.id) : undefined;
2173
2217
  const autoAttachEnabled = contribution ? contribution.autoAttachReferences === true : true;
2218
+ const modeKind = this.input.currentModeKind;
2219
+ const modeInfo = this.input.currentModeInfo;
2174
2220
  const result = await this.chatService.sendRequest(this.viewModel.sessionResource, requestInputs.input, {
2175
2221
  userSelectedModelId: this.input.currentLanguageModel,
2222
+ userSelectedModelConfiguration: this.input.currentLanguageModel ? this.input.getModelConfiguration(this.input.currentLanguageModel) : undefined,
2176
2223
  location: this.location,
2177
2224
  locationData: this._location.resolveData?.(),
2178
2225
  parserContext: {
2179
2226
  selectedAgent: this._lastSelectedAgent,
2180
- mode: this.input.currentModeKind,
2227
+ mode: modeKind,
2181
2228
  attachmentCapabilities: this._lastSelectedAgent?.capabilities ?? this.attachmentCapabilities
2182
2229
  },
2183
2230
  attachedContext: requestInputs.attachedContext.asArray(),
2184
2231
  resolvedVariables: resolvedImageVariables,
2185
2232
  noCommandDetection: options?.noCommandDetection,
2186
2233
  ...this.getModeRequestOptions(),
2187
- modeInfo: this.input.currentModeInfo,
2234
+ modeInfo,
2188
2235
  agentIdSilent: this._lockedAgent?.id,
2189
2236
  queue: options?.queue,
2190
2237
  instructionContext: autoAttachEnabled ? {
2191
- modeKind: this.input.currentModeKind,
2192
- enabledTools,
2193
- enabledSubAgents
2238
+ modeKind,
2239
+ enabledTools: modeKind === ChatModeKind.Agent ? this.input.selectedToolsModel.userSelectedTools.get() : undefined,
2240
+ enabledSubAgents: modeKind === ChatModeKind.Agent ? this.input.currentModeObs.get().agents?.get() : undefined
2194
2241
  } : undefined
2195
2242
  });
2196
2243
  if (ChatSendResult.isRejected(result)) {
@@ -2198,7 +2245,7 @@ let ChatWidget = class ChatWidget extends Disposable {
2198
2245
  }
2199
2246
  this.logThinkingStyleUsage("submit");
2200
2247
  this.updateChatViewVisibility();
2201
- this.input.acceptInput(options?.storeToHistory ?? isUserQuery);
2248
+ this.input.acceptInput(options?.storeToHistory ?? isUserQuery, options?.preserveFocus);
2202
2249
  this._maybeStartGoalSummary(requestInputs.input);
2203
2250
  const sent = ChatSendResult.isQueued(result) ? await result.deferred : result;
2204
2251
  if (!ChatSendResult.isSent(sent)) {
@@ -2265,16 +2312,16 @@ let ChatWidget = class ChatWidget extends Disposable {
2265
2312
  }
2266
2313
  const promptResult = await this.dialogService.prompt({
2267
2314
  type: "question",
2268
- message: ( localize(7668, "You already have pending requests.")),
2315
+ message: ( localize(8234, "You already have pending requests.")),
2269
2316
  detail: ( localize(
2270
- 7669,
2317
+ 8235,
2271
2318
  "Do you want to keep them in the queue or remove them before sending this message?"
2272
2319
  )),
2273
2320
  buttons: [{
2274
- label: ( localize(7670, "Keep Pending Requests")),
2321
+ label: ( localize(8236, "Keep Pending Requests")),
2275
2322
  run: () => "keep"
2276
2323
  }, {
2277
- label: ( localize(7671, "Remove Pending Requests")),
2324
+ label: ( localize(8237, "Remove Pending Requests")),
2278
2325
  run: () => "remove"
2279
2326
  }],
2280
2327
  cancelButton: true
@@ -2357,7 +2404,7 @@ let ChatWidget = class ChatWidget extends Disposable {
2357
2404
  width
2358
2405
  } = this.bodyDimension;
2359
2406
  const chatSuggestNextWidgetHeight = this.chatSuggestNextWidget.height;
2360
- const inputHeight = this.inputPart.height.get();
2407
+ const inputHeight = this._inputVisible ? this.inputPart.height.get() : 0;
2361
2408
  const lastElementVisible = this.listWidget.isScrolledToBottom;
2362
2409
  const lastItem = this.listWidget.lastItem;
2363
2410
  const contentHeight = Math.max(0, height - inputHeight - chatSuggestNextWidgetHeight);
@@ -45,7 +45,7 @@ let ChatFollowups = class ChatFollowups extends Disposable {
45
45
  } else if (followup.kind === "command") {
46
46
  button.element.classList.add("interactive-followup-command");
47
47
  }
48
- button.element.ariaLabel = ( localize(7672, "Follow up question: {0}", baseTitle));
48
+ button.element.ariaLabel = ( localize(8238, "Follow up question: {0}", baseTitle));
49
49
  button.label = ( new MarkdownString(baseTitle));
50
50
  this._register(button.onDidClick(() => this.clickHandler(followup)));
51
51
  }
@@ -20,11 +20,11 @@ class ChatGoalBannerWidget extends Disposable {
20
20
  const iconEl = append(this._bannerEl, $(".chat-goal-banner-icon"));
21
21
  iconEl.appendChild($(ThemeIcon.asCSSSelector(Codicon.target)));
22
22
  const labelEl = append(this._bannerEl, $(".chat-goal-banner-label"));
23
- labelEl.textContent = ( localize(7673, "Goal"));
23
+ labelEl.textContent = ( localize(8239, "Goal"));
24
24
  this._textEl = append(this._bannerEl, $(".chat-goal-banner-text"));
25
25
  const dismissBtn = append(this._bannerEl, $("button.chat-goal-banner-dismiss"));
26
- dismissBtn.title = ( localize(7674, "Dismiss"));
27
- dismissBtn.setAttribute("aria-label", ( localize(7674, "Dismiss")));
26
+ dismissBtn.title = ( localize(8240, "Dismiss"));
27
+ dismissBtn.setAttribute("aria-label", ( localize(8240, "Dismiss")));
28
28
  dismissBtn.appendChild($(ThemeIcon.asCSSSelector(Codicon.close)));
29
29
  this._register(addDisposableListener(dismissBtn, EventType.CLICK, () => {
30
30
  this.clear();
@@ -33,7 +33,7 @@ class ChatGoalBannerWidget extends Disposable {
33
33
  this.clear();
34
34
  }
35
35
  setLoading() {
36
- this._textEl.textContent = ( localize(7675, "Determining goal…"));
36
+ this._textEl.textContent = ( localize(8241, "Determining goal…"));
37
37
  this._textEl.classList.add("loading");
38
38
  this._show();
39
39
  }
@@ -11,8 +11,16 @@ export interface IChatInputNotificationAction {
11
11
  readonly commandId: string;
12
12
  readonly commandArgs?: unknown[];
13
13
  }
14
+ export interface IChatInputNotificationMuteAction {
15
+ /** Command executed when the user clicks the mute (bell-slash) button. */
16
+ readonly commandId: string;
17
+ readonly commandArgs?: unknown[];
18
+ /** Tooltip and accessible label for the mute button. */
19
+ readonly tooltip: string;
20
+ }
14
21
  export interface IChatInputNotification {
15
22
  readonly id: string;
23
+ readonly telemetryId?: string;
16
24
  readonly severity: ChatInputNotificationSeverity;
17
25
  readonly message: string | IMarkdownString;
18
26
  readonly description: string | undefined;
@@ -26,6 +34,12 @@ export interface IChatInputNotification {
26
34
  * list will render it.
27
35
  */
28
36
  readonly sessionTypes?: readonly string[];
37
+ /**
38
+ * Optional "mute" affordance rendered as a bell-slash icon button next to
39
+ * the dismiss (X) button. Use for a "stop showing this entirely" action
40
+ * that is distinct from a one-off dismissal. Omit to hide the button.
41
+ */
42
+ readonly mute?: IChatInputNotificationMuteAction;
29
43
  }
30
44
  export declare class ChatInputNotificationService extends Disposable implements IChatInputNotificationService {
31
45
  readonly _serviceBrand: undefined;
@@ -1,5 +1,6 @@
1
1
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
2
  import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
3
+ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
3
4
  import { IMarkdownRendererService } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service";
4
5
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
5
6
  import { IChatInputNotificationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.service";
@@ -13,8 +14,10 @@ export declare class ChatInputNotificationWidget extends Disposable {
13
14
  private readonly _commandService;
14
15
  private readonly _telemetryService;
15
16
  private readonly _markdownRendererService;
17
+ private readonly _hoverService;
16
18
  readonly domNode: HTMLElement;
17
19
  private readonly _contentDisposables;
20
+ private _lastShownTelemetryData;
18
21
  /**
19
22
  * Optional provider that returns the current session type of the owning
20
23
  * chat input part. When set and a notification specifies a `sessionTypes`
@@ -22,10 +25,12 @@ export declare class ChatInputNotificationWidget extends Disposable {
22
25
  * session type matches.
23
26
  */
24
27
  private readonly _sessionTypeProvider;
25
- constructor(sessionTypeProvider: (() => string | undefined) | undefined, _notificationService: IChatInputNotificationService, _commandService: ICommandService, _telemetryService: ITelemetryService, _markdownRendererService: IMarkdownRendererService);
28
+ constructor(sessionTypeProvider: (() => string | undefined) | undefined, _notificationService: IChatInputNotificationService, _commandService: ICommandService, _telemetryService: ITelemetryService, _markdownRendererService: IMarkdownRendererService, _hoverService: IHoverService);
26
29
  /** Re-evaluates which notification (if any) to display. Safe to call externally when the owner's session type changes. */
27
30
  rerender(): void;
28
31
  private _render;
29
32
  private _matchesSession;
30
33
  private _renderNotification;
34
+ private _logShownTelemetry;
35
+ private _getTelemetryData;
31
36
  }
@@ -3,12 +3,14 @@ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
3
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
4
  import { $ as $$1, clearNode, append, addDisposableListener, EventType } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
5
  import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
6
+ import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
6
7
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
7
8
  import { isMarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
8
9
  import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
10
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
10
11
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
11
12
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
13
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
12
14
  import { IMarkdownRendererService } from '@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service';
13
15
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
14
16
  import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
@@ -34,13 +36,15 @@ let ChatInputNotificationWidget = class ChatInputNotificationWidget extends Disp
34
36
  _notificationService,
35
37
  _commandService,
36
38
  _telemetryService,
37
- _markdownRendererService
39
+ _markdownRendererService,
40
+ _hoverService
38
41
  ) {
39
42
  super();
40
43
  this._notificationService = _notificationService;
41
44
  this._commandService = _commandService;
42
45
  this._telemetryService = _telemetryService;
43
46
  this._markdownRendererService = _markdownRendererService;
47
+ this._hoverService = _hoverService;
44
48
  this._contentDisposables = this._register(( new DisposableStore()));
45
49
  this._sessionTypeProvider = sessionTypeProvider;
46
50
  this.domNode = $(".chat-input-notification-widget");
@@ -56,10 +60,12 @@ let ChatInputNotificationWidget = class ChatInputNotificationWidget extends Disp
56
60
  const notification = this._notificationService.getActiveNotification(n => this._matchesSession(n));
57
61
  if (!notification) {
58
62
  this.domNode.parentElement?.classList.remove("has-notification");
63
+ this._lastShownTelemetryData = undefined;
59
64
  return;
60
65
  }
61
66
  this.domNode.parentElement?.classList.add("has-notification");
62
67
  this._renderNotification(notification);
68
+ this._logShownTelemetry(notification);
63
69
  }
64
70
  _matchesSession(notification) {
65
71
  if (!notification.sessionTypes || notification.sessionTypes.length === 0) {
@@ -83,13 +89,41 @@ let ChatInputNotificationWidget = class ChatInputNotificationWidget extends Disp
83
89
  titleElement.textContent = notification.message;
84
90
  }
85
91
  const ariaTitle = isMarkdownString(notification.message) ? notification.message.value : notification.message;
92
+ if (notification.mute) {
93
+ const mute = notification.mute;
94
+ const muteButton = append(headerRow, $(".chat-input-notification-mute"));
95
+ muteButton.appendChild($$1(ThemeIcon.asCSSSelector(Codicon.bellSlash)));
96
+ muteButton.tabIndex = 0;
97
+ muteButton.role = "button";
98
+ muteButton.ariaLabel = mute.tooltip;
99
+ this._contentDisposables.add(
100
+ this._hoverService.setupManagedHover(getDefaultHoverDelegate("element"), muteButton, mute.tooltip)
101
+ );
102
+ const doMute = () => queueMicrotask(() => {
103
+ this._telemetryService.publicLog2("workbenchActionExecuted", {
104
+ id: mute.commandId,
105
+ from: "chatInputNotification"
106
+ });
107
+ this._commandService.executeCommand(mute.commandId, ...(mute.commandArgs ?? []));
108
+ });
109
+ this._contentDisposables.add(addDisposableListener(muteButton, EventType.CLICK, doMute));
110
+ this._contentDisposables.add(addDisposableListener(muteButton, EventType.KEY_DOWN, e => {
111
+ if (e.key === "Enter" || e.key === " ") {
112
+ e.preventDefault();
113
+ doMute();
114
+ }
115
+ }));
116
+ }
86
117
  if (notification.dismissible) {
87
118
  const dismissButton = append(headerRow, $(".chat-input-notification-dismiss"));
88
119
  dismissButton.appendChild($$1(ThemeIcon.asCSSSelector(Codicon.close)));
89
120
  dismissButton.tabIndex = 0;
90
121
  dismissButton.role = "button";
91
- dismissButton.ariaLabel = ( localize(7676, "Dismiss notification"));
92
- const dismiss = () => queueMicrotask(() => this._notificationService.dismissNotification(notification.id));
122
+ dismissButton.ariaLabel = ( localize(8242, "Dismiss notification"));
123
+ const dismiss = () => queueMicrotask(() => {
124
+ this._telemetryService.publicLog2("chatInputNotificationDismissed", this._getTelemetryData(notification));
125
+ this._notificationService.dismissNotification(notification.id);
126
+ });
93
127
  this._contentDisposables.add(addDisposableListener(dismissButton, EventType.CLICK, dismiss));
94
128
  this._contentDisposables.add(addDisposableListener(dismissButton, EventType.KEY_DOWN, e => {
95
129
  if (e.key === "Enter" || e.key === " ") {
@@ -138,7 +172,21 @@ let ChatInputNotificationWidget = class ChatInputNotificationWidget extends Disp
138
172
  }
139
173
  }
140
174
  }
175
+ _logShownTelemetry(notification) {
176
+ const data = this._getTelemetryData(notification);
177
+ if (this._lastShownTelemetryData?.id === data.id && this._lastShownTelemetryData.telemetryId === data.telemetryId) {
178
+ return;
179
+ }
180
+ this._lastShownTelemetryData = data;
181
+ this._telemetryService.publicLog2("chatInputNotificationShown", data);
182
+ }
183
+ _getTelemetryData(notification) {
184
+ return {
185
+ id: notification.id,
186
+ telemetryId: notification.telemetryId
187
+ };
188
+ }
141
189
  };
142
- ChatInputNotificationWidget = ( __decorate([( __param(1, IChatInputNotificationService)), ( __param(2, ICommandService)), ( __param(3, ITelemetryService)), ( __param(4, IMarkdownRendererService))], ChatInputNotificationWidget));
190
+ ChatInputNotificationWidget = ( __decorate([( __param(1, IChatInputNotificationService)), ( __param(2, ICommandService)), ( __param(3, ITelemetryService)), ( __param(4, IMarkdownRendererService)), ( __param(5, IHoverService))], ChatInputNotificationWidget));
143
191
 
144
192
  export { ChatInputNotificationWidget };