pub mod config_options;
pub mod events;
pub mod handlers;
pub mod session;
#[cfg(test)]
mod tests;
use std::path::PathBuf;
use crate::cli::{ReasoningEffort, ReasoningSummary};
use agent_client_protocol::Result;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ServerConfig {
pub cwd: PathBuf,
pub model: String,
pub websearch: String,
pub websearch_url: Option<String>,
pub reasoning_effort: ReasoningEffort,
pub reasoning_summary: ReasoningSummary,
pub session_dir: Option<PathBuf>,
}
impl ServerConfig {
pub fn new(cwd: PathBuf, model: String, websearch: String, session_dir: Option<PathBuf>) -> Self {
Self {
cwd,
model,
websearch,
websearch_url: None,
reasoning_effort: ReasoningEffort::default(),
reasoning_summary: ReasoningSummary::default(),
session_dir,
}
}
pub fn with_reasoning(mut self, effort: ReasoningEffort, summary: ReasoningSummary) -> Self {
self.reasoning_effort = effort;
self.reasoning_summary = summary;
self
}
pub fn with_search_url(mut self, url: Option<String>) -> Self {
self.websearch_url = url;
self
}
}
pub async fn run_stdio(config: ServerConfig) -> Result<()> {
handlers::run_stdio(config).await
}