fix(inference): add sandbox-scoped inference get/set commands (#5977) - #5989
Conversation
`inference get`/`set` only existed as global commands, so the sandbox-first grammar `nemohermes <sb> inference get` (and `... inference set ...`) failed with `Unknown action: inference`. The only working path was the global `nemohermes inference set --provider ... --model ... --sandbox <sb>`, which is asymmetric with every other per-sandbox action. Add `sandbox:inference:get` and `sandbox:inference:set` oclif commands that delegate to the existing `runInferenceGet`/`runInferenceSet` actions with the sandbox name supplied in sandbox-first position. The set command threads the positional sandbox name into the same code path as `inference set --sandbox`; the get command reads the same gateway-wide route and accepts the name so the grammar stays symmetric. Public dispatch now routes `<sb> inference get/set` to these command ids (and `<sb> inference` / `--help` to topic help, matching the existing `config` precedent), and `inference` becomes a valid sandbox action token. Add hidden public display metadata so the new leaf commands satisfy the display-coverage contract without duplicating the visible global entries in root help. Update the docs reference grammar for both aliases. Tests: extend the public-argv-translation contract with sandbox-scoped inference get/set translation and topic-help routing, and update the command-registry counts (sandbox actions 29->30, hidden 12->14, sandbox commands 49->51). Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (3)
💤 Files with no reviewable changes (1)
✅ Files skipped from review due to trivial changes (2)
📝 WalkthroughWalkthroughAdds sandbox-first ChangesSandbox inference get/set commands
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in the Show a code coverage summary of the most covered files.
TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most covered files.
Updated |
|
🌿 Preview your docs: https://nvidia-preview-pr-5989.docs.buildwithfern.com/nemoclaw |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
Vitest E2E Scenario RecommendationRequired Vitest E2E scenarios: Dispatch required Vitest E2E scenarios:
Full Vitest E2E advisor summaryVitest E2E Scenario AdvisorBase: Required Vitest E2E scenarios
Optional Vitest E2E scenarios
Relevant changed files
|
Real worktree-CLI verification (E2E)Run from the PR worktree via the actual launcher ( 1. 2. 3. Both |
PR Review Advisor (Nemotron Ultra) — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
🚨 Required before mergeAddress these before merging unless a maintainer explicitly overrides the advisor with rationale.
|
PR Review Advisor — No blocking findingsMerge posture: No blocking advisor findings This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision. |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
test/package-contract/cli/command-registry.test.ts (1)
59-66: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPrefer presence assertions over rebasing registry totals.
These
51/14/30expectations will churn on any unrelated command addition, even when the sandbox-first inference contract still works. Keep asserting the new inference usages and the"inference"token, but avoid tying this test to the full registry size. As per path instructions, "Prefer observable outcomes through the public boundary over source-text, private-shape, or mock-call assertions."Also applies to: 89-102, 224-237
🤖 Prompt for 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. In `@test/package-contract/cli/command-registry.test.ts` around lines 59 - 66, The command registry tests are overfitted to exact totals, so replace the brittle length checks in command-registry.test.ts with presence-focused assertions around the public inference contract. Keep the assertions that verify the new inference usages and the "inference" token via sandboxCommands and the related registry checks, but stop asserting the full registry sizes in the command registry and related test blocks. Use the existing test helpers and symbols like sandboxCommands and the inference-related command entries to validate observable behavior without depending on unrelated command count changes.Source: Path instructions
🤖 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 `@docs/reference/commands-nemohermes.mdx`:
- Around line 1528-1529: The added prose in the affected MDX reference entries
is wrapped across multiple source lines, violating the one-sentence-per-line
docs rule. Reflow the new text in the nemohermes command reference so each
sentence in the added paragraphs stays on a single source line, including the
sentence near nemohermes <name> inference get and the other added prose around
the referenced section.
In `@docs/reference/commands.mdx`:
- Around line 1877-1878: The added prose in the reference docs wraps across
multiple source lines, violating the one-sentence-per-line MDX formatting rule.
Reflow the new sentences in the affected `commands.mdx` sections so each
sentence appears on a single source line, keeping the text unchanged while
preserving the existing `$$nemoclaw <name> inference get` and related prose.
In `@src/commands/sandbox/inference/set.ts`:
- Around line 57-62: The missing-flags path in SandboxInferenceSetCommand.run
still uses the “Unknown ${CLI_NAME} command: inference set” lead line, which
makes the matched sandbox command look unsupported. Update the message shown
when --provider or --model is absent so it clearly indicates missing required
flags instead of unknown command, while keeping the existing OpenShell redirect
from printOpenShellRedirect. Use the run method and the printOpenShellRedirect
helper to locate the branch and adjust the text there.
---
Nitpick comments:
In `@test/package-contract/cli/command-registry.test.ts`:
- Around line 59-66: The command registry tests are overfitted to exact totals,
so replace the brittle length checks in command-registry.test.ts with
presence-focused assertions around the public inference contract. Keep the
assertions that verify the new inference usages and the "inference" token via
sandboxCommands and the related registry checks, but stop asserting the full
registry sizes in the command registry and related test blocks. Use the existing
test helpers and symbols like sandboxCommands and the inference-related command
entries to validate observable behavior without depending on unrelated command
count changes.
🪄 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: d387e0e6-6c51-4ea8-b5e1-a1b356dd9752
📒 Files selected for processing (7)
docs/reference/commands-nemohermes.mdxdocs/reference/commands.mdxsrc/commands/sandbox/inference/get.tssrc/commands/sandbox/inference/set.tssrc/lib/cli/public-display-defaults.tstest/package-contract/cli/command-registry.test.tstest/package-contract/cli/public-argv-translation.test.ts
CodeRabbit feedback: - `sandbox:inference:set` printed `Unknown <cli> command: inference set` when `--provider`/`--model` were missing, even though the command had already matched. Replace the lead line with an explicit missing-flags message while keeping the OpenShell route hint. - Split the sandbox-first `inference set` doc note into one sentence per source line to satisfy the Markdown/MDX one-sentence-per-line rule (regenerated the nemohermes variant from commands.mdx). Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks @coderabbitai — addressed in 62971d8:
|
|
Tip For best results, initiate chat on the files or code changes.
The 🐇👍 ✏️ Learnings added
|
Address PR Review Advisor PRA-1/PRA-T1..T5: the package-contract tests proved public argv translation and registry discovery but stopped before executing the new `SandboxInferenceSetCommand` / `SandboxInferenceGetCommand` wrappers. Add co-located adapter tests (mirroring the global inference adapter tests) that execute the commands with mocked actions and assert the parser-to-action contract: - positional sandbox name + all inference flags (--no-verify, --endpoint-url, --credential-env, --inference-api) are forwarded to runInferenceSet - missing --provider/--model prints the missing-flags redirect and never calls the action - an empty --provider is rejected by the non-empty parser before the action runs - `get --json` calls runInferenceGet with quiet:true and emits the JSON payload - typed InferenceSetError/InferenceGetError map to the process exit code without throwing an oclif ExitError Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@nemoclaw-pr-review-advisor — Added
All 5 pass in the |
Respond to PR Review Advisor findings on the sandbox-scoped inference commands: - Add command-layer tests asserting the get "route not configured" path and typed set validation failures (unsupported provider, unsafe model id) surface their message and exit code (PRA-1, PRA-2, PRA-8, T1-T8). - Document the global/sandbox command pairing and that deep validation is intentionally centralized in the shared runInferenceSet/runInferenceGet action layer (PRA-3, PRA-5). - Extract the duplicated nonEmptyFlag helper into src/lib/cli/flag-helpers shared by the global and sandbox-first inference set commands (PRA-7). Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Response to PR Review Advisor (Nemotron Ultra)Addressed in
Justified / already-resolved:
|
E2E Target RecommendationRequired E2E targets: Dispatch required E2E targets:
Full E2E target advisor summaryE2E Target AdvisorBase: Required E2E targets
Optional E2E targets
Relevant changed files
|
…fs (#5977) Address the refreshed PR Review Advisor pass on the sandbox-scoped inference commands: - Add command-layer negative tests covering the remaining validation categories the advisor enumerated (PRA-2): malformed endpoint-url (ftp://, embedded credentials, missing scheme), credential-env mismatch, disallowed inference-api, and custom metadata flags with a non-compatible provider — each asserts the typed InferenceSetError surfaces with exit code 2 and message at the command boundary. - Note the sandbox-first grammar in the global inference get/set command descriptions for both nemoclaw and nemohermes docs (PRA-5). Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Response to refreshed advisor pass (head
|
…5977) Add the symmetric empty --model parse-level rejection test the advisor flagged (PRA-4): both --provider and --model use the shared nonEmptyFlag helper, so assert --model whitespace is rejected before runInferenceSet is called, mirroring the existing --provider case. Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Source-of-truth review — local provider verify bypass (PRA-2 required; PRA-1, PRA-3)The advisor requires a source-of-truth review of the local-provider verify bypass at
Also addressed in
This required item concerns pre-existing, out-of-PR-scope code; resolution here is the explicit justification above. A maintainer makes the final merge decision. |
…rence action (#5977) Add two real-CLI public-dispatch tests proving the #5977 fix end to end: a missing sandbox name with the new `inference` action routes through sandbox-name validation ("Sandbox '<name>' does not exist") instead of the old "Unknown action: inference" dead end, and an unknown action on an existing sandbox lists `inference` among the reporter-facing Valid actions. Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@coderabbitai review |
✅ Action performedReview finished.
|
…ference-commands # Conflicts: # test/package-contract/cli/command-registry.test.ts
|
@coderabbitai review |
✅ Action performedReview finished.
|
cv
left a comment
There was a problem hiding this comment.
Reviewed the sandbox-scoped inference command adapters, shared flag validation, dispatch/display integration, and focused tests. Both required OpenClaw inference-switch variants passed on exact head; CI, CodeRabbit, GPT PR Advisor, DCO, and commit verification are clean. Approved for v0.0.74, sequenced after the OpenShell dependency foundation.
<!-- markdownlint-disable MD041 --> ## Summary This PR prepares the user-facing documentation for v0.0.74 before the release plan is frozen. It expands the release notes across the 56-commit train and closes durable documentation gaps found during the pre-tag commit scan. ## Changes - Expand the `v0.0.74` release notes to cover OpenShell 0.0.72, managed MCP, progressive tool disclosure, LangChain Deep Agents Code, onboarding, local inference, messaging, recovery, and contributor workflows. - Correct the `destroy` contract for retained per-name volumes, gateway-unreachable `--force` cleanup, managed MCP ownership, and same-name recovery. - Document separate remediation for an unreachable container DNS resolver versus one that answers with `NXDOMAIN` or `REFUSED`. - Document the Windows on Arm N1X automatic Ollama safeguard and its remaining large-model limitations. - State that messaging conflicts abort rebuild before backup or deletion, leaving the original sandbox intact. - Link the agent-runnable value benchmark from the contributor task index. - Synchronize generated agent command variants. - Validate with `npm run docs:sync-agent-variants` and `npm run docs`; Fern completed with 0 errors and 2 existing warnings. - Source summary: - [#6020](#6020) and [#5876](#5876) -> `docs/about/release-notes.mdx`: Consolidate the OpenShell 0.0.72 policy boundary and managed MCP lifecycle. - [#6251](#6251) and [#5989](#5989) -> `docs/about/release-notes.mdx`: Summarize progressive tool disclosure and sandbox-first inference controls. - [#6232](#6232), [#6082](#6082), [#6219](#6219), [#6214](#6214), [#6215](#6215), [#6230](#6230), and [#6260](#6260) -> `docs/about/release-notes.mdx`: Summarize the experimental LangChain Deep Agents Code status, secret, version, rebuild, snapshot, and MCP boundaries. - [#6166](#6166), [#6254](#6254), [#6265](#6265), [#6164](#6164), and [#6017](#6017) -> `docs/about/release-notes.mdx`: Summarize BuildKit prebuild, validated image reuse, bounded readiness, and preflight improvements. - [#6150](#6150) -> `docs/about/release-notes.mdx` and `docs/reference/troubleshooting.mdx`: Separate unreachable-resolver remediation from reachable-but-rejected DNS responses. - [#6234](#6234) -> `docs/about/release-notes.mdx`, `docs/inference/use-local-inference.mdx`, and `docs/get-started/windows-preparation.mdx`: Document N1X automatic 9B selection and the remaining explicit-large-model boundary. - [#6129](#6129), [#5987](#5987), [#5955](#5955), and [#6220](#6220) -> `docs/about/release-notes.mdx`, `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/commands.mdx`, and `docs/reference/commands-nemohermes.mdx`: Document messaging policy persistence, status, and the pre-destructive conflict check. - [#5963](#5963), [#6050](#6050), [#6094](#6094), [#6238](#6238), [#5988](#5988), [#6235](#6235), [#6181](#6181), and [#5986](#5986) -> `docs/about/release-notes.mdx`, `docs/reference/commands.mdx`, and `docs/reference/commands-nemohermes.mdx`: Summarize day-two recovery and clarify retained-volume and local-only destroy semantics. - [#6200](#6200), [#6248](#6248), [#6168](#6168), [#6270](#6270), and [#5649](#5649) -> `docs/about/release-notes.mdx` and `CONTRIBUTING.md`: Summarize contributor setup and verification improvements and expose the advisory value benchmark. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [x] Doc only (includes code sample changes) ## Quality Gates <!-- Check exactly one tests line and one docs line. Check other lines when applicable. Add every requested justification or approval reference. --> - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: documentation-only release preparation; generated-variant synchronization and the Fern docs build validate the changed pages and routes. - [x] Docs updated for user-facing behavior changes - [ ] Docs not applicable — justification: - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification <!-- Check each applicable item only when supported by the requested evidence. Run targeted tests once per relevant change set and rerun after later edits or hook autofixes that can affect the tested behavior. Do not rerun hook-covered checks. --> - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: tests are not applicable to this documentation-only change; `npm run docs` validates the source and generated routes. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `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 is required in this PR description, and every commit must appear as Verified in GitHub. Run: git config user.name && git config user.email --> Signed-off-by: Aaron Erickson <aerickson@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Expanded setup guidance for Windows on Arm devices with safer default local model selection. * Clarified local inference and sandbox messaging behavior, including conflict checks before rebuilds and safer recovery steps. * Updated destroy/rebuild/reference docs with more detailed warnings, failure handling, and volume-retention guidance. * Improved troubleshooting instructions for Docker DNS issues with clearer paths for unreachable vs. blocked resolvers. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
…#5977) (NVIDIA#5989) ## Summary The sandbox-first grammar `nemohermes <sb> inference get` / `... inference set ...` failed with `Unknown action: inference` because `inference get`/`set` existed only as global commands. This adds sandbox-scoped equivalents that route the sandbox name through the existing global inference code paths, making the reporter's exact workflow succeed. ## Related Issue Fixes NVIDIA#5977 ## Changes - Add `src/commands/sandbox/inference/get.ts` (`sandbox:inference:get`) and `src/commands/sandbox/inference/set.ts` (`sandbox:inference:set`). Each takes the sandbox name in sandbox-first position and delegates to the existing `runInferenceGet` / `runInferenceSet` actions — `set` threads the positional name into the same path as `inference set --sandbox <name>`; `get` reads the same gateway-wide route so the grammar stays symmetric. - Public dispatch now derives `<sb> inference get/set` routes from the new command ids (no routing changes needed), and `inference` becomes a recognized sandbox action token. Bare `<sb> inference` / `--help` defer to oclif exactly as the existing `config` action does. - Add hidden public-display metadata for the two leaf commands so they satisfy the display-coverage contract without duplicating the visible global `inference get/set` entries in root help. - Document the sandbox-first grammar for both aliases in the command reference (`commands.mdx` source + generated `commands-nemohermes.mdx`). ## Type of Change - [x] Code change with doc updates ## Quality Gates - [x] Tests added or updated for changed behavior — new public-argv-translation cases for sandbox-scoped inference get/set + oclif-parent parity; updated command-registry counts (sandbox actions 29→30, hidden 12→14, sandbox commands 49→51). - [x] Docs updated for user-facing behavior changes — command reference for `nemoclaw`/`nemohermes`. - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) — inference/sandbox dispatch. - [x] Sensitive-path review completed or maintainer-approved waiver recorded — justification: new commands are thin delegators to the already-reviewed `runInferenceGet`/`runInferenceSet` actions; no new inference/credential logic; routing mirrors the existing `config` precedent. ## Verification - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Targeted tests pass for changed behavior — `vitest --project package-contract` for `public-argv-translation.test.ts` and `command-registry.test.ts` (46 passing); `typecheck:cli` clean. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [x] `npm run docs` builds without warnings (doc changes only) — `docs:strict` reports 0 errors; agent-variant sync check passes (generated `commands-nemohermes.mdx` matches). ### Real worktree-CLI transcript (E2E — reporter workflow) Run from this PR's worktree via the actual launcher (`node ./bin/nemoclaw.js`, `NEMOCLAW_CLI_NAME=nemohermes`). The reporter's commands now route to the new sandbox-scoped inference commands instead of NemoClaw's `Unknown action: inference`. ```console $ NEMOCLAW_CLI_NAME=nemohermes node ./bin/nemoclaw.js issue5977-sb inference get ...Starting OpenShell gateway... ✓ Docker-driver gateway is healthy Sandbox 'issue5977-sb' does not exist. Registered sandboxes: ... [exit 1] # recognized action → sandbox:inference:get → probes gateway → standard name check (NOT "Unknown action: inference") $ NEMOCLAW_CLI_NAME=nemohermes node ./bin/nemoclaw.js issue5977-sb inference set \ --provider nvidia-prod --model nvidia/nemotron-3-super-120b-a12b Sandbox 'issue5977-sb' does not exist. Registered sandboxes: ... [exit 1] # recognized action → sandbox:inference:set → threads positional name like `--sandbox` $ NEMOCLAW_CLI_NAME=nemohermes node ./bin/nemoclaw.js test-sb bogus-action-5977 Unknown action: bogus-action-5977 Valid actions: ... inference ... [exit 1] # `inference` is now a recognized sandbox action token ``` Completing an actual provider switch requires a live onboarded Hermes sandbox + GPU/OpenShell, unavailable on this CI-class host; the delegation into the already-reviewed `runInferenceGet`/`runInferenceSet` actions is covered by the package-contract translation tests. --- Signed-off-by: Yimo Jiang <yimoj@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added sandbox-scoped inference commands to view and update the active inference route (`get` and `set`), with `get` supporting `--json` and `set` requiring `--provider` and `--model`. * **Documentation** * Expanded command reference docs to support “sandbox-first” inference grammar for both NemoHermes and NemoClaw, including new examples. * **Bug Fixes** * Improved CLI routing/argument translation so inference subcommands dispatch correctly and provide the expected “valid actions” behavior. * **Tests** * Updated and added contract/adapter/dispatch tests to cover the new sandbox inference forms and error handling. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Yimo Jiang <yimoj@nvidia.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
<!-- markdownlint-disable MD041 --> ## Summary This PR prepares the user-facing documentation for v0.0.74 before the release plan is frozen. It expands the release notes across the 56-commit train and closes durable documentation gaps found during the pre-tag commit scan. ## Changes - Expand the `v0.0.74` release notes to cover OpenShell 0.0.72, managed MCP, progressive tool disclosure, LangChain Deep Agents Code, onboarding, local inference, messaging, recovery, and contributor workflows. - Correct the `destroy` contract for retained per-name volumes, gateway-unreachable `--force` cleanup, managed MCP ownership, and same-name recovery. - Document separate remediation for an unreachable container DNS resolver versus one that answers with `NXDOMAIN` or `REFUSED`. - Document the Windows on Arm N1X automatic Ollama safeguard and its remaining large-model limitations. - State that messaging conflicts abort rebuild before backup or deletion, leaving the original sandbox intact. - Link the agent-runnable value benchmark from the contributor task index. - Synchronize generated agent command variants. - Validate with `npm run docs:sync-agent-variants` and `npm run docs`; Fern completed with 0 errors and 2 existing warnings. - Source summary: - [NVIDIA#6020](NVIDIA#6020) and [NVIDIA#5876](NVIDIA#5876) -> `docs/about/release-notes.mdx`: Consolidate the OpenShell 0.0.72 policy boundary and managed MCP lifecycle. - [NVIDIA#6251](NVIDIA#6251) and [NVIDIA#5989](NVIDIA#5989) -> `docs/about/release-notes.mdx`: Summarize progressive tool disclosure and sandbox-first inference controls. - [NVIDIA#6232](NVIDIA#6232), [NVIDIA#6082](NVIDIA#6082), [NVIDIA#6219](NVIDIA#6219), [NVIDIA#6214](NVIDIA#6214), [NVIDIA#6215](NVIDIA#6215), [NVIDIA#6230](NVIDIA#6230), and [NVIDIA#6260](NVIDIA#6260) -> `docs/about/release-notes.mdx`: Summarize the experimental LangChain Deep Agents Code status, secret, version, rebuild, snapshot, and MCP boundaries. - [NVIDIA#6166](NVIDIA#6166), [NVIDIA#6254](NVIDIA#6254), [NVIDIA#6265](NVIDIA#6265), [NVIDIA#6164](NVIDIA#6164), and [NVIDIA#6017](NVIDIA#6017) -> `docs/about/release-notes.mdx`: Summarize BuildKit prebuild, validated image reuse, bounded readiness, and preflight improvements. - [NVIDIA#6150](NVIDIA#6150) -> `docs/about/release-notes.mdx` and `docs/reference/troubleshooting.mdx`: Separate unreachable-resolver remediation from reachable-but-rejected DNS responses. - [NVIDIA#6234](NVIDIA#6234) -> `docs/about/release-notes.mdx`, `docs/inference/use-local-inference.mdx`, and `docs/get-started/windows-preparation.mdx`: Document N1X automatic 9B selection and the remaining explicit-large-model boundary. - [NVIDIA#6129](NVIDIA#6129), [NVIDIA#5987](NVIDIA#5987), [NVIDIA#5955](NVIDIA#5955), and [NVIDIA#6220](NVIDIA#6220) -> `docs/about/release-notes.mdx`, `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/commands.mdx`, and `docs/reference/commands-nemohermes.mdx`: Document messaging policy persistence, status, and the pre-destructive conflict check. - [NVIDIA#5963](NVIDIA#5963), [NVIDIA#6050](NVIDIA#6050), [NVIDIA#6094](NVIDIA#6094), [NVIDIA#6238](NVIDIA#6238), [NVIDIA#5988](NVIDIA#5988), [NVIDIA#6235](NVIDIA#6235), [NVIDIA#6181](NVIDIA#6181), and [NVIDIA#5986](NVIDIA#5986) -> `docs/about/release-notes.mdx`, `docs/reference/commands.mdx`, and `docs/reference/commands-nemohermes.mdx`: Summarize day-two recovery and clarify retained-volume and local-only destroy semantics. - [NVIDIA#6200](NVIDIA#6200), [NVIDIA#6248](NVIDIA#6248), [NVIDIA#6168](NVIDIA#6168), [NVIDIA#6270](NVIDIA#6270), and [NVIDIA#5649](NVIDIA#5649) -> `docs/about/release-notes.mdx` and `CONTRIBUTING.md`: Summarize contributor setup and verification improvements and expose the advisory value benchmark. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [x] Doc only (includes code sample changes) ## Quality Gates <!-- Check exactly one tests line and one docs line. Check other lines when applicable. Add every requested justification or approval reference. --> - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: documentation-only release preparation; generated-variant synchronization and the Fern docs build validate the changed pages and routes. - [x] Docs updated for user-facing behavior changes - [ ] Docs not applicable — justification: - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification <!-- Check each applicable item only when supported by the requested evidence. Run targeted tests once per relevant change set and rerun after later edits or hook autofixes that can affect the tested behavior. Do not rerun hook-covered checks. --> - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: tests are not applicable to this documentation-only change; `npm run docs` validates the source and generated routes. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `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 is required in this PR description, and every commit must appear as Verified in GitHub. Run: git config user.name && git config user.email --> Signed-off-by: Aaron Erickson <aerickson@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Expanded setup guidance for Windows on Arm devices with safer default local model selection. * Clarified local inference and sandbox messaging behavior, including conflict checks before rebuilds and safer recovery steps. * Updated destroy/rebuild/reference docs with more detailed warnings, failure handling, and volume-retention guidance. * Improved troubleshooting instructions for Docker DNS issues with clearer paths for unreachable vs. blocked resolvers. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Summary
The sandbox-first grammar
nemohermes <sb> inference get/... inference set ...failed withUnknown action: inferencebecauseinference get/setexisted only as global commands. This adds sandbox-scoped equivalents that route the sandbox name through the existing global inference code paths, making the reporter's exact workflow succeed.Related Issue
Fixes #5977
Changes
src/commands/sandbox/inference/get.ts(sandbox:inference:get) andsrc/commands/sandbox/inference/set.ts(sandbox:inference:set). Each takes the sandbox name in sandbox-first position and delegates to the existingrunInferenceGet/runInferenceSetactions —setthreads the positional name into the same path asinference set --sandbox <name>;getreads the same gateway-wide route so the grammar stays symmetric.<sb> inference get/setroutes from the new command ids (no routing changes needed), andinferencebecomes a recognized sandbox action token. Bare<sb> inference/--helpdefer to oclif exactly as the existingconfigaction does.inference get/setentries in root help.commands.mdxsource + generatedcommands-nemohermes.mdx).Type of Change
Quality Gates
nemoclaw/nemohermes.runInferenceGet/runInferenceSetactions; no new inference/credential logic; routing mirrors the existingconfigprecedent.Verification
Verifiedin GitHubvitest --project package-contractforpublic-argv-translation.test.tsandcommand-registry.test.ts(46 passing);typecheck:cliclean.npm run docsbuilds without warnings (doc changes only) —docs:strictreports 0 errors; agent-variant sync check passes (generatedcommands-nemohermes.mdxmatches).Real worktree-CLI transcript (E2E — reporter workflow)
Run from this PR's worktree via the actual launcher (
node ./bin/nemoclaw.js,NEMOCLAW_CLI_NAME=nemohermes). The reporter's commands now route to the new sandbox-scoped inference commands instead of NemoClaw'sUnknown action: inference.Completing an actual provider switch requires a live onboarded Hermes sandbox + GPU/OpenShell, unavailable on this CI-class host; the delegation into the already-reviewed
runInferenceGet/runInferenceSetactions is covered by the package-contract translation tests.Signed-off-by: Yimo Jiang yimoj@nvidia.com
Summary by CodeRabbit
getandset), withgetsupporting--jsonandsetrequiring--providerand--model.