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};