export declare const SCHEMA = "\nCREATE TABLE IF NOT EXISTS users (\n id TEXT PRIMARY KEY,\n email TEXT NOT NULL UNIQUE,\n handle TEXT UNIQUE,\n role TEXT NOT NULL DEFAULT 'collaborator',\n status TEXT NOT NULL DEFAULT 'invited',\n pre_revocation_status TEXT,\n revoked_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n accepted_at TEXT,\n last_login_at TEXT\n);\n\nCREATE TABLE IF NOT EXISTS login_tokens (\n token TEXT PRIMARY KEY,\n user_id TEXT REFERENCES users(id),\n email TEXT NOT NULL,\n purpose TEXT NOT NULL,\n expires_at TEXT NOT NULL,\n used_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n user_id TEXT REFERENCES users(id),\n email TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n expires_at TEXT NOT NULL,\n last_seen_at TEXT NOT NULL DEFAULT (datetime('now')),\n user_agent TEXT,\n ip TEXT\n);\n\nCREATE TABLE IF NOT EXISTS topics (\n id INTEGER PRIMARY KEY,\n name TEXT NOT NULL,\n language TEXT,\n parent_topic_id INTEGER REFERENCES topics(id),\n sort_order REAL NOT NULL DEFAULT 0,\n archived INTEGER NOT NULL DEFAULT 0,\n archived_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS messages (\n id INTEGER PRIMARY KEY,\n topic_id INTEGER NOT NULL REFERENCES topics(id),\n author_type TEXT NOT NULL,\n author_name TEXT NOT NULL,\n client_message_id TEXT,\n body TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS message_mentions (\n message_id INTEGER NOT NULL REFERENCES messages(id),\n agent_name TEXT NOT NULL,\n active INTEGER NOT NULL DEFAULT 1,\n PRIMARY KEY (message_id, agent_name)\n);\n\nCREATE TABLE IF NOT EXISTS invocation_batches (\n id INTEGER PRIMARY KEY,\n trigger_message_id INTEGER NOT NULL REFERENCES messages(id),\n chain_root_batch_id INTEGER,\n chain_depth INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS jobs (\n id INTEGER PRIMARY KEY,\n batch_id INTEGER NOT NULL REFERENCES invocation_batches(id),\n agent_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n output_message_id INTEGER REFERENCES messages(id),\n error TEXT,\n requested_by_user_id TEXT REFERENCES users(id),\n requested_by_email TEXT,\n effective_mode TEXT,\n effective_profile TEXT,\n waiting_request_id INTEGER REFERENCES job_input_requests(id),\n last_resumed_at TEXT,\n resume_count INTEGER NOT NULL DEFAULT 0,\n started_at TEXT,\n completed_at TEXT\n);\n\nCREATE TABLE IF NOT EXISTS permissions (\n id INTEGER PRIMARY KEY,\n user_id TEXT REFERENCES users(id),\n email TEXT NOT NULL,\n topic_id INTEGER,\n target_agent TEXT NOT NULL,\n allowed INTEGER NOT NULL,\n UNIQUE (email, topic_id, target_agent)\n);\n\nCREATE UNIQUE INDEX IF NOT EXISTS idx_permissions_global\n ON permissions (email, target_agent) WHERE topic_id IS NULL;\n\nCREATE TABLE IF NOT EXISTS topic_aliases (\n topic_id INTEGER NOT NULL REFERENCES topics(id),\n alias TEXT NOT NULL,\n agent_name TEXT NOT NULL,\n PRIMARY KEY (topic_id, alias)\n);\n\nCREATE TABLE IF NOT EXISTS usage_log (\n id INTEGER PRIMARY KEY,\n user_id TEXT REFERENCES users(id),\n user_email TEXT,\n agent_name TEXT NOT NULL,\n job_id INTEGER NOT NULL REFERENCES jobs(id),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS events (\n id INTEGER PRIMARY KEY,\n kind TEXT NOT NULL,\n topic_id INTEGER,\n payload TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS artifacts (\n id INTEGER PRIMARY KEY,\n topic_id INTEGER NOT NULL REFERENCES topics(id),\n artifact_class TEXT NOT NULL CHECK (artifact_class IN ('document')),\n kind TEXT NOT NULL,\n title TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'draft',\n canonical_source TEXT NOT NULL DEFAULT 'db',\n current_version_id INTEGER,\n promoted_repo_path TEXT,\n promoted_commit_sha TEXT,\n created_by_agent TEXT,\n created_by_user_id TEXT REFERENCES users(id),\n created_by_user_email TEXT,\n created_by_job_id INTEGER REFERENCES jobs(id),\n created_from_message_id INTEGER REFERENCES messages(id),\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS artifact_versions (\n id INTEGER PRIMARY KEY,\n artifact_id INTEGER NOT NULL REFERENCES artifacts(id),\n version INTEGER NOT NULL,\n content_type TEXT NOT NULL CHECK (content_type = 'text/markdown'),\n body TEXT NOT NULL,\n summary TEXT,\n created_by_agent TEXT,\n created_by_user_id TEXT REFERENCES users(id),\n created_by_user_email TEXT,\n created_by_job_id INTEGER REFERENCES jobs(id),\n source_message_id INTEGER REFERENCES messages(id),\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE (artifact_id, version)\n);\n\nCREATE TABLE IF NOT EXISTS message_artifacts (\n message_id INTEGER NOT NULL REFERENCES messages(id),\n artifact_id INTEGER NOT NULL REFERENCES artifacts(id),\n artifact_version_id INTEGER NOT NULL REFERENCES artifact_versions(id),\n relation TEXT NOT NULL,\n PRIMARY KEY (message_id, artifact_id, artifact_version_id)\n);\n\nCREATE TABLE IF NOT EXISTS job_input_requests (\n id INTEGER PRIMARY KEY,\n job_id INTEGER NOT NULL REFERENCES jobs(id),\n topic_id INTEGER NOT NULL REFERENCES topics(id),\n requested_by_agent TEXT NOT NULL,\n requested_by_message_id INTEGER REFERENCES messages(id),\n requested_by_user_id TEXT NOT NULL REFERENCES users(id),\n status TEXT NOT NULL CHECK (status IN ('pending', 'answered', 'cancelled', 'expired')),\n request_key TEXT NOT NULL,\n title TEXT NOT NULL,\n kind TEXT NOT NULL CHECK (kind IN ('confirm', 'single_select', 'multi_select', 'short_text', 'long_text')),\n prompt TEXT NOT NULL,\n form_json TEXT NOT NULL,\n response_json TEXT,\n answered_by_user_id TEXT REFERENCES users(id),\n answered_at TEXT,\n expires_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE UNIQUE INDEX IF NOT EXISTS idx_job_input_requests_pending_per_job\n ON job_input_requests (job_id)\n WHERE status = 'pending';\n\nCREATE INDEX IF NOT EXISTS idx_job_input_requests_topic_status\n ON job_input_requests (topic_id, status, created_at);\n\nCREATE INDEX IF NOT EXISTS idx_job_input_requests_job\n ON job_input_requests (job_id, created_at DESC);\n\n"; //# sourceMappingURL=schema.d.ts.map