/** * [WHO]: Provides SessionLifecycleController — session identity-change choreography * [FROM]: Depends on agent-core (ThinkingLevel), extensions-host session hook result types, * session-manager (SessionManager type), and ./session-context * [TO]: Consumed by core/runtime/agent-session.ts (constructs one, delegates newSession()/switchSession()/fork()) * [HERE]: core/runtime/agent-session.ts split (AS08) — session identity transitions * * Extracted from AgentSession (AS08/AS11). Owns the new/switch/fork choreography: before/after extension * hooks, agent disconnect/abort/reset, pending-queue clearing, session-manager transition, message * rebuild, and (on resume) model/thinking restoration delegated through the context to * ModelController. Behavior is identical to the former AgentSession methods. */ import type { SessionManager } from "../session/session-manager.js"; import type { SessionLifecycleControllerContext } from "./session-context.js"; export interface NewSessionOptions { parentSession?: string; setup?: (sessionManager: SessionManager) => Promise; } export interface ForkResult { selectedText: string; cancelled: boolean; } export declare class SessionLifecycleController { private readonly ctx; constructor(ctx: SessionLifecycleControllerContext); /** * Start a new session, optionally with initial messages and parent tracking. * Listeners are preserved and continue receiving events. * @returns true if completed, false if cancelled by an extension */ newSession(options?: NewSessionOptions): Promise; /** * Resume an existing session file: restore messages, model, and thinking level. * @returns true if completed, false if cancelled by an extension */ switchSession(sessionPath: string): Promise; /** * Create a new session identity from a user-message branch point. * @returns selected user text plus cancellation state */ fork(entryId: string): Promise; }