37 lines
1.1 KiB
SQL
37 lines
1.1 KiB
SQL
-- R4.2 P0-B durable Message/Handoff Fabric.
|
|
-- Forward-only. The existing 20260707 message_outbox remains a compatibility source.
|
|
|
|
CREATE TABLE IF NOT EXISTS message_handoff (
|
|
envelope_id TEXT PRIMARY KEY,
|
|
stream_key TEXT NOT NULL,
|
|
source TEXT NOT NULL,
|
|
target TEXT NOT NULL,
|
|
message_type TEXT NOT NULL,
|
|
payload_json TEXT NOT NULL,
|
|
payload_sha256 TEXT NOT NULL,
|
|
tenant_id TEXT,
|
|
user_id TEXT,
|
|
project_id TEXT,
|
|
conversation_id TEXT,
|
|
task_id TEXT,
|
|
run_id TEXT,
|
|
causation_id TEXT,
|
|
sequence INTEGER NOT NULL CHECK(sequence >= 1),
|
|
capability_scope_json TEXT NOT NULL,
|
|
confidentiality_scope TEXT NOT NULL,
|
|
idempotency_key TEXT NOT NULL,
|
|
expires_at TEXT,
|
|
created_at TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'PENDING',
|
|
delivered_at TEXT,
|
|
acked_at TEXT,
|
|
UNIQUE(stream_key, idempotency_key),
|
|
UNIQUE(stream_key, sequence)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_handoff_target_status
|
|
ON message_handoff(target, status, created_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_handoff_scope
|
|
ON message_handoff(tenant_id, project_id, user_id, conversation_id, run_id);
|