diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-09-13 18:36:47 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-13 17:36:47 +0200 |
| commit | fc1cb77f0572948552377b23f7754a3016ac7dfa (patch) | |
| tree | 5412b796aaaa00894fe628b2ffed8d747e6f452d /src/agent_resume.rs | |
| parent | 3be35231497f33f38aeffd84df02642479995bc6 (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.rs | 47 |
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] |
