@codingame/monaco-vscode-katex-common 29.1.1 → 30.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 (180) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +14 -13
  3. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +34 -34
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -20
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +14 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +208 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +22 -0
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +637 -0
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +1 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +9 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +202 -13
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +4 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +17 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +53 -5
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +296 -63
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +59 -23
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -42
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +110 -59
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +5 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +384 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +12 -7
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +220 -61
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +1 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +6 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +14 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +5 -4
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +5 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +14 -14
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +11 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -12
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +2 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +1 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +97 -54
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +5 -4
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +8 -7
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +15 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +155 -22
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +3 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +36 -19
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +13 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.d.ts +17 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +68 -0
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +16 -16
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +33 -25
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -7
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +12 -3
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -13
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +37 -113
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +10 -3
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +66 -39
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +13 -2
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +103 -61
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +2 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +35 -23
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -4
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +6 -6
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +1 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +2 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -24
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +6 -5
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +44 -18
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +60 -10
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  114. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  115. package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +4 -0
  116. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
  117. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
  118. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -1
  119. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +5 -2
  120. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +6 -11
  121. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -39
  123. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  124. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  125. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  126. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.d.ts +26 -0
  127. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +746 -0
  128. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.d.ts +13 -0
  129. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +300 -0
  130. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.d.ts +8 -0
  131. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +55 -0
  132. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.d.ts +273 -0
  133. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1963 -0
  134. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.d.ts +50 -0
  135. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +314 -0
  136. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.d.ts +258 -0
  137. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +886 -0
  138. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.d.ts +41 -0
  139. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +118 -0
  140. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.d.ts +17 -0
  141. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.js +71 -0
  142. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.d.ts +27 -0
  143. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +40 -0
  144. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.d.ts +23 -0
  145. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.js +313 -0
  146. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.d.ts +51 -0
  147. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.js +265 -0
  148. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.d.ts +24 -0
  149. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.js +185 -0
  150. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.d.ts +28 -0
  151. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.js +104 -0
  152. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.d.ts +10 -0
  153. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.js +43 -0
  154. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.d.ts +21 -0
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.js +41 -0
  156. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.d.ts +25 -0
  157. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.js +69 -0
  158. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css +469 -0
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.d.ts +149 -0
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +933 -0
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.d.ts +180 -0
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +32 -0
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.d.ts +102 -0
  164. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +643 -0
  165. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.d.ts +30 -0
  166. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +197 -0
  167. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.d.ts +75 -0
  168. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.js +539 -0
  169. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.d.ts +13 -0
  170. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.js +39 -0
  171. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.d.ts +19 -0
  172. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.js +90 -0
  173. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.d.ts +26 -0
  174. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.js +92 -0
  175. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  176. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -152
  178. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -1317
  179. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +0 -47
  180. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +0 -95
@@ -6,10 +6,11 @@ import { 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';
9
- import { hasValidDiff, getAgentChangesSummary, isAgentSessionSection, isAgentSession, isAgentSessionsModel, AgentSessionSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel';
9
+ import { hasValidDiff, getAgentChangesSummary, isAgentSessionSection, isAgentSessionShowMore, isAgentSessionShowLess, isAgentSession, isAgentSessionsModel, AgentSessionSection } 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
+ import { ThemeIcon, themeColorFromId } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
12
12
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
13
+ import { asCssVariable } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colorUtils';
13
14
  import { getDurationString, fromNow } from '@codingame/monaco-vscode-api/vscode/vs/base/common/date';
14
15
  import { createMatches } from '@codingame/monaco-vscode-api/vscode/vs/base/common/filters';
15
16
  import { IMarkdownRendererService } from '@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service';
@@ -37,6 +38,7 @@ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/in
37
38
  import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
38
39
  import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
39
40
  import { BugIndicatingError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
41
+ import { compareIgnoreCase } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
40
42
  import { ChatSessionStatus, isSessionInProgressStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
41
43
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
42
44
 
@@ -93,8 +95,10 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
93
95
  h("div.agent-session-icon-col", [h("div.agent-session-icon@icon")]),
94
96
  h("div.agent-session-main-col", [h("div.agent-session-title-row", [
95
97
  h("div.agent-session-title@title"),
98
+ h("div.agent-session-pinned-indicator@pinnedIndicator"),
96
99
  h("div.agent-session-title-toolbar@titleToolbar")
97
100
  ]), h("div.agent-session-details-row", [
101
+ h("div.agent-session-details-icon@detailsIcon"),
98
102
  h("div.agent-session-badge@badge"),
99
103
  h("span.agent-session-separator@separator"),
100
104
  h("div.agent-session-diff-container@diffContainer", [
@@ -131,7 +135,9 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
131
135
  supportHighlights: true,
132
136
  supportIcons: true
133
137
  }))),
138
+ pinnedIndicator: elements.pinnedIndicator,
134
139
  titleToolbar,
140
+ detailsIcon: elements.detailsIcon,
135
141
  badge: elements.badge,
136
142
  separator: elements.separator,
137
143
  diffContainer: elements.diffContainer,
@@ -155,7 +161,32 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
155
161
  template.badge.textContent = "";
156
162
  template.description.textContent = "";
157
163
  template.element.classList.toggle("archived", session.element.isArchived());
158
- template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getIcon(session.element))}${session.element.status === ChatSessionStatus.NeedsInput ? " needs-input" : ""}`;
164
+ if (this.options.isGroupedByRepository?.()) {
165
+ const repoName = getRepositoryName(session.element);
166
+ if (repoName) {
167
+ template.element.setAttribute("data-section-label", repoName);
168
+ } else {
169
+ template.element.removeAttribute("data-section-label");
170
+ }
171
+ } else {
172
+ template.element.removeAttribute("data-section-label");
173
+ }
174
+ if (this.options.useStatusOnlyIcons) {
175
+ const statusIcon = this.getIcon(session.element, true);
176
+ template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(statusIcon)}${session.element.status === ChatSessionStatus.NeedsInput ? " needs-input" : ""}`;
177
+ template.icon.style.color = statusIcon.color ? asCssVariable(statusIcon.color.id) : "";
178
+ if (session.element.providerType === AgentSessionProviders.Background) {
179
+ template.detailsIcon.className = "agent-session-details-icon";
180
+ } else {
181
+ template.detailsIcon.className = `agent-session-details-icon ${ThemeIcon.asClassName(session.element.icon)}`;
182
+ template.detailsIcon.classList.add("visible");
183
+ }
184
+ } else {
185
+ const icon = this.getIcon(session.element);
186
+ template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(icon)}${session.element.status === ChatSessionStatus.NeedsInput ? " needs-input" : ""}`;
187
+ template.icon.style.color = icon.color ? asCssVariable(icon.color.id) : "";
188
+ template.detailsIcon.className = "agent-session-details-icon";
189
+ }
159
190
  const markdownTitle = ( new MarkdownString(session.element.label));
160
191
  template.title.setLabel(renderAsPlaintext(markdownTitle), undefined, {
161
192
  matches: createMatches(session.filterData)
@@ -165,6 +196,9 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
165
196
  ChatContextKeys.isReadAgentSession.bindTo(template.contextKeyService).set(session.element.isRead());
166
197
  ChatContextKeys.agentSessionType.bindTo(template.contextKeyService).set(session.element.providerType);
167
198
  template.titleToolbar.context = session.element;
199
+ const isPinned = session.element.isPinned();
200
+ template.pinnedIndicator.className = "agent-session-pinned-indicator " + (ThemeIcon.asClassName(Codicon.pinned));
201
+ template.pinnedIndicator.classList.toggle("visible", isPinned);
168
202
  const hasBadge = this.renderBadge(session, template);
169
203
  let hasDiff = false;
170
204
  const {
@@ -200,11 +234,14 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
200
234
  }
201
235
  }
202
236
  renderBadge(session, template) {
237
+ if (this.options.hideSessionBadge) {
238
+ return false;
239
+ }
203
240
  const badge = session.element.badge;
204
241
  if (!badge) {
205
242
  return false;
206
243
  }
207
- if (this.options.isGroupedByRepository?.() && !session.element.isArchived()) {
244
+ if (this.options.isGroupedByRepository?.() && !session.element.isArchived() && !session.element.isPinned()) {
208
245
  const raw = typeof badge === "string" ? badge : badge.value;
209
246
  const match = raw.match(/^\$\((?:repo|folder|worktree)\)\s*(.+)/);
210
247
  if (match) {
@@ -267,23 +304,72 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
267
304
  }
268
305
  return true;
269
306
  }
270
- getIcon(session) {
307
+ getIcon(session, statusOnly) {
271
308
  if (session.status === ChatSessionStatus.InProgress) {
272
- return Codicon.sessionInProgress;
309
+ return {
310
+ ...Codicon.sessionInProgress,
311
+ color: themeColorFromId("textLink.foreground")
312
+ };
273
313
  }
274
314
  if (session.status === ChatSessionStatus.NeedsInput) {
275
- return Codicon.circleFilled;
315
+ return {
316
+ ...Codicon.circleFilled,
317
+ color: themeColorFromId("list.warningForeground")
318
+ };
276
319
  }
277
320
  if (session.status === ChatSessionStatus.Failed) {
278
- return Codicon.error;
321
+ return {
322
+ ...Codicon.error,
323
+ color: themeColorFromId("errorForeground")
324
+ };
325
+ }
326
+ if (statusOnly) {
327
+ const metadata = session.metadata;
328
+ const hasPR = metadata?.pullRequestUrl || metadata?.pullRequestNumber;
329
+ if (hasPR) {
330
+ switch (metadata?.pullRequestState) {
331
+ case "merged":
332
+ return {
333
+ ...Codicon.gitPullRequestDone,
334
+ color: themeColorFromId("charts.purple")
335
+ };
336
+ case "closed":
337
+ return {
338
+ ...Codicon.gitPullRequestClosed,
339
+ color: themeColorFromId("charts.red")
340
+ };
341
+ case "draft":
342
+ return {
343
+ ...Codicon.gitPullRequestDraft,
344
+ color: themeColorFromId("descriptionForeground")
345
+ };
346
+ default:
347
+ return {
348
+ ...Codicon.gitPullRequest,
349
+ color: themeColorFromId("charts.green")
350
+ };
351
+ }
352
+ }
279
353
  }
280
354
  if (!session.isRead() && !session.isArchived()) {
281
- return Codicon.circleFilled;
355
+ return {
356
+ ...Codicon.circleFilled,
357
+ color: themeColorFromId("textLink.foreground")
358
+ };
359
+ }
360
+ if (!statusOnly && session.providerType === AgentSessionProviders.Local) {
361
+ return {
362
+ ...Codicon.circleSmallFilled,
363
+ color: themeColorFromId("agentSessionReadIndicator.foreground")
364
+ };
282
365
  }
283
- if (session.providerType === AgentSessionProviders.Local) {
284
- return Codicon.circleSmallFilled;
366
+ if (!statusOnly) {
367
+ return session.icon;
285
368
  }
286
- return session.icon;
369
+ return {
370
+ ...Codicon.circleSmallFilled,
371
+ color: themeColorFromId("agentSessionReadIndicator.foreground")
372
+ };
287
373
  }
288
374
  renderDescription(session, template) {
289
375
  const description = session.element.description;
@@ -292,13 +378,13 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
292
378
  return true;
293
379
  }
294
380
  if (session.element.status === ChatSessionStatus.InProgress) {
295
- template.description.textContent = ( localize(5171, "Working..."));
381
+ template.description.textContent = ( localize(5192, "Working..."));
296
382
  return true;
297
383
  } else if (session.element.status === ChatSessionStatus.NeedsInput) {
298
- template.description.textContent = ( localize(5172, "Input needed."));
384
+ template.description.textContent = ( localize(5193, "Input needed."));
299
385
  return true;
300
386
  } else if (session.element.status === ChatSessionStatus.Failed) {
301
- template.description.textContent = ( localize(5173, "Failed"));
387
+ template.description.textContent = ( localize(5194, "Failed"));
302
388
  return true;
303
389
  }
304
390
  template.description.textContent = "";
@@ -307,12 +393,13 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
307
393
  toDuration(startTime, endTime, useFullTimeWords, disallowNow) {
308
394
  const elapsed = Math.max(Math.round((endTime - startTime) / 1000) * 1000, 1000 );
309
395
  if (!disallowNow && elapsed < 60000) {
310
- return localize(5174, "now");
396
+ return localize(5195, "now");
311
397
  }
312
398
  return getDurationString(elapsed, useFullTimeWords);
313
399
  }
314
400
  renderStatus(session, template) {
315
- const getTimeLabel = session => {
401
+ const repoPrefix = (session.element.isPinned() && this.options.isGroupedByRepository?.()) ? getRepositoryName(session.element) : undefined;
402
+ const getStatusText = session => {
316
403
  let timeLabel;
317
404
  if (session.status === ChatSessionStatus.InProgress && session.timing.lastRequestStarted) {
318
405
  timeLabel = this.toDuration(session.timing.lastRequestStarted, Date.now(), false, false);
@@ -321,17 +408,17 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
321
408
  const date = this.options.isSortedByUpdated?.() ? session.timing.lastRequestEnded ?? session.timing.created : session.timing.created;
322
409
  const seconds = Math.round((( new Date()).getTime() - date) / 1000);
323
410
  if (seconds < 60) {
324
- timeLabel = ( localize(5174, "now"));
411
+ timeLabel = ( localize(5195, "now"));
325
412
  } else {
326
413
  timeLabel = sessionDateFromNow(date, true);
327
414
  }
328
415
  }
329
- return timeLabel;
416
+ return repoPrefix ? `${repoPrefix} \u00B7 ${timeLabel}` : timeLabel;
330
417
  };
331
- template.statusTime.textContent = getTimeLabel(session.element);
418
+ template.statusTime.textContent = getStatusText(session.element);
332
419
  const timer = template.elementDisposable.add(( new IntervalTimer()));
333
420
  timer.cancelAndSet(
334
- () => template.statusTime.textContent = getTimeLabel(session.element),
421
+ () => template.statusTime.textContent = getStatusText(session.element),
335
422
  session.element.status === ChatSessionStatus.InProgress ? 1000 : 60 * 1000
336
423
  );
337
424
  return true;
@@ -404,11 +491,11 @@ let AgentSessionRenderer = class AgentSessionRenderer extends Disposable {
404
491
  template.approvalButtonContainer.textContent = "";
405
492
  const isActive = this._activeSessionResource.read(reader)?.toString() === ( session.element.resource.toString());
406
493
  const button = buttonStore.add(( new Button(template.approvalButtonContainer, {
407
- title: ( localize(5175, "Allow once")),
494
+ title: ( localize(5196, "Allow once")),
408
495
  secondary: isActive,
409
496
  ...defaultButtonStyles
410
497
  })));
411
- button.label = ( localize(5176, "Allow"));
498
+ button.label = ( localize(5197, "Allow"));
412
499
  buttonStore.add(button.onDidClick(() => info.confirm()));
413
500
  }
414
501
  if (wasVisible !== visible) {
@@ -432,16 +519,16 @@ function toStatusLabel(status) {
432
519
  let statusLabel;
433
520
  switch (status) {
434
521
  case ChatSessionStatus.NeedsInput:
435
- statusLabel = ( localize(5177, "Needs Input"));
522
+ statusLabel = ( localize(5198, "Needs Input"));
436
523
  break;
437
524
  case ChatSessionStatus.InProgress:
438
- statusLabel = ( localize(5178, "In Progress"));
525
+ statusLabel = ( localize(5199, "In Progress"));
439
526
  break;
440
527
  case ChatSessionStatus.Failed:
441
- statusLabel = ( localize(5179, "Failed"));
528
+ statusLabel = ( localize(5200, "Failed"));
442
529
  break;
443
530
  default:
444
- statusLabel = ( localize(5180, "Completed"));
531
+ statusLabel = ( localize(5201, "Completed"));
445
532
  }
446
533
  return statusLabel;
447
534
  }
@@ -452,7 +539,8 @@ let AgentSessionSectionRenderer = class AgentSessionSectionRenderer {
452
539
  static {
453
540
  this.TEMPLATE_ID = "agent-session-section";
454
541
  }
455
- constructor(instantiationService, contextKeyService) {
542
+ constructor(sectionOptions, instantiationService, contextKeyService) {
543
+ this.sectionOptions = sectionOptions;
456
544
  this.instantiationService = instantiationService;
457
545
  this.contextKeyService = contextKeyService;
458
546
  this.templateId = AgentSessionSectionRenderer_1.TEMPLATE_ID;
@@ -488,7 +576,11 @@ let AgentSessionSectionRenderer = class AgentSessionSectionRenderer {
488
576
  }
489
577
  renderElement(element, index, template, details) {
490
578
  template.label.textContent = element.element.label;
491
- template.count.textContent = String(element.element.sessions.length);
579
+ if (this.sectionOptions.hideSectionCount) {
580
+ template.count.textContent = "";
581
+ } else {
582
+ template.count.textContent = String(element.element.sessions.length);
583
+ }
492
584
  ChatContextKeys.agentSessionSection.bindTo(template.contextKeyService).set(element.element.section);
493
585
  template.toolbar.context = element.element;
494
586
  }
@@ -500,7 +592,81 @@ let AgentSessionSectionRenderer = class AgentSessionSectionRenderer {
500
592
  templateData.disposables.dispose();
501
593
  }
502
594
  };
503
- AgentSessionSectionRenderer = AgentSessionSectionRenderer_1 = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IContextKeyService))], AgentSessionSectionRenderer));
595
+ AgentSessionSectionRenderer = AgentSessionSectionRenderer_1 = ( __decorate([( __param(1, IInstantiationService)), ( __param(2, IContextKeyService))], AgentSessionSectionRenderer));
596
+ class AgentSessionShowMoreRenderer {
597
+ static {
598
+ this.TEMPLATE_ID = "agent-session-show-more";
599
+ }
600
+ static {
601
+ this.HEIGHT = 26;
602
+ }
603
+ static {
604
+ this.COLLAPSED_HEIGHT = 1;
605
+ }
606
+ constructor(options) {
607
+ this.options = options;
608
+ this.templateId = AgentSessionShowMoreRenderer.TEMPLATE_ID;
609
+ }
610
+ renderTemplate(container) {
611
+ const disposables = ( new DisposableStore());
612
+ const elements = h(
613
+ "div.agent-session-show-more@container",
614
+ [h("span.agent-session-show-more-label@label")]
615
+ );
616
+ container.appendChild(elements.container);
617
+ return {
618
+ container: elements.container,
619
+ label: elements.label,
620
+ disposables
621
+ };
622
+ }
623
+ renderElement(element, _index, template) {
624
+ template.label.textContent = this.options?.compactLabel ? ( localize(5202, "+{0} more", element.element.remainingCount)) : ( localize(5203, "Show {0} More...", element.element.remainingCount));
625
+ template.container.setAttribute("data-section-label", element.element.sectionLabel);
626
+ }
627
+ renderCompressedElements() {
628
+ throw ( new Error("Should never happen since show-more is incompressible"));
629
+ }
630
+ disposeElement() {}
631
+ disposeTemplate(templateData) {
632
+ templateData.disposables.dispose();
633
+ }
634
+ }
635
+ class AgentSessionShowLessRenderer {
636
+ constructor() {
637
+ this.templateId = AgentSessionShowLessRenderer.TEMPLATE_ID;
638
+ }
639
+ static {
640
+ this.TEMPLATE_ID = "agent-session-show-less";
641
+ }
642
+ static {
643
+ this.HEIGHT = AgentSessionShowMoreRenderer.HEIGHT;
644
+ }
645
+ renderTemplate(container) {
646
+ const disposables = ( new DisposableStore());
647
+ const elements = h(
648
+ "div.agent-session-show-more@container",
649
+ [h("span.agent-session-show-more-label@label")]
650
+ );
651
+ container.appendChild(elements.container);
652
+ return {
653
+ container: elements.container,
654
+ label: elements.label,
655
+ disposables
656
+ };
657
+ }
658
+ renderElement(element, _index, template) {
659
+ template.label.textContent = ( localize(5204, "Show less"));
660
+ template.container.setAttribute("data-section-label", element.element.sectionLabel);
661
+ }
662
+ renderCompressedElements() {
663
+ throw ( new Error("Should never happen since show-less is incompressible"));
664
+ }
665
+ disposeElement() {}
666
+ disposeTemplate(templateData) {
667
+ templateData.disposables.dispose();
668
+ }
669
+ }
504
670
  class AgentSessionsListDelegate {
505
671
  static {
506
672
  this.ITEM_HEIGHT = 54;
@@ -508,13 +674,17 @@ class AgentSessionsListDelegate {
508
674
  static {
509
675
  this.SECTION_HEIGHT = 26;
510
676
  }
511
- constructor(_approvalModel) {
677
+ constructor(_approvalModel, _compactShowMore) {
512
678
  this._approvalModel = _approvalModel;
679
+ this._compactShowMore = _compactShowMore;
513
680
  }
514
681
  getHeight(element) {
515
682
  if (isAgentSessionSection(element)) {
516
683
  return AgentSessionsListDelegate.SECTION_HEIGHT;
517
684
  }
685
+ if (isAgentSessionShowMore(element) || isAgentSessionShowLess(element)) {
686
+ return this._compactShowMore ? AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT : AgentSessionShowMoreRenderer.HEIGHT;
687
+ }
518
688
  let height = AgentSessionsListDelegate.ITEM_HEIGHT;
519
689
  const approval = this._approvalModel?.getApproval(element.resource).get();
520
690
  if (approval) {
@@ -523,12 +693,21 @@ class AgentSessionsListDelegate {
523
693
  return height;
524
694
  }
525
695
  hasDynamicHeight(element) {
696
+ if (isAgentSessionShowMore(element) || isAgentSessionShowLess(element)) {
697
+ return true;
698
+ }
526
699
  return !!this._approvalModel && isAgentSession(element);
527
700
  }
528
701
  getTemplateId(element) {
529
702
  if (isAgentSessionSection(element)) {
530
703
  return AgentSessionSectionRenderer.TEMPLATE_ID;
531
704
  }
705
+ if (isAgentSessionShowMore(element)) {
706
+ return AgentSessionShowMoreRenderer.TEMPLATE_ID;
707
+ }
708
+ if (isAgentSessionShowLess(element)) {
709
+ return AgentSessionShowLessRenderer.TEMPLATE_ID;
710
+ }
532
711
  return AgentSessionRenderer.TEMPLATE_ID;
533
712
  }
534
713
  }
@@ -540,19 +719,24 @@ class AgentSessionsAccessibilityProvider {
540
719
  return "listitem";
541
720
  }
542
721
  getWidgetAriaLabel() {
543
- return localize(5181, "Agent Sessions");
722
+ return localize(5205, "Agent Sessions");
544
723
  }
545
724
  getAriaLabel(element) {
546
725
  if (isAgentSessionSection(element)) {
547
- return localize(
548
- 5182,
549
- "{0} sessions section, {1} sessions",
550
- element.label,
551
- element.sessions.length
552
- );
726
+ const count = element.sessions.length;
727
+ if (count === 1) {
728
+ return localize(5206, "{0} sessions section, {1} session", element.label, count);
729
+ }
730
+ return localize(5207, "{0} sessions section, {1} sessions", element.label, count);
731
+ }
732
+ if (isAgentSessionShowMore(element)) {
733
+ return localize(5208, "Show {0} more sessions", element.remainingCount);
734
+ }
735
+ if (isAgentSessionShowLess(element)) {
736
+ return localize(5209, "Show less sessions");
553
737
  }
554
738
  return localize(
555
- 5183,
739
+ 5210,
556
740
  "{0} session {1} ({2}), created {3}",
557
741
  element.providerLabel,
558
742
  element.label,
@@ -565,12 +749,37 @@ class AgentSessionsDataSource extends Disposable {
565
749
  static {
566
750
  this.CAPPED_SESSIONS_LIMIT = 3;
567
751
  }
568
- constructor(filter, sorter) {
752
+ static {
753
+ this.REPOSITORY_GROUP_LIMIT = 5;
754
+ }
755
+ constructor(filter, sorter, repositoryGroupLimit) {
569
756
  super();
570
757
  this.filter = filter;
571
758
  this.sorter = sorter;
759
+ this.repositoryGroupLimit = repositoryGroupLimit;
572
760
  this._onDidGetChildren = this._register(( new Emitter()));
573
761
  this.onDidGetChildren = this._onDidGetChildren.event;
762
+ this._onDidExpandRepositoryGroup = this._register(( new Emitter()));
763
+ this.onDidExpandRepositoryGroup = this._onDidExpandRepositoryGroup.event;
764
+ this.expandedRepositoryGroups = ( new Set());
765
+ if (this.filter) {
766
+ let previousCapped = this.filter.getExcludes().repositoryGroupCapped;
767
+ this._register(this.filter.onDidChange(() => {
768
+ const currentCapped = this.filter.getExcludes().repositoryGroupCapped;
769
+ if (currentCapped && !previousCapped) {
770
+ this.expandedRepositoryGroups.clear();
771
+ }
772
+ previousCapped = currentCapped;
773
+ }));
774
+ }
775
+ }
776
+ expandRepositoryGroup(sectionLabel) {
777
+ this.expandedRepositoryGroups.add(sectionLabel);
778
+ this._onDidExpandRepositoryGroup.fire();
779
+ }
780
+ collapseRepositoryGroup(sectionLabel) {
781
+ this.expandedRepositoryGroups.delete(sectionLabel);
782
+ this._onDidExpandRepositoryGroup.fire();
574
783
  }
575
784
  hasChildren(element) {
576
785
  if (isAgentSessionsModel(element)) {
@@ -601,6 +810,23 @@ class AgentSessionsDataSource extends Disposable {
601
810
  return filteredSessions;
602
811
  }
603
812
  else if (isAgentSessionSection(element)) {
813
+ const isCappingEnabled = this.repositoryGroupLimit && this.filter?.getExcludes().repositoryGroupCapped;
814
+ if (isCappingEnabled && element.section === AgentSessionSection.Repository && element.sessions.length > this.repositoryGroupLimit) {
815
+ if (!( this.expandedRepositoryGroups.has(element.label))) {
816
+ const visible = element.sessions.slice(0, this.repositoryGroupLimit);
817
+ const remainingCount = element.sessions.length - this.repositoryGroupLimit;
818
+ return [...visible, {
819
+ showMore: true,
820
+ sectionLabel: element.label,
821
+ remainingCount
822
+ }];
823
+ } else {
824
+ return [...element.sessions, {
825
+ showLess: true,
826
+ sectionLabel: element.label
827
+ }];
828
+ }
829
+ }
604
830
  return element.sessions;
605
831
  }
606
832
  else {
@@ -613,7 +839,7 @@ class AgentSessionsDataSource extends Disposable {
613
839
  const sortedSessions = sorter instanceof AgentSessionsSorter ? sessions.sort((a, b) => sorter.compare(
614
840
  a,
615
841
  b,
616
- isCapped
842
+ true
617
843
  )) : sessions.sort(sorter.compare.bind(sorter));
618
844
  if (isCapped) {
619
845
  if (this.filter?.getExcludes().read) {
@@ -697,17 +923,12 @@ class AgentSessionsDataSource extends Disposable {
697
923
  }
698
924
  }
699
925
  const result = [];
700
- if (pinnedSessions.length > 0) {
701
- result.push({
702
- section: AgentSessionSection.Pinned,
703
- label: AgentSessionSectionLabels[AgentSessionSection.Pinned],
704
- sessions: pinnedSessions
705
- });
706
- }
707
- for (const [, {
926
+ result.push(...pinnedSessions);
927
+ const sortedRepoGroups = [...( repoMap.values())].sort((a, b) => compareIgnoreCase(a.label, b.label));
928
+ for (const {
708
929
  label,
709
930
  sessions
710
- }] of repoMap) {
931
+ } of sortedRepoGroups) {
711
932
  result.push({
712
933
  section: AgentSessionSection.Repository,
713
934
  label,
@@ -844,14 +1065,14 @@ function extractRepoNameFromPath(dirPath) {
844
1065
  return segments[segments.length - 1];
845
1066
  }
846
1067
  const AgentSessionSectionLabels = {
847
- [AgentSessionSection.Pinned]: ( localize(5184, "Pinned")),
848
- [AgentSessionSection.Today]: ( localize(5185, "Today")),
849
- [AgentSessionSection.Yesterday]: ( localize(5186, "Yesterday")),
850
- [AgentSessionSection.Week]: ( localize(5187, "Last 7 days")),
851
- [AgentSessionSection.Older]: ( localize(5188, "Older")),
852
- [AgentSessionSection.Archived]: ( localize(5189, "Archived")),
853
- [AgentSessionSection.More]: ( localize(5190, "More")),
854
- [AgentSessionSection.Repository]: ( localize(5191, "Other"))
1068
+ [AgentSessionSection.Pinned]: ( localize(5211, "Pinned")),
1069
+ [AgentSessionSection.Today]: ( localize(5212, "Today")),
1070
+ [AgentSessionSection.Yesterday]: ( localize(5213, "Yesterday")),
1071
+ [AgentSessionSection.Week]: ( localize(5214, "Last 7 days")),
1072
+ [AgentSessionSection.Older]: ( localize(5215, "Older")),
1073
+ [AgentSessionSection.Archived]: ( localize(5216, "Archived")),
1074
+ [AgentSessionSection.More]: ( localize(5217, "More")),
1075
+ [AgentSessionSection.Repository]: ( localize(5218, "Other"))
855
1076
  };
856
1077
  const DAY_THRESHOLD = 24 * 60 * 60 * 1000;
857
1078
  const WEEK_THRESHOLD = 7 * DAY_THRESHOLD;
@@ -916,10 +1137,10 @@ function sessionDateFromNow(sessionTime, appendAgoLabel) {
916
1137
  const startOfYesterday = startOfToday - DAY_THRESHOLD;
917
1138
  const startOfTwoDaysAgo = startOfYesterday - DAY_THRESHOLD;
918
1139
  if (sessionTime < startOfToday && sessionTime >= startOfYesterday) {
919
- return appendAgoLabel ? ( localize(5192, "1 day ago")) : ( localize(5193, "1 day"));
1140
+ return appendAgoLabel ? ( localize(5219, "1 day ago")) : ( localize(5220, "1 day"));
920
1141
  }
921
1142
  if (sessionTime < startOfYesterday && sessionTime >= startOfTwoDaysAgo) {
922
- return appendAgoLabel ? ( localize(5194, "2 days ago")) : ( localize(5195, "2 days"));
1143
+ return appendAgoLabel ? ( localize(5221, "2 days ago")) : ( localize(5222, "2 days"));
923
1144
  }
924
1145
  return fromNow(sessionTime, appendAgoLabel);
925
1146
  }
@@ -928,6 +1149,12 @@ class AgentSessionsIdentityProvider {
928
1149
  if (isAgentSessionSection(element)) {
929
1150
  return `section-${element.section}-${element.label}`;
930
1151
  }
1152
+ if (isAgentSessionShowMore(element)) {
1153
+ return `show-more-${element.sectionLabel}`;
1154
+ }
1155
+ if (isAgentSessionShowLess(element)) {
1156
+ return `show-less-${element.sectionLabel}`;
1157
+ }
931
1158
  if (isAgentSession(element)) {
932
1159
  return ( element.resource.toString());
933
1160
  }
@@ -987,6 +1214,12 @@ class AgentSessionsKeyboardNavigationLabelProvider {
987
1214
  if (isAgentSessionSection(element)) {
988
1215
  return element.label;
989
1216
  }
1217
+ if (isAgentSessionShowMore(element)) {
1218
+ return element.sectionLabel;
1219
+ }
1220
+ if (isAgentSessionShowLess(element)) {
1221
+ return element.sectionLabel;
1222
+ }
990
1223
  return element.label;
991
1224
  }
992
1225
  getCompressedNodeKeyboardNavigationLabel(elements) {
@@ -1004,7 +1237,7 @@ let AgentSessionsDragAndDrop = class AgentSessionsDragAndDrop extends Disposable
1004
1237
  this.instantiationService.invokeFunction(accessor => fillEditorsDragData(accessor, uris, originalEvent));
1005
1238
  }
1006
1239
  getDragURI(element) {
1007
- if (isAgentSessionSection(element)) {
1240
+ if (isAgentSessionSection(element) || isAgentSessionShowMore(element) || isAgentSessionShowLess(element)) {
1008
1241
  return null;
1009
1242
  }
1010
1243
  return ( element.resource.toString());
@@ -1014,7 +1247,7 @@ let AgentSessionsDragAndDrop = class AgentSessionsDragAndDrop extends Disposable
1014
1247
  if (sessions.length === 1) {
1015
1248
  return sessions[0].label;
1016
1249
  }
1017
- return localize(5196, "{0} agent sessions", sessions.length);
1250
+ return localize(5223, "{0} agent sessions", sessions.length);
1018
1251
  }
1019
1252
  onDragOver(data, targetElement, targetIndex, targetSector, originalEvent) {
1020
1253
  return false;
@@ -1023,4 +1256,4 @@ let AgentSessionsDragAndDrop = class AgentSessionsDragAndDrop extends Disposable
1023
1256
  };
1024
1257
  AgentSessionsDragAndDrop = ( __decorate([( __param(0, IInstantiationService))], AgentSessionsDragAndDrop));
1025
1258
 
1026
- export { AgentSessionRenderer, AgentSessionSectionLabels, AgentSessionSectionRenderer, AgentSessionsAccessibilityProvider, AgentSessionsCompressionDelegate, AgentSessionsDataSource, AgentSessionsDragAndDrop, AgentSessionsIdentityProvider, AgentSessionsKeyboardNavigationLabelProvider, AgentSessionsListDelegate, AgentSessionsSorter, getRepositoryName, groupAgentSessionsByDate, sessionDateFromNow, toStatusLabel };
1259
+ export { AgentSessionRenderer, AgentSessionSectionLabels, AgentSessionSectionRenderer, AgentSessionShowLessRenderer, AgentSessionShowMoreRenderer, AgentSessionsAccessibilityProvider, AgentSessionsCompressionDelegate, AgentSessionsDataSource, AgentSessionsDragAndDrop, AgentSessionsIdentityProvider, AgentSessionsKeyboardNavigationLabelProvider, AgentSessionsListDelegate, AgentSessionsSorter, getRepositoryName, groupAgentSessionsByDate, sessionDateFromNow, toStatusLabel };