/** * Schema version — informational, stamped into every new database. * * ALL schema changes are additive (ALTER TABLE ADD COLUMN). The version is * never used to trigger destructive drops; it is purely for troubleshooting. */ export declare const SCHEMA_VERSION = 5; export declare const SCHEMA_SQL = "\nPRAGMA foreign_keys = ON;\n\nCREATE TABLE IF NOT EXISTS projects (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n path TEXT NOT NULL,\n studio_project_id TEXT,\n studio_project_name TEXT,\n studio_team_id TEXT,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n title TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n model_id TEXT,\n active_agent TEXT,\n reasoning_effort TEXT,\n native_response_id TEXT,\n title_manually_renamed INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_id, updated_at DESC);\n\nCREATE TABLE IF NOT EXISTS messages (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n role TEXT NOT NULL CHECK (role IN ('user','assistant','system')),\n content TEXT NOT NULL,\n events_jsonl TEXT NOT NULL DEFAULT '',\n images_json TEXT NOT NULL DEFAULT '',\n credits_used REAL,\n output_tokens INTEGER,\n duration_ms INTEGER,\n tokens_per_second REAL,\n ttft_ms INTEGER,\n seq INTEGER,\n created_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id, created_at);\n\nCREATE TABLE IF NOT EXISTS session_memory_snapshots (\n session_id TEXT PRIMARY KEY REFERENCES sessions(id) ON DELETE CASCADE,\n summary TEXT NOT NULL,\n details_json TEXT NOT NULL,\n covered_source_count INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS project_observations (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n session_id TEXT NOT NULL,\n content TEXT NOT NULL,\n relevance TEXT NOT NULL CHECK (relevance IN ('low','medium','high','critical')),\n created_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_project_obs_project ON project_observations(project_id, created_at DESC);\n\nCREATE TABLE IF NOT EXISTS project_recall_sources (\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n memory_id TEXT NOT NULL,\n entries_json TEXT NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (project_id, memory_id)\n);\n\nCREATE TABLE IF NOT EXISTS prompt_queue (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n content TEXT NOT NULL,\n images_json TEXT NOT NULL DEFAULT '',\n position INTEGER NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(session_id, position)\n);\n\nCREATE INDEX IF NOT EXISTS idx_prompt_queue_session ON prompt_queue(session_id, position);\n\nCREATE TABLE IF NOT EXISTS inter_agent_messages (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n channel TEXT NOT NULL,\n sender_session_id TEXT NOT NULL,\n sender_name TEXT,\n recipient_session_id TEXT,\n kind TEXT NOT NULL,\n payload TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n delivered_at INTEGER,\n expires_at INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_inter_agent_inbox ON inter_agent_messages(project_id, channel, recipient_session_id, created_at DESC);\nCREATE INDEX IF NOT EXISTS idx_inter_agent_expiry ON inter_agent_messages(expires_at);\n\nCREATE TABLE IF NOT EXISTS dev_process_definitions (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n label TEXT NOT NULL,\n command TEXT NOT NULL,\n cwd TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n"; /** * FTS5 trigram index over project-observation content, synced explicitly in * code (same transaction as `insertProjectObservations`) rather than via * triggers so the behavior is obvious and testable. `obs_id` stores the * observation id so stale index rows can be deleted on INSERT OR REPLACE. * * Created outside SCHEMA_SQL on purpose: if the bundled SQLite build lacks * FTS5, the store still opens and observation search degrades to LIKE * filtering instead of failing at startup. */ export declare const PROJECT_OBS_FTS_SQL = "\nCREATE VIRTUAL TABLE IF NOT EXISTS project_observations_fts USING fts5(\n content,\n project_id UNINDEXED,\n obs_id UNINDEXED,\n tokenize='trigram'\n);\n"; //# sourceMappingURL=schema.d.ts.map