import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle"; import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service"; import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service"; import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service"; import { IEditorGroupsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service"; import { IEditorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service"; import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service"; import { IAgentSession } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel"; import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service"; import { IChatSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service"; import { IWorkbenchLayoutService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service"; import { IChatEditingService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService.service"; import { IAgentTitleBarStatusService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusService.service"; import { IAgentSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.service"; import { IAgentSessionProjectionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.service"; /** * Provider types that support agent session projection mode. * Only sessions from these providers will trigger projection mode. */ export declare const AGENT_SESSION_PROJECTION_ENABLED_PROVIDERS: Set; export declare class AgentSessionProjectionService extends Disposable implements IAgentSessionProjectionService { private readonly configurationService; private readonly editorGroupsService; private readonly editorService; private readonly logService; private readonly chatWidgetService; private readonly chatSessionsService; private readonly layoutService; private readonly commandService; private readonly chatEditingService; private readonly agentTitleBarStatusService; private readonly agentSessionsService; readonly _serviceBrand: undefined; private _isActive; get isActive(): boolean; /** Prevents re-entrant exits and enter-on-exit races */ private _isExiting; /** Prevents checkForEmptyEditors from exiting during session swaps */ private _isSwappingSessions; private _activeSession; get activeSession(): IAgentSession | undefined; private readonly _onDidChangeProjectionMode; readonly onDidChangeProjectionMode: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event; private readonly _onDidChangeActiveSession; readonly onDidChangeActiveSession: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event; private readonly _inProjectionModeContextKey; /** Working set saved when entering projection mode (to restore on exit) */ private _preProjectionWorkingSet; /** Working sets per session, keyed by session resource URI string */ private readonly _sessionWorkingSets; /** Whether the auxiliary bar was maximized when entering projection mode */ private _wasAuxiliaryBarMaximized; constructor(contextKeyService: IContextKeyService, configurationService: IConfigurationService, editorGroupsService: IEditorGroupsService, editorService: IEditorService, logService: ILogService, chatWidgetService: IChatWidgetService, chatSessionsService: IChatSessionsService, layoutService: IWorkbenchLayoutService, commandService: ICommandService, chatEditingService: IChatEditingService, agentTitleBarStatusService: IAgentTitleBarStatusService, agentSessionsService: IAgentSessionsService); private _isEnabled; private _checkForEmptyEditors; private _checkForInProgressSession; /** * Opens a session in the chat panel without entering projection mode. */ private _openSessionInChatPanel; /** * Open the session's files in a multi-diff editor. * @returns true if any files were opened, false if nothing to display */ private _openSessionFiles; enterProjection(session: IAgentSession): Promise; exitProjection(options?: { startNewChat?: boolean; }): Promise; }