1pub mod cli;
2pub mod commands;
3pub mod error;
4pub mod session_config;
5
6pub use steer_core::{api, app, config, events, runners, session, tools, utils, workspace};
8
9use eyre::Result;
10use steer_core::api::Model;
11use steer_core::app::Message;
12use steer_core::runners::{OneShotRunner, RunOnceResult};
13use steer_core::session::{SessionManager, SessionToolConfig};
14
15pub async fn run_once_in_session(
22 session_manager: &SessionManager,
23 session_id: String,
24 message: String,
25) -> Result<RunOnceResult> {
26 OneShotRunner::run_in_session(session_manager, session_id, message)
27 .await
28 .map_err(|e| eyre::eyre!("Failed to run in session: {}", e))
29}
30
31pub async fn run_once_ephemeral(
40 session_manager: &SessionManager,
41 init_msgs: Vec<Message>,
42 model: Model,
43 tool_config: Option<SessionToolConfig>,
44 tool_policy: Option<steer_core::session::ToolApprovalPolicy>,
45 system_prompt: Option<String>,
46) -> Result<RunOnceResult> {
47 OneShotRunner::run_ephemeral(
48 session_manager,
49 init_msgs,
50 model,
51 tool_config,
52 tool_policy,
53 system_prompt,
54 )
55 .await
56 .map_err(|e| eyre::eyre!("Failed to run ephemeral session: {}", e))
57}
58
59pub async fn run_once(init_msgs: Vec<Message>, model: Model) -> Result<RunOnceResult> {
65 let session_manager = create_session_manager(model).await?;
67 run_once_ephemeral(&session_manager, init_msgs, model, None, None, None).await
68}
69
70pub async fn create_session_manager(default_model: Model) -> Result<SessionManager> {
75 use steer_core::session::SessionManagerConfig;
76
77 let store = steer_core::utils::session::create_session_store()
79 .await
80 .map_err(|e| eyre::eyre!("Failed to create session store: {}", e))?;
81
82 let config = SessionManagerConfig {
83 max_concurrent_sessions: 10,
84 default_model,
85 auto_persist: true,
86 };
87
88 Ok(SessionManager::new(store, config))
89}