#![doc = include_str!("../README.md")]
#![deny(missing_docs, rustdoc::broken_intra_doc_links)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#[cfg(all(target_family = "wasm", not(target_os = "unknown")))]
compile_error!(
"nanocodex-agent supports browser/JavaScript WebAssembly \
(`wasm32-unknown-unknown`), not WASI targets"
);
extern crate self as nanocodex_agent;
mod agent;
mod error;
mod model;
mod prompt_cache;
#[cfg(not(target_family = "wasm"))]
#[cfg_attr(docsrs, doc(cfg(not(target_family = "wasm"))))]
pub mod rollout;
pub mod session;
pub mod usage;
pub use agent::{AgentHandle, Nanocodex, NanocodexBuilder, Turn, TurnControl, TurnResult};
pub use error::{NanocodexError, Result};
pub use nanocodex_oai_api::{
OpenAi, ReasoningMode, ResponseError, ResponseErrorKind, Thinking, events::AgentEvents,
};
#[cfg(not(target_family = "wasm"))]
#[cfg_attr(docsrs, doc(cfg(not(target_family = "wasm"))))]
pub use nanocodex_tools::tool;
pub use nanocodex_tools::{Tool, Tools};
pub use usage::{CostStatus, EstimatedUsdCost, ServiceTier, TurnUsage, UsdAmount};
pub mod events {
pub use nanocodex_oai_api::events::{
AgentEvent, AgentEventData, AgentEventKind, AgentEventTiming, AgentEvents, AssistantDelta,
AssistantEvent, AssistantMessage, CompactionCompleted, CompactionFailed, CompactionStarted,
ContextEvent, EventUsage, ModelCallCompleted, ModelCallFailed, ModelCallStarted,
ModelEvent, ModelWarmupCompleted, ModelWarmupFailed, ModelWarmupStarted, OpenAiEvent,
ReasoningEvent, ReasoningSummaryDelta, RunError, RunEvent, RunMetrics, RunStarted,
RunStatus, RunSteered, RunTerminal, TimedAgentEvent, ToolCall, ToolEvent, ToolResultEvent,
ToolStatus, TransportEvent, monotonic_now_ns,
};
pub use nanocodex_oai_api::responses::AgentMessageContent;
}
pub mod input {
pub use nanocodex_oai_api::{
ImageDetail, Prompt, PromptInput, UserInput,
responses::{AgentMessageContent, ContentItem},
};
}
#[cfg(not(target_family = "wasm"))]
#[cfg_attr(docsrs, doc(cfg(not(target_family = "wasm"))))]
pub mod transport {
pub use crate::error::ResponsesError;
pub use nanocodex_oai_api::{
responses::RequestProfile,
tower::{
DefaultResponsesService, ResponsesAttempt, ResponsesAttemptKind, ResponsesClient,
ResponsesRetryPolicy, ResponsesServiceError, ResponsesServiceResponse,
},
transport::{ResponsesHistory, ResponsesTransport},
};
}
pub mod tools {
#[doc(inline)]
pub use nanocodex_tools::*;
}
#[cfg(not(target_family = "wasm"))]
#[doc(hidden)]
pub mod __private {
pub use nanocodex_tools::__private::*;
}