pub struct SessionManager { /* private fields */ }Implementations§
Source§impl SessionManager
impl SessionManager
pub fn new(base_dir: PathBuf) -> Self
Sourcepub fn with_default() -> Self
pub fn with_default() -> Self
Use the default ~/.ao-rs/sessions location.
pub fn base_dir(&self) -> &Path
Sourcepub async fn save(&self, session: &Session) -> Result<()>
pub async fn save(&self, session: &Session) -> Result<()>
Atomically persist a session. Creates parent dirs as needed.
Sourcepub async fn list(&self) -> Result<Vec<Session>>
pub async fn list(&self) -> Result<Vec<Session>>
Read every session across all projects, sorted newest-first.
.archive/ subdirectories inside each project dir are safe because
the inner read_dir is non-recursive — only direct children of the
project directory are inspected, and .archive (a directory) is
skipped by the .yaml extension filter.
Sourcepub async fn list_for_project(&self, project_id: &str) -> Result<Vec<Session>>
pub async fn list_for_project(&self, project_id: &str) -> Result<Vec<Session>>
Same as list but filtered to one project.
Sourcepub async fn find_by_prefix(&self, id_or_prefix: &str) -> Result<Session>
pub async fn find_by_prefix(&self, id_or_prefix: &str) -> Result<Session>
Find a session by full uuid or any unambiguous prefix.
starts_with semantics — the 8-char short id used by the CLI
(ao-rs status, ao-rs send <short>) is a valid lookup key, as is
the full uuid. Returns SessionNotFound on no match and
AoError::Runtime on more than one. Shared by restore_session,
ao-rs send, ao-rs pr, so the CLI’s “resolve a session” idiom
lives in one place.
Sourcepub async fn find_by_issue_id(&self, issue_id: &str) -> Result<Vec<Session>>
pub async fn find_by_issue_id(&self, issue_id: &str) -> Result<Vec<Session>>
Find all non-terminal sessions with a matching issue_id.
Used for duplicate detection before ao-rs spawn --issue — if another
active session is already working on the same issue, the user should
either wait or use --force.
Sourcepub async fn delete(&self, project_id: &str, id: &SessionId) -> Result<()>
pub async fn delete(&self, project_id: &str, id: &SessionId) -> Result<()>
Remove a session’s yaml file. No-op if it doesn’t exist.
Sourcepub async fn archive(&self, session: &Session) -> Result<()>
pub async fn archive(&self, session: &Session) -> Result<()>
Archive a session: move its YAML from the active directory into
sessions/<project>/.archive/<uuid>.yaml. Archiving removes the
session from list() results while preserving it on disk for
historical reference. No-op if the source file doesn’t exist
(already archived or never persisted).