package storage var migrations = []string{ divacodeSchema, companionSchema, addReasoningColumn, } const divacodeSchema = ` CREATE TABLE IF NOT EXISTS conversations ( id TEXT PRIMARY KEY, created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS messages ( id TEXT PRIMARY KEY, conversation_id TEXT NOT NULL REFERENCES conversations(id), role TEXT NOT NULL CHECK(role IN ('user','assistant','system','tool')), content TEXT NOT NULL, reasoning TEXT, tool_call TEXT, token_count INTEGER, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX IF NOT EXISTS idx_messages_conversation ON messages(conversation_id); CREATE TABLE IF NOT EXISTS context_state ( conversation_id TEXT PRIMARY KEY REFERENCES conversations(id), token_count INTEGER NOT NULL DEFAULT 0, summary TEXT ); CREATE TABLE IF NOT EXISTS memories ( id TEXT PRIMARY KEY, content TEXT NOT NULL, embedding BLOB, source TEXT, importance REAL DEFAULT 0.5, created_at TEXT NOT NULL DEFAULT (datetime('now')), last_accessed TEXT ); CREATE INDEX IF NOT EXISTS idx_memories_importance ON memories(importance); CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created_at); ` const companionSchema = ` CREATE TABLE IF NOT EXISTS personality_traits ( id TEXT PRIMARY KEY, trait TEXT NOT NULL UNIQUE, value REAL NOT NULL DEFAULT 0.5, min_value REAL NOT NULL DEFAULT 0.0, max_value REAL NOT NULL DEFAULT 1.0, updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS relationship_metrics ( id TEXT PRIMARY KEY, metric TEXT NOT NULL UNIQUE, value REAL NOT NULL DEFAULT 0.0, updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS shared_topics ( id TEXT PRIMARY KEY, topic TEXT NOT NULL UNIQUE, count INTEGER NOT NULL DEFAULT 1, last_discussed TEXT ); CREATE TABLE IF NOT EXISTS inside_jokes ( id TEXT PRIMARY KEY, joke TEXT NOT NULL, context TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS diary_entries ( id TEXT PRIMARY KEY, date TEXT NOT NULL, summary TEXT NOT NULL, mood TEXT, topics TEXT, observations TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS observations ( id TEXT PRIMARY KEY, content TEXT NOT NULL, confidence REAL DEFAULT 0.5, category TEXT, applied INTEGER DEFAULT 0, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS agent_promises ( id TEXT PRIMARY KEY, promise TEXT NOT NULL, context TEXT, fulfilled INTEGER DEFAULT 0, created_at TEXT NOT NULL DEFAULT (datetime('now')), deadline TEXT ); CREATE TABLE IF NOT EXISTS agent_strategies ( id TEXT PRIMARY KEY, situation TEXT NOT NULL, strategy TEXT NOT NULL, outcome TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); ` const addReasoningColumn = `ALTER TABLE messages ADD COLUMN reasoning TEXT;`