Skip to main content

oxicode_agent/
lib.rs

1#![allow(unused_doc_comments)]
2#![warn(missing_docs)]
3// Relax test-idiom lints under `cfg(test)` so `cargo clippy --all-targets`
4// stays clean without weakening the shipped library:
5//   - `clippy::unwrap_used` — `unwrap()`/`unwrap_err()` are idiomatic in tests.
6//   - `clippy::expect_used` — `expect("reason")` is idiomatic in tests.
7//   - `clippy::panic` — `panic!("Expected X")` match-arm assertions in tests.
8//   - `clippy::field_reassign_with_default` — the `let mut x = X::default();
9//     x.f = ..;` test-setup pattern.
10// Shipped (non-test) code DENIES all three panic-family lints (see below).
11#![cfg_attr(
12    not(test),
13    deny(clippy::expect_used, clippy::panic, clippy::unwrap_used)
14)]
15#![cfg_attr(
16    test,
17    allow(
18        clippy::unwrap_used,
19        clippy::field_reassign_with_default,
20        clippy::expect_used,
21        clippy::panic,
22    )
23)]
24#![allow(unknown_lints)]
25
26//! oxicode-agent: Agent runtime for oxicode
27//!
28//! Provides the core agent loop, tool execution, state management,
29//! and streaming event pipeline for the oxicode coding agent.
30// Stability tier attribute macros (renamed import — see oxicode-sdk for rationale).
31#[allow(unused_imports)]
32use oxicode_api_stability::{
33    internal as oxicode_internal, stable as oxicode_stable, unstable as oxicode_unstable,
34};
35
36/// Advisor subsystem — read-only reviewer that shadows the primary agent.
37pub mod advisor;
38/// Core agent implementation.
39pub mod agent;
40/// Agent definition file parsing and discovery.
41pub mod agent_definition;
42/// Agent loop – the main request/response cycle driver.
43pub mod agent_loop;
44/// Context compaction strategies and data types.
45pub mod compaction;
46/// Agent configuration types.
47pub mod config;
48/// Error types for agent operations.
49pub mod error;
50/// Event types emitted during the agent loop.
51pub mod events;
52
53pub mod issues;
54/// MCP (Model Context Protocol) integration.
55pub mod mcp;
56/// Model identifier constants and helpers.
57pub mod model_id;
58/// Fault-recovery primitives (circuit breaker, fallback chains).
59pub mod recovery;
60/// Agent state machine and shared mutable state.
61pub mod state;
62/// Shared streaming retry logic.
63pub mod stream_retry;
64pub mod structured_output;
65/// Built-in tool implementations and registry.
66pub mod tools;
67/// Shared type aliases and helpers.
68pub mod types;
69
70#[oxicode_stable(since = "0.63.0")]
71pub use agent::Agent;
72pub use agent::ProviderResolver;
73#[oxicode_stable(since = "0.63.0")]
74pub use agent_definition::{
75    AgentDefinition, AgentDiscovery, AgentScope, DefaultContext, current_subagent_depth,
76    max_subagent_depth, validate_agent_name,
77};
78#[oxicode_stable(since = "0.63.0")]
79pub use agent_loop::{AgentLoop, AgentLoopConfig};
80
81#[oxicode_unstable(feature = "advisor")]
82pub use advisor::{
83    ADVISOR_GUIDANCE, ADVISOR_READONLY_TOOL_NAMES, ADVISOR_SYSTEM_PROMPT, AdviseTool, AdvisorAgent,
84    AdvisorDeliveryChannel, AdvisorEmissionGuard, AdvisorNote, AdvisorRuntime, AdvisorRuntimeHost,
85    AdvisorSeverity, AgentAdvisor, DeliveryOpts, EnqueueAdviceFn, format_advisory_batch,
86    is_immune_turn_active, is_interrupting_severity, normalize_advisor_note,
87    resolve_delivery_channel,
88};
89/// Agent configuration, hooks, and tool execution mode.
90#[oxicode_stable(since = "0.63.0")]
91pub use config::{
92    AfterToolCallContext, AfterToolCallResult, AgentConfig, AgentHooks, BeforeToolCallContext,
93    BeforeToolCallResult, Mode, ShouldStopAfterTurnContext, ToolExecutionMode,
94};
95pub use error::AgentError;
96pub use events::{AgentEvent, StreamDelta, ToolCallContext, VisitReason};
97pub use tools::browse::{BrowseProgress, BrowseProgressCallback};
98
99#[oxicode_stable(since = "0.63.0")]
100pub use agent_loop::config::CompactionHook;
101pub use compaction::{CompactedContext, CompactionEvent};
102pub use oxicode_ai::{CompactionManager, CompactionStrategy};
103/// Fault-recovery primitives for resilient agent execution.
104pub use recovery::PartialResponse;
105pub use state::{AgentState, SharedState};
106pub use structured_output::{OutputMode, StructuredOutput, StructuredOutputError};
107
108#[oxicode_stable(since = "0.63.0")]
109pub use mcp::{McpConfig, McpManager, McpTool};
110/// In-process subagent runner trait (see [`SdkSubagentRunner`] in oxicode-sdk).
111#[oxicode_unstable(feature = "subagent")]
112pub use tools::SubagentRunner;
113pub use tools::ask::{AskBridge, AskTool};
114pub use tools::commit::{
115    CommitGroup, CommitTool, CommitType, ConventionalAnalysis, ConventionalDetail, NumstatEntry,
116    ScopeCandidate,
117};
118pub use tools::context7::{Context7QueryDocsTool, Context7ResolveLibraryIdTool};
119pub use tools::github::GitHubTool;
120pub use tools::github_search::GitHubSearchTool;
121pub use tools::memory_edit::MemoryEditTool;
122pub use tools::memory_recall::MemoryRecallTool;
123pub use tools::memory_reflect::MemoryReflectTool;
124pub use tools::memory_retain::MemoryRetainTool;
125pub use tools::search_cache::{GetSearchResultsTool, SearchCache};
126pub use tools::subagent::SubagentTool;
127pub use tools::web_search::WebSearchTool;
128/// Built-in tool implementations and registry.
129#[oxicode_stable(since = "0.63.0")]
130pub use tools::{
131    AgentTool, AgentToolResult, BashTool, EditTool, FindTool, ForkResult, GrepTool, LsTool,
132    ReadTool, ToolContext, ToolError, ToolRegistry, WriteTool,
133};
134
135#[oxicode_unstable(feature = "todo")]
136pub use tools::TodoStateProvider;
137#[oxicode_unstable(feature = "todo")]
138pub use tools::todo::{
139    InitListEntry, TodoCompletionTransition, TodoItem, TodoOp, TodoPhase, TodoStatus, TodoTool,
140    TodoUpdateResult,
141};
142
143/// Local issue tracking: file-backed store, types, and the `issue` agent tool.
144#[oxicode_stable(since = "0.77.0")]
145pub use issues::{
146    Assignment, FileIssueStore, GithubRef, Issue, IssueError, IssueFilter, IssueMeta, IssuePatch,
147    IssueSummary, Priority, Status,
148};
149#[oxicode_stable(since = "0.77.0")]
150pub use tools::issue::{IssueTool, cas_retry, format_issue_full, format_issue_line};
151
152#[oxicode_unstable(feature = "agent-pool")]
153pub use tools::{AgentHubStatus, AgentInfo, AgentKind, AgentPoolProvider};
154#[oxicode_unstable(feature = "lsp")]
155pub use tools::{LspAction, LspProvider};
156
157/// Standard imports for oxicode-agent usage.
158pub mod prelude {
159    pub use crate::agent::Agent;
160    pub use crate::agent_loop::{AgentLoop, AgentLoopConfig, ToolExecutionMode};
161    pub use crate::compaction::{CompactedContext, CompactionEvent};
162    pub use crate::config::AgentConfig;
163    pub use crate::events::AgentEvent;
164    pub use crate::mcp::{McpConfig, McpManager, McpTool};
165    pub use crate::state::{AgentState, SharedState};
166    pub use crate::tools::ask::{AskBridge, AskTool};
167    pub use crate::tools::context7::{Context7QueryDocsTool, Context7ResolveLibraryIdTool};
168    pub use crate::tools::github::GitHubTool;
169    pub use crate::tools::github_search::GitHubSearchTool;
170    pub use crate::tools::search_cache::{GetSearchResultsTool, SearchCache};
171    pub use crate::tools::subagent::SubagentTool;
172    pub use crate::tools::web_search::WebSearchTool;
173    pub use crate::tools::{
174        AgentTool, AgentToolResult, BashTool, EditTool, FindTool, GrepTool, LsTool, ReadTool,
175        ToolContext, ToolRegistry, WriteTool,
176    };
177}
178
179#[cfg(test)]
180mod tests;