Includes four CI/publish fixes needed for v6.0.4 to ship:
1. scripts/publish-shared.mts::isAlreadyPublished catches the
spawn-wrapper rejection on non-zero exit. `npm view ...@6.0.4`
exits non-zero pre-publish (404 not-published-yet), which was
crashing the publish script before reaching the publish call.
2. scripts/publish.mts gains a `--direct` mode (classic-token
`npm publish`, no staging). The default `--staged` path is
blocked by Socket Firewall not yet allowlisting `/-/stage`
endpoints — tracked in firewall PR #123. `--direct` runs
`pnpm publish` (no `stage publish`) so it never hits the
blocked endpoint family. Same `--provenance` injection in
GitHub Actions; flip back to `--staged` once the firewall fix
ships.
3. .github/workflows/provenance.yml uses the new `--direct` flag
instead of `--staged`. Comment in the YAML pins the SFW PR for
when we revert.
4. .github/workflows/ci.yml test-script prefixes `pnpm run build`
so vitest can resolve dist/ imports in ansi/normalize tests.
5. test/unit/dlx/detect-helpers.test.mts compares against
normalizePath(pkgPath) instead of native-separator path.join
output (fleet forward-slash convention; was failing on the
Windows runner).