systemprompt_cli/session/
store.rs1use anyhow::Result;
10use systemprompt_cloud::{CliSession, SessionKey, SessionStore};
11use systemprompt_config::ProfileBootstrap;
12
13use crate::paths::ResolvedPaths;
14
15pub fn clear_session(paths: &ResolvedPaths) -> Result<()> {
16 let profile = ProfileBootstrap::get()?;
17 let tenant_id = profile.cloud.as_ref().and_then(|c| c.tenant_id.as_ref());
18 let session_key = SessionKey::from_tenant_id(tenant_id);
19
20 let sessions_dir = paths.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(paths: &ResolvedPaths) -> Result<()> {
30 let sessions_dir = paths.sessions_dir();
31
32 let store = SessionStore::new();
33 store.save(&sessions_dir)?;
34
35 Ok(())
36}
37
38pub fn get_session_for_key(
39 paths: &ResolvedPaths,
40 session_key: &SessionKey,
41 issuer: &str,
42) -> Result<Option<CliSession>> {
43 let sessions_dir = paths.sessions_dir();
44
45 let store = SessionStore::load_or_create(&sessions_dir)?;
46 Ok(store.get_valid_session(session_key, issuer).cloned())
47}
48
49pub fn load_session_store(paths: &ResolvedPaths) -> Result<SessionStore> {
50 let sessions_dir = paths.sessions_dir();
51 SessionStore::load_or_create(&sessions_dir).map_err(Into::into)
52}