-- 智能体身份隔离与团队协作支持
--
-- 为子代理（delegate_research）和多智能体团队（spawn_teammate）
-- 提供 agent 粒度的消息隔离、审计追踪和任务归属。
--
-- 所有 ALTER TABLE 使用 DEFAULT 值，保证向后兼容：
-- 现有数据自动标记为 'lead'，旧代码无需修改。

-- 1. agent_messages: 消息归属
ALTER TABLE agent_messages ADD COLUMN agent_name TEXT NOT NULL DEFAULT 'lead';

-- 2. agent_audit_log: 审计归属
ALTER TABLE agent_audit_log ADD COLUMN agent_name TEXT NOT NULL DEFAULT 'lead';

-- 3. agent_tasks: 任务分配目标（支持角色路由）
ALTER TABLE agent_tasks ADD COLUMN owner TEXT NOT NULL DEFAULT '';

-- 4. 新建: 团队成员注册表
CREATE TABLE IF NOT EXISTS agent_team_members (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    session_id TEXT NOT NULL,
    agent_name TEXT NOT NULL,
    agent_role TEXT NOT NULL,
    status TEXT NOT NULL DEFAULT 'active'
        CHECK(status IN ('spawning', 'active', 'idle', 'shutdown')),
    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,
    UNIQUE(session_id, agent_name)
);

CREATE INDEX IF NOT EXISTS idx_team_members_session ON agent_team_members(session_id);
CREATE INDEX IF NOT EXISTS idx_team_members_status ON agent_team_members(session_id, status);

-- 重建 agent_messages 索引（包含 agent_name 过滤加速）
CREATE INDEX IF NOT EXISTS idx_agent_messages_agent ON agent_messages(session_id, agent_name);
