saya-agent 0.3.2

Agentic LLM loop and OpenAI-compatible provider clients for SAYA CLI.
Documentation
use crate::{
    AgentRequest, ApprovalDecider, CancellationToken, ChatProvider, NoopEventSink, ToolDefinition,
    ToolExecutor,
    loop_runner::{AgentLimits, AgentOutput, run_agent_with_sink},
};

pub async fn run_agent(
    provider: &dyn ChatProvider,
    tools: &dyn ToolExecutor,
    request: AgentRequest,
    definitions: Vec<ToolDefinition>,
    limits: AgentLimits,
    approval: &dyn ApprovalDecider,
) -> Result<AgentOutput, crate::AgentError> {
    run_agent_with_sink(
        provider,
        tools,
        request,
        definitions,
        limits,
        approval,
        &NoopEventSink,
        CancellationToken::new(),
    )
    .await
}