Skip to main content

Crate nanocodex_agent

Crate nanocodex_agent 

Source
Expand description

§Nanocodex Agent

The owned lifecycle for one headless OpenAI coding agent.

nanocodex-agent composes the Tower-native Responses state machine from nanocodex-oai-api with the runtime from nanocodex-tools. A normal consumer builds one agent, receives a cheap cloneable Nanocodex handle and an independent AgentEvents stream, then submits ordered prompts.

§Quick start

use nanocodex_agent::{Nanocodex, OpenAi};

let openai = OpenAi::new(std::env::var("OPENAI_API_KEY")?)?;
let (agent, _events) = Nanocodex::builder(openai)
    .instructions(
        "You are a Rust coding agent. Preserve unrelated work and run relevant tests.",
    )
    .workspace(std::env::current_dir()?)
    .build()?;

let result = agent
    .prompt("Explain the cause of the failing parser test.")
    .await?
    .await?;
println!("{}", result.final_message());
agent.shutdown().await?;

The first await means the private driver accepted and ordered the prompt. Turn is both a per-turn event stream and a future for TurnResult. Awaiting the turn waits only for its result; event consumption is independent.

The private driver is the sole owner of mutable conversation, transport, tool, and process state. Cloning Nanocodex only clones its command capability; Nanocodex::spawn creates a clean sibling and Nanocodex::fork creates an independent branch from committed history.

§Typed events

AgentEvents is optional and independent from turn results. Its raw JSONL-compatible envelope remains lossless, while AgentEvent::data provides a normalized domain view:

use futures_util::StreamExt;
use nanocodex_agent::{
    Nanocodex, OpenAi,
    events::{AgentEventData, AssistantEvent},
};

let openai = OpenAi::new(std::env::var("OPENAI_API_KEY")?)?;
let (agent, mut events) = Nanocodex::builder(openai)
    .instructions("Answer concisely and preserve exact identifiers.")
    .build()?;
let turn = agent.prompt("Explain the identifier req_7f3.").await?;

while let Some(event) = events.next().await {
    if let AgentEventData::Assistant(AssistantEvent::Delta(delta)) = event.data()? {
        print!("{}", delta.text);
    }
    if event.kind.is_terminal() {
        break;
    }
}
let _result = turn.await?;
agent.shutdown().await?;

§Components

  • events contains the complete typed lifecycle event taxonomy.
  • input contains prompts and multimodal user input.
  • session contains durable session identities and snapshots.
  • usage contains token accounting and USD estimates.
  • rollout records and restores Codex-compatible sessions.
  • transport exposes advanced Responses and Tower configuration.
  • tools exposes the complete tool implementation surface.

OpenAI API-key and managed ChatGPT credentials belong to nanocodex_oai_api::auth, independently of this lifecycle crate.

Re-exports§

pub use usage::TurnUsage;

Modules§

events
Complete typed lifecycle events emitted by an agent.
input
Prompts and multimodal user input accepted by the agent.
rolloutNon-target_family=wasm
Codex-compatible durable rollout recording and restoration.
session
Durable agent session identities and snapshots.
tools
Complete tool contracts, registry, built-ins, Code Mode, and MCP.
transportNon-target_family=wasm
Advanced Responses transport and Tower service configuration.
usage
Per-turn token accounting and USD estimates.

Structs§

AgentEvents
The receiving half of an agent’s typed event stream.
AgentHandle
Weak child-agent capability for the driver that owns one tool runtime.
EstimatedUsdCost
Exact estimated USD cost for provider-reported token usage.
Nanocodex
Cheap, cloneable command handle for an owned agent driver.
NanocodexBuilder
Builder for one owned agent lifecycle.
OpenAi
Configured, cloneable OpenAI client recipe.
ResponseError
Cloneable typed failure returned by a response stream and its completed future.
Tools
Declarative selection of the built-in tools installed for an agent.
Turn
Completion handle for an accepted turn.
TurnControl
Cheap cloneable control capability for one accepted turn.
TurnResult
Final result of a completed turn.
UsdAmount
An exact non-negative amount of United States dollars.

Enums§

CostStatus
Availability of the automatic local USD estimate.
NanocodexError
Error returned by the Nanocodex library boundary.
ReasoningMode
Responses reasoning execution mode for the supported GPT-5.6 model family.
ResponseErrorKind
Stable classification for one failed Responses operation.
ServiceTier
OpenAI service tiers supported by Nanocodex.
Thinking
Requested model reasoning effort.

Traits§

Tool
A caller-defined model-visible tool.

Type Aliases§

Result
Result type returned by the owned agent lifecycle.

Attribute Macros§

toolNon-target_family=wasm
Defines a typed JSON function tool from an async Rust function.