Skip to main content

rpi_agent/
lib.rs

1//! Mirrors `packages/agent/src` (core layer: agent + agent-loop + types + stream-fn).
2//!
3//! Provider-agnostic agent runtime. The only LLM boundary is [`StreamFn`]
4//! (sync return → [`AssistantMessageEventStream`]); everything else talks in
5//! [`AgentMessage`] and never touches a provider wire format.
6//!
7//! M2 scope per the plan: `AgentTool` trait, `Agent` + `AgentBuilder`,
8//! `run_agent_loop` / `run_agent_loop_continue` free functions, events, hooks,
9//! queues, abort. The critical invariants — tool-execution ordering
10//! (end in completion order, tool-result `MessageEnd` in source/ordinal order),
11//! truncate-fail, and late-update suppression — live in [`agent_loop`].
12
13pub mod abort;
14pub mod agent;
15pub mod agent_loop;
16pub mod agent_tool;
17pub mod error;
18pub mod events;
19pub mod hooks;
20pub mod message;
21pub mod queue;
22pub mod stream_fn;
23pub mod types;
24
25pub use abort::AbortHandle;
26pub use agent::{Agent, AgentBuilder, AgentOptions};
27pub use agent_loop::{run_agent_loop, run_agent_loop_continue, LoopOutcome, NewMessages};
28pub use agent_tool::AgentTool;
29pub use error::AgentError;
30pub use events::{AgentEmitter, AgentEvent, CollectorEmitter};
31pub use hooks::{
32    AfterToolCall, AfterToolResults, AgentLoopConfig, BeforeToolCall, ConvertToLlm, GetApiKey,
33    GetFollowUpMessages, GetSteeringMessages, PrepareNextTurn, ShouldStopAfterTurn,
34    TransformContext,
35};
36pub use message::{AgentMessage, AgentMessageRole, CustomMessage};
37pub use queue::PendingMessageQueue;
38pub use stream_fn::{stream_fn, StreamFn};
39pub use types::{
40    AfterToolCallContext, AfterToolCallResult, AgentContext, AgentLoopTurnUpdate, AgentState,
41    AgentToolResult, BeforeToolCallContext, BeforeToolCallResult, QueueMode,
42    ShouldStopAfterTurnContext, TextContentOrImage, ToolExecutionMode, ToolResultPartial,
43};