/** * Receipt Storage Queries * * Curated SQL queries for receipt CRUD operations and aggregations. * All SQL must live in this module per SQL Safety policy. * * @module memory/store/receipt-queries */ import Database from "better-sqlite3-multiple-ciphers"; import { Receipt } from "../receipts/schema.js"; /** * Database row type for receipts table */ export interface ReceiptRow { id: string; schema_version: string; kind: string; action: string; outcome: string; rationale: string; failure_class: string | null; failure_details: string | null; recovery_suggestion: string | null; confidence: string; uncertainty_notes: string | null; reversibility: string; rollback_path: string | null; rollback_tested: number | null; escalation_required: number; escalation_reason: string | null; escalated_to: string | null; timestamp: string; agent_id: string | null; session_id: string | null; frame_id: string | null; user_id: string | null; created_at: string; } /** * Failure statistics for aggregation queries */ export interface FailureStats { failureClass: string; count: number; percentage: number; } /** * Module failure statistics */ export interface ModuleFailureStats { moduleScope: string; failureCount: number; totalCount: number; failureRate: number; } /** * Recovery success rate by failure class */ export interface RecoverySuccessRate { failureClass: string; totalFailures: number; retriedCount: number; successfulRetries: number; successRate: number; } /** * Store a receipt in the database */ export declare function storeReceipt(db: Database.Database, receipt: Receipt, userId?: string): string; /** * Get a receipt by ID */ export declare function getReceiptById(db: Database.Database, id: string, userId?: string): Receipt | null; /** * Get receipts by session ID */ export declare function getReceiptsBySession(db: Database.Database, sessionId: string, userId?: string): Receipt[]; /** * Get most common failure mode for a session * * Query: "What's my most common failure mode this session?" */ export declare function getMostCommonFailureMode(db: Database.Database, sessionId: string, userId?: string): FailureStats | null; /** * Get all failure modes for a session with counts */ export declare function getFailureModesBySession(db: Database.Database, sessionId: string, userId?: string): FailureStats[]; /** * Note: Module failure rate requires joining with frames table or * using a separate module tracking mechanism. For now, we'll stub * this with a note that it requires additional integration. * * This query would need to correlate receipts with the modules they * operated on, which isn't directly stored in the receipt. */ /** * Delete all receipts for a session (for testing/cleanup) */ export declare function deleteReceiptsBySession(db: Database.Database, sessionId: string, userId?: string): number;