diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css index 567da1a2e66a8..36e5bb61af053 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css @@ -11,7 +11,7 @@ flex-wrap: nowrap; align-items: center; justify-content: flex-start; - padding: 0 16px; + padding-left: 16px; height: 22px; border-radius: 4px; -webkit-app-region: no-drag; diff --git a/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts b/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts index 14a681d901a8a..29d1542a84617 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts @@ -14,13 +14,18 @@ import { registerWorkbenchContribution2, WorkbenchPhase } from '../../../../work import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js'; import { SessionsTitleBarContribution } from './sessionsTitleBarWidget.js'; import { AgenticSessionsViewPane, SessionsViewId } from './sessionsViewPane.js'; -import { SessionsManagementService, ISessionsManagementService } from './sessionsManagementService.js'; +import { SessionsManagementService, ISessionsManagementService, IsNewChatSessionContext } from './sessionsManagementService.js'; import { Action2, MenuId, registerAction2 } from '../../../../platform/actions/common/actions.js'; +import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js'; import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js'; import { AgentSessionSection, IAgentSessionSection, isAgentSessionSection } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsModel.js'; import { ChatContextKeys } from '../../../../workbench/contrib/chat/common/actions/chatContextKeys.js'; +import { IAgentSessionsService } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsService.js'; import { IViewsService } from '../../../../workbench/services/views/common/viewsService.js'; +import { IsAuxiliaryWindowContext } from '../../../../workbench/common/contextkeys.js'; +import { SessionsWelcomeVisibleContext } from '../../../common/contextkeys.js'; import { NewChatViewPane, SessionsViewId as NewChatViewId } from '../../chat/browser/newChatViewPane.js'; +import { Menus } from '../../../browser/menus.js'; const agentSessionsViewIcon = registerIcon('chat-sessions-icon', Codicon.commentDiscussionSparkle, localize('agentSessionsViewIcon', 'Icon for Agent Sessions View')); const AGENT_SESSIONS_VIEW_TITLE = localize2('agentSessions.view.label', "Sessions"); @@ -55,6 +60,43 @@ registerWorkbenchContribution2(SessionsTitleBarContribution.ID, SessionsTitleBar registerSingleton(ISessionsManagementService, SessionsManagementService, InstantiationType.Delayed); +registerAction2(class MarkSessionAsDoneAction extends Action2 { + + constructor() { + super({ + id: 'agentSession.markAsDone', + title: localize2('markAsDone', "Mark as Done"), + icon: Codicon.check, + menu: [{ + id: Menus.CommandCenter, + order: 102, + when: ContextKeyExpr.and( + IsAuxiliaryWindowContext.negate(), + SessionsWelcomeVisibleContext.negate(), + IsNewChatSessionContext.negate() + ) + }] + }); + } + + async run(accessor: ServicesAccessor): Promise { + const sessionsManagementService = accessor.get(ISessionsManagementService); + const agentSessionsService = accessor.get(IAgentSessionsService); + + const activeSession = sessionsManagementService.getActiveSession(); + if (!activeSession || activeSession.isUntitled) { + return; + } + + const agentSession = agentSessionsService.getSession(activeSession.resource); + if (!agentSession || agentSession.isArchived()) { + return; + } + + agentSession.setArchived(true); + } +}); + registerAction2(class NewSessionForRepositoryAction extends Action2 { constructor() {