pub mod cli;
pub mod commands;
pub mod error;
pub mod session_config;
pub use steer_core::{api, app, config, events, runners, session, tools, utils, workspace};
use eyre::Result;
use steer_core::api::Model;
use steer_core::app::Message;
use steer_core::runners::{OneShotRunner, RunOnceResult};
use steer_core::session::{SessionManager, SessionToolConfig};
pub async fn run_once_in_session(
session_manager: &SessionManager,
session_id: String,
message: String,
) -> Result<RunOnceResult> {
OneShotRunner::run_in_session(session_manager, session_id, message)
.await
.map_err(|e| eyre::eyre!("Failed to run in session: {}", e))
}
pub async fn run_once_ephemeral(
session_manager: &SessionManager,
init_msgs: Vec<Message>,
model: Model,
tool_config: Option<SessionToolConfig>,
tool_policy: Option<steer_core::session::ToolApprovalPolicy>,
system_prompt: Option<String>,
) -> Result<RunOnceResult> {
OneShotRunner::run_ephemeral(
session_manager,
init_msgs,
model,
tool_config,
tool_policy,
system_prompt,
)
.await
.map_err(|e| eyre::eyre!("Failed to run ephemeral session: {}", e))
}
pub async fn run_once(init_msgs: Vec<Message>, model: Model) -> Result<RunOnceResult> {
let session_manager = create_session_manager().await?;
run_once_ephemeral(&session_manager, init_msgs, model, None, None, None).await
}
pub async fn create_session_manager() -> Result<SessionManager> {
use steer_core::session::SessionManagerConfig;
let store = steer_core::utils::session::create_session_store()
.await
.map_err(|e| eyre::eyre!("Failed to create session store: {}", e))?;
let config = SessionManagerConfig {
max_concurrent_sessions: 10,
default_model: Model::default(),
auto_persist: true,
};
Ok(SessionManager::new(store, config))
}