trail-boss/daemon/schema.sql
jedarden fbaf1d86ab feat(trail-boss): commit phase 3 daemon code (previously untracked)
daemon/ (index.ts, types.ts, claude-adapter.ts, db.ts, reconcile.ts, schema.sql),
package.json, and test scripts were implemented but never staged. Phase 3 exit
criteria verified per PROGRESS.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 22:57:51 -04:00

28 lines
1.3 KiB
SQL

-- Trail Boss SQLite Schema
-- The session registry and FIFO queue state
CREATE TABLE IF NOT EXISTS sessions (
session_id TEXT PRIMARY KEY,
pane_id TEXT NOT NULL,
cwd TEXT NOT NULL,
transcript_path TEXT NOT NULL,
last_seen_at INTEGER NOT NULL, -- unix timestamp
last_stuck_at INTEGER, -- unix timestamp of last Stop/PermissionRequest
last_stuck_reason TEXT, -- 'stopped' | 'permission'
last_message TEXT, -- last_assistant_message or tool_name+input
created_at INTEGER NOT NULL -- unix timestamp
);
CREATE TABLE IF NOT EXISTS queue (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL REFERENCES sessions(session_id),
stuck_at INTEGER NOT NULL, -- unix timestamp when stuck (for FIFO ordering)
reason TEXT NOT NULL, -- 'stopped' | 'permission'
skip_cooldown_until INTEGER, -- unix timestamp; if set, not eligible as head
dequeued_at INTEGER, -- set when removed via reconcile/UserPromptSubmit
created_at INTEGER NOT NULL -- unix timestamp
);
CREATE INDEX IF NOT EXISTS queue_fifo ON queue (stuck_at ASC) WHERE dequeued_at IS NULL;
CREATE INDEX IF NOT EXISTS queue_session ON queue (session_id);
CREATE INDEX IF NOT EXISTS sessions_pane ON sessions (pane_id);