Skip to main content

recursive/
lib.rs

1//! Recursive: a minimal, orthogonal, self-improving coding agent kernel.
2//!
3//! The kernel is intentionally tiny:
4//!   - `Message` is the only data primitive shared across the system.
5//!   - `LlmProvider` abstracts model backends (HTTP, mock, future local...).
6//!   - `Tool` abstracts side effects the model can request.
7//!   - `Agent` is a thin loop that wires them together.
8//!
9//! Everything else is opt-in. New capabilities are added by implementing
10//! `Tool` or `LlmProvider`, never by editing the loop.
11
12pub mod agent;
13pub mod compact;
14pub mod config;
15pub mod error;
16pub mod hooks;
17pub mod llm;
18#[cfg(feature = "mcp")]
19pub mod mcp;
20pub mod message;
21pub mod session;
22pub mod skills;
23pub mod tools;
24pub mod transcript;
25
26pub use agent::PlanningMode;
27pub use agent::{Agent, AgentOutcome, FinishReason, StepEvent};
28pub use agent::{PermissionDecision, PermissionHook};
29pub use compact::Compactor;
30pub use config::Config;
31pub use error::{Error, Result};
32pub use hooks::ToolTimingHook;
33pub use hooks::{Hook, HookAction, HookEvent, HookRegistry};
34pub use llm::openai::RetryPolicy;
35pub use llm::{pricing_for, Completion, LlmProvider, ModelPricing, TokenUsage, ToolCall, ToolSpec};
36#[cfg(feature = "mcp")]
37pub use mcp::{
38    discover_mcp_servers, load_mcp_config, McpClient, McpPrompt, McpPromptArgument,
39    McpPromptMessage, McpResource, McpResourceContent, McpServer, McpServerConfig, McpTool,
40    McpToolSpec, ServerCapabilities,
41};
42pub use message::{Message, Role};
43pub use session::SessionFile;
44pub use skills::{
45    discover_skills, skill_index, skills_for_injection, Skill, SkillMode, SkillParam, SkillRef,
46    SkillScript, SkillSection,
47};
48pub use tools::{Tool, ToolRegistry};
49pub use transcript::{TranscriptFile, TranscriptMeta};