From d0e333451bd794a419e96f28db925772950ea156 Mon Sep 17 00:00:00 2001 From: Ward Peeters Date: Sat, 4 Jul 2026 00:29:42 +0200 Subject: feat: add mastracode integration (#788) * feat: add mastracode integration refs #337 Co-authored-by: Mastra Code (openai/gpt-5.5) Co-authored-by: Ogulcan Celik --- src/agent_resume.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/agent_resume.rs') diff --git a/src/agent_resume.rs b/src/agent_resume.rs index 5c1001cb..facb9cf1 100644 --- a/src/agent_resume.rs +++ b/src/agent_resume.rs @@ -140,6 +140,13 @@ pub fn plan(source: &str, agent: &str, session_ref: &AgentSessionRef) -> Option< ("herdr:kimi", "kimi", AgentSessionRefKind::Id) => { vec!["kimi".into(), "--session".into(), session_ref.value.clone()] } + ("herdr:mastracode", "mastracode", AgentSessionRefKind::Id) => { + vec![ + "mastracode".into(), + "--thread".into(), + session_ref.value.clone(), + ] + } ("herdr:pi", "pi", AgentSessionRefKind::Path | AgentSessionRefKind::Id) => { vec!["pi".into(), "--session".into(), session_ref.value.clone()] } @@ -206,6 +213,7 @@ fn is_official_agent_source(source: &str, agent: &str) -> bool { | ("herdr:droid", "droid") | ("herdr:kimi", "kimi") | ("herdr:omp", "omp") + | ("herdr:mastracode", "mastracode") | ("herdr:pi", "pi") | ("herdr:hermes", "hermes") | ("herdr:opencode", "opencode") @@ -314,6 +322,16 @@ mod tests { .argv, vec!["kimi", "--session", "kimi-session"] ); + assert_eq!( + plan( + "herdr:mastracode", + "mastracode", + &AgentSessionRef::id("mastracode-session").unwrap() + ) + .unwrap() + .argv, + vec!["mastracode", "--thread", "mastracode-session"] + ); assert_eq!( plan( "herdr:pi", @@ -490,6 +508,16 @@ mod tests { assert_eq!(session_ref.kind, AgentSessionRefKind::Id); assert_eq!(session_ref.value, "kimi-id"); + let session_ref = session_ref_from_report( + "herdr:mastracode", + "mastracode", + Some("mastracode-id".into()), + None, + ) + .unwrap(); + assert_eq!(session_ref.kind, AgentSessionRefKind::Id); + assert_eq!(session_ref.value, "mastracode-id"); + let session_ref = session_ref_from_report("herdr:kilo", "kilo", Some("kilo-id".into()), None).unwrap(); assert_eq!(session_ref.kind, AgentSessionRefKind::Id); @@ -591,6 +619,13 @@ mod tests { &AgentSessionRef::path(&devin_session).unwrap() ) .is_none()); + assert!(session_ref_from_snapshot( + "herdr:mastracode", + "mastracode", + AgentSessionRefKind::Id, + "mastracode-session" + ) + .is_some()); assert!(session_ref_from_snapshot( "herdr:hermes", "hermes", -- cgit v1.2.3