aboutsummaryrefslogtreecommitdiff
path: root/src/agent_resume.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-13 18:36:47 +0300
committerGitHub <noreply@github.com>2026-09-13 17:36:47 +0200
commitfc1cb77f0572948552377b23f7754a3016ac7dfa (patch)
tree5412b796aaaa00894fe628b2ffed8d747e6f452d /src/agent_resume.rs
parent3be35231497f33f38aeffd84df02642479995bc6 (diff)
feat: add Letta Code detection and restore (#3107)
refs #3106 Co-authored-by: Cameron <cameron@pfiffer.org>
Diffstat (limited to 'src/agent_resume.rs')
-rw-r--r--src/agent_resume.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/agent_resume.rs b/src/agent_resume.rs
index 075c396f..04e6cf63 100644
--- a/src/agent_resume.rs
+++ b/src/agent_resume.rs
@@ -225,6 +225,26 @@ pub fn plan(source: &str, agent: &str, session_ref: &AgentSessionRef) -> Option<
("herdr:grok", "grok", AgentSessionRefKind::Id) => {
vec!["grok".into(), "--resume".into(), session_ref.value.clone()]
}
+ ("herdr:letta", "letta", AgentSessionRefKind::Id) => {
+ if let Some(agent_id) = session_ref.value.strip_prefix("default:") {
+ if agent_id.is_empty() {
+ return None;
+ }
+ vec![
+ "letta".into(),
+ "--conversation".into(),
+ "default".into(),
+ "--agent".into(),
+ agent_id.into(),
+ ]
+ } else {
+ vec![
+ "letta".into(),
+ "--conversation".into(),
+ session_ref.value.clone(),
+ ]
+ }
+ }
_ => return None,
};
@@ -262,6 +282,7 @@ pub(crate) fn is_official_agent_source(source: &str, agent: &str) -> bool {
| ("herdr:cursor", "cursor")
| ("herdr:antigravity_cli", "agy")
| ("herdr:grok", "grok")
+ | ("herdr:letta", "letta")
)
}
@@ -516,6 +537,32 @@ mod tests {
.argv,
vec!["grok", "--resume", "grok-session"]
);
+ assert_eq!(
+ plan(
+ "herdr:letta",
+ "letta",
+ &AgentSessionRef::id("conversation-123").unwrap()
+ )
+ .unwrap()
+ .argv,
+ vec!["letta", "--conversation", "conversation-123"]
+ );
+ assert_eq!(
+ plan(
+ "herdr:letta",
+ "letta",
+ &AgentSessionRef::id("default:agent-123").unwrap()
+ )
+ .unwrap()
+ .argv,
+ vec!["letta", "--conversation", "default", "--agent", "agent-123"]
+ );
+ assert!(plan(
+ "herdr:letta",
+ "letta",
+ &AgentSessionRef::id("default:").unwrap()
+ )
+ .is_none());
}
#[test]