fix(inference): narrow Hermes Provider host smoke skip - #4474
Conversation
Replay the Hermes Provider onboarding fix from #4385 so OAuth-backed agent-key storage does not get blocked by an unrelated ambient host OPENAI_API_KEY. Co-authored-by: shannonsands <7897813+shannonsands@users.noreply.github.com> Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Limit the Hermes Provider host-smoke skip to OAuth-backed OPENAI_API_KEY storage. Nous API key onboarding still has a host credential, so keep direct validation for bad keys, base URLs, or models. Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds credentialEnv awareness to OpenAI-like onboarding smoke probes and short-circuits Hermes+OPENAI_API_KEY; introduces a spawn-based harness and tests that assert the verifier skips the Hermes OAuth smoke path while exercising other probes. ChangesHermes credential-aware smoke route verification
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
E2E Scenario Advisor RecommendationRequired scenario E2E: None Full scenario advisor summaryE2E Scenario AdvisorBase: Required scenario E2E
Optional scenario E2E
Relevant changed files
|
PR Review AdvisorFindings: 0 needs attention, 3 worth checking, 0 nice ideas Review findings🛠️ Needs attention
🔎 Worth checking
🌱 Nice ideas
Since last review detailsCurrent findings:
This is an automated advisory review. A human maintainer must make the final merge decision. |
Selective E2E Results — ✅ All requested jobs passedRun: 26611404940
|
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Selective E2E Results — ❌ Some jobs failedRun: 26612236669
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@test/helpers/onboard-smoke-verifier-harness.ts`:
- Line 24: The function signature for patchedLoad currently declares unused
parameters parent and isMain; update the signature of Module._load's replacement
(patchedLoad) to underscore unused params (e.g., _parent and _isMain) so it
complies with the TS/JS unused-variable rule; ensure you only rename the
parameters in the patchedLoad declaration (and any internal references if
present) to _parent and _isMain and run linters/tests.
- Around line 1-3: This file is missing the required SPDX header; add the exact
SPDX copyright and license header block at the very top of
onboard-smoke-verifier-harness.ts (above the existing import lines) so it
matches the project's required header for *.ts files; ensure the header text is
identical to other repository files (including SPDX identifier and copyright
notice) and commit the change so the file begins with that header before any
code or imports.
🪄 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: 2150bf92-4bba-449c-95b8-53b524007fa9
📒 Files selected for processing (3)
src/lib/inference/onboard-probes.test.tssrc/lib/inference/onboard-probes.tstest/helpers/onboard-smoke-verifier-harness.ts
Selective E2E Results — ✅ All requested jobs passedRun: 26612549820
|
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Selective E2E Results — ✅ All requested jobs passedRun: 26612836287
|
Selective E2E Results — ✅ All requested jobs passedRun: 26612903335
|
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
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 `@test/onboard-smoke-verifier.test.ts`:
- Line 7: Replace the CommonJS require with an ESM named import for the probe:
change the require(...) call that imports shouldSmokeOpenAiLikeOnboardRoute to
an ES module import statement (import { shouldSmokeOpenAiLikeOnboardRoute } from
"../dist/lib/inference/onboard-probes";) so the test file uses ESM syntax
consistent with Vitest and the repo policy; keep the exact exported symbol name
shouldSmokeOpenAiLikeOnboardRoute and ensure there are no other require() usages
in this test file.
🪄 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: c9a38766-d5ad-4f11-a57f-0b59eba938b3
📒 Files selected for processing (2)
src/lib/inference/onboard-probes.test.tstest/onboard-smoke-verifier.test.ts
💤 Files with no reviewable changes (1)
- src/lib/inference/onboard-probes.test.ts
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
Selective E2E Results — ✅ All requested jobs passedRun: 26613392563
|
…moke-replay-topper
Selective E2E Results — ✅ All requested jobs passedRun: 26614609785
|
Selective E2E Results — ✅ All requested jobs passedRun: 26614787159
|
## Summary Refreshes the NemoClaw documentation for the v0.0.54 release and regenerates user skills from the Fern MDX source. Also keeps the Fern CLI pin current so local docs checks use the upgraded Fern version. ## Related Issue <!-- No single related issue. This is release-prep documentation catch-up. --> ## Changes - #4403 -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Document Telegram, Discord, and Slack post-rebuild bridge verification and summarize channel activation fixes. - #4222 -> `docs/about/release-notes.mdx`: Include Slack generated channel enablement in the v0.0.54 messaging summary. - #4346 -> `docs/get-started/windows-preparation.mdx`, `docs/about/release-notes.mdx`: Document safer Windows bootstrap behavior for Ubuntu first-run and Docker Desktop WSL integration. - #4416 -> `docs/inference/use-local-inference.mdx`, `docs/about/release-notes.mdx`: Document the Docker Desktop WSL requirement for Windows-host Ollama. - #4442 -> `docs/about/release-notes.mdx`: Summarize the optional NemoHermes native web dashboard and related environment variables. - #4426 -> `docs/about/release-notes.mdx`: Summarize copy-paste recovery hints for invalid sandbox names and missing NVIDIA API keys. - #4459 -> `docs/about/release-notes.mdx`: Summarize the Linuxbrew prefix fix for sandbox Homebrew usage. - #4450 -> `docs/about/release-notes.mdx`: Summarize `/nemoclaw` slash command startup activation. - #4468 -> `docs/about/release-notes.mdx`: Summarize scope-upgrade approval recovery. - #4325 -> `docs/about/release-notes.mdx`: Summarize the narrowed `web_fetch` host-gateway allowance. - #4474 -> `docs/about/release-notes.mdx`: Summarize Hermes Provider smoke-check behavior for OAuth versus Nous API key setup. - Refresh generated `.agents/skills/nemoclaw-user-*` references from `docs/` and update `fern/fern.config.json` to Fern `5.41.2`. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification <!-- Check each item you ran and confirmed. Leave unchecked items you skipped. Doc-only changes do not require npm test unless you ran it. --> - [ ] `npx prek run --all-files` passes - [ ] `npm test` passes - [ ] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [x] Docs updated for user-facing behavior changes - [ ] `npm run docs` builds without warnings (doc changes only) - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) --- <!-- DCO sign-off required by CI. Run: git config user.name && git config user.email --> Signed-off-by: Miyoung Choi <miyoungc@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Optional NemoHermes native web dashboard (configurable port and TUI) * GPU memory cleanup now unloads Ollama models when switching providers or stopping services * **Bug Fixes** * Improved sandbox name validation with suggested slug recovery * Windows-host Ollama now requires Docker Desktop WSL integration and exits with remediation guidance when unsupported * **Documentation** * Clarified quickstart/onboard flow, installer TTY/non‑TTY guidance, Hermes Docker prerequisites, sandbox hardening, and channels add rebuild checks <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/4539?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
Replay the Hermes Provider host-smoke fix from #4385 on a maintainer branch, then narrow it so only OAuth-backed Hermes Provider onboarding skips the host-side OpenAI-compatible smoke probe. Nous API key onboarding still has a host credential, so it keeps direct validation for bad keys, base URLs, or models.
Original Contribution
Co-authored-bytrailer.Changes
hermes-provideronly when the onboarding credential env isOPENAI_API_KEY, which is the OAuth agent-key storage path.hermes-providerwithNOUS_API_KEY.Verification
npm run build:clipassesnpm run typecheck:clipassesnpx vitest run src/lib/inference/onboard-probes.test.tspassesnpx @biomejs/biome check src/lib/inference/onboard-probes.ts src/lib/inference/onboard-probes.test.tspassesgit diff --checkpassesSigned-off-by: Aaron Erickson aerickson@nvidia.com
Summary by CodeRabbit
Bug Fixes
Tests