Trait surface separating the OSS Heddle CLI from the closed hosted-client implementation.
OSS builds use [NoopWeftExtensions], which returns a friendly
"hosted features not enabled" error on every method. Closed builds
ship a real implementation in the hosted-client crate and inject
it via Cargo features (today) or [patch.crates-io] (post-split).
Why a separate crate (and not just a trait in cli)? When the
repos physically split, the OSS heddle-cli crate ships on
crates.io. The closed heddle-hosted-client crate published in the
private workspace depends on this shim to satisfy cli's trait
bound without cli ever knowing about closed-source code. Same
trait surface, two impls, no circular deps.
Trait methods are intentionally minimal — only the truly
hosted-only commands (auth, support, presence) flow through
here. Hybrid commands like push/pull/fetch/clone stay in
cli because their git-overlay-without-hosted code paths must
work in OSS-only builds too.