lha-core 1.0.2

Minimal agent SDK for LHA with session runtime, tools, skills, and optional MCP adapters.
Documentation
use crate::input::InputQueue;
use crate::session::SessionId;
use crate::session::SubmissionId;
use lha_llm::ItemHandle;
use lha_llm::RuntimeNotice;
use lha_llm::SemanticOutputItem;
use lha_llm::ToolCallRequest;
use lha_llm::ToolResultItem;
use lha_llm::TranscriptItem;

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TurnItemDelta {
    OutputText { delta: String },
    ProposedPlan { delta: String },
    ReasoningSummary { delta: String, summary_index: i64 },
    ReasoningContent { delta: String, content_index: i64 },
    ReasoningSummaryPartAdded { summary_index: i64 },
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TurnSummary {
    pub needs_follow_up: bool,
    pub last_agent_message: Option<String>,
    pub response_total_tokens: Option<i64>,
    pub tool_output_tokens: i64,
}

#[derive(Debug, Clone, PartialEq)]
pub enum AgentEvent {
    SessionStarted {
        session_id: SessionId,
    },
    SessionStatusChanged {
        session_id: SessionId,
        status: crate::SessionStatus,
    },
    InputQueued {
        session_id: SessionId,
        queue: InputQueue,
        items: Vec<TranscriptItem>,
    },
    TurnStarted {
        session_id: SessionId,
        submission_id: SubmissionId,
    },
    RuntimeNotice {
        session_id: SessionId,
        notice: RuntimeNotice,
    },
    OutputItemStarted {
        session_id: SessionId,
        submission_id: SubmissionId,
        handle: ItemHandle,
        item: SemanticOutputItem,
    },
    OutputItemDelta {
        session_id: SessionId,
        submission_id: SubmissionId,
        handle: ItemHandle,
        delta: TurnItemDelta,
    },
    OutputItemCompleted {
        session_id: SessionId,
        submission_id: SubmissionId,
        handle: ItemHandle,
        item: SemanticOutputItem,
    },
    ToolCallRequested {
        session_id: SessionId,
        submission_id: SubmissionId,
        call: ToolCallRequest,
    },
    ToolCallCompleted {
        session_id: SessionId,
        submission_id: SubmissionId,
        response: ToolResultItem,
    },
    ServerReasoningIncluded {
        session_id: SessionId,
        included: bool,
    },
    ModelsEtagUpdated {
        session_id: SessionId,
        etag: String,
    },
    TurnCompleted {
        session_id: SessionId,
        submission_id: SubmissionId,
        outcome: TurnSummary,
    },
    TurnFailed {
        session_id: SessionId,
        submission_id: SubmissionId,
        error: String,
    },
    TurnAborted {
        session_id: SessionId,
        submission_id: SubmissionId,
    },
}