-- 021_sessions.sql -- Anonymous / session participants for workflow channels (v0.24.3) CREATE TABLE IF NOT EXISTS session_participants ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), session_token TEXT NOT NULL UNIQUE, channel_id UUID NOT NULL REFERENCES channels(id) ON DELETE CASCADE, display_name TEXT NOT NULL DEFAULT 'Visitor', fingerprint TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX IF NOT EXISTS idx_session_participants_channel ON session_participants(channel_id); CREATE INDEX IF NOT EXISTS idx_session_participants_token ON session_participants(session_token); COMMENT ON TABLE session_participants IS 'Ephemeral identities for anonymous workflow channel visitors.'; -- Allow channels to opt in to anonymous session access. ALTER TABLE channels ADD COLUMN IF NOT EXISTS allow_anonymous BOOLEAN NOT NULL DEFAULT FALSE; COMMENT ON COLUMN channels.allow_anonymous IS 'When true, unauthenticated visitors can join via session token (workflow channels only).';