/** * pi-loom: Sub-store modules — decomposed from LoomStore * * Each sub-store owns a single table or closely-related table group. * They take a better-sqlite3 Database in the constructor, so they can * be used standalone (testing, migration) or composed into LoomStore. */ import type Database from "better-sqlite3"; import type { ConstraintRow, EpisodeRow, RawEventRow, SessionSummaryRow } from "./store.js"; export declare class RawEventStore { private db; constructor(db: Database.Database); store(params: { session_id: string; event_type: string; payload: Record; }): string; audit(params: { session_id?: string; event_type?: string; limit?: number; offset?: number; }): RawEventRow[]; recentSessions(limit?: number): string[]; count(sessionId: string): number; getAsText(sessionId: string, maxEvents?: number): string; purge(): number; } export declare class EpisodeStore { private db; constructor(db: Database.Database); storeSummary(params: { session_id: string; summary: string; decisions?: string[]; errors?: string[]; changes?: string[]; unfinished?: string[]; memory_ids?: string[]; }): string; getSummary(sessionId: string): SessionSummaryRow | undefined; recentSummaries(limit?: number): SessionSummaryRow[]; updateSummaryMemories(sid: string, memIds: string[]): void; create(params: { session_id: string; summary?: string; entity_id?: string; token_count?: number; }): string; timeline(entityId: string, limit?: number): EpisodeRow[]; countForEntities(entityIds: string[]): Map; } export declare class ConstraintStore { private db; constructor(db: Database.Database); store(params: { entity_id: string; description: string; path_condition?: string; enforcement?: "warn" | "block" | "log"; }): ConstraintRow; check(params?: { entity_id?: string; session_id?: string; }): Array; list(entityId: string): ConstraintRow[]; /** Parse and evaluate a single path_condition string. */ private _eval; }