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()?;
14 let tenant_id = profile.cloud.as_ref().and_then(|c| c.tenant_id.as_ref());
15 let session_key = SessionKey::from_tenant_id(tenant_id);
16
17 let sessions_dir = ResolvedPaths::discover().sessions_dir();
18
19 let mut store = SessionStore::load_or_create(&sessions_dir)?;
20 store.remove_session(&session_key);
21 store.save(&sessions_dir)?;
22
23 Ok(())
24}
25
26pub fn clear_all_sessions() -> Result<()> {
27 let sessions_dir = ResolvedPaths::discover().sessions_dir();
28
29 let store = SessionStore::new();
30 store.save(&sessions_dir)?;
31
32 Ok(())
33}
34
35pub fn get_session_for_key(session_key: &SessionKey, issuer: &str) -> Result<Option<CliSession>> {
36 let sessions_dir = ResolvedPaths::discover().sessions_dir();
37
38 let store = SessionStore::load_or_create(&sessions_dir)?;
39 Ok(store.get_valid_session(session_key, issuer).cloned())
40}
41
42pub fn load_session_store() -> Result<SessionStore> {
43 let sessions_dir = ResolvedPaths::discover().sessions_dir();
44 SessionStore::load_or_create(&sessions_dir).map_err(Into::into)
45}