export type SessionLifecycleOperation = "session.create" | "session.fork" | "session.resume" | "session.close" | "session.delete" | "session.list"; export interface SessionLifecycleActor { readonly id: string; readonly namespace: string; } export interface SessionLifecycleClientRequestOptions { readonly idempotencyKey?: string; readonly timeoutMs?: number; } /** The deliberately small client surface needed by the lifecycle facade. */ export interface SessionLifecycleClient { global(operation: SessionLifecycleOperation, input: Record, options: SessionLifecycleClientRequestOptions): Promise; } export interface SessionLifecycleWorktreeTarget { readonly enabled: true; readonly name?: string; } export interface SessionLifecycleTranscriptIdentity { readonly dev: string; readonly ino: string; readonly size: number; readonly mtimeMs: number; readonly mtimeNs: string; readonly sha256: string; } export interface SessionLifecycleSavedSessionIdentity extends SessionLifecycleTranscriptIdentity { readonly nlink: string; readonly ctimeNs: string; } export interface SessionLifecycleSavedSession { readonly id: string; readonly path: string; readonly identity: SessionLifecycleSavedSessionIdentity; } export type SessionLifecycleCoordinatorTarget = { readonly coordinatorStateDir?: undefined; readonly coordinatorSidecarSigningKey?: undefined; readonly coordinatorSidecarKeyId?: undefined; readonly coordinatorSessionId?: string; readonly coordinatorSessionBranch?: string; } | { readonly coordinatorStateDir: string; readonly coordinatorSidecarSigningKey: string; readonly coordinatorSidecarKeyId: string; readonly coordinatorSessionId?: string; readonly coordinatorSessionBranch?: string; }; export type SessionCreateTarget = SessionLifecycleCoordinatorTarget & { readonly cwd: string; readonly stateRoot?: string; readonly body?: string; readonly modelPreset?: string; readonly mcpServers?: readonly Record[]; readonly worktree?: SessionLifecycleWorktreeTarget; readonly readiness?: "immediate" | "deferred"; readonly readinessTimeoutMs?: number; }; export type SessionForkTarget = SessionLifecycleCoordinatorTarget & { readonly cwd: string; readonly stateRoot?: string; readonly sourceSessionId?: string; readonly sourceSessionPath?: string; readonly sourceSessionIdentity?: SessionLifecycleTranscriptIdentity; readonly body?: string; readonly modelPreset?: string; readonly mcpServers?: readonly Record[]; readonly worktree?: SessionLifecycleWorktreeTarget; readonly readinessTimeoutMs?: number; }; export type SessionResumeTarget = SessionLifecycleCoordinatorTarget & { readonly sessionId: string; readonly cwd?: string; readonly stateRoot?: string; readonly sessionPath?: string; readonly sessionIdentity?: SessionLifecycleTranscriptIdentity; readonly body?: string; readonly modelPreset?: string; readonly mcpServers?: readonly Record[]; readonly worktree?: SessionLifecycleWorktreeTarget; readonly readinessTimeoutMs?: number; }; export interface SessionCloseTarget { readonly sessionId: string; readonly endpointGeneration?: number; readonly endpointIncarnation?: string; } export interface SessionDeleteTarget { readonly sessionId: string; readonly cwd?: string; readonly stateRoot?: string; readonly sessionPath?: string; } export interface SessionListTarget { readonly cwd?: string; readonly resolveSessionId?: string; } interface SessionLifecycleMutationRequestBase, TTarget> { readonly operation: TOperation; readonly actor: SessionLifecycleActor; readonly capability: TOperation; readonly requestKey: string; readonly target: TTarget; readonly timeoutMs?: number; } export type SessionCreateRequest = SessionLifecycleMutationRequestBase<"session.create", SessionCreateTarget>; export type SessionForkRequest = SessionLifecycleMutationRequestBase<"session.fork", SessionForkTarget>; export type SessionResumeRequest = SessionLifecycleMutationRequestBase<"session.resume", SessionResumeTarget>; export type SessionCloseRequest = SessionLifecycleMutationRequestBase<"session.close", SessionCloseTarget>; export type SessionDeleteRequest = SessionLifecycleMutationRequestBase<"session.delete", SessionDeleteTarget>; export interface SessionListRequest { readonly operation: "session.list"; readonly actor: SessionLifecycleActor; readonly capability: "session.list"; readonly target?: SessionListTarget; readonly timeoutMs?: number; } export type SessionLifecycleRequest = SessionLifecycleMutationRequest | SessionListRequest; export type SessionLifecycleMutationRequest = SessionCreateRequest | SessionForkRequest | SessionResumeRequest | SessionCloseRequest | SessionDeleteRequest; export type SessionLifecycleCertainty = "terminal" | "retryable" | "cleanup_pending" | "uncertain"; export interface SessionLifecycleSessionResult { readonly sessionId: string; readonly cwd?: string; readonly endpointGeneration?: number; readonly reused?: boolean; readonly note?: string; } export interface SessionLifecycleListEntry { readonly sessionId: string; readonly live?: boolean; readonly endpointGeneration?: number; readonly terminalUncertain?: boolean; readonly repo?: string; } export interface SessionLifecycleListResult { readonly indexSeq: number; readonly sessions: readonly SessionLifecycleListEntry[]; readonly warnings: readonly string[]; readonly savedSession?: SessionLifecycleSavedSession; } export interface SessionCreateResult { readonly ok: true; readonly operation: "session.create"; readonly result: SessionLifecycleSessionResult; } export interface SessionForkResult { readonly ok: true; readonly operation: "session.fork"; readonly result: SessionLifecycleSessionResult; } export interface SessionResumeResult { readonly ok: true; readonly operation: "session.resume"; readonly result: SessionLifecycleSessionResult; } export interface SessionCloseResult { readonly ok: true; readonly operation: "session.close"; readonly result: SessionLifecycleSessionResult; } export interface SessionDeleteResult { readonly ok: true; readonly operation: "session.delete"; readonly result: SessionLifecycleSessionResult; } export interface SessionListSuccessResult { readonly ok: true; readonly operation: "session.list"; readonly result: SessionLifecycleListResult; } export interface SessionLifecycleError { readonly code: string; readonly message: string; } export type SessionCreateFailure = { readonly ok: false; readonly operation: "session.create"; readonly certainty: SessionLifecycleCertainty; readonly error: SessionLifecycleError; }; export type SessionForkFailure = { readonly ok: false; readonly operation: "session.fork"; readonly certainty: SessionLifecycleCertainty; readonly error: SessionLifecycleError; }; export type SessionResumeFailure = { readonly ok: false; readonly operation: "session.resume"; readonly certainty: SessionLifecycleCertainty; readonly error: SessionLifecycleError; }; export type SessionCloseFailure = { readonly ok: false; readonly operation: "session.close"; readonly certainty: SessionLifecycleCertainty; readonly error: SessionLifecycleError; }; export type SessionDeleteFailure = { readonly ok: false; readonly operation: "session.delete"; readonly certainty: SessionLifecycleCertainty; readonly error: SessionLifecycleError; }; export type SessionListFailure = { readonly ok: false; readonly operation: "session.list"; readonly certainty: SessionLifecycleCertainty; readonly error: SessionLifecycleError; }; export type SessionCreateOutcome = SessionCreateResult | SessionCreateFailure; export type SessionForkOutcome = SessionForkResult | SessionForkFailure; export type SessionResumeOutcome = SessionResumeResult | SessionResumeFailure; export type SessionCloseOutcome = SessionCloseResult | SessionCloseFailure; export type SessionDeleteOutcome = SessionDeleteResult | SessionDeleteFailure; export type SessionListOutcome = SessionListSuccessResult | SessionListFailure; export type SessionLifecycleResult = SessionCreateOutcome | SessionForkOutcome | SessionResumeOutcome | SessionCloseOutcome | SessionDeleteOutcome | SessionListOutcome; /** Shared, side-effect-free validation for lifecycle mutation requests. */ export type SessionLifecycleMutationValidation = { readonly ok: true; readonly operation: Exclude; readonly actor: SessionLifecycleActor; readonly requestKey: string; readonly target: Readonly>; } | SessionCreateFailure | SessionForkFailure | SessionResumeFailure | SessionCloseFailure | SessionDeleteFailure; /** Derives a stable Broker idempotency key without exposing caller identity to Broker inputs. */ export declare function deriveSessionLifecycleIdempotencyKey(actor: SessionLifecycleActor, requestKey: string, operation: SessionLifecycleOperation): string; /** Validates lifecycle authority and shape without contacting the Broker. */ export declare function validateSessionLifecycleMutationRequest(request: unknown): SessionLifecycleMutationValidation; export declare class SessionLifecycleService { #private; constructor(client: SessionLifecycleClient); execute(request: SessionLifecycleMutationRequest): Promise; create(request: Omit): Promise; fork(request: Omit): Promise; resume(request: Omit): Promise; close(request: Omit): Promise; delete(request: Omit): Promise; list(request: Omit): Promise; } export {};