mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 05:12:26 +00:00
PR A of the post-cluster install-hardening pair. A multi-agent audit (4 install paths × 2 agents each) showed the README's "copy this one-liner and chat" claim broke on every fresh laptop because of missing git, missing Python 3.11, a racing Ollama daemon, and silently-swallowed model-pull failures. This PR closes the macOS / Linux / WSL2 gaps. Changes in scripts/install/install.sh: 1. Auto-install missing tools (was: hard refuse): - macOS: xcode-select --install + 10-min poll. Refuses fast under SSH (no display for the dialog). - Linux: detects apt-get / dnf / yum / pacman / zypper / apk. Pre-checks `sudo -n true` and refuses fast with actionable guidance if sudo would prompt (stdin is the curl pipe — any prompt silently hangs under `set -euo pipefail`). Uses `;` not `&&` between apt-get update and install. Skips sudo entirely if already root. 2. Auto-install Python 3.11 via uv when missing. Captures real errors to $STATE_DIR/venv-create.err so disk-full / permission-denied isn't hidden behind "downloading managed Python". 3. Replace `sleep 1` after `ollama serve` with a 60-second poll on `ollama list`. Caller guards with `|| true` so timeout surfaces as a warning in the final banner instead of aborting under `set -e`. 4. Track MODEL_PULL_OK + PATH_MODIFIED. The completion banner now tells the truth: if the model pull failed, point at `jarvis doctor` (not bare `jarvis` which would crash). If PATH was just written to ~/.bashrc / ~/.zshrc, print the exact `source <rc> && jarvis` so it works in the same shell. Adversarial review caught 5 real bugs before commit: - SSH/headless macOS xcode-select hang → pre-detect SSH session - sudo no-TTY silent abort → `sudo -n true` precheck - wait_for_ollama timeout tripping ERR trap → `|| true` at call sites - swallowed venv stderr hiding diagnostics → capture to log + surface on fallback failure - contradictory "PATH new + model missing" banner → conditional NEXT_CMD All 26 install bats tests pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>