@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
@@ -83,7 +83,7 @@ async function openSessionDefault(accessor, session, openOptions) {
83
83
  }
84
84
  return await chatWidgetService.openSession(session.resource, target, options);
85
85
  } catch (error) {
86
- notificationService.error(( localize(5374, "Failed to open chat session: {0}", toErrorMessage(error))));
86
+ notificationService.error(( localize(5604, "Failed to open chat session: {0}", toErrorMessage(error))));
87
87
  return undefined;
88
88
  }
89
89
  }
@@ -8,6 +8,7 @@ import { ITreeNode, ITreeElementRenderDetails, IAsyncDataSource, ITreeSorter, IT
8
8
  import { Disposable, DisposableStore, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
9
9
  import { AgentSessionSection, AgentSessionStatus, IAgentSession, IAgentSessionSection, IAgentSessionShowLess, IAgentSessionShowMore, IAgentSessionsModel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel";
10
10
  import { IconLabel } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabel";
11
+ import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
11
12
  import { FuzzyScore } from "@codingame/monaco-vscode-api/vscode/vs/base/common/filters";
12
13
  import { IMarkdownRendererService } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service";
13
14
  import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service";
@@ -24,10 +25,12 @@ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/
24
25
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
25
26
  import { AgentSessionApprovalModel } from "./agentSessionApprovalModel.js";
26
27
  import { IChatSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service";
28
+ import { IAccessibilityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service";
27
29
  export type AgentSessionListItem = IAgentSession | IAgentSessionSection | IAgentSessionShowMore | IAgentSessionShowLess;
28
30
  interface IAgentSessionItemTemplate {
29
31
  readonly element: HTMLElement;
30
32
  readonly icon: HTMLElement;
33
+ readonly statusIcon: AgentSessionStatusIcon;
31
34
  readonly title: IconLabel;
32
35
  readonly pinnedIndicator: HTMLElement;
33
36
  readonly statusContainer: HTMLElement;
@@ -47,6 +50,19 @@ interface IAgentSessionItemTemplate {
47
50
  readonly elementDisposable: DisposableStore;
48
51
  readonly disposables: IDisposable;
49
52
  }
53
+ declare class AgentSessionStatusIcon extends Disposable {
54
+ private readonly container;
55
+ private readonly getIcon;
56
+ private readonly accessibilityService;
57
+ private static readonly PIXEL_SPINNER_GRID_KEY;
58
+ private static readonly PIXEL_SPINNER_RING_KEY;
59
+ private _currentCacheKey;
60
+ private _lastInputs;
61
+ constructor(container: HTMLElement, getIcon: (session: IAgentSession, statusOnly?: boolean) => ThemeIcon, accessibilityService: IAccessibilityService);
62
+ setStatus(session: IAgentSession, statusOnly?: boolean): void;
63
+ reset(): void;
64
+ private render;
65
+ }
50
66
  export interface IAgentSessionRendererOptions {
51
67
  readonly disableHover?: boolean;
52
68
  readonly hideSessionBadge?: boolean;
@@ -54,6 +70,12 @@ export interface IAgentSessionRendererOptions {
54
70
  getHoverPosition(): HoverPosition;
55
71
  isGroupedByRepository?(): boolean;
56
72
  isSortedByUpdated?(): boolean;
73
+ /**
74
+ * Called when a session hover is shown so the host can pause updates that
75
+ * would re-sort the list while the user is reading the hover. The returned
76
+ * disposable resumes updates.
77
+ */
78
+ pauseSessionUpdates?(): IDisposable;
57
79
  }
58
80
  export declare class AgentSessionRenderer extends Disposable implements ICompressibleTreeRenderer<IAgentSession, FuzzyScore, IAgentSessionItemTemplate> {
59
81
  private readonly options;
@@ -65,6 +87,7 @@ export declare class AgentSessionRenderer extends Disposable implements ICompres
65
87
  private readonly instantiationService;
66
88
  private readonly contextKeyService;
67
89
  private readonly chatSessionsService;
90
+ private readonly accessibilityService;
68
91
  static readonly TEMPLATE_ID = "agent-session";
69
92
  static readonly APPROVAL_ROW_MAX_LINES = 3;
70
93
  private static readonly _APPROVAL_ROW_LINE_HEIGHT;
@@ -74,7 +97,7 @@ export declare class AgentSessionRenderer extends Disposable implements ICompres
74
97
  private readonly sessionHover;
75
98
  private readonly _onDidChangeItemHeight;
76
99
  readonly onDidChangeItemHeight: Event<IAgentSession>;
77
- constructor(options: IAgentSessionRendererOptions, _approvalModel: AgentSessionApprovalModel | undefined, _activeSessionResource: IObservable<URI | undefined>, markdownRendererService: IMarkdownRendererService, productService: IProductService, hoverService: IHoverService, instantiationService: IInstantiationService, contextKeyService: IContextKeyService, chatSessionsService: IChatSessionsService);
100
+ constructor(options: IAgentSessionRendererOptions, _approvalModel: AgentSessionApprovalModel | undefined, _activeSessionResource: IObservable<URI | undefined>, markdownRendererService: IMarkdownRendererService, productService: IProductService, hoverService: IHoverService, instantiationService: IInstantiationService, contextKeyService: IContextKeyService, chatSessionsService: IChatSessionsService, accessibilityService: IAccessibilityService);
78
101
  renderTemplate(container: HTMLElement): IAgentSessionItemTemplate;
79
102
  renderElement(session: ITreeNode<IAgentSession, FuzzyScore>, index: number, template: IAgentSessionItemTemplate, details?: ITreeElementRenderDetails): void;
80
103
  private triggerResolve;
@@ -2,7 +2,7 @@
2
2
  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 agentsessionsviewer from './media/agentsessionsviewer.css';
5
- import { h } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
+ import { clearNode, h } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
6
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
7
  import { NotSelectableGroupId } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/list/list';
8
8
  import { Disposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
@@ -41,11 +41,75 @@ import { BugIndicatingError } from '@codingame/monaco-vscode-api/vscode/vs/base/
41
41
  import { compareIgnoreCase } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
42
42
  import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
43
43
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
44
+ import { createPixelSpinner } from '../../../../../base/browser/ui/pixelSpinner/pixelSpinner.js';
45
+ import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
44
46
  import { ChatSessionStatus, isSessionInProgressStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
45
47
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
46
48
 
47
49
  var AgentSessionRenderer_1, AgentSessionSectionRenderer_1;
48
50
  registerCss(agentsessionsviewer);
51
+ class AgentSessionStatusIcon extends Disposable {
52
+ static {
53
+ this.PIXEL_SPINNER_GRID_KEY = "__pixel_spinner_grid__";
54
+ }
55
+ static {
56
+ this.PIXEL_SPINNER_RING_KEY = "__pixel_spinner_ring__";
57
+ }
58
+ constructor(container, getIcon, accessibilityService) {
59
+ super();
60
+ this.container = container;
61
+ this.getIcon = getIcon;
62
+ this.accessibilityService = accessibilityService;
63
+ this._register(this.accessibilityService.onDidChangeReducedMotion(() => {
64
+ if (this._lastInputs) {
65
+ this.render(this._lastInputs);
66
+ }
67
+ }));
68
+ }
69
+ setStatus(session, statusOnly) {
70
+ const inputs = {
71
+ session,
72
+ statusOnly
73
+ };
74
+ this._lastInputs = inputs;
75
+ this.render(inputs);
76
+ }
77
+ reset() {
78
+ this._currentCacheKey = undefined;
79
+ this._lastInputs = undefined;
80
+ clearNode(this.container);
81
+ }
82
+ render(inputs) {
83
+ const {
84
+ session,
85
+ statusOnly
86
+ } = inputs;
87
+ this.container.className = `agent-session-icon${session.status === ChatSessionStatus.NeedsInput ? " needs-input" : ""}`;
88
+ if ((session.status === ChatSessionStatus.InProgress || session.status === ChatSessionStatus.NeedsInput) && !this.accessibilityService.isMotionReduced()) {
89
+ const isNeedsInput = session.status === ChatSessionStatus.NeedsInput;
90
+ const cacheKey = isNeedsInput ? AgentSessionStatusIcon.PIXEL_SPINNER_RING_KEY : AgentSessionStatusIcon.PIXEL_SPINNER_GRID_KEY;
91
+ this.container.style.color = isNeedsInput ? asCssVariable("list.warningForeground") : asCssVariable("textLink.foreground");
92
+ if (this._currentCacheKey === cacheKey) {
93
+ return;
94
+ }
95
+ this._currentCacheKey = cacheKey;
96
+ clearNode(this.container);
97
+ createPixelSpinner(this.container, {
98
+ variant: isNeedsInput ? "ring" : "grid"
99
+ });
100
+ return;
101
+ }
102
+ const icon = this.getIcon(session, statusOnly);
103
+ const cacheKey = ThemeIcon.asCSSSelector(icon);
104
+ this.container.style.color = icon.color ? asCssVariable(icon.color.id) : "";
105
+ if (this._currentCacheKey === cacheKey) {
106
+ return;
107
+ }
108
+ this._currentCacheKey = cacheKey;
109
+ clearNode(this.container);
110
+ this.container.appendChild(h(`span${cacheKey}`).root);
111
+ }
112
+ }
49
113
  let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
50
114
  static {
51
115
  AgentSessionRenderer_1 = this;
@@ -75,7 +139,8 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
75
139
  hoverService,
76
140
  instantiationService,
77
141
  contextKeyService,
78
- chatSessionsService
142
+ chatSessionsService,
143
+ accessibilityService
79
144
  ) {
80
145
  super();
81
146
  this.options = options;
@@ -87,6 +152,7 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
87
152
  this.instantiationService = instantiationService;
88
153
  this.contextKeyService = contextKeyService;
89
154
  this.chatSessionsService = chatSessionsService;
155
+ this.accessibilityService = accessibilityService;
90
156
  this.templateId = AgentSessionRenderer_1.TEMPLATE_ID;
91
157
  this.sessionHover = this._register(( new MutableDisposable()));
92
158
  this._onDidChangeItemHeight = this._register(( new Emitter()));
@@ -135,6 +201,11 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
135
201
  return {
136
202
  element: elements.item,
137
203
  icon: elements.icon,
204
+ statusIcon: disposables.add(( new AgentSessionStatusIcon(
205
+ elements.icon,
206
+ (session, statusOnly) => this.getIcon(session, statusOnly),
207
+ this.accessibilityService
208
+ ))),
138
209
  title: disposables.add(( new IconLabel(elements.title, {
139
210
  supportHighlights: true,
140
211
  supportIcons: true
@@ -176,9 +247,7 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
176
247
  template.element.removeAttribute("data-section-label");
177
248
  }
178
249
  if (this.options.useStatusOnlyIcons) {
179
- const statusIcon = this.getIcon(session.element, true);
180
- template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(statusIcon)}${session.element.status === ChatSessionStatus.NeedsInput ? " needs-input" : ""}`;
181
- template.icon.style.color = statusIcon.color ? asCssVariable(statusIcon.color.id) : "";
250
+ template.statusIcon.setStatus(session.element, true);
182
251
  if (session.element.providerType === AgentSessionProviders.Background) {
183
252
  template.detailsIcon.className = "agent-session-details-icon";
184
253
  } else {
@@ -186,9 +255,7 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
186
255
  template.detailsIcon.classList.add("visible");
187
256
  }
188
257
  } else {
189
- const icon = this.getIcon(session.element);
190
- template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(icon)}${session.element.status === ChatSessionStatus.NeedsInput ? " needs-input" : ""}`;
191
- template.icon.style.color = icon.color ? asCssVariable(icon.color.id) : "";
258
+ template.statusIcon.setStatus(session.element);
192
259
  template.detailsIcon.className = "agent-session-details-icon";
193
260
  }
194
261
  const markdownTitle = ( new MarkdownString(session.element.label));
@@ -371,7 +438,7 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
371
438
  color: themeColorFromId("textLink.foreground")
372
439
  };
373
440
  }
374
- if (!statusOnly && session.providerType === AgentSessionProviders.Local) {
441
+ if (!statusOnly && (session.providerType === AgentSessionProviders.Local || session.providerType === AgentSessionProviders.AgentHostCopilot)) {
375
442
  return {
376
443
  ...Codicon.circleSmallFilled,
377
444
  color: themeColorFromId("agentSessionReadIndicator.foreground")
@@ -392,13 +459,13 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
392
459
  return true;
393
460
  }
394
461
  if (session.element.status === ChatSessionStatus.InProgress) {
395
- template.description.textContent = ( localize(5381, "Working..."));
462
+ template.description.textContent = ( localize(5611, "Working..."));
396
463
  return true;
397
464
  } else if (session.element.status === ChatSessionStatus.NeedsInput) {
398
- template.description.textContent = ( localize(5382, "Input needed."));
465
+ template.description.textContent = ( localize(5612, "Input needed."));
399
466
  return true;
400
467
  } else if (session.element.status === ChatSessionStatus.Failed) {
401
- template.description.textContent = ( localize(5383, "Failed"));
468
+ template.description.textContent = ( localize(5613, "Failed"));
402
469
  return true;
403
470
  }
404
471
  template.description.textContent = "";
@@ -407,7 +474,7 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
407
474
  toDuration(startTime, endTime, useFullTimeWords, disallowNow) {
408
475
  const elapsed = Math.max(Math.round((endTime - startTime) / 1000) * 1000, 1000 );
409
476
  if (!disallowNow && elapsed < 60000) {
410
- return localize(5384, "now");
477
+ return localize(5614, "now");
411
478
  }
412
479
  return getDurationString(elapsed, useFullTimeWords);
413
480
  }
@@ -422,7 +489,7 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
422
489
  const date = this.options.isSortedByUpdated?.() ? session.timing.lastRequestEnded ?? session.timing.created : session.timing.created;
423
490
  const seconds = Math.round((( new Date()).getTime() - date) / 1000);
424
491
  if (seconds < 60) {
425
- timeLabel = ( localize(5384, "now"));
492
+ timeLabel = ( localize(5614, "now"));
426
493
  } else {
427
494
  timeLabel = sessionDateFromNow(date, true);
428
495
  }
@@ -457,11 +524,22 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
457
524
  this.sessionHover.value = this.instantiationService.createInstance(AgentSessionHoverWidget, session);
458
525
  }
459
526
  const widget = this.sessionHover.value;
527
+ let pauseDisposable;
460
528
  return {
461
529
  id: `agent.session.hover.${( session.resource.toString())}`,
462
530
  content: widget.domNode,
463
531
  style: HoverStyle.Pointer,
464
- onDidShow: () => widget.onRendered(),
532
+ onDidShow: () => {
533
+ const previousPauseDisposable = pauseDisposable;
534
+ pauseDisposable = this.options.pauseSessionUpdates?.();
535
+ previousPauseDisposable?.dispose();
536
+ widget.onRendered();
537
+ },
538
+ onDidHide: () => {
539
+ widget.onHidden();
540
+ pauseDisposable?.dispose();
541
+ pauseDisposable = undefined;
542
+ },
465
543
  position: {
466
544
  hoverPosition: this.options.getHoverPosition()
467
545
  }
@@ -505,11 +583,11 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
505
583
  template.approvalButtonContainer.textContent = "";
506
584
  const isActive = this._activeSessionResource.read(reader)?.toString() === ( session.element.resource.toString());
507
585
  const button = buttonStore.add(( new Button(template.approvalButtonContainer, {
508
- title: ( localize(5385, "Allow once")),
586
+ title: ( localize(5615, "Allow once")),
509
587
  secondary: isActive,
510
588
  ...defaultButtonStyles
511
589
  })));
512
- button.label = ( localize(5386, "Allow"));
590
+ button.label = ( localize(5616, "Allow"));
513
591
  buttonStore.add(button.onDidClick(() => info.confirm()));
514
592
  }
515
593
  if (wasVisible !== visible) {
@@ -528,21 +606,21 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
528
606
  templateData.disposables.dispose();
529
607
  }
530
608
  };
531
- AgentSessionRenderer = AgentSessionRenderer_1 = ( __decorate([( __param(3, IMarkdownRendererService)), ( __param(4, IProductService)), ( __param(5, IHoverService)), ( __param(6, IInstantiationService)), ( __param(7, IContextKeyService)), ( __param(8, IChatSessionsService))], AgentSessionRenderer));
609
+ AgentSessionRenderer = AgentSessionRenderer_1 = ( __decorate([( __param(3, IMarkdownRendererService)), ( __param(4, IProductService)), ( __param(5, IHoverService)), ( __param(6, IInstantiationService)), ( __param(7, IContextKeyService)), ( __param(8, IChatSessionsService)), ( __param(9, IAccessibilityService))], AgentSessionRenderer));
532
610
  function toStatusLabel(status) {
533
611
  let statusLabel;
534
612
  switch (status) {
535
613
  case ChatSessionStatus.NeedsInput:
536
- statusLabel = ( localize(5387, "Needs Input"));
614
+ statusLabel = ( localize(5617, "Needs Input"));
537
615
  break;
538
616
  case ChatSessionStatus.InProgress:
539
- statusLabel = ( localize(5388, "In Progress"));
617
+ statusLabel = ( localize(5618, "In Progress"));
540
618
  break;
541
619
  case ChatSessionStatus.Failed:
542
- statusLabel = ( localize(5389, "Failed"));
620
+ statusLabel = ( localize(5619, "Failed"));
543
621
  break;
544
622
  default:
545
- statusLabel = ( localize(5390, "Completed"));
623
+ statusLabel = ( localize(5620, "Completed"));
546
624
  }
547
625
  return statusLabel;
548
626
  }
@@ -635,7 +713,7 @@ class AgentSessionShowMoreRenderer {
635
713
  };
636
714
  }
637
715
  renderElement(element, _index, template) {
638
- template.label.textContent = this.options?.compactLabel ? ( localize(5391, "+{0} more", element.element.remainingCount)) : ( localize(5392, "Show {0} More...", element.element.remainingCount));
716
+ template.label.textContent = this.options?.compactLabel ? ( localize(5621, "+{0} more", element.element.remainingCount)) : ( localize(5622, "Show {0} More...", element.element.remainingCount));
639
717
  template.container.setAttribute("data-section-label", element.element.sectionLabel);
640
718
  }
641
719
  renderCompressedElements() {
@@ -670,7 +748,7 @@ class AgentSessionShowLessRenderer {
670
748
  };
671
749
  }
672
750
  renderElement(element, _index, template) {
673
- template.label.textContent = ( localize(5393, "Show less"));
751
+ template.label.textContent = ( localize(5623, "Show less"));
674
752
  template.container.setAttribute("data-section-label", element.element.sectionLabel);
675
753
  }
676
754
  renderCompressedElements() {
@@ -733,24 +811,24 @@ class AgentSessionsAccessibilityProvider {
733
811
  return "listitem";
734
812
  }
735
813
  getWidgetAriaLabel() {
736
- return localize(5394, "Agent Sessions");
814
+ return localize(5624, "Agent Sessions");
737
815
  }
738
816
  getAriaLabel(element) {
739
817
  if (isAgentSessionSection(element)) {
740
818
  const count = element.sessions.length;
741
819
  if (count === 1) {
742
- return localize(5395, "{0} sessions section, {1} session", element.label, count);
820
+ return localize(5625, "{0} sessions section, {1} session", element.label, count);
743
821
  }
744
- return localize(5396, "{0} sessions section, {1} sessions", element.label, count);
822
+ return localize(5626, "{0} sessions section, {1} sessions", element.label, count);
745
823
  }
746
824
  if (isAgentSessionShowMore(element)) {
747
- return localize(5397, "Show {0} more sessions", element.remainingCount);
825
+ return localize(5627, "Show {0} more sessions", element.remainingCount);
748
826
  }
749
827
  if (isAgentSessionShowLess(element)) {
750
- return localize(5398, "Show less sessions");
828
+ return localize(5628, "Show less sessions");
751
829
  }
752
830
  return localize(
753
- 5399,
831
+ 5629,
754
832
  "{0} session {1} ({2}), created {3}",
755
833
  element.providerLabel,
756
834
  element.label,
@@ -1079,14 +1157,14 @@ function extractRepoNameFromPath(dirPath) {
1079
1157
  return segments[segments.length - 1];
1080
1158
  }
1081
1159
  const AgentSessionSectionLabels = {
1082
- [AgentSessionSection.Pinned]: ( localize(5400, "Pinned")),
1083
- [AgentSessionSection.Today]: ( localize(5401, "Today")),
1084
- [AgentSessionSection.Yesterday]: ( localize(5402, "Yesterday")),
1085
- [AgentSessionSection.Week]: ( localize(5403, "Last 7 days")),
1086
- [AgentSessionSection.Older]: ( localize(5404, "Older")),
1087
- [AgentSessionSection.Archived]: ( localize(5405, "Archived")),
1088
- [AgentSessionSection.More]: ( localize(5406, "More")),
1089
- [AgentSessionSection.Repository]: ( localize(5407, "Other"))
1160
+ [AgentSessionSection.Pinned]: ( localize(5630, "Pinned")),
1161
+ [AgentSessionSection.Today]: ( localize(5631, "Today")),
1162
+ [AgentSessionSection.Yesterday]: ( localize(5632, "Yesterday")),
1163
+ [AgentSessionSection.Week]: ( localize(5633, "Last 7 days")),
1164
+ [AgentSessionSection.Older]: ( localize(5634, "Older")),
1165
+ [AgentSessionSection.Archived]: ( localize(5635, "Archived")),
1166
+ [AgentSessionSection.More]: ( localize(5636, "More")),
1167
+ [AgentSessionSection.Repository]: ( localize(5637, "Other"))
1090
1168
  };
1091
1169
  const DAY_THRESHOLD = 24 * 60 * 60 * 1000;
1092
1170
  const WEEK_THRESHOLD = 7 * DAY_THRESHOLD;
@@ -1151,10 +1229,10 @@ function sessionDateFromNow(sessionTime, appendAgoLabel) {
1151
1229
  const startOfYesterday = startOfToday - DAY_THRESHOLD;
1152
1230
  const startOfTwoDaysAgo = startOfYesterday - DAY_THRESHOLD;
1153
1231
  if (sessionTime < startOfToday && sessionTime >= startOfYesterday) {
1154
- return appendAgoLabel ? ( localize(5408, "1 day ago")) : ( localize(5409, "1 day"));
1232
+ return appendAgoLabel ? ( localize(5638, "1 day ago")) : ( localize(5639, "1 day"));
1155
1233
  }
1156
1234
  if (sessionTime < startOfYesterday && sessionTime >= startOfTwoDaysAgo) {
1157
- return appendAgoLabel ? ( localize(5410, "2 days ago")) : ( localize(5411, "2 days"));
1235
+ return appendAgoLabel ? ( localize(5640, "2 days ago")) : ( localize(5641, "2 days"));
1158
1236
  }
1159
1237
  return fromNow(sessionTime, appendAgoLabel);
1160
1238
  }
@@ -1261,7 +1339,7 @@ let AgentSessionsDragAndDrop = class AgentSessionsDragAndDrop extends Disposable
1261
1339
  if (sessions.length === 1) {
1262
1340
  return sessions[0].label;
1263
1341
  }
1264
- return localize(5412, "{0} agent sessions", sessions.length);
1342
+ return localize(5642, "{0} agent sessions", sessions.length);
1265
1343
  }
1266
1344
  onDragOver(data, targetElement, targetIndex, targetSector, originalEvent) {
1267
1345
  return false;
@@ -26,6 +26,18 @@
26
26
  border-radius: 6px;
27
27
  }
28
28
 
29
+ /* Suppressed while selected so the selection highlight is not overpainted. */
30
+ .monaco-list-row:not(.selected):not(.focused):not(:hover):has(.agent-session-icon.needs-input) {
31
+ animation: agent-session-needs-input-accent-pulse 3s ease-in-out infinite;
32
+ }
33
+
34
+ @media (prefers-reduced-motion: reduce) {
35
+ .monaco-list-row:not(.selected):not(.focused):not(:hover):has(.agent-session-icon.needs-input) {
36
+ animation: none;
37
+ background-color: color-mix(in srgb, var(--vscode-list-warningForeground) 8%, transparent);
38
+ }
39
+ }
40
+
29
41
  .monaco-list-row .force-no-twistie {
30
42
  display: none !important;
31
43
  }
@@ -49,6 +61,11 @@
49
61
  }
50
62
  }
51
63
 
64
+ .monaco-list:focus .monaco-list-row.selected .agent-session-icon > .codicon,
65
+ .monaco-list:focus .monaco-list-row.selected .agent-session-icon > .monaco-pixel-spinner {
66
+ color: var(--vscode-list-activeSelectionForeground) !important;
67
+ }
68
+
52
69
  .monaco-list-row.selected .agent-session-item,
53
70
  .monaco-list-row.selected .agent-session-title {
54
71
  color: unset;
@@ -427,3 +444,13 @@
427
444
  opacity: 0.4;
428
445
  }
429
446
  }
447
+
448
+ /* PROTO: yellow background pulse for "Input needed" session rows. */
449
+ @keyframes agent-session-needs-input-accent-pulse {
450
+ 0%, 100% {
451
+ background-color: transparent;
452
+ }
453
+ 50% {
454
+ background-color: color-mix(in srgb, var(--vscode-list-warningForeground) 12%, transparent);
455
+ }
456
+ }
@@ -0,0 +1,63 @@
1
+ import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
2
+ import { IChatEntitlementService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service";
3
+ import { IChatSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service";
4
+ import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
5
+ /**
6
+ * Why a session type cannot currently be selected, or
7
+ * {@link SessionTypeAvailability.Available} when it can.
8
+ */
9
+ export declare enum SessionTypeAvailability {
10
+ /** Selectable — has an Auto fallback or at least one targeted/BYOK model. */
11
+ Available = 0,
12
+ /** Unusable until the user signs in (the type needs a Copilot account; BYOK is not supported here). */
13
+ SignInRequired = 1,
14
+ /** Unusable, but the user can resolve it by upgrading (Copilot Free / Student). */
15
+ UpgradeRequired = 2,
16
+ /** Unusable with no upgrade path — no models target it and the user is already on a paid plan. */
17
+ NoModels = 3
18
+ }
19
+ /**
20
+ * Whether the given session type can currently produce a request, and if not,
21
+ * why. A session type is usable when it can fall back to the synthetic "Auto"
22
+ * model ({@link IChatSessionsService.supportsAutoModelForSessionType}) or has at
23
+ * least one model targeting it (e.g. a user-configured BYOK model). A type that
24
+ * does not require its own models ({@link IChatSessionsService.requiresCustomModelsForSessionType})
25
+ * — e.g. the cloud delegation agent, which runs remotely without a local model —
26
+ * also stays usable on a paid plan even with neither an Auto fallback nor a
27
+ * targeted model. When a type is not usable, Copilot Free / Student (EDU) users
28
+ * see an Upgrade affordance ({@link SessionTypeAvailability.UpgradeRequired});
29
+ * paid users whose type genuinely requires its own models but has none simply
30
+ * have no models ({@link SessionTypeAvailability.NoModels}) and are shown an
31
+ * explanation with no upgrade button. A signed-out user gets a Sign-in
32
+ * affordance ({@link SessionTypeAvailability.SignInRequired}) for Copilot-backed
33
+ * types ({@link IChatSessionsService.requiresCopilotSignInForSessionType}), unless
34
+ * anonymous access is enabled; types that don't depend on Copilot stay usable
35
+ * while signed out. Unavailable types are greyed out in the picker either way.
36
+ *
37
+ * While the type's contribution isn't registered yet (e.g. during a window
38
+ * reload before the extension host re-registers), this returns
39
+ * {@link SessionTypeAvailability.Available} so a harness is never locked
40
+ * prematurely; the model picker is the backstop and shows "No models available"
41
+ * for an active session in that window.
42
+ *
43
+ * Shared by the chat input session-type picker and the Agents window harness
44
+ * picker so both surfaces apply the same rule.
45
+ */
46
+ export declare function getSessionTypeAvailability(chatSessionsService: IChatSessionsService, chatEntitlementService: IChatEntitlementService, languageModelsService: ILanguageModelsService, type: string): SessionTypeAvailability;
47
+ /**
48
+ * The inline description shown for an unavailable session type, or `undefined`
49
+ * when it is available. Free / Student users get an actionable "[Upgrade]"
50
+ * link; paid users with no models get a plain "No models available" note.
51
+ */
52
+ export declare function getSessionTypeUnavailableDescription(availability: SessionTypeAvailability): IMarkdownString | undefined;
53
+ /**
54
+ * The hover shown for an unavailable session type, or `undefined` when it is
55
+ * available. Free / Student users are prompted to upgrade; paid users with no
56
+ * models get an explanation with no upgrade link.
57
+ */
58
+ export declare function getSessionTypeUnavailableHover(availability: SessionTypeAvailability): IMarkdownString | undefined;
59
+ /**
60
+ * Plain-text description for surfaces that cannot render markdown (e.g. the
61
+ * mobile picker sheet), or `undefined` when the session type is available.
62
+ */
63
+ export declare function getSessionTypeUnavailableLabel(availability: SessionTypeAvailability): string | undefined;
@@ -0,0 +1,97 @@
1
+
2
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
3
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { ChatEntitlement } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
5
+ import { hasModelsTargetingSession } from '../widget/input/chatModelSelectionLogic.js';
6
+
7
+ var SessionTypeAvailability;
8
+ (function(SessionTypeAvailability) {
9
+ SessionTypeAvailability[SessionTypeAvailability["Available"] = 0] = "Available";
10
+ SessionTypeAvailability[SessionTypeAvailability["SignInRequired"] = 1] = "SignInRequired";
11
+ SessionTypeAvailability[SessionTypeAvailability["UpgradeRequired"] = 2] = "UpgradeRequired";
12
+ SessionTypeAvailability[SessionTypeAvailability["NoModels"] = 3] = "NoModels";
13
+ })(SessionTypeAvailability || (SessionTypeAvailability = {}));
14
+ function getSessionTypeAvailability(chatSessionsService, chatEntitlementService, languageModelsService, type) {
15
+ if (!chatSessionsService.getChatSessionContribution(type)) {
16
+ return SessionTypeAvailability.Available;
17
+ }
18
+ const entitlement = chatEntitlementService.entitlement;
19
+ if (entitlement === ChatEntitlement.Unknown && !chatEntitlementService.anonymous && chatSessionsService.requiresCopilotSignInForSessionType(type)) {
20
+ return SessionTypeAvailability.SignInRequired;
21
+ }
22
+ if (hasModelsTargetingSessionType(languageModelsService, type) || chatSessionsService.supportsAutoModelForSessionType(type)) {
23
+ return SessionTypeAvailability.Available;
24
+ }
25
+ const canUpgrade = entitlement === ChatEntitlement.Free || entitlement === ChatEntitlement.EDU;
26
+ if (canUpgrade) {
27
+ return SessionTypeAvailability.UpgradeRequired;
28
+ }
29
+ return chatSessionsService.requiresCustomModelsForSessionType(type) ? SessionTypeAvailability.NoModels : SessionTypeAvailability.Available;
30
+ }
31
+ function hasModelsTargetingSessionType(languageModelsService, type) {
32
+ return ( languageModelsService.getLanguageModelIds().some(id => {
33
+ const metadata = languageModelsService.lookupLanguageModel(id);
34
+ return !!metadata && hasModelsTargetingSession([{
35
+ identifier: id,
36
+ metadata
37
+ }], type);
38
+ }));
39
+ }
40
+ function getSessionTypeUnavailableDescription(availability) {
41
+ switch (availability) {
42
+ case SessionTypeAvailability.SignInRequired:
43
+ return (new MarkdownString(localize(5708, "[Sign in](command:workbench.action.chat.triggerSetup)"), {
44
+ isTrusted: {
45
+ enabledCommands: ["workbench.action.chat.triggerSetup"]
46
+ }
47
+ }));
48
+ case SessionTypeAvailability.UpgradeRequired:
49
+ return (new MarkdownString(localize(5709, "[Upgrade](command:workbench.action.chat.upgradePlan)"), {
50
+ isTrusted: {
51
+ enabledCommands: ["workbench.action.chat.upgradePlan"]
52
+ }
53
+ }));
54
+ case SessionTypeAvailability.NoModels:
55
+ return (new MarkdownString(localize(5710, "No models available")));
56
+ default:
57
+ return undefined;
58
+ }
59
+ }
60
+ function getSessionTypeUnavailableHover(availability) {
61
+ switch (availability) {
62
+ case SessionTypeAvailability.SignInRequired:
63
+ {
64
+ const hover = ( new MarkdownString("", {
65
+ isTrusted: {
66
+ enabledCommands: ["workbench.action.chat.triggerSetup"]
67
+ },
68
+ supportThemeIcons: true
69
+ }));
70
+ hover.appendMarkdown(( localize(
71
+ 5711,
72
+ "[Sign in to GitHub Copilot](command:workbench.action.chat.triggerSetup) to use this agent."
73
+ )));
74
+ return hover;
75
+ }
76
+ case SessionTypeAvailability.UpgradeRequired:
77
+ {
78
+ const hover = ( new MarkdownString("", {
79
+ isTrusted: {
80
+ enabledCommands: ["workbench.action.chat.upgradePlan"]
81
+ },
82
+ supportThemeIcons: true
83
+ }));
84
+ hover.appendMarkdown(( localize(
85
+ 5712,
86
+ "[Upgrade to GitHub Copilot Pro](command:workbench.action.chat.upgradePlan) to use this agent."
87
+ )));
88
+ return hover;
89
+ }
90
+ case SessionTypeAvailability.NoModels:
91
+ return (new MarkdownString(localize(5713, "No models are available for this agent.")));
92
+ default:
93
+ return undefined;
94
+ }
95
+ }
96
+
97
+ export { SessionTypeAvailability, getSessionTypeAvailability, getSessionTypeUnavailableDescription, getSessionTypeUnavailableHover };