import type { ModelMessage, StepResult, ToolSet } from 'ai'; import type { AgentSessionState } from '../types'; /** * Interface for persisting agent session state. * * Implementations can use in-memory storage, databases, * or external services like Redis. */ export interface AgentSessionStore { /** * Get a session by ID. */ get(sessionId: string): Promise; /** * Create a new session. */ create(session: Omit): Promise; /** * Append a step to a session. */ appendStep(sessionId: string, step: StepResult): Promise; /** * Append a message to a session. */ appendMessage(sessionId: string, message: ModelMessage): Promise; /** * Update session properties. */ update(sessionId: string, updates: Partial>): Promise; /** * Delete a session. */ delete(sessionId: string): Promise; /** * List sessions by agent ID. */ listByAgent(agentId: string, limit?: number): Promise; /** * List sessions by tenant ID. */ listByTenant(tenantId: string, limit?: number): Promise; } export interface InMemorySessionStoreOptions { maxSessions?: number; maxMessagesPerSession?: number; maxStepsPerSession?: number; } /** * In-memory session store for development and testing. */ export declare class InMemorySessionStore implements AgentSessionStore { private readonly sessions; private readonly maxSessions; private readonly maxMessagesPerSession; private readonly maxStepsPerSession; constructor(options?: InMemorySessionStoreOptions); get(sessionId: string): Promise; create(session: Omit): Promise; appendStep(sessionId: string, step: StepResult): Promise; appendMessage(sessionId: string, message: ModelMessage): Promise; update(sessionId: string, updates: Partial>): Promise; delete(sessionId: string): Promise; listByAgent(agentId: string, limit?: number): Promise; listByTenant(tenantId: string, limit?: number): Promise; /** * Clear all sessions (for testing). */ clear(): void; private evictIfNeeded; private trimArray; } /** * Create an in-memory session store. */ export declare function createInMemorySessionStore(options?: InMemorySessionStoreOptions): AgentSessionStore; /** * Generate a unique session ID. */ export declare function generateSessionId(): string;