CREATE TABLE IF NOT EXISTS documents ( id TEXT PRIMARY KEY, kind TEXT NOT NULL, project_id TEXT NULL, thread_id TEXT NULL, sort_key INTEGER NULL, schema_version INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, data_json TEXT NOT NULL);CREATE TABLE IF NOT EXISTS provider_events ( seq INTEGER PRIMARY KEY AUTOINCREMENT, id TEXT NOT NULL UNIQUE, session_id TEXT NOT NULL, provider TEXT NOT NULL, kind TEXT NOT NULL, method TEXT NOT NULL, thread_id TEXT NULL, turn_id TEXT NULL, item_id TEXT NULL, request_id TEXT NULL, request_kind TEXT NULL, text_delta TEXT NULL, message TEXT NULL, payload_json TEXT NULL, created_at TEXT NOT NULL);CREATE TABLE IF NOT EXISTS state_events ( seq INTEGER PRIMARY KEY AUTOINCREMENT, event_type TEXT NOT NULL, entity_id TEXT NOT NULL, payload_json TEXT NOT NULL, created_at TEXT NOT NULL);CREATE TABLE IF NOT EXISTS metadata ( key TEXT PRIMARY KEY, value_json TEXT NOT NULL);CREATE INDEX IF NOT EXISTS idx_documents_kind ON documents(kind);CREATE INDEX IF NOT EXISTS idx_documents_project_kind ON documents(project_id, kind);CREATE INDEX IF NOT EXISTS idx_documents_thread_kind_sort ON documents(thread_id, kind, sort_key);CREATE INDEX IF NOT EXISTS idx_documents_kind_updated ON documents(kind, updated_at DESC);CREATE INDEX IF NOT EXISTS idx_provider_events_session_seq ON provider_events(session_id, seq);CREATE INDEX IF NOT EXISTS idx_provider_events_thread_seq ON provider_events(thread_id, seq);CREATE INDEX IF NOT EXISTS idx_state_events_seq ON state_events(seq);
CREATE TABLE IF NOT EXISTS documents (
id TEXT PRIMARY KEY,
kind TEXT NOT NULL,
project_id TEXT NULL,
thread_id TEXT NULL,
sort_key INTEGER NULL,
schema_version INTEGER NOT NULL DEFAULT 1,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
data_json TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS provider_events (
seq INTEGER PRIMARY KEY AUTOINCREMENT,
id TEXT NOT NULL UNIQUE,
session_id TEXT NOT NULL,
provider TEXT NOT NULL,
kind TEXT NOT NULL,
method TEXT NOT NULL,
thread_id TEXT NULL,
turn_id TEXT NULL,
item_id TEXT NULL,
request_id TEXT NULL,
request_kind TEXT NULL,
text_delta TEXT NULL,
message TEXT NULL,
payload_json TEXT NULL,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS state_events (
seq INTEGER PRIMARY KEY AUTOINCREMENT,
event_type TEXT NOT NULL,
entity_id TEXT NOT NULL,
payload_json TEXT NOT NULL,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS metadata (
key TEXT PRIMARY KEY,
value_json TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_documents_kind ON documents(kind);
CREATE INDEX IF NOT EXISTS idx_documents_project_kind ON documents(project_id, kind);
CREATE INDEX IF NOT EXISTS idx_documents_thread_kind_sort ON documents(thread_id, kind, sort_key);
CREATE INDEX IF NOT EXISTS idx_documents_kind_updated ON documents(kind, updated_at DESC);
CREATE INDEX IF NOT EXISTS idx_provider_events_session_seq ON provider_events(session_id, seq);
CREATE INDEX IF NOT EXISTS idx_provider_events_thread_seq ON provider_events(thread_id, seq);
CREATE INDEX IF NOT EXISTS idx_state_events_seq ON state_events(seq);