//! Content-addressed package manager for Trident.
//!
//! Parses `[dependencies]` from `trident.toml`, manages a lockfile
//! (`trident.lock`), and caches dependency sources under `.trident/deps/`.
//!
//! Three dependency kinds:
//!   - **Hash** โ€” pinned by a 64-hex-char BLAKE3 content hash.
//!   - **Registry** โ€” resolved via a `RegistryClient` by name.
//!   - **Path** โ€” local filesystem, re-read every build.

use std::collections::BTreeMap;
use std::path::PathBuf;

// โ”€โ”€โ”€ Data Types โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

/// A declared dependency in trident.toml.
#[derive(Clone, Debug)]
pub enum Dependency {
    /// Pinned by content hash (64 hex chars).
    Hash { hash: String },
    /// Resolved via a registry by name.
    Registry { name: String, registry: String },
    /// Local filesystem path.
    Path { path: PathBuf },
}

/// A resolved (locked) dependency.
#[derive(Clone, Debug)]
pub struct LockedDep {
    pub name: String,
    pub hash: String,
    pub source: String, // "registry:<url>", "path:<relative>", "hash"
}

/// Package manifest: parsed `[dependencies]` from trident.toml.
#[derive(Clone, Debug, Default)]
pub struct Manifest {
    pub dependencies: BTreeMap<String, Dependency>,
}

/// Lock file contents.
#[derive(Clone, Debug, Default)]
pub struct Lockfile {
    pub locked: BTreeMap<String, LockedDep>,
}

mod lockfile;
mod parse;
mod resolve;

pub use lockfile::{load_lockfile, save_lockfile};
pub use parse::parse_dependencies;
pub use resolve::{dep_source_path, dependency_search_paths, resolve_dependencies};

#[cfg(test)]
mod tests;

Dimensions

trident/src/diagnostic/mod.rs
trident/src/ir/mod.rs
trident/src/deploy/mod.rs
trident/src/syntax/mod.rs
trident/src/api/mod.rs
nebu/rs/extension/mod.rs
optica/src/render/mod.rs
trident/src/config/mod.rs
trident/src/field/mod.rs
trident/src/cli/mod.rs
optica/src/parser/mod.rs
trident/src/neural/mod.rs
trident/src/cost/mod.rs
trident/src/typecheck/mod.rs
optica/src/server/mod.rs
trident/src/package/mod.rs
optica/src/scanner/mod.rs
optica/src/output/mod.rs
trident/src/verify/mod.rs
optica/src/graph/mod.rs
trident/src/ast/mod.rs
trident/src/lsp/mod.rs
trident/src/runtime/mod.rs
trident/src/gpu/mod.rs
optica/src/query/mod.rs
trident/src/lsp/semantic/mod.rs
trident/src/verify/equiv/mod.rs
trident/src/package/hash/mod.rs
trident/src/neural/training/mod.rs
trident/src/verify/synthesize/mod.rs
trident/src/ir/tir/mod.rs
rs/macros/src/addressed/mod.rs
trident/src/package/registry/mod.rs
rs/rsc/src/lints/mod.rs
trident/src/verify/report/mod.rs
trident/src/config/resolve/mod.rs
trident/src/verify/solve/mod.rs
rs/macros/src/registers/mod.rs
trident/src/verify/smt/mod.rs
rs/macros/src/cell/mod.rs
rs/core/src/fixed_point/mod.rs
trident/src/neural/data/mod.rs
rs/core/src/bounded/mod.rs
trident/src/lsp/util/mod.rs
trident/src/typecheck/tests/mod.rs
trident/src/neural/model/mod.rs
trident/src/cost/stack_verifier/mod.rs
trident/src/syntax/grammar/mod.rs
trident/src/syntax/parser/mod.rs
trident/src/ir/kir/mod.rs
trident/src/neural/inference/mod.rs
trident/src/syntax/lexer/mod.rs
trident/src/cost/model/mod.rs
trident/src/ir/lir/mod.rs
trident/src/syntax/format/mod.rs
trident/src/config/scaffold/mod.rs
trident/src/verify/sym/mod.rs
trident/src/api/tests/mod.rs
trident/src/package/store/mod.rs
trident/src/ir/tree/mod.rs
trident/src/ir/kir/lower/mod.rs
trident/src/ir/lir/lower/mod.rs
trident/src/ir/tir/lower/mod.rs
trident/src/ir/tir/builder/mod.rs
trident/src/ir/tir/neural/mod.rs
trident/src/neural/data/tir_graph/mod.rs
trident/src/syntax/parser/tests/mod.rs
cw-cyber/packages/cyber-std/src/tokenfactory/mod.rs
trident/src/ir/tree/lower/mod.rs
trident/src/ir/tir/stack/mod.rs
cw-cyber/contracts/cybernet/src/tests/mod.rs
trident/src/ir/tir/optimize/mod.rs

Local Graph