# deps-engine
[](https://crates.io/crates/deps-engine)
[](https://docs.rs/deps-engine)
[](https://github.com/bug-ops/deps-lsp/actions)
[](https://codecov.io/gh/bug-ops/deps-lsp)
[](../../LICENSE)
The composition root for the [deps-lsp](https://github.com/bug-ops/deps-lsp) workspace.
This crate exists only because Cargo forbids a cycle: `deps-core` cannot depend on any
`deps-<ecosystem>` crate, since all 14 already depend on `deps-core`. `deps-engine` sits one
layer above `deps-core` and depends on every feature-gated `deps-<ecosystem>` crate instead,
so every driving adapter (`deps-lsp` and `deps-cli`) shares one
registration instead of each reimplementing it independently.
Not a user-facing crate — nothing here is meant to be consumed directly outside this
workspace's own adapter crates.
## What this crate contains
- `setup::EcosystemRuntime` — bundles the live-updatable settings (`registries.*`) an adapter
threads into the ecosystems that need them
- `setup::register_ecosystems` — wires every feature-enabled `deps-<ecosystem>` crate into a
`deps_core::EcosystemRegistry`
- `deps-cli`'s shared check/update pipeline — per-package OSV verification, freshness-cooldown
fallback selection, and gossip handling, so `check` and `update` agree with the LSP
- `setup::EcosystemRuntime::from_policy` — builds a runtime from a
`deps_core::policy_config::PolicyConfig` snapshot
## Installation
```toml
[dependencies]
deps-engine = { version = "2.0", default-features = false, features = ["cargo", "npm"] }
```
> [!IMPORTANT]
> Requires Rust 1.98 or later. This crate deliberately declares no `default` feature list —
> a consuming adapter must forward the exact ecosystem features it wants (see
> `deps-lsp/Cargo.toml`'s `cargo = ["deps-engine/cargo"]`-style forwarding), or Cargo would
> otherwise activate every ecosystem feature regardless of the adapter's own selection.
## Feature flags
One flag per ecosystem — `cargo`, `npm`, `pypi`, `go`, `bundler`, `dart`, `maven`, `gradle`,
`swift`, `composer`, `nuget`, `deno`, `github-actions`, `gitlab-ci` — each gating that
ecosystem crate's optional dependency and its `ecosystem!`-generated re-exports.
## License
MIT — see [LICENSE](../../LICENSE).