-- Migration 010: on-demand klbr peer sessions and correlated requests.
BEGIN IMMEDIATE;
CREATE TABLE peer_sessions (
peer_id TEXT PRIMARY KEY REFERENCES sessions(id),
owner_session_id TEXT NOT NULL REFERENCES sessions(id),
init_mode TEXT NOT NULL CHECK(init_mode IN ('resume','independent','branch')),
profile TEXT,
workspace TEXT,
kernel_target TEXT,
budget TEXT,
branch_parent_revision TEXT,
created_ms INTEGER NOT NULL CHECK(created_ms >= 0)
) STRICT;
CREATE INDEX idx_peer_sessions_owner ON peer_sessions(owner_session_id);
CREATE TABLE peer_requests (
request_id TEXT PRIMARY KEY,
sender_session_id TEXT NOT NULL REFERENCES sessions(id),
peer_id TEXT NOT NULL REFERENCES sessions(id),
text TEXT NOT NULL,
evidence_refs TEXT NOT NULL DEFAULT '[]' CHECK(json_valid(evidence_refs)),
status TEXT NOT NULL DEFAULT 'admitted' CHECK(status IN ('admitted','cancelled','completed','failed')),
admitted_at_ms INTEGER NOT NULL CHECK(admitted_at_ms >= 0),
completed_at_ms INTEGER CHECK(completed_at_ms IS NULL OR completed_at_ms >= 0),
result TEXT CHECK(result IS NULL OR json_valid(result)),
error TEXT
) STRICT;
CREATE INDEX idx_peer_requests_peer ON peer_requests(peer_id, status);
CREATE INDEX idx_peer_requests_sender ON peer_requests(sender_session_id, request_id);
PRAGMA user_version = 10;
COMMIT;