(name: &str)
| 3488 | } |
| 3489 | |
| 3490 | fn task_kind_from_tool_name(name: &str) -> TaskKind { |
| 3491 | let normalized = name.trim().to_ascii_lowercase(); |
| 3492 | if normalized.is_empty() { |
| 3493 | return TaskKind::ToolCall; |
| 3494 | } |
| 3495 | |
| 3496 | if normalized.contains("read") |
| 3497 | || normalized.contains("grep") |
| 3498 | || normalized.contains("glob") |
| 3499 | || normalized.contains("list") |
| 3500 | { |
| 3501 | return TaskKind::FileRead; |
| 3502 | } |
| 3503 | if normalized.contains("write") |
| 3504 | || normalized.contains("edit") |
| 3505 | || normalized.contains("patch") |
| 3506 | || normalized.contains("todo") |
| 3507 | { |
| 3508 | return TaskKind::FileWrite; |
| 3509 | } |
| 3510 | if normalized.contains("bash") |
| 3511 | || normalized.contains("shell") |
| 3512 | || normalized.contains("exec") |
| 3513 | || normalized.contains("command") |
| 3514 | { |
| 3515 | return TaskKind::CommandExec; |
| 3516 | } |
| 3517 | |
| 3518 | TaskKind::ToolCall |
| 3519 | } |
| 3520 | |
| 3521 | fn map_mcp_status(server: &McpStatusInfo) -> McpConnectionStatus { |
| 3522 | match server.status.as_str() { |
no test coverage detected