diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-04 23:09:15 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-04 23:17:45 +0300 |
| commit | 9b2749776a97bf373e50819dd8a66f290e421551 (patch) | |
| tree | 12d94fda11175c63c613403ddb58d2fa5d515445 /src/agent_resume.rs | |
| parent | 9c18014c09ca419e517dc3ff5684287cd0f47d43 (diff) | |
feat: add droid integration
Diffstat (limited to 'src/agent_resume.rs')
| -rw-r--r-- | src/agent_resume.rs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/agent_resume.rs b/src/agent_resume.rs index bfd72d7d..5cbf5741 100644 --- a/src/agent_resume.rs +++ b/src/agent_resume.rs @@ -72,7 +72,10 @@ pub fn session_ref_from_report( pub fn is_reserved_native_state_source(source: &str, agent: &str) -> bool { matches!( (source, agent), - ("herdr:claude", "claude") | ("herdr:codex", "codex") | ("herdr:opencode", "opencode") + ("herdr:claude", "claude") + | ("herdr:codex", "codex") + | ("herdr:droid", "droid") + | ("herdr:opencode", "opencode") ) } @@ -116,6 +119,9 @@ pub fn plan(source: &str, agent: &str, session_ref: &AgentSessionRef) -> Option< ("herdr:copilot", "copilot", AgentSessionRefKind::Id) => { vec!["copilot".into(), format!("--resume={}", session_ref.value)] } + ("herdr:droid", "droid", AgentSessionRefKind::Id) => { + vec!["droid".into(), "--resume".into(), session_ref.value.clone()] + } ("herdr:pi", "pi", AgentSessionRefKind::Path | AgentSessionRefKind::Id) => { vec!["pi".into(), "--session".into(), session_ref.value.clone()] } @@ -156,6 +162,7 @@ fn is_official_agent_source(source: &str, agent: &str) -> bool { ("herdr:claude", "claude") | ("herdr:codex", "codex") | ("herdr:copilot", "copilot") + | ("herdr:droid", "droid") | ("herdr:pi", "pi") | ("herdr:hermes", "hermes") | ("herdr:opencode", "opencode") @@ -211,6 +218,16 @@ mod tests { ); assert_eq!( plan( + "herdr:droid", + "droid", + &AgentSessionRef::id("droid-session").unwrap() + ) + .unwrap() + .argv, + vec!["droid", "--resume", "droid-session"] + ); + assert_eq!( + plan( "herdr:pi", "pi", &AgentSessionRef::path("/tmp/pi-session.jsonl").unwrap() @@ -295,6 +312,18 @@ mod tests { Some("/tmp/copilot-session".into()) ) .is_none()); + + let session_ref = + session_ref_from_report("herdr:droid", "droid", Some("droid-id".into()), None).unwrap(); + assert_eq!(session_ref.kind, AgentSessionRefKind::Id); + assert_eq!(session_ref.value, "droid-id"); + assert!(session_ref_from_report( + "herdr:droid", + "droid", + None, + Some("/tmp/droid-session".into()) + ) + .is_none()); } #[test] |
