diff --git a/src-tauri/src/wsl_bridge.rs b/src-tauri/src/wsl_bridge.rs index 18c8d78..8f877c7 100644 --- a/src-tauri/src/wsl_bridge.rs +++ b/src-tauri/src/wsl_bridge.rs @@ -901,7 +901,8 @@ fn process_json_line( } // Emit agent-start event for Task tool invocations - if name == "Task" { + // Support both "Task" and "Task(agent_type)" syntax (CLI v2.1.33+) + if name == "Task" || name.starts_with("Task(") { let description = input .get("description") .and_then(|v| v.as_str()) @@ -1496,7 +1497,7 @@ fn get_tool_state(tool_name: &str) -> CharacterState { CharacterState::Coding } else if tool_name.starts_with("mcp__") { CharacterState::Mcp - } else if tool_name == "Task" { + } else if tool_name == "Task" || tool_name.starts_with("Task(") { CharacterState::Thinking } else { CharacterState::Typing @@ -1623,6 +1624,19 @@ mod tests { #[test] fn test_get_tool_state_task() { assert!(matches!(get_tool_state("Task"), CharacterState::Thinking)); + // Test CLI v2.1.33+ Task(agent_type) syntax + assert!(matches!( + get_tool_state("Task(Explore)"), + CharacterState::Thinking + )); + assert!(matches!( + get_tool_state("Task(Plan)"), + CharacterState::Thinking + )); + assert!(matches!( + get_tool_state("Task(general-purpose)"), + CharacterState::Thinking + )); } #[test]