/** * InMemorySessionStore — reference in-memory implementation of * {@link SessionStore}. * * Every accessor takes explicit {@link TenantId} (Convention #17). Any * accessor called with a tenantId that does not match the resource's owning * tenant throws {@link TenantIsolationError} — there is no fallback * (Convention #5 deny-by-default, session-hierarchy.md §12.2). */ import type { SessionId, TenantId } from '../../types/ids/index.js'; import type { Project, ProjectStatus } from '../../types/project/entity.js'; import type { Session } from '../../types/session/entity.js'; import type { ProjectId, SubSessionId, TopicId } from '../../types/session/ids.js'; import type { CreateProjectParams, CreateSessionParams, CreateSubSessionParams, ProjectConfigInput, SessionStore, SessionView } from '../../types/session/store.js'; import type { SubSession } from '../../types/session/sub-session.js'; import type { SessionSummaryRef } from '../../types/summary/ref.js'; export declare class InMemorySessionStore implements SessionStore { private readonly projects; private readonly sessions; private readonly subSessions; private readonly summaries; /** Hydrate existing Project snapshots without minting replacement identities. */ constructor(projects?: readonly Project[]); createProject(params: CreateProjectParams, tenantId: TenantId): Promise; /** * Scanned rather than indexed, and that is the right call HERE and only * here: this store's projects are already a `Map` in memory, so an index * would be a second copy of the same data with a consistency problem * attached. The disk store, where a scan means opening every * `project.json`, keeps a real index. */ findProjectByRootPath(rootPath: string, tenantId: TenantId): Promise; getProject(projectId: ProjectId, tenantId: TenantId): Promise; updateProject(projectId: ProjectId, config: ProjectConfigInput, tenantId: TenantId): Promise; setProjectStatus(projectId: ProjectId, status: ProjectStatus, tenantId: TenantId, expectedOwnerVersion: number): Promise; listProjects(tenantId: TenantId): Promise; createSession(params: CreateSessionParams, tenantId: TenantId): Promise; getSession(sessionId: SessionId, tenantId: TenantId): Promise; listSessionsByTopic(topicId: TopicId, tenantId: TenantId): Promise; listSessionsByProject(projectId: ProjectId, tenantId: TenantId): Promise; updateSession(session: Session, tenantId: TenantId, expectedOwnerVersion?: number): Promise; deleteSession(sessionId: SessionId, tenantId: TenantId): Promise; createSubSession(params: CreateSubSessionParams, tenantId: TenantId): Promise; getSubSession(subSessionId: SubSessionId, tenantId: TenantId): Promise; updateSubSession(subSession: SubSession, tenantId: TenantId): Promise; deleteSubSession(subSessionId: SubSessionId, tenantId: TenantId): Promise; getChildren(sessionId: SessionId, tenantId: TenantId): Promise; getAncestry(sessionId: SessionId, tenantId: TenantId): Promise; drill(sessionId: SessionId, tenantId: TenantId): Promise; recordSummary(summary: SessionSummaryRef & { materializedBy: 'kernel'; }, tenantId: TenantId): Promise; getSummary(sessionId: SessionId, tenantId: TenantId): Promise; private assertTenant; private linkageView; } //# sourceMappingURL=memory.d.ts.map