-- 智能体任务持久化表
-- 支持 DAG 依赖模式 (blocked_by) 和任务状态生命周期
--
-- Status lifecycle:
--   pending     -> in_progress -> completed
--   (可回退: in_progress -> pending)
--
-- blocked_by 存储 JSON 数组格式: ["task_id_1", "task_id_2"]
-- 应用层负责验证 DAG 有效性（无自引用、无循环依赖）

CREATE TABLE IF NOT EXISTS agent_tasks (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    session_id TEXT NOT NULL,
    task_id TEXT NOT NULL,
    content TEXT NOT NULL DEFAULT '',
    status TEXT NOT NULL DEFAULT 'pending'
        CHECK(status IN ('pending', 'in_progress', 'completed')),
    blocked_by TEXT NOT NULL DEFAULT '[]',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (session_id) REFERENCES agent_sessions(session_id) ON DELETE CASCADE
);

-- 按会话查询任务（最常用）
CREATE INDEX IF NOT EXISTS idx_agent_tasks_session ON agent_tasks(session_id);

-- 按状态过滤（用于恢复/展示）
CREATE INDEX IF NOT EXISTS idx_agent_tasks_status ON agent_tasks(session_id, status);

-- 保证同一会话内 task_id 唯一
CREATE UNIQUE INDEX IF NOT EXISTS idx_agent_tasks_session_task ON agent_tasks(session_id, task_id);
