//! Everything that talks to something else. //! //! The counterpart may be a network service or a subprocess; what these //! modules have in common is that they are the only place a request is //! actually made. A command states what it wants and one of these decides //! how to ask for it. //! //! - [`mod@http`] — the one bounded reqwest client. Every network client //! below is built on it, so no request anywhere waits forever. //! - [`mod@endpoints`] — the four hostnames compiled in, and the environment //! variable that moves each. Every service atgc contacts is either named //! here or read at runtime out of a record. //! - [`mod@atproto`] — the protocol, with nothing Tangled about it: reads //! from a PDS, writes to one, and DID documents. //! - [`mod@tangled`] — Tangled's own services, and the rules that are //! Tangled's alone. //! - [`mod@git`] — the other side of the bridge. Every git invocation, every //! read or write of git config, and the SSH key a push authenticates with. //! - [`mod@probe`] — one request whose only question is whether the host //! answered at all. The inverse of every other client here, which is why it //! is not a helper inside one of them. //! - [`mod@xrpc`] — one request whose method is a string rather than a type, //! with the credential the host it is going to takes. The shape //! [`crate::cmd::api`] needs and nothing else does. //! //! See [Module layout](crate::docs::module_layout) for what belongs here and //! what does not. pub(crate) mod atproto; pub(crate) mod endpoints; pub(crate) mod git; pub(crate) mod http; pub(crate) mod probe; pub(crate) mod tangled; pub(crate) mod xrpc;