mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-01 12:02:05 +00:00
The desktop install step ran npm ci / npm run pack with no wall-clock cap, and the sibling browser-tools / TUI / agent-browser dependency installs had the same gap. The Electron binary (~150MB) is fetched from GitHub during the pack; on a throttled or region-blocked link that download can *stall* rather than fail — npm never errors and never exits, so the installer sits on "Build desktop app" (step 9/11) indefinitely with only harmless 'npm warn deprecated' lines visible. The existing self-heal escalation (cache purge -> dist restore -> npmmirror fallback) only fires when pack returns non-zero, so a stall bypassed it. - run_with_timeout (generalized from run_browser_install_with_timeout): GNU timeout --foreground -k 10 (Ctrl+C-aware, #35166) / gtimeout for external commands, else a pure-shell process-group watchdog so stock macOS (neither binary present) is protected. Shell functions (_desktop_pack) always take the pure-shell path — the timeout binary can't exec a function. Integer-normalized budget + a boundary recheck so a command finishing in the final poll second isn't mislabeled 124. The internal wait is guarded so set -e can't abort mid-function before the real exit code is computed. - Wrap the desktop npm ci/install (sharing ONE budget via a computed deadline so a stall can't cost 2x DESKTOP_BUILD_TIMEOUT) + all three _desktop_pack attempts (DESKTOP_BUILD_TIMEOUT, default 900s), and the browser-tools / TUI / agent- browser registry installs (NODE_DEPS_TIMEOUT, default 600s). A stall now converts to a bounded non-zero exit that feeds the existing mirror self-heal instead of hanging the whole install. |
||
|---|---|---|
| .. | ||
| ci | ||
| lib | ||
| tests | ||
| whatsapp-bridge | ||
| analyze_livetest.py | ||
| benchmark_browser_eval.py | ||
| build_model_catalog.py | ||
| build_skills_index.py | ||
| check-windows-footguns.py | ||
| check_subprocess_stdin.py | ||
| contributor_audit.py | ||
| discord-voice-doctor.py | ||
| docker_config_migrate.py | ||
| hermes-gateway | ||
| install.cmd | ||
| install.ps1 | ||
| install.sh | ||
| install_psutil_android.py | ||
| keystroke_diagnostic.py | ||
| kill_modal.sh | ||
| lint_diff.py | ||
| LIVETEST_README.md | ||
| profile-tui.py | ||
| release.py | ||
| run_tests.sh | ||
| run_tests_parallel.py | ||
| sample_and_compress.py | ||
| setup_open_webui.sh | ||
| tool_search_livetest.py | ||