pub const OPENCLAW_DDL: &str = r#"CREATE TABLE IF NOT EXISTS schema_meta (
meta_key TEXT NOT NULL PRIMARY KEY,
role TEXT NOT NULL,
schema_version INTEGER NOT NULL,
agent_id TEXT,
app_version TEXT,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS cron_jobs (
store_key TEXT NOT NULL,
job_id TEXT NOT NULL,
declaration_key TEXT,
display_name TEXT,
owner_agent_id TEXT,
owner_session_key TEXT,
name TEXT NOT NULL,
description TEXT,
enabled INTEGER NOT NULL,
delete_after_run INTEGER,
created_at_ms INTEGER NOT NULL,
agent_id TEXT,
session_key TEXT,
schedule_kind TEXT NOT NULL,
schedule_expr TEXT,
schedule_tz TEXT,
every_ms INTEGER,
anchor_ms INTEGER,
at TEXT,
stagger_ms INTEGER,
session_target TEXT NOT NULL,
wake_mode TEXT NOT NULL,
trigger_script TEXT,
trigger_once INTEGER,
payload_kind TEXT NOT NULL,
payload_message TEXT,
payload_model TEXT,
payload_fallbacks_json TEXT,
payload_thinking TEXT,
payload_timeout_seconds INTEGER,
payload_allow_unsafe_external_content INTEGER,
payload_external_content_source_json TEXT,
payload_light_context INTEGER,
payload_tools_allow_json TEXT,
payload_tools_allow_is_default INTEGER,
delivery_mode TEXT,
delivery_channel TEXT,
delivery_to TEXT,
delivery_thread_id TEXT,
delivery_thread_id_type TEXT,
delivery_account_id TEXT,
delivery_best_effort INTEGER,
delivery_completion_mode TEXT,
delivery_completion_to TEXT,
failure_delivery_mode TEXT,
failure_delivery_channel TEXT,
failure_delivery_to TEXT,
failure_delivery_account_id TEXT,
failure_alert_disabled INTEGER,
failure_alert_after INTEGER,
failure_alert_channel TEXT,
failure_alert_to TEXT,
failure_alert_cooldown_ms INTEGER,
failure_alert_include_skipped INTEGER,
failure_alert_mode TEXT,
failure_alert_account_id TEXT,
next_run_at_ms INTEGER,
running_at_ms INTEGER,
last_run_at_ms INTEGER,
last_run_status TEXT,
last_error TEXT,
last_duration_ms INTEGER,
consecutive_errors INTEGER,
consecutive_skipped INTEGER,
schedule_error_count INTEGER,
last_delivery_status TEXT,
last_delivery_error TEXT,
last_delivered INTEGER,
last_failure_alert_at_ms INTEGER,
job_json TEXT NOT NULL,
state_json TEXT NOT NULL DEFAULT '{}',
runtime_updated_at_ms INTEGER,
schedule_identity TEXT,
sort_order INTEGER NOT NULL DEFAULT 0,
updated_at INTEGER NOT NULL,
PRIMARY KEY (store_key, job_id)
);
CREATE INDEX IF NOT EXISTS idx_cron_jobs_store_updated
ON cron_jobs(store_key, sort_order ASC, updated_at DESC, job_id);
CREATE INDEX IF NOT EXISTS idx_cron_jobs_store_order
ON cron_jobs(store_key, sort_order ASC, updated_at ASC, job_id);
CREATE INDEX IF NOT EXISTS idx_cron_jobs_enabled_next_run
ON cron_jobs(store_key, enabled, next_run_at_ms, job_id)
WHERE next_run_at_ms IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_cron_jobs_agent_session
ON cron_jobs(agent_id, session_key, updated_at DESC, job_id)
WHERE agent_id IS NOT NULL OR session_key IS NOT NULL;
CREATE TABLE IF NOT EXISTS cron_run_logs (
store_key TEXT NOT NULL,
job_id TEXT NOT NULL,
seq INTEGER NOT NULL,
ts INTEGER NOT NULL,
status TEXT,
error TEXT,
summary TEXT,
diagnostics_summary TEXT,
delivery_status TEXT,
delivery_error TEXT,
delivered INTEGER,
session_id TEXT,
session_key TEXT,
run_id TEXT,
run_at_ms INTEGER,
duration_ms INTEGER,
next_run_at_ms INTEGER,
model TEXT,
provider TEXT,
total_tokens INTEGER,
entry_json TEXT NOT NULL,
created_at INTEGER NOT NULL,
PRIMARY KEY (store_key, job_id, seq)
);
CREATE INDEX IF NOT EXISTS idx_cron_run_logs_store_ts
ON cron_run_logs(store_key, ts DESC, seq DESC);
CREATE INDEX IF NOT EXISTS idx_cron_run_logs_job_status
ON cron_run_logs(store_key, job_id, status, ts DESC, seq DESC);
CREATE INDEX IF NOT EXISTS idx_cron_run_logs_delivery
ON cron_run_logs(store_key, delivery_status, ts DESC, seq DESC)
WHERE delivery_status IS NOT NULL;
CREATE TABLE IF NOT EXISTS delivery_queue_entries (
queue_name TEXT NOT NULL,
id TEXT NOT NULL,
status TEXT NOT NULL,
entry_kind TEXT,
session_key TEXT,
channel TEXT,
target TEXT,
account_id TEXT,
retry_count INTEGER NOT NULL DEFAULT 0,
last_attempt_at INTEGER,
last_error TEXT,
recovery_state TEXT,
platform_send_started_at INTEGER,
entry_json TEXT NOT NULL,
enqueued_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
failed_at INTEGER,
PRIMARY KEY (queue_name, id)
);
CREATE INDEX IF NOT EXISTS idx_delivery_queue_pending
ON delivery_queue_entries(queue_name, status, enqueued_at, id);
CREATE INDEX IF NOT EXISTS idx_delivery_queue_failed
ON delivery_queue_entries(queue_name, status, failed_at, id);
CREATE INDEX IF NOT EXISTS idx_delivery_queue_session
ON delivery_queue_entries(queue_name, status, session_key, enqueued_at, id)
WHERE session_key IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_delivery_queue_target
ON delivery_queue_entries(queue_name, status, channel, target, enqueued_at, id)
WHERE channel IS NOT NULL AND target IS NOT NULL;
"#;Expand description
The pinned v2026.7.1-2 schema, transcribed column for column.