Skip to main content

Crate bamboo_subagent

Crate bamboo_subagent 

Source
Expand description

bamboo-subagent — sub-agent fleet runtime.

Slice 1 (this build): pure filesystem logic, no runtime dependency.

  • store — project-keyed session store + denormalized indices (rebuildable cache).
  • mailbox — Maildir-style persistent inbox (multi-writer / single-reader, crash-safe).

See docs/subagent-actor-runtime-design.md (§3.4, §5) and docs/subagent-store-mailbox-interface.md for the design these implement.

The session payload is kept opaque (generic T: Serialize/DeserializeOwned) so this crate stays a leaf and is fully unit-testable with a tempdir; higher layers pass the domain Session. Index rebuild is decoupled via the store::MetaExtractor seam.

Re-exports§

pub use discovery::Discovery;
pub use discovery::Fabric;
pub use discovery::FileFabric;
pub use error::Result;
pub use error::StoreError;
pub use executor::ChildExecutor;
pub use executor::ChildOutcome;
pub use executor::EchoExecutor;
pub use executor::EventSink;
pub use executor::SteerInbox;
pub use fleet::spawn_worker;
pub use fleet::SpawnedChild;
pub use launcher::LocalSubprocessLauncher;
pub use launcher::WorkerLauncher;
pub use mailbox::AdmittedSet;
pub use mailbox::AgentRef;
pub use mailbox::AskBody;
pub use mailbox::AskMode;
pub use mailbox::Delivered;
pub use mailbox::InboxKind;
pub use mailbox::InboxMessage;
pub use mailbox::Mailbox;
pub use mailbox::MsgId;
pub use mailbox::ReplyBody;
pub use mailbox::ADMITTED_SET_CAPACITY;
pub use proto::AgentRecord;
pub use proto::ChildFrame;
pub use proto::ParentFrame;
pub use proto::RunSpec;
pub use proto::TerminalStatus;
pub use provision::Capabilities;
pub use provision::ChildIdentity;
pub use provision::ExecutorSpec;
pub use provision::Limits;
pub use provision::McpProxyConfig;
pub use provision::ModelRefSpec;
pub use provision::Placement;
pub use provision::ProvisionSpec;
pub use provision::ScopedCredential;
pub use provision::SecretsEnvelope;
pub use provision::PROVISION_VERSION;
pub use registry::RegisterChild;
pub use registry::Registration;
pub use registry::Registry;
pub use store::ChildEntry;
pub use store::ChildFields;
pub use store::ChildStatus;
pub use store::ChildrenIndex;
pub use store::MetaExtractor;
pub use store::ProjectIndex;
pub use store::ProjectKey;
pub use store::RootEntry;
pub use store::RootFields;
pub use store::SessionLoc;
pub use store::SubagentStore;
pub use transport::ChildClient;
pub use transport::TransportError;
pub use transport::TransportResult;
pub use transport::WsServer;

Modules§

discovery
Tier-1 discovery: a process-independent, file-based fabric (design §4).
error
Error model + atomic write helper shared by store and mailbox.
executor
The ChildExecutor seam: how an actor actually runs a task.
fleet
Parent-side fleet helpers: spawn an actor subprocess, provision it over stdin, discover it.
launcher
WorkerLauncher: the seam between “spawn a local subprocess” and “connect to a remote worker” (see docs/remote-actor-plan.md §3.1).
mailbox
Maildir-style persistent mailbox (design §3.4).
proto
Wire protocol: discovery record + parent/child WebSocket frames.
provision
ProvisionSpec — the one-shot bootstrap contract between parent and worker.
registry
Tier-2 registry: the parent’s in-memory table of owned children + persistent index upkeep.
store
Project-keyed session store + denormalized indices.
transport
WebSocket transport (design §6): full-duplex parent↔child link.