soma_client/lib.rs
1// Render per-item feature-requirement badges when rustdoc runs on nightly with
2// `--cfg docsrs` (docs.rs posture; locally via `cargo xtask doc --docsrs-cfg`).
3// Inert under the stable CI doc gate: stable rustdoc never sets `docsrs`.
4#![cfg_attr(docsrs, feature(doc_auto_cfg))]
5//! Concrete outbound transport for a remote Soma HTTP server.
6//!
7//! `soma-client` owns HTTP request construction, remote response decoding, and
8//! transport-level retries/timeouts for talking to a deployed `soma serve`
9//! REST API. It does not decide *when* a request should go upstream (that is
10//! application policy), and it has no CLI or provider-registry logic of its
11//! own — see plan section 3.19. It does resolve REST method/path per action
12//! from the provider catalog (`resolve_remote_rest_call`) and validates the
13//! action path segment before building a request; that routing/validation is
14//! a transport-shape concern, not business logic, and stays here rather than
15//! in `soma-service`.
16
17// Docs rollout (see `[workspace.lints]` in the root Cargo.toml): this crate has
18// completed its public-API docs pass and holds itself to it. The workspace lint
19// table cannot carry this — `[lints] workspace = true` is all-or-nothing — so the
20// commitment lives here, where it overrides the table's `-A missing_docs`.
21#![warn(missing_docs)]
22
23mod client;
24
25pub use client::SomaClient;