//! Agent crate: the airgap courier that moves artifacts across the network
//! boundary. This is the public facade — the actual work lives in
//! [`operations`], and every endpoint is a [`ConnectorTrait`] (Nexus,
//! Artifactory, crates.io/PyPI `world`; holger/znippy/directory live server-side).
//!
//! Flow: a Source connector's assets are pulled through `operations` into a
//! carriable sink — a `.znippy` archive, a `.tar.zst`, or a loose directory —
//! then, on the secure side, pushed from that sink back into a Target connector.
//! Download/pack and read/upload are the two halves; the archive in between is
//! the thing that crosses the airgap.
//!
//! Gotcha: an upload failure is *data*, not an error — one bad asset is counted
//! and skipped so a whole push does not abort, whereas a source read/decode
//! error short-circuits. So a successful return can still hide failed assets;
//! check the tallies. Untrusted `.tar.zst` input is per-entry size-capped
//! against decompression bombs.
pub use ;
pub use ;
pub use ArtifactoryConnector;
pub use ;