52 lines
1.4 KiB
SQL
52 lines
1.4 KiB
SQL
CREATE TABLE IF NOT EXISTS threads (
|
|
thread_id TEXT PRIMARY KEY,
|
|
run_id TEXT NOT NULL,
|
|
task_id TEXT NOT NULL,
|
|
subject TEXT NOT NULL,
|
|
created_by TEXT NOT NULL,
|
|
assigned_to TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
priority TEXT NOT NULL DEFAULT 'normal',
|
|
latest_message_id TEXT,
|
|
created_at TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS messages (
|
|
message_id TEXT PRIMARY KEY,
|
|
thread_id TEXT NOT NULL,
|
|
from_agent TEXT NOT NULL,
|
|
to_agent TEXT NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
summary TEXT NOT NULL,
|
|
body TEXT NOT NULL DEFAULT '',
|
|
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL,
|
|
FOREIGN KEY(thread_id) REFERENCES threads(thread_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS leases (
|
|
thread_id TEXT PRIMARY KEY,
|
|
agent_id TEXT NOT NULL,
|
|
lease_token TEXT NOT NULL,
|
|
claimed_at TEXT NOT NULL,
|
|
expires_at TEXT NOT NULL,
|
|
released_at TEXT
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS artifacts (
|
|
artifact_id TEXT PRIMARY KEY,
|
|
message_id TEXT NOT NULL,
|
|
path TEXT NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL,
|
|
FOREIGN KEY(message_id) REFERENCES messages(message_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_threads_status_assigned
|
|
ON threads(status, assigned_to, updated_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_messages_thread_created
|
|
ON messages(thread_id, created_at);
|