-- ============ 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 前全量物化到 /agent-homes//。 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);