Expand description
§motosan-agent-loop
Standalone ReAct agent loop — LlmClient + Engine with no
platform dependencies.
This crate provides the core loop that drives an LLM through iterative reasoning and tool execution, producing a final answer.
Extensions are registered via EngineBuilder::extension (errors fall
back to default) or EngineBuilder::extension_with_policy (opt in to
ErrorPolicy::Abort for fail-loud semantics). With the motosan-ai
feature, wrap a motosan_ai::Client in MotosanAiClient to forward
a max_tokens budget end-to-end (required for the token-budget
extension to observe StopReason::MaxTokens).
Re-exports§
pub use context::ContextProvider;pub use core::engine::AgentMode;pub use core::engine::AgentOp;pub use core::engine::AgentResult;pub use core::engine::AskUserOption;pub use core::engine::AskUserQuestion;pub use core::engine::BackpressurePolicy;pub use core::engine::ChannelConfig;pub use core::engine::Engine;pub use core::engine::EngineBuilder;pub use core::engine::NextStepSchedule;pub use core::event::AgentEvent;pub use core::event::CoreEvent;pub use core::event::ExtensionEvent;pub use delegate::DelegateAgentTool;pub use error::AgentError;pub use error::Result;pub use extensions::ask_user::AskUserConfig;pub use extensions::autocompact::compute_compaction_plan;pub use extensions::autocompact::compute_compaction_plan_with_estimator;pub use extensions::autocompact::ApproxCharsTokenEstimator;pub use extensions::autocompact::AutocompactConfig;pub use extensions::autocompact::AutocompactEvent;pub use extensions::autocompact::AutocompactExtension;pub use extensions::autocompact::ChainedCompactionPolicy;pub use extensions::autocompact::CompactionPlan;pub use extensions::autocompact::EvictOldImagesPolicy;pub use extensions::autocompact::EvictOldReasoningPolicy;pub use extensions::autocompact::EvictOldToolResultsPolicy;pub use extensions::autocompact::NoopCompactionPolicy;pub use extensions::autocompact::ReplayLastUserPolicy;pub use extensions::autocompact::RequestCompactionPolicy;pub use extensions::autocompact::TokenEstimator;pub use extensions::config::build_extension_set;pub use extensions::config::DelegationConfig;pub use extensions::config::ExtensionBuildError;pub use extensions::config::ExtensionWiring;pub use extensions::config::ExtensionsConfig;pub use extensions::config::PlanningConfig;pub use extensions::follow_up::FollowUpEvent;pub use extensions::follow_up::FollowUpExtension;pub use extensions::follow_up::FollowUpFn;pub use extensions::stuck_detection::StuckDetectionConfig;pub use extensions::token_budget::TokenBudgetConfig;pub use llm::ChatOutput;pub use llm::LlmClient;pub use llm::LlmResponse;pub use llm::LlmResponseMeta;pub use llm::StopReason;pub use llm::StreamChunk;pub use llm::TokenUsage;pub use llm::ToolCallItem;pub use message::find_cut_points;pub use message::is_safe_cut;pub use message::new_message_id;pub use message::AssistantContent;pub use message::ContentPart;pub use message::DocumentSource;pub use message::Message;pub use message::MessageId;pub use message::MessageMeta;pub use message::Role;pub use message::ToolCallRef;pub use message::DOCUMENT_APPROX_CHAR_EQUIVALENT;pub use message::IMAGE_APPROX_CHAR_EQUIVALENT;pub use planning::Plan;pub use planning::PlanStep;pub use planning::PlanningEvent;pub use planning::PlanningTool;pub use planning::StepStatus;pub use session::catalog::SessionCatalog;pub use session::compaction::CompactionResult;pub use session::compaction::CompactionStrategy;pub use session::compaction::ThresholdStrategy;pub use session::entry::EntryId;pub use session::entry::SessionEntry;pub use session::meta::SessionMeta;pub use session::projection::default_projection;pub use session::projection::DefaultProjection;pub use session::projection::MessageProjection;pub use session::session::AgentSession;pub use session::session::TurnHandle;pub use session::store::FileSessionStore;pub use session::store::MemorySessionStore;pub use session::store::SessionStore;pub use stream::AgentStreamItem;pub use stream::AgentTerminal;pub use streaming_executor::StreamingToolExecutor;
Modules§
- context
- core
- Mechanism layer: the agent loop engine.
- delegate
- Delegation tool — wraps an
Engineas a callableToolso a main agent can delegate subtasks to a sub-agent (browser agent, SWE agent, etc.) via normal tool calling. - error
- extensions
- Policy layer: self-contained feature modules that plug into the
core via the
Extensiontrait (added in Phase 1). - llm
- message
- Conversation messages — the unit exchanged between the agent loop and the LLM.
- planning
- Built-in
PlanningTool— lets agents create, manage, and track execution plans autonomously via tool calling. - session
- Session layer: long-lived conversation state, persistence, and orchestration. See each submodule for its specific role.
- stream
- Stream item types for the
Engine::runAPI. - streaming_
executor - Streaming tool executor — starts executing tools as LLM streams tool_use blocks.