systemprompt_cli/session/
store.rs1use anyhow::Result;
7use systemprompt_cloud::{CliSession, SessionKey, SessionStore};
8use systemprompt_config::ProfileBootstrap;
9
10use crate::paths::ResolvedPaths;
11
12pub fn clear_session() -> Result<()> {
13 let profile = ProfileBootstrap::get().ok();
14 let tenant_id = profile
15 .as_ref()
16 .and_then(|p| p.cloud.as_ref())
17 .and_then(|c| c.tenant_id.as_ref());
18 let session_key = SessionKey::from_tenant_id(tenant_id);
19
20 let sessions_dir = ResolvedPaths::discover().sessions_dir();
21
22 let mut store = SessionStore::load_or_create(&sessions_dir)?;
23 store.remove_session(&session_key);
24 store.save(&sessions_dir)?;
25
26 Ok(())
27}
28
29pub fn clear_all_sessions() -> Result<()> {
30 let sessions_dir = ResolvedPaths::discover().sessions_dir();
31
32 let store = SessionStore::new();
33 store.save(&sessions_dir)?;
34
35 Ok(())
36}
37
38pub fn get_session_for_key(session_key: &SessionKey) -> Result<Option<CliSession>> {
39 let sessions_dir = ResolvedPaths::discover().sessions_dir();
40
41 let store = SessionStore::load_or_create(&sessions_dir)?;
42 Ok(store.get_valid_session(session_key).cloned())
43}
44
45pub fn load_session_store() -> Result<SessionStore> {
46 let sessions_dir = ResolvedPaths::discover().sessions_dir();
47 SessionStore::load_or_create(&sessions_dir).map_err(Into::into)
48}