@codingame/monaco-vscode-katex-common 29.1.1 → 30.0.1
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.
- package/package.json +2 -2
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +14 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +34 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +208 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +637 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +202 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +17 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +53 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +296 -63
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +59 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +110 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +384 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +220 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +1 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +14 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +97 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +8 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +15 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +155 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +36 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +33 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +37 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +66 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +13 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +103 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +44 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +60 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +4 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +5 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +6 -11
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -39
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +746 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +300 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +55 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.d.ts +273 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1963 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.d.ts +50 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +314 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.d.ts +258 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +886 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +118 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.js +71 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +40 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.js +313 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.js +265 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.js +185 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.js +104 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.js +43 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.js +41 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.js +69 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css +469 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.d.ts +149 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +933 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.d.ts +180 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +32 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.d.ts +102 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +643 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +197 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.d.ts +75 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.js +539 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.js +39 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.js +90 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.js +92 -0
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -152
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -1317
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +0 -47
- 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
|
-
|
|
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
|
|
309
|
+
return {
|
|
310
|
+
...Codicon.sessionInProgress,
|
|
311
|
+
color: themeColorFromId("textLink.foreground")
|
|
312
|
+
};
|
|
273
313
|
}
|
|
274
314
|
if (session.status === ChatSessionStatus.NeedsInput) {
|
|
275
|
-
return
|
|
315
|
+
return {
|
|
316
|
+
...Codicon.circleFilled,
|
|
317
|
+
color: themeColorFromId("list.warningForeground")
|
|
318
|
+
};
|
|
276
319
|
}
|
|
277
320
|
if (session.status === ChatSessionStatus.Failed) {
|
|
278
|
-
return
|
|
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
|
|
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 (
|
|
284
|
-
return
|
|
366
|
+
if (!statusOnly) {
|
|
367
|
+
return session.icon;
|
|
285
368
|
}
|
|
286
|
-
return
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
396
|
+
return localize(5195, "now");
|
|
311
397
|
}
|
|
312
398
|
return getDurationString(elapsed, useFullTimeWords);
|
|
313
399
|
}
|
|
314
400
|
renderStatus(session, template) {
|
|
315
|
-
const
|
|
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(
|
|
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 =
|
|
418
|
+
template.statusTime.textContent = getStatusText(session.element);
|
|
332
419
|
const timer = template.elementDisposable.add(( new IntervalTimer()));
|
|
333
420
|
timer.cancelAndSet(
|
|
334
|
-
() => template.statusTime.textContent =
|
|
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(
|
|
494
|
+
title: ( localize(5196, "Allow once")),
|
|
408
495
|
secondary: isActive,
|
|
409
496
|
...defaultButtonStyles
|
|
410
497
|
})));
|
|
411
|
-
button.label = ( localize(
|
|
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(
|
|
522
|
+
statusLabel = ( localize(5198, "Needs Input"));
|
|
436
523
|
break;
|
|
437
524
|
case ChatSessionStatus.InProgress:
|
|
438
|
-
statusLabel = ( localize(
|
|
525
|
+
statusLabel = ( localize(5199, "In Progress"));
|
|
439
526
|
break;
|
|
440
527
|
case ChatSessionStatus.Failed:
|
|
441
|
-
statusLabel = ( localize(
|
|
528
|
+
statusLabel = ( localize(5200, "Failed"));
|
|
442
529
|
break;
|
|
443
530
|
default:
|
|
444
|
-
statusLabel = ( localize(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
722
|
+
return localize(5205, "Agent Sessions");
|
|
544
723
|
}
|
|
545
724
|
getAriaLabel(element) {
|
|
546
725
|
if (isAgentSessionSection(element)) {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
"{0} sessions section, {1}
|
|
550
|
-
|
|
551
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
701
|
-
|
|
702
|
-
|
|
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
|
-
}
|
|
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(
|
|
848
|
-
[AgentSessionSection.Today]: ( localize(
|
|
849
|
-
[AgentSessionSection.Yesterday]: ( localize(
|
|
850
|
-
[AgentSessionSection.Week]: ( localize(
|
|
851
|
-
[AgentSessionSection.Older]: ( localize(
|
|
852
|
-
[AgentSessionSection.Archived]: ( localize(
|
|
853
|
-
[AgentSessionSection.More]: ( localize(
|
|
854
|
-
[AgentSessionSection.Repository]: ( localize(
|
|
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(
|
|
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(
|
|
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(
|
|
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 };
|