Expand description
The package manager: nova.toml parsing, package names, finding a
project, and the package graph (Phase 3.0 and 3.3a; specs
docs/superpowers/specs/2026-10-07-phase-3-0-foundations-design.md §5
and §6.1, and
docs/superpowers/specs/2026-10-08-phase-3-3a-local-packages-design.md
§3), and the index’s offline side: $NOVA_HOME, nova.lock and the
resolver (spec
docs/superpowers/specs/2026-10-09-phase-3-3b-index-and-publishing-design.md
§4, §5). See ARCHITECTURE.md for the crate’s place in the pipeline.
Re-exports§
pub use manifest::parse;pub use manifest::Dependency;pub use manifest::Manifest;pub use manifest::Package;
Modules§
- manifest
nova.toml: what 3.0 reads, and the diagnostics that point into it (specdocs/superpowers/specs/2026-10-07-phase-3-0-foundations-design.md§5).
Structs§
- Candidate
- One version of a package, as the index lists it.
- Edge
- A dependency that resolved.
- Graph
- The root package, and every package its dependencies reach.
- Graph
Package - One package of a
Graph. - Lock
- A project’s
nova.lock. - Locked
Package - One registry package of a
Lock. - Offline
- Where the graph finds registry packages (spec 3.3b §5.4).
- Package
Id - A package’s index in its
Graph. The root isPackageId(0). - Requirement
- A requirement on a package, and where it came from.
Enums§
- Resolve
Error - Why a resolution failed.
- Unlock
- What a resolution may change (spec §4.4).
Constants§
Traits§
- Index
View - What the resolver asks of an index.
Functions§
- canonical_
index - The canonical form of an index’s location: how indexes are compared,
and what
nova.lockand the cache are keyed by. - check_
name - Check a package name: ASCII letters, digits,
-and_, starting with a letter, at most 64 characters, and not a Windows device name. The error says which rule the name breaks. - find_
root - The nearest directory at or above
startthat holds anova.tomlfile. - graph
- Read the package at
root, the directory holding itsnova.toml(empty for the current directory), and every package its dependencies reach. Every manifest goes intodb, so each diagnostic’s label renders. - graph_
from graph, with the root’snova.tomltaken fromtextwhen it is given:nova addchecks a new entry this way before writing it.- graph_
with graph_from, with registry packages found asofflinesays.- import_
name - A package’s import name: its name with each
-replaced by_(specdocs/superpowers/specs/2026-10-08-phase-3-3a-local-packages-design.md§3.4), sojson-apiis imported asimport json_api. - index_
dir_ name - The cache directory’s name for a canonical index (spec §5.1): its host
without a port, keeping only
a-z,0-9,.and-(localfor a local index), then-and the CRC-32 of the canonical form. - is_
portable - Whether
component, one name in a path, is valid on Windows, macOS and Linux (specdocs/superpowers/specs/2026-10-09-phase-3-3b-index-and-publishing-design.md§6.5): - local_
index_ path - The directory a canonical
file:index names;Nonefor an HTTP one. - nova_
home $NOVA_HOME: the variable when it is set, else.novain the home directory, which isUSERPROFILEon Windows andHOMEelsewhere.Nonewhen neither is set; an empty value counts as unset. It takes the variables’ values rather than reading them, so tests need not change the process environment.- nova_
home_ from_ env nova_homefrom this process’s environment.- parse_
lock - Parse
text, the contents of anova.lockthat aFileDbholds asfile. Anything a lock written by nova would not hold is M0016. - real_
path path, canonicalised when it exists, without Windows’\\?\prefix, so that it is spelled as the file system spells it. A package is identified by its directory’s real path (spec 3.3a §3.3), and the language server builds unopened files’ URIs on it.- registry_
dir $NOVA_HOME/registry, where downloaded packages live (spec §5.1).- requirements
- Every version entry that the root and its path packages declare, for
the resolver (spec 3.3b §4.1): who made each one, and the root’s entry
through which it is reached. The root’s dev-dependencies count when
devis set. The root’snova.tomlistextwhen it is given. - resolve
- The packages
requirementsneed, newest versions first, keepinglock‘s versions asunlocksays. Sorted by name, each with its dependencies’ names.