diff options
Diffstat (limited to 'src/detect')
| -rw-r--r-- | src/detect/manifest.rs | 2 | ||||
| -rw-r--r-- | src/detect/manifest/tests.rs | 23 | ||||
| -rw-r--r-- | src/detect/mod.rs | 26 |
3 files changed, 27 insertions, 24 deletions
diff --git a/src/detect/manifest.rs b/src/detect/manifest.rs index a6da1277..f798e871 100644 --- a/src/detect/manifest.rs +++ b/src/detect/manifest.rs @@ -288,7 +288,7 @@ fn manifest_cache() -> &'static RwLock<ManifestCache> { fn build_manifest_cache() -> ManifestCache { ManifestCache { - manifests: Agent::ALL + manifests: Agent::SCREEN_MANIFEST_AGENTS .into_iter() .map(|agent| (agent, load_manifest_uncached(agent))) .collect(), diff --git a/src/detect/manifest/tests.rs b/src/detect/manifest/tests.rs index 2570aa03..30a94220 100644 --- a/src/detect/manifest/tests.rs +++ b/src/detect/manifest/tests.rs @@ -291,28 +291,7 @@ fn detection_uses_cached_manifest_until_explicit_reload() { #[test] fn all_bundled_manifests_parse_and_validate() { - let agents = [ - Agent::Pi, - Agent::Claude, - Agent::Codex, - Agent::Gemini, - Agent::Cursor, - Agent::Devin, - Agent::Antigravity, - Agent::Cline, - Agent::OpenCode, - Agent::GithubCopilot, - Agent::Kimi, - Agent::Kiro, - Agent::Droid, - Agent::Amp, - Agent::Grok, - Agent::Hermes, - Agent::Kilo, - Agent::Qodercli, - ]; - - for agent in agents { + for agent in Agent::SCREEN_MANIFEST_AGENTS { assert!( bundled_manifest(agent).is_some(), "missing bundled manifest for {}", diff --git a/src/detect/mod.rs b/src/detect/mod.rs index 66443877..c8292ab2 100644 --- a/src/detect/mod.rs +++ b/src/detect/mod.rs @@ -49,6 +49,7 @@ pub enum Agent { Devin, Antigravity, Cline, + Omp, OpenCode, GithubCopilot, Kimi, @@ -62,7 +63,7 @@ pub enum Agent { } impl Agent { - pub const ALL: [Self; 18] = [ + pub const SCREEN_MANIFEST_AGENTS: [Self; 18] = [ Self::Pi, Self::Claude, Self::Codex, @@ -94,6 +95,7 @@ pub fn agent_label(agent: Agent) -> &'static str { Agent::Devin => "devin", Agent::Antigravity => "agy", Agent::Cline => "cline", + Agent::Omp => "omp", Agent::OpenCode => "opencode", Agent::GithubCopilot => "copilot", Agent::Kimi => "kimi", @@ -118,6 +120,7 @@ pub fn parse_agent_label(agent: &str) -> Option<Agent> { "devin" | "devin-cli" | "devin cli" => Some(Agent::Devin), "agy" | "antigravity" | "antigravity-cli" => Some(Agent::Antigravity), "cline" => Some(Agent::Cline), + "omp" => Some(Agent::Omp), "opencode" | "open-code" => Some(Agent::OpenCode), "copilot" | "github-copilot" | "ghcs" => Some(Agent::GithubCopilot), "kimi" | "kimi-code" | "kimi code" => Some(Agent::Kimi), @@ -146,6 +149,7 @@ pub fn identify_agent(process_name: &str) -> Option<Agent> { "devin" | "devin-cli" | "devin cli" => Some(Agent::Devin), "agy" | "antigravity" | "antigravity-cli" => Some(Agent::Antigravity), "cline" => Some(Agent::Cline), + "omp" => Some(Agent::Omp), "opencode" | "open-code" => Some(Agent::OpenCode), "copilot" | "github-copilot" | "ghcs" => Some(Agent::GithubCopilot), "kimi" | "kimi-code" | "kimi code" => Some(Agent::Kimi), @@ -592,6 +596,7 @@ mod tests { assert_eq!(identify_agent("agy"), Some(Agent::Antigravity)); assert_eq!(identify_agent("antigravity-cli"), Some(Agent::Antigravity)); assert_eq!(identify_agent("cline"), Some(Agent::Cline)); + assert_eq!(identify_agent("omp"), Some(Agent::Omp)); assert_eq!(identify_agent("opencode"), Some(Agent::OpenCode)); assert_eq!(identify_agent("opencode.exe"), Some(Agent::OpenCode)); assert_eq!(identify_agent("kimi"), Some(Agent::Kimi)); @@ -616,6 +621,7 @@ mod tests { assert_eq!(parse_agent_label("devin-cli"), Some(Agent::Devin)); assert_eq!(parse_agent_label("agy"), Some(Agent::Antigravity)); assert_eq!(parse_agent_label("antigravity"), Some(Agent::Antigravity)); + assert_eq!(parse_agent_label("omp"), Some(Agent::Omp)); assert_eq!(parse_agent_label("opencode.exe"), Some(Agent::OpenCode)); assert_eq!(parse_agent_label("copilot"), Some(Agent::GithubCopilot)); assert_eq!(parse_agent_label("kimi-code"), Some(Agent::Kimi)); @@ -637,6 +643,7 @@ mod tests { assert_eq!(agent_label(Agent::OpenCode), "opencode"); assert_eq!(agent_label(Agent::Devin), "devin"); assert_eq!(agent_label(Agent::Antigravity), "agy"); + assert_eq!(agent_label(Agent::Omp), "omp"); assert_eq!(agent_label(Agent::Kiro), "kiro"); assert_eq!(agent_label(Agent::Grok), "grok"); assert_eq!(agent_label(Agent::Hermes), "hermes"); @@ -759,6 +766,23 @@ mod tests { } #[test] + fn identify_agent_in_job_detects_bun_wrapped_omp() { + let job = crate::platform::ForegroundJob { + process_group_id: 123, + processes: vec![foreground_process( + 123, + "bun", + &["bun", "/home/can/.bun/bin/omp"], + )], + }; + + assert_eq!( + identify_agent_in_job(&job), + Some((Agent::Omp, "omp".to_string())) + ); + } + + #[test] fn identify_agent_in_job_detects_windows_cmd_wrapped_codex() { let job = crate::platform::ForegroundJob { process_group_id: 123, |
