v0.10.0
Added
-
refs resolvenow verifies that the package it routes to is actually where the config says
it is. A configuredpathis only a locator; the package name is its identity, and upstream
repos restructure on their own schedule. Previously a package that had moved — or a different
package that had taken over its directory — was handed back regardless, so an agent read the
wrong source and answered confidently. That failure produced no error and no warning.package.statusnow reports what was established:verified,relocated(found at exactly
one new path, which is returned in place of the stale one),unmaterialized(no checkout yet),
unverifiable(verification could not complete —reasonsays why),ambiguous(the name
exists at several paths, listed incandidates), ormissing. All six exit0; see
docs/commands.mdfor the full contract.relocatedcorrects the answer for that call only and never writes toconfig.toml. Persist
it withrefs edit <ref> --package <name> path <new-path>.
Changed
-
resolve'spackage.local_pathcan now benull. It isnullformissingand
ambiguous, where no safe location is known. A caller that treated a zero exit as "here is a
usable path" must checkpackage.statusfirst; previously the field was always a string. -
Workspace detection now reports why it found nothing. An unreadable or malformed workspace
declaration, an unreadable manifest, a candidate resolving outside the repo, an unsupported
pattern, a package directory reachable only through a symlink — each used to collapse into the
same empty result, leaving a transient read error indistinguishable from "every package was
removed". Each is now reported, and a scan carrying any of them is treated as possibly
incomplete: it can neither conclude that a package is gone nor that a single sighting of one is
unique.refs addis unaffected — it consumes the same best-effort list it always has.A manifest that reads fine but declares no usable
nameis reported too, but does not make
a scan incomplete: there is demonstrably no resolvable package at that path. Nameless manifests
are common enough (zod's own repository root has none) that treating them as failures would
permanently suppress detection for those repos.One limit is deliberate and worth knowing: a scan only covers what the repo's workspace
declaration points at. A package registered byrefs add's npm fallback — atpath: ".", or
the packument'sdirectory— lives outside that coverage, so if it moves,resolvereports
unverifiablerather than guessing. It never reportsmissingfrom a scan that had nowhere
to look.