aboutsummaryrefslogtreecommitdiff
path: root/src/agent_resume.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-04 23:09:15 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-04 23:17:45 +0300
commit9b2749776a97bf373e50819dd8a66f290e421551 (patch)
tree12d94fda11175c63c613403ddb58d2fa5d515445 /src/agent_resume.rs
parent9c18014c09ca419e517dc3ff5684287cd0f47d43 (diff)
feat: add droid integration
Diffstat (limited to 'src/agent_resume.rs')
-rw-r--r--src/agent_resume.rs31
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]