hermes-agent/scripts
Teknium 6b519255ea fix(update): provision a managed Node runtime when system npm fails engines.npm
The npm 12 requirement (f88ed6c717) strands every system-Node install:
no shipping Node bundles npm >=12, engine-strict makes EBADENGINE fatal,
and the recovery in npm_engine.py refuses to touch a system npm — so
'hermes update' leaves the install in a mixed state (updated code, stale
Node deps, no TUI/web/desktop rebuild) with only a manual-fix hint.

Instead of modifying the user's toolchain (still never done), the
EBADENGINE recovery now provisions Hermes' own managed Node tree under
$HERMES_HOME/node — the same pinned-nodejs.org path install.sh and
install.ps1 use — upgrades THAT npm into the required range, and hands
the caller the managed npm for its single retry.

- hermes_constants.bootstrap_hermes_managed_node(): cross-platform
  provisioning (POSIX via node-bootstrap.sh _nb_install_bundled_node,
  Windows via the existing portable-zip download); reuses a healthy tree.
- node-bootstrap.sh: HERMES_NODE_SKIP_LINKS=1 skips the ~/.local/bin
  node/npm/npx symlinks so the private tree never shadows the user's
  own toolchain on PATH.
- maybe_repair_npm_engine() now returns the npm path to retry with
  (managed-in-place upgrade or freshly provisioned runtime); both call
  sites retry with the returned path and put the managed tree first on
  PATH so npm lifecycle scripts resolve the managed node.
- Node-only mismatches on a foreign npm are now also recoverable (the
  managed tree ships a supported Node); on a managed npm they still
  correctly decline.

E2E (real download, temp HERMES_HOME): provisioned node v22.23.2,
upgraded bundled npm 10.9.4 -> 12.0.2, system npm byte-identical after,
no ~/.local/bin links re-pointed, healthy-tree reuse in 0.05s.
2026-08-01 16:40:50 -07:00
..
ci ci: skip Desktop E2E + Docker build on tests-only PRs (python_prod lane) 2026-08-01 14:59:14 -07:00
lib fix(update): provision a managed Node runtime when system npm fails engines.npm 2026-08-01 16:40:50 -07:00
observability
…
tests
…
whatsapp-bridge
…
LIVETEST_README.md
…
add_contributor.py
…
analyze_livetest.py
…
benchmark_browser_eval.py
…
build_model_catalog.py
…
build_skills_index.py
…
capture-cage-terminal.sh
…
check-windows-footguns.py
…
check_subprocess_stdin.py
…
contributor_audit.py
…
dev-sandbox.sh
…
discord-voice-doctor.py
…
docker_config_migrate.py
…
docker_rebootstrap_nous_session.py
…
generate_conformance_vectors.py
…
hermes-gateway
…
install.cmd
…
install.ps1
…
install.sh
…
install_psutil_android.py
…
iso-certify.py
…
keystroke_diagnostic.py
…
kill_modal.sh
…
lint_diff.py
…
micro_compaction_report.py
…
profile-tui.py
…
release.py fix(caching): honor prompt_caching.cache_ttl disable in config 2026-08-01 14:14:15 +05:30
run_tests.sh
…
run_tests_parallel.py
…
sample_and_compress.py
…
smoke_nemo_relay_shared_metrics.py
…
tool_search_livetest.py
…
tool_search_livetest2.py
…
tool_search_livetest_ue.py
…
tool_search_livetest_ue_disc.py
…
tool_search_livetest_ue_hard.py
…