diff --git a/src-tauri/src/models/agent.rs b/src-tauri/src/models/agent.rs index b390c91..c199f8a 100644 --- a/src-tauri/src/models/agent.rs +++ b/src-tauri/src/models/agent.rs @@ -176,15 +176,15 @@ impl Agent { let now = chrono::Utc::now().to_rfc3339(); if existing.is_default { - if existing.name != name || existing.role != role || existing.tool != tool { + if existing.name != name || existing.role != role { return Err(rusqlite::Error::InvalidParameterName( - "Default agents cannot change name, role, or tool".to_string(), + "Default agents cannot change name or role".to_string(), )); } conn.execute( - "UPDATE agents SET custom_prompt = ?1, updated_at = ?2 WHERE id = ?3", - params![custom_prompt, now, id], + "UPDATE agents SET tool = ?1, custom_prompt = ?2, updated_at = ?3 WHERE id = ?4", + params![tool.as_str(), custom_prompt, now, id], )?; return Ok(()); } @@ -308,7 +308,7 @@ mod tests { } #[test] - fn test_update_default_agent_allows_prompt_only() { + fn test_update_default_agent_allows_tool_and_prompt_only() { let conn = setup(); let analyst = Agent::get_default_by_role(&conn, AgentRole::Analyst).unwrap(); @@ -323,19 +323,20 @@ mod tests { .unwrap_err(); assert!(err .to_string() - .contains("Default agents cannot change name, role, or tool")); + .contains("Default agents cannot change name or role")); Agent::update( &conn, &analyst.id, &analyst.name, analyst.role.clone(), - analyst.tool.clone(), + AgentTool::ClaudeCode, "Prompt override", ) .unwrap(); let updated = Agent::get_by_id(&conn, &analyst.id).unwrap(); + assert_eq!(updated.tool, AgentTool::ClaudeCode); assert_eq!(updated.custom_prompt, "Prompt override"); } diff --git a/src/components/agents/AgentForm.tsx b/src/components/agents/AgentForm.tsx index 3c107c8..8af623e 100644 --- a/src/components/agents/AgentForm.tsx +++ b/src/components/agents/AgentForm.tsx @@ -82,7 +82,8 @@ export default function AgentForm() { {initializing &&