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(crate) mod clock;
18pub mod error;
19pub mod events;
20pub mod hooks;
21pub mod message;
22pub mod queue;
23pub mod stream_fn;
24pub mod types;
25
26pub use abort::AbortHandle;
27pub use agent::{Agent, AgentBuilder, AgentOptions};
28pub use agent_loop::{
29    run_agent_loop, run_agent_loop_continue, run_agent_loop_from_assistant, LoopOutcome,
30    NewMessages,
31};
32pub use agent_tool::AgentTool;
33pub use error::AgentError;
34pub use events::{AgentEmitter, AgentEvent, CollectorEmitter};
35pub use hooks::{
36    AfterToolCall, AfterToolResults, AgentLoopConfig, BeforeToolCall, ConvertToLlm, GetApiKey,
37    GetFollowUpMessages, GetSteeringMessages, PrepareNextTurn, ShouldStopAfterTurn,
38    TransformContext,
39};
40pub use message::{AgentMessage, AgentMessageRole, CustomMessage};
41pub use queue::PendingMessageQueue;
42pub use stream_fn::{stream_fn, StreamFn};
43pub use types::{
44    AfterToolCallContext, AfterToolCallResult, AgentContext, AgentLoopTurnUpdate, AgentState,
45    AgentToolResult, BeforeToolCallContext, BeforeToolCallResult, QueueMode,
46    ShouldStopAfterTurnContext, TextContentOrImage, ToolExecutionMode, ToolResultPartial,
47};