lha-core 1.0.2

Minimal agent SDK for LHA with session runtime, tools, skills, and optional MCP adapters.
Documentation
use crate::RunCollectTextError;
use crate::builder::AgentDefinition;
use crate::input::SessionInput;
use crate::session::AgentSession;
use std::sync::Arc;
use std::sync::atomic::AtomicU64;
use std::sync::atomic::Ordering;

pub struct AgentManager {
    definition: Arc<AgentDefinition>,
    next_session_id: AtomicU64,
}

impl AgentManager {
    pub(crate) fn new(definition: AgentDefinition) -> Self {
        Self {
            definition: Arc::new(definition),
            next_session_id: AtomicU64::new(1),
        }
    }

    pub fn create_session(&self) -> AgentSession {
        let session_id = self.next_session_id.fetch_add(1, Ordering::SeqCst);
        AgentSession::new(session_id, Arc::clone(&self.definition), Vec::new())
    }

    pub async fn ask_once(&self, text: impl Into<String>) -> Result<String, RunCollectTextError> {
        let session = self.create_session();
        session
            .run_collect_text(SessionInput::from_user_text(text))
            .await
    }
}