diff options
| author | Ward Peeters <ward@coding-tech.com> | 2026-07-04 00:29:42 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-04 01:29:42 +0300 |
| commit | d0e333451bd794a419e96f28db925772950ea156 (patch) | |
| tree | 1a6e5d3bd6ac40f8ef454058f069d30202327002 /src/detect | |
| parent | d5521e3d250498df4af552fff83fce3d5ef33810 (diff) | |
feat: add mastracode integration (#788)
* feat: add mastracode integration
refs #337
Co-authored-by: Mastra Code (openai/gpt-5.5) <noreply@mastra.ai>
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
Diffstat (limited to 'src/detect')
| -rw-r--r-- | src/detect/mod.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/detect/mod.rs b/src/detect/mod.rs index cd350331..3520f010 100644 --- a/src/detect/mod.rs +++ b/src/detect/mod.rs @@ -50,6 +50,7 @@ pub enum Agent { Antigravity, Cline, Omp, + Mastracode, OpenCode, GithubCopilot, Kimi, @@ -96,6 +97,7 @@ pub fn agent_label(agent: Agent) -> &'static str { Agent::Antigravity => "agy", Agent::Cline => "cline", Agent::Omp => "omp", + Agent::Mastracode => "mastracode", Agent::OpenCode => "opencode", Agent::GithubCopilot => "copilot", Agent::Kimi => "kimi", @@ -121,6 +123,7 @@ pub fn parse_agent_label(agent: &str) -> Option<Agent> { "agy" | "antigravity" | "antigravity-cli" => Some(Agent::Antigravity), "cline" => Some(Agent::Cline), "omp" => Some(Agent::Omp), + "mastracode" | "mastra-code" | "mastra code" => Some(Agent::Mastracode), "opencode" | "open-code" => Some(Agent::OpenCode), "copilot" | "github-copilot" | "ghcs" => Some(Agent::GithubCopilot), "kimi" | "kimi-code" | "kimi code" => Some(Agent::Kimi), @@ -150,6 +153,7 @@ pub fn identify_agent(process_name: &str) -> Option<Agent> { "agy" | "antigravity" | "antigravity-cli" => Some(Agent::Antigravity), "cline" => Some(Agent::Cline), "omp" => Some(Agent::Omp), + "mastracode" | "mastra-code" | "mastra code" => Some(Agent::Mastracode), "opencode" | "open-code" => Some(Agent::OpenCode), "copilot" | "github-copilot" | "ghcs" => Some(Agent::GithubCopilot), "kimi" | "kimi-code" | "kimi code" => Some(Agent::Kimi), @@ -242,6 +246,7 @@ pub(crate) fn full_lifecycle_hook_authority(source: &str, agent_label: &str) -> (source, agent_label), ("herdr:pi", "pi") | ("herdr:omp", "omp") + | ("herdr:mastracode", "mastracode") | ("herdr:hermes", "hermes") | ("herdr:opencode", "opencode") | ("herdr:kilo", "kilo") @@ -621,6 +626,8 @@ mod tests { 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("mastracode"), Some(Agent::Mastracode)); + assert_eq!(identify_agent("mastra-code"), Some(Agent::Mastracode)); 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)); @@ -646,6 +653,8 @@ mod tests { 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("mastracode"), Some(Agent::Mastracode)); + assert_eq!(parse_agent_label("mastra code"), Some(Agent::Mastracode)); 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)); @@ -668,6 +677,7 @@ mod tests { 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::Mastracode), "mastracode"); assert_eq!(agent_label(Agent::Kiro), "kiro"); assert_eq!(agent_label(Agent::Grok), "grok"); assert_eq!(agent_label(Agent::Hermes), "hermes"); @@ -675,6 +685,15 @@ mod tests { } #[test] + fn mastracode_is_hook_authority_without_screen_manifest() { + assert!(full_lifecycle_hook_authority( + "herdr:mastracode", + "mastracode" + )); + assert!(!Agent::SCREEN_MANIFEST_AGENTS.contains(&Agent::Mastracode)); + } + + #[test] fn identify_unknown_processes() { assert_eq!(identify_agent("bash"), None); assert_eq!(identify_agent("zsh"), None); |
