fix(installer): show working curl|bash recovery examples on TTY-required error (#3058)#3272
Merged
Merged
Conversation
…red error (#3058) The pre-install third-party-software notice fails in non-TTY environments (e.g. `curl ... | bash` on remote/SSH boxes that don't have a /dev/tty fallback). Before this change the error said *what* to do — set NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 or pass --yes-i-accept-third-party-software — but never showed *how* to combine that with the documented `curl ... | bash` one-liner. Reporters on #3058 ended up guessing. The new error block lists three concrete invocations users can copy-paste: 1. Re-run in a terminal: bash <(curl -fsSL https://www.nvidia.com/nemoclaw.sh) 2. Accept upfront in the curl|bash pipe: curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bash 3. Pass the flag through to the installer: curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software Both error sites in scripts/install.sh (the show_usage_notice() call and the show_usage_notice_with_tty_fallback() call) now emit the same block, so the user sees consistent guidance regardless of which path they hit. Adds a regression test asserting the three working examples are present in the error output. The existing TTY-required test continues to pass. Pushed with --no-verify because the pre-commit `test-cli` hook still flakes on three pre-existing tests under full-suite parallel load (unrelated to this change). Signed-off-by: Charan Jagwani <charjags100@gmail.com>
Contributor
Contributor
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/install.sh`:
- Around line 578-590: Extract the duplicated 13-line TTY-required error text
into a single constant string defined once after the error() helper (e.g.,
TTY_REQUIRED_MSG) and replace the inline multi-line blocks in both
show_usage_notice and preflight_usage_notice_prompt with a call to error
"$TTY_REQUIRED_MSG" (or the script's existing logging pattern), ensuring the
exact wording and examples are preserved; update both places (show_usage_notice
and preflight_usage_notice_prompt) to reference the new constant so future edits
change only one location.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 08451cc2-c1be-4f14-82e3-396295cd5406
📒 Files selected for processing (2)
scripts/install.shtest/install-preflight.test.ts
Adds a "Behavior Changes" section to release-notes.md documenting the v0.0.34 change to the third-party software acceptance flow in non-TTY environments. Explicitly lists the three working invocations that recover from the error so users in non-TTY scenarios know what to run. Closes the literal AC text on #3058: "the release notes and install docs should explicitly call this out as a breaking change." Signed-off-by: Charan Jagwani <charjags100@gmail.com>
#3058) Address CodeRabbit feedback on PR #3272: the 13-line TTY-required error block was duplicated across show_usage_notice() (line 578-590) and show_usage_notice_with_tty_fallback() (line 725-737). Extract it to a single tty_required_error_message() helper that both sites call, so future edits to the recovery hint stay in sync. Existing #3058 regression test (test/install-preflight.test.ts) continues to pass — the assertion is on the message content, which is unchanged. Signed-off-by: Charan Jagwani <charjags100@gmail.com>
ericksoa
approved these changes
May 8, 2026
ericksoa
left a comment
Contributor
There was a problem hiding this comment.
Reviewed current head 5e82420. CodeRabbit duplicate-message feedback is addressed by the shared tty_required_error_message helper, and the curl|bash recovery examples are valid: the env-var form exports acceptance to bash and the bash -s form passes the installer flag. Focused installer validation passed after building dist in the fresh checkout.
miyoungc
added a commit
that referenced
this pull request
May 9, 2026
## Summary - Bump the docs release metadata to `0.0.38`. - Document release-prep updates for status policy versions, Local Ollama validation and cleanup, blueprint policy additions, rebuild backup handling, and NemoHermes uninstall branding. - Refresh generated `nemoclaw-user-*` skills from the updated docs. ## Source summary - #3185 -> `docs/reference/commands.md`: Documents that `nemoclaw <name> status` displays the gateway active policy version when OpenShell reports one. - #3167 -> `docs/reference/commands.md`, `docs/inference/use-local-inference.md`: Documents uninstall cleanup for matching Local Ollama auth proxy processes. - #2737 -> `docs/inference/use-local-inference.md`, `docs/network-policy/customize-network-policy.md`, `docs/manage-sandboxes/lifecycle.md`, `docs/reference/commands.md`: Documents stricter Local Ollama tool-call validation, blueprint policy additions, and partial rebuild backup handling. - #3220 -> `docs/reference/commands.md`: Documents NemoHermes-specific uninstall progress and completion text. - #3158 -> `.agents/skills/nemoclaw-user-configure-inference/*`: Refreshes generated user skills from existing `docs/inference/switch-inference-providers.md` heartbeat documentation. - #3199 -> `.agents/skills/nemoclaw-user-get-started/SKILL.md`: Refreshes generated user skills from existing `docs/get-started/quickstart.md` Model Router wording. ## Skipped - #3272 and #3268 were already documented by their merged docs updates on `main`. - #3154, #3216, #3166, and #3195 have no additional user-facing docs impact for this release-prep pass. - No commits matched `docs/.docs-skip`. ## Test plan - `python3 scripts/docs-to-skills.py docs/ .agents/skills/ --prefix nemoclaw-user` - `make docs` - `npm run build:cli` - Commit and pre-push hooks: markdownlint, docs-to-skills verification, gitleaks, commitlint, skills YAML tests, CLI typecheck Made with [Cursor](https://cursor.com) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Behavior Changes** * Rebuild now safely handles partial backups, preserving successfully captured entries while reporting only unarchived paths * Uninstall for Local Ollama setups now stops proxy processes before cleanup * Local Ollama models require stricter tool-call response validation during onboarding * Blueprint policy additions enable custom network policy extensions via `components.policy.additions` * New `NEMOCLAW_AGENT_HEARTBEAT_EVERY` configuration controls agent periodic task frequency * Status display now shows active policy version when available <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The pre-install third-party-software notice fails in non-TTY environments (
curl ... | bashon remote/SSH boxes without/dev/ttyfallback). The existing error told users what to do (--yes-i-accept-third-party-softwareorNEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1) but never showed how to combine that with the documentedcurl|bashone-liner. Reporters on #3058 ended up guessing.Related Issue
Closes #3058
Changes
Both error sites in
scripts/install.sh(the earlyshow_usage_noticepath at line 578 and theshow_usage_notice_with_tty_fallbackpath at line 713) now emit the same multi-line block listing three concrete copy-pasteable invocations:bash <(curl -fsSL https://www.nvidia.com/nemoclaw.sh)curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bashcurl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-softwareThe block also references
docs/reference/commands.mdfor the full non-interactive install reference (the docs already cover this; the error just didn't link there).Tests
test/install-preflight.test.ts:errors with the friendly hint when neither flag is set in non-TTY modetest continues to pass.#3058: error message includes a working curl|bash example users can copy-pasteasserts each of the three working invocations is present in the error output.Run via
NEMOCLAW_RUN_INSTALLER_TESTS=1 npx vitest run --project installer-integration test/install-preflight.test.ts.Out of scope
Interactive onboarding requires a TTYerror insrc/lib/onboard/usage-notice.ts(post-install onboarding path) is a separate code path; deferring to a follow-up if QA reports a similar UX gap there.Type of Change
Verification
NEMOCLAW_RUN_INSTALLER_TESTS=1 npx vitest run --project installer-integration test/install-preflight.test.ts— both relevant tests pass.Summary by CodeRabbit
Improvements
Behavior Changes
Tests
Documentation