From 3b8aeee166d1594e1f8e41631a51748104d76834 Mon Sep 17 00:00:00 2001 From: Tony Solomonik Date: Sat, 11 Jul 2026 01:19:51 +0300 Subject: feat: add maki agent support (#1302) * feat: add maki detection support Maki always draws a one-line status bar at the bottom of the screen, so the manifest reads just that row: a braille spinner before the `[BUILD]`/`[PLAN]`/`[BASH]` mode label means working, the bare label means idle. Blocked states come from the panels that replace the input box, the `Permission Required` dialog with its `y Allow`/`n Deny` hint rows and the `Plan complete` form. Maki emits no OSC title or progress, so these screen rules are the only evidence. Also wires `maki` through process-name identification, per-agent sound overrides, and the website manifest catalog. * docs: stage maki detection docs --- src/detect/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/detect/mod.rs') diff --git a/src/detect/mod.rs b/src/detect/mod.rs index 3520f010..7657ae35 100644 --- a/src/detect/mod.rs +++ b/src/detect/mod.rs @@ -61,10 +61,11 @@ pub enum Agent { Hermes, Kilo, Qodercli, + Maki, } impl Agent { - pub const SCREEN_MANIFEST_AGENTS: [Self; 18] = [ + pub const SCREEN_MANIFEST_AGENTS: [Self; 19] = [ Self::Pi, Self::Claude, Self::Codex, @@ -83,6 +84,7 @@ impl Agent { Self::Hermes, Self::Kilo, Self::Qodercli, + Self::Maki, ]; } @@ -108,6 +110,7 @@ pub fn agent_label(agent: Agent) -> &'static str { Agent::Hermes => "hermes", Agent::Kilo => "kilo", Agent::Qodercli => "qodercli", + Agent::Maki => "maki", } } @@ -134,6 +137,7 @@ pub fn parse_agent_label(agent: &str) -> Option { "hermes" | "hermes-agent" => Some(Agent::Hermes), "kilo" | "kilo-code" | "kilo code" => Some(Agent::Kilo), "qodercli" | "qoderclicn" | "qoder" | "qodercn" => Some(Agent::Qodercli), + "maki" => Some(Agent::Maki), _ => None, } } @@ -164,6 +168,7 @@ pub fn identify_agent(process_name: &str) -> Option { "hermes" | "hermes-agent" => Some(Agent::Hermes), "kilo" | "kilo-code" | "kilo code" => Some(Agent::Kilo), "qodercli" | "qoderclicn" | "qoder" | "qodercn" => Some(Agent::Qodercli), + "maki" => Some(Agent::Maki), _ => None, } } @@ -642,6 +647,7 @@ mod tests { assert_eq!(identify_agent("hermes-agent"), Some(Agent::Hermes)); assert_eq!(identify_agent("kilo"), Some(Agent::Kilo)); assert_eq!(identify_agent("kilo-code"), Some(Agent::Kilo)); + assert_eq!(identify_agent("maki"), Some(Agent::Maki)); } #[test] @@ -666,6 +672,7 @@ mod tests { assert_eq!(parse_agent_label("kiro-cli"), Some(Agent::Kiro)); assert_eq!(parse_agent_label("grok-build"), Some(Agent::Grok)); assert_eq!(parse_agent_label("hermes-agent"), Some(Agent::Hermes)); + assert_eq!(parse_agent_label("maki"), Some(Agent::Maki)); assert_eq!(parse_agent_label("kilo-code"), Some(Agent::Kilo)); } @@ -681,6 +688,7 @@ mod tests { assert_eq!(agent_label(Agent::Kiro), "kiro"); assert_eq!(agent_label(Agent::Grok), "grok"); assert_eq!(agent_label(Agent::Hermes), "hermes"); + assert_eq!(agent_label(Agent::Maki), "maki"); assert_eq!(agent_label(Agent::Kilo), "kilo"); } -- cgit v1.2.3