CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, name TEXT, os_type TEXT, vocabulary_level TEXT DEFAULT 'basic', accessibility_needs TEXT DEFAULT '[]', comfort_level INTEGER DEFAULT 1, onboarded INTEGER DEFAULT 0, created_at TEXT DEFAULT (datetime('now')), updated_at TEXT DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS conversations ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, task_type TEXT, status TEXT DEFAULT 'active', context_summary TEXT, started_at TEXT DEFAULT (datetime('now')), ended_at TEXT, FOREIGN KEY (user_id) REFERENCES users(id) ); CREATE TABLE IF NOT EXISTS messages ( id TEXT PRIMARY KEY, conversation_id TEXT NOT NULL, role TEXT NOT NULL, body TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now')), FOREIGN KEY (conversation_id) REFERENCES conversations(id) ); CREATE TABLE IF NOT EXISTS step_sequences ( id TEXT PRIMARY KEY, conversation_id TEXT NOT NULL, steps TEXT NOT NULL, current_index INTEGER DEFAULT 0, completed INTEGER DEFAULT 0, FOREIGN KEY (conversation_id) REFERENCES conversations(id) ); CREATE TABLE IF NOT EXISTS skill_events ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, skill_name TEXT NOT NULL, status TEXT DEFAULT 'started', practiced_at TEXT DEFAULT (datetime('now')), FOREIGN KEY (user_id) REFERENCES users(id) ); CREATE TABLE IF NOT EXISTS safety_events ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, event_type TEXT NOT NULL, trigger_text TEXT, created_at TEXT DEFAULT (datetime('now')), FOREIGN KEY (user_id) REFERENCES users(id) ); CREATE TABLE IF NOT EXISTS user_notes ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, title TEXT NOT NULL, content TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now')), FOREIGN KEY (user_id) REFERENCES users(id) );