cli/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2//! Heddle: An AI-native version control system
3//!
4//! Heddle provides content-addressed storage, immutable history with stable change
5//! identifiers, and explicit agent attribution for AI-augmented development.
6
7#[cfg(not(any(feature = "git-overlay", feature = "native")))]
8compile_error!(
9 "At least one of the `git-overlay` or `native` features must be enabled. \
10 The OSS CLI ships as git-overlay-only, native-only, or both."
11);
12
13pub mod bench;
14// The bridge module stays always-compiled so light consumers (fsck,
15// clone, fetch, remote, checkpoint, operator_loop, gc) keep working in
16// native-only builds without fanning #[cfg] through their use blocks.
17// User-visible separation is enforced at the command surface:
18// `Commands::Bridge` and `Commands::GitOverlay` are gated behind
19// `git-overlay`, so a native-only `heddle` binary exposes no
20// overlay-specific subcommands. Deeper code-elimination can come later.
21pub mod bridge;
22pub mod cli;
23pub mod client;
24pub mod extensions;
25pub mod harness;
26pub mod logging;
27pub mod operation_id;
28#[cfg(feature = "semantic")]
29pub mod semantic;
30pub mod util;
31
32// Shared types now live in cli-shared (so heddle-client can depend on
33// them without a cli ↔ heddle-client cycle). Re-export under the
34// historical paths so internal code keeps working.
35pub use cli_shared::{config, remote};
36
37pub use objects::{
38 error::{HeddleError, HeddleError as StoreError},
39 store::ObjectStore,
40};
41pub use repo::Repository;
42pub type StoreResult<T> = objects::error::Result<T>;
43
44#[cfg(test)]
45mod object_graph_tests;