/** * agent_sessions CRUD — epoch-aware session metadata (ADR 0009 D4). */ import type { AgentSessionRecord, CreateAgentSessionInput } from './agent-db-models.js'; export interface AgentSessionStoreConfig { sessionIdleArchiveMs?: number; } interface DbModel { select(...fields: string[]): { where(condition: Record): Promise; }; create(data: Record): Promise; update(data: Record): { where(condition: Record): Promise; }; } export declare function createAgentSessionEpochId(sessionKey: string): string; export declare class AgentSessionStore { private readonly model; private readonly config; constructor(model: DbModel, config?: AgentSessionStoreConfig); findActive(sessionKey: string): Promise; getOrCreateActive(input: CreateAgentSessionInput): Promise; touch(sessionId: string): Promise; getBySessionId(sessionId: string): Promise; setActiveLeafMessageId(sessionId: string, messageId: number | null): Promise; archiveByKey(sessionKey: string): Promise; archiveIdleForKey(sessionKey: string): Promise; } export declare class MemoryAgentSessionStore { private sessions; private static readonly MAX_SESSIONS; private static readonly IDLE_ARCHIVE_MS; private evictIfNeeded; findActive(sessionKey: string): Promise; getOrCreateActive(input: CreateAgentSessionInput): Promise; touch(sessionId: string): Promise; getBySessionId(sessionId: string): Promise; setActiveLeafMessageId(sessionId: string, messageId: number | null): Promise; archiveByKey(sessionKey: string): Promise; archiveIdleForKey(sessionKey: string): Promise; dispose(): void; get sessionCount(): number; } export {}; //# sourceMappingURL=agent-session-store.d.ts.map