Skip to main content

stdiobus_client/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026-present Raman Marozau <raman@worktif.com>
3// Copyright (c) 2026-present stdiobus contributors
4
5#![cfg_attr(docsrs, feature(doc_cfg))]
6
7//! Async client for stdio_bus - AI agent transport layer
8//!
9//! # Example
10//!
11//! ```rust,no_run
12//! use stdiobus_client::StdioBus;
13//!
14//! #[tokio::main]
15//! async fn main() -> stdiobus_core::Result<()> {
16//!     let bus = StdioBus::builder()
17//!         .config(stdiobus_core::BusConfig {
18//!             pools: vec![stdiobus_core::PoolConfig {
19//!                 id: "worker".into(),
20//!                 command: "node".into(),
21//!                 args: vec!["./worker.js".into()],
22//!                 instances: 2,
23//!             }],
24//!             limits: None,
25//!         })
26//!         .build()?;
27//!
28//!     bus.start().await?;
29//!
30//!     let result = bus.request("tools/list", serde_json::json!({})).await?;
31//!     println!("Tools: {:?}", result);
32//!
33//!     bus.stop().await?;
34//!     Ok(())
35//! }
36//! ```
37
38mod backend;
39mod builder;
40mod client;
41
42#[cfg(test)]
43mod tests;
44
45pub use builder::StdioBusBuilder;
46pub use client::StdioBus;
47
48// Re-export core types
49pub use stdiobus_core::{
50    Backend, BackendMode, BusConfig, BusMessage, BusState, BusStats, ConfigSource, Error,
51    ErrorCode, Extensions, Identity, JsonRpcMessage, JsonRpcRequest, JsonRpcResponse,
52    LimitsConfig, PoolConfig, RequestOptions, Result,
53};