-- ============ AgentKind client_type ============
-- client_type 决定 spawn 时注入哪个配置目录重定向变量（CLAUDE_CONFIG_DIR /
-- CODEX_HOME / GEMINI_CLI_HOME）以及前端渲染哪套配置表单。generic 仅注入 HOME。
ALTER TABLE acp_agent_kinds ADD COLUMN client_type TEXT NOT NULL DEFAULT 'generic';
ALTER TABLE acp_agent_kinds
  ADD CONSTRAINT acp_agent_kinds_client_type_check
  CHECK (client_type IN ('claude_code', 'codex', 'gemini', 'generic'));

-- ============ AgentKind 配置文件 ============
-- rel_path 相对受管 home 目录（如 .claude/settings.json、.codex/config.toml）。
-- encrypted_content 是 AES-GCM 密文（内容可能含 auth token / API key）。
-- spawn 前全量物化到 <data_dir>/agent-homes/<agent_kind_id>/。
CREATE TABLE acp_agent_kind_config_files (
  id                 UUID PRIMARY KEY,
  agent_kind_id      UUID NOT NULL REFERENCES acp_agent_kinds(id) ON DELETE CASCADE,
  rel_path           TEXT NOT NULL,
  encrypted_content  BYTEA NOT NULL,
  updated_by         UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
  created_at         TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at         TIMESTAMPTZ NOT NULL DEFAULT now(),
  CONSTRAINT acp_agent_kind_config_files_unique UNIQUE (agent_kind_id, rel_path)
);
CREATE INDEX idx_acp_agent_kind_config_files_kind ON acp_agent_kind_config_files(agent_kind_id);
