Skip to main content

systemprompt_cli/session/
store.rs

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