-- Explicit terminal outcome kind for chat messages (MUL-4351). -- -- 'message' — an ordinary user/assistant message (the default; every -- existing row and every legacy client sees this). -- 'no_response' — the agent completed a direct-chat turn without any text -- reply. This is a visible, deliberate terminal outcome: the -- turn boundary is now owned by chat_input_task_id, not by the -- presence of an assistant row, so we no longer need to fake a -- blank bubble to advance the conversation. The frontend -- renders a localized "no text reply this turn" state while old -- clients fall back to the non-empty English content we still -- store on the row. -- -- Additive and app-validated: no CHECK constraint / FK / cascade so new kinds -- can be introduced without a migration and unknown values degrade to 'message' -- on older readers. ALTER TABLE chat_message ADD COLUMN IF NOT EXISTS message_kind TEXT NOT NULL DEFAULT 'message';