fix(hermes): append resumed one-shot turns - #6303
Conversation
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 |
|
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:
📝 WalkthroughWalkthroughHermes wrapper support now rewrites approved resumed or continued one-shot invocations into native ChangesHermes resume routing and validation
Sandbox recovery test harness
Estimated code review effort: 4 (Complex) | ~45 minutes Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
PR Review Advisor (Nemotron Ultra) — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
Review findings by urgency: 0 required fixes, 3 items to resolve/justify, 3 in-scope improvements
|
E2E Advisor RecommendationRequired E2E: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
|
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
|
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. |
|
Caution Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted. Error details |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
test/hermes-gateway-wrapper.test.ts (1)
226-228: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAssertions can't distinguish argument boundaries.
Because the stub records with
printf '%s' "$*"(space-joined), a bug that splits the prompt (e.g.--query Summarize the latest turnas multiple argv items vs a single quoted arg) would produce an identical string and pass. For prompts containing spaces, the exact-string check doesn't actually prove the prompt was forwarded as one argument. Consider recording args newline-separated (printf '%s\n' "$@") so boundary regressions are observable.As per path instructions: prefer observable outcomes and flag assertions that pass without exercising their claim.
Also applies to: 248-250
🤖 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/hermes-gateway-wrapper.test.ts` around lines 226 - 228, The current assertion on run.realArgs only compares a space-joined string, so it cannot detect whether the prompt was passed as one argv item or split into multiple arguments. Update the test harness around the hermes-gateway wrapper to record arguments with clear boundaries (for example in the run stub used by hermes-gateway-wrapper.test.ts) and then adjust the expectations in the affected test cases so they verify the prompt is forwarded as a single argument rather than just matching the flattened string.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.
Nitpick comments:
In `@test/hermes-gateway-wrapper.test.ts`:
- Around line 226-228: The current assertion on run.realArgs only compares a
space-joined string, so it cannot detect whether the prompt was passed as one
argv item or split into multiple arguments. Update the test harness around the
hermes-gateway wrapper to record arguments with clear boundaries (for example in
the run stub used by hermes-gateway-wrapper.test.ts) and then adjust the
expectations in the affected test cases so they verify the prompt is forwarded
as a single argument rather than just matching the flattened string.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: f8c979db-da6b-4b66-9124-6be6180e76d7
📒 Files selected for processing (2)
agents/hermes/hermes-wrapper.pytest/hermes-gateway-wrapper.test.ts
…e_session # Conflicts: # src/lib/actions/sandbox/rebuild-prepared-recovery.test.ts
There was a problem hiding this comment.
🧹 Nitpick comments (1)
test/hermes-gateway-wrapper.test.ts (1)
425-465: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winOuter test timeout may be too tight relative to per-call timeouts.
This test issues ~10 sequential real
spawnSynccalls (viarunHermes/listSessions), each governed by an independently configurable timeout (NEMOCLAW_HERMES_SESSION_PERSISTENCE_TIMEOUT_MS, default 120000ms), but theit()itself is capped at a fixed5 * 60_000(300000ms). If per-call latency (especially the real-zLLM calls) trends toward the per-call timeout, the outer test timeout can fire first, producing a flaky failure unrelated to the resume/session-persistence behavior under test.Consider deriving the outer timeout from the configured per-call timeout and call count (or bumping it with headroom), e.g.:
💡 Suggested timeout budgeting fix
- 5 * 60_000, + timeout * 6, // headroom for ~10 sequential real CLI calls );🤖 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/hermes-gateway-wrapper.test.ts` around lines 425 - 465, The Hermes session persistence integration test timeout is hard-coded too low relative to the configurable per-call `spawnSync` timeout used in `runHermes` and `listSessions`, which can cause flaky outer `it()` failures before the real work finishes. Update the timeout passed to `it.skipIf(... )` in `hermes-gateway-wrapper.test.ts` to be derived from `NEMOCLAW_HERMES_SESSION_PERSISTENCE_TIMEOUT_MS` with enough headroom for the sequential calls in this test, so the test budget matches the configured runtime. Use the existing `runHermes` and `listSessions` flow as the reference point when sizing the outer timeout.
🤖 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.
Nitpick comments:
In `@test/hermes-gateway-wrapper.test.ts`:
- Around line 425-465: The Hermes session persistence integration test timeout
is hard-coded too low relative to the configurable per-call `spawnSync` timeout
used in `runHermes` and `listSessions`, which can cause flaky outer `it()`
failures before the real work finishes. Update the timeout passed to
`it.skipIf(... )` in `hermes-gateway-wrapper.test.ts` to be derived from
`NEMOCLAW_HERMES_SESSION_PERSISTENCE_TIMEOUT_MS` with enough headroom for the
sequential calls in this test, so the test budget matches the configured
runtime. Use the existing `runHermes` and `listSessions` flow as the reference
point when sizing the outer timeout.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: dcc80b6a-96c9-4b5a-9a59-1f9e3ff740c9
📒 Files selected for processing (2)
agents/hermes/hermes-wrapper.pytest/hermes-gateway-wrapper.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- agents/hermes/hermes-wrapper.py
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
agents/hermes/Dockerfile (1)
206-206: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winAdd a timeout to the
hermes --helpsubprocess call.
subprocess.check_output(["/usr/local/bin/hermes", "--help"], text=True)has no timeout; a hang here would stall the Docker build indefinitely.♻️ Proposed fix
-help_text = subprocess.check_output(["/usr/local/bin/hermes", "--help"], text=True); \ +help_text = subprocess.check_output(["/usr/local/bin/hermes", "--help"], text=True, timeout=30); \🤖 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 `@agents/hermes/Dockerfile` at line 206, The Hermes build-time validation in the Dockerfile can hang because the `subprocess.check_output(["/usr/local/bin/hermes", "--help"], text=True)` call has no timeout. Update the inline Python check that computes `expected` and `missing` to pass a reasonable timeout to the `check_output` call so the `hermes --help` probe fails fast instead of stalling the build indefinitely.test/e2e/live/hermes-e2e.test.ts (1)
478-513: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winExtract the repeated "no new sessions" assertion.
The resume block (Lines 487-499) and continue block (Lines 501-513) duplicate the same "list sessions before → run CLI → list sessions after → assert no new IDs" pattern. Consolidating reduces duplication risk if the assertion logic needs to change later.
♻️ Proposed helper extraction
+async function expectNoNewHermesSessions( + runHermesCli: (args: string[], artifactName: string) => Promise<string>, + listHermesSessions: (artifactName: string) => Promise<Set<string>>, + before: Set<string>, + args: string[], + runArtifact: string, + afterArtifact: string, +): Promise<void> { + await runHermesCli(args, runArtifact); + const after = await listHermesSessions(afterArtifact); + expect([...after].filter((id) => !before.has(id))).toEqual([]); +}🤖 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/e2e/live/hermes-e2e.test.ts` around lines 478 - 513, The resume and continue checks in hermes-e2e.test.ts duplicate the same “no new sessions” flow around listHermesSessions, runHermesCli, and the post-run filter/assertion. Extract that repeated logic into a small helper near the existing issue5254 test block, and use it for both the "--resume" and "-c" paths so the session comparison and expectation live in one place.
🤖 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 `@agents/hermes/Dockerfile`:
- Line 206: The Hermes wrapper drift check only validates _VALUE_FLAGS and
_BOOLEAN_FLAGS, so it can miss changes to the resumed-oneshot flags. Update the
Dockerfile’s hermes --help verification to also include the flags handled by
_translate_resumed_oneshot() in hermes-wrapper.py, specifically the -z/--oneshot
and -c/--continue aliases, so upstream changes to those options are caught by
the build guard.
---
Nitpick comments:
In `@agents/hermes/Dockerfile`:
- Line 206: The Hermes build-time validation in the Dockerfile can hang because
the `subprocess.check_output(["/usr/local/bin/hermes", "--help"], text=True)`
call has no timeout. Update the inline Python check that computes `expected` and
`missing` to pass a reasonable timeout to the `check_output` call so the `hermes
--help` probe fails fast instead of stalling the build indefinitely.
In `@test/e2e/live/hermes-e2e.test.ts`:
- Around line 478-513: The resume and continue checks in hermes-e2e.test.ts
duplicate the same “no new sessions” flow around listHermesSessions,
runHermesCli, and the post-run filter/assertion. Extract that repeated logic
into a small helper near the existing issue5254 test block, and use it for both
the "--resume" and "-c" paths so the session comparison and expectation live in
one place.
🪄 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: fbcba3de-c4eb-4d1f-b105-d545f36db749
📒 Files selected for processing (4)
agents/hermes/Dockerfileagents/hermes/hermes-wrapper.pytest/e2e/live/hermes-e2e.test.tstest/hermes-gateway-wrapper.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
- agents/hermes/hermes-wrapper.py
- test/hermes-gateway-wrapper.test.ts
E2E Target Results — ❌ Some jobs failedRun: 28815425624
|
E2E Target Results — ❌ Some jobs failedRun: 28815425613
|
E2E Target Results — ✅ All requested jobs passedRun: 28815967524
|
E2E Target Results — ✅ All requested jobs passedRun: 28815967190
|
E2E Target Results — ✅ All requested jobs passedRun: 28816036907
|
E2E Target Results — ✅ All requested jobs passedRun: 28816036916
|
E2E Target Results — ✅ All requested jobs passedRun: 28832647303
|
E2E Target Results — ✅ All requested jobs passedRun: 28832647339
|
E2E Target Results — ✅ All requested jobs passedRun: 28833007118
|
E2E Target Results — ✅ All requested jobs passedRun: 28833006984
|
E2E Target Results — ❌ Some jobs failedRun: 28833945887
|
E2E Target Results — ❌ Some jobs failedRun: 28833945932
|
E2E Target Results — ❌ Some jobs failedRun: 28837384639
|
E2E Target Results — ❌ Some jobs failedRun: 28837384657
|
E2E Target Results — ✅ All requested jobs passedRun: 28837981570
|
E2E Target Results — ✅ All requested jobs passedRun: 28838233081
|
cv
left a comment
There was a problem hiding this comment.
Substantive review passed. The session-version fallback, Dockerfile patch guard, and regression coverage satisfy #5254. Required Target Advisor runs passed on behavior-equivalent predecessor 6a9a95e (hermes-dashboard and security-posture); the later delta is comments, build-time grep and hash refresh, and test assertions only, so the existing live evidence remains valid.
<!-- markdownlint-disable MD041 --> ## Summary Prepares the user-facing documentation for NemoClaw v0.0.76 and closes the release-prep documentation gate. It adds the release highlights, documents the arm64 Local NIM warning and expanded image cleanup behavior, and fixes agent-specific command headings in generated guides. ## Changes - Add the v0.0.76 release-notes section and move the shared-gateway route containment entry out of the v0.0.74 history where it was incorrectly placed. - Document the advisory Linux arm64 Local NIM manifest warning in the canonical platform matrix and local-inference guidance. - Document that `gc` scans both gateway-built and locally prebuilt sandbox image repositories. - Keep OpenClaw and Hermes session headings out of the generated Deep Agents command guide. - Add a focused variant regression test for the agent-specific session headings. ### Source summary | Merged sources | Documentation coverage | | --- | --- | | [#6414](#6414), [#6418](#6418), [#6416](#6416), [#6344](#6344) | v0.0.76 release notes and the Deep Agents quickstart/inference routes | | [#6340](#6340) | v0.0.76 release notes and existing Deep Agents observability guidance | | [#6338](#6338), [#6378](#6378), [#6297](#6297) | v0.0.76 release notes and existing inference/troubleshooting guidance | | [#6362](#6362) | v0.0.76 release notes and existing lifecycle, command, and credential guidance | | [#6330](#6330), [#6307](#6307), [#6008](#6008) | v0.0.76 release notes and existing security, troubleshooting, and command guidance | | [#6382](#6382) | v0.0.76 release notes and existing MCP/command guidance | | [#6326](#6326), [#5868](#5868), [#5539](#5539) | v0.0.76 release notes, platform matrix, inference options, and local-inference guidance | | [#6396](#6396), [#6390](#6390), [#6007](#6007) | v0.0.76 release notes and existing messaging guidance | | [#5388](#5388), [#6249](#6249), [#6303](#6303), [#6306](#6306) | v0.0.76 release notes and command/lifecycle guidance | ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [x] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [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 - [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 — `npx vitest run --project integration test/generate-platform-docs.test.ts test/agent-variant-docs.test.ts test/sync-agent-variant-docs.test.ts` (3 files, 29 tests passed) - [ ] 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) — completed with 0 errors and 2 pre-existing Fern warnings - [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) --- Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added v0.0.76 release notes content, and removed an older conflicting bullet from the surrounding release history. * Expanded Local NVIDIA NIM guidance across inference/provider docs, including an advisory for Linux arm64 DGX Spark/DGX Station hosts when a matching `linux/arm64` image manifest is unavailable. * Updated the command reference for correct session-section rendering and clarified `gc` image cleanup sources. * **Tests** * Added coverage ensuring Deep Agents omits sessions headings while Hermes includes them. * **CI** * Refreshed Local NVIDIA NIM provider notes used in the platform matrix. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
## Summary Translate Hermes top-level resumed one-shot invocations through the native non-interactive chat resume path so the new turn appends to the selected session instead of fragmenting into a fresh session. ## Related Issue Fixes NVIDIA#5254 ## Changes - Detect top-level `--resume`/`--continue` combined with `-z`/`--oneshot` in the installed Hermes wrapper. - Rewrite only that composed form to `hermes chat --query ... --quiet --resume/--continue ...`, preserving model/tool/config flags and leaving plain one-shot invocations untouched. - Add wrapper regression coverage for resumed one-shot, continued one-shot, and unchanged plain one-shot behavior. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: fixes existing documented flag composition without changing user-facing syntax. - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [x] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: scoped wrapper argument rewrite only; existing `gateway` guard and `config show` masker branches remain first and unchanged, and the new path delegates to Hermes' native `chat --query --quiet --resume/--continue` implementation instead of directly editing session storage. - [x] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: local `npx vitest run test/hermes-gateway-wrapper.test.ts` is skipped by the existing Linux+python3 `canRun` gate on macOS; CI Linux should execute it. ## Verification - [ ] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [ ] 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: `python3 -m py_compile agents/hermes/hermes-wrapper.py` passed; direct Python assertions for `_translate_resumed_oneshot` passed; `NPM_CONFIG_CACHE=/tmp/nemoclaw-5254-npm-cache npx biome check test/hermes-gateway-wrapper.test.ts` passed; `NPM_CONFIG_CACHE=/tmp/nemoclaw-5254-npm-cache npx vitest run test/hermes-gateway-wrapper.test.ts` loaded but skipped all 45 tests due the existing macOS gate. - [ ] 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) - [ ] 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) --- Signed-off-by: Chengjie Wang <chengjiew@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added automatic routing that rewrites resumed/continued one-shot agent invocations into Hermes’ non-interactive `chat --query` resume flow. * **Bug Fixes** * Fail-closed argv translation: only rewrites when inputs match supported resume/continue patterns; otherwise runs the original command unchanged. * Preserves supported arguments while safely handling unsupported/ambiguous forms (including `--` termination and conflicting usage). * **Tests** * Expanded Hermes one-shot/resume/continue routing assertions, including updated argv recording (`realArgv`). * Added Hermes e2e regression to verify resume/continue don’t create extra sessions and export content matches the seeded marker. * Updated sandbox rebuild recovery test harness to use shared environment helpers. * **Chores** * Updated Hermes wrapper integrity pin and added build-time verification to detect flag allowlist drift. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- markdownlint-disable MD041 --> ## Summary Prepares the user-facing documentation for NemoClaw v0.0.76 and closes the release-prep documentation gate. It adds the release highlights, documents the arm64 Local NIM warning and expanded image cleanup behavior, and fixes agent-specific command headings in generated guides. ## Changes - Add the v0.0.76 release-notes section and move the shared-gateway route containment entry out of the v0.0.74 history where it was incorrectly placed. - Document the advisory Linux arm64 Local NIM manifest warning in the canonical platform matrix and local-inference guidance. - Document that `gc` scans both gateway-built and locally prebuilt sandbox image repositories. - Keep OpenClaw and Hermes session headings out of the generated Deep Agents command guide. - Add a focused variant regression test for the agent-specific session headings. ### Source summary | Merged sources | Documentation coverage | | --- | --- | | [NVIDIA#6414](NVIDIA#6414), [NVIDIA#6418](NVIDIA#6418), [NVIDIA#6416](NVIDIA#6416), [NVIDIA#6344](NVIDIA#6344) | v0.0.76 release notes and the Deep Agents quickstart/inference routes | | [NVIDIA#6340](NVIDIA#6340) | v0.0.76 release notes and existing Deep Agents observability guidance | | [NVIDIA#6338](NVIDIA#6338), [NVIDIA#6378](NVIDIA#6378), [NVIDIA#6297](NVIDIA#6297) | v0.0.76 release notes and existing inference/troubleshooting guidance | | [NVIDIA#6362](NVIDIA#6362) | v0.0.76 release notes and existing lifecycle, command, and credential guidance | | [NVIDIA#6330](NVIDIA#6330), [NVIDIA#6307](NVIDIA#6307), [NVIDIA#6008](NVIDIA#6008) | v0.0.76 release notes and existing security, troubleshooting, and command guidance | | [NVIDIA#6382](NVIDIA#6382) | v0.0.76 release notes and existing MCP/command guidance | | [NVIDIA#6326](NVIDIA#6326), [NVIDIA#5868](NVIDIA#5868), [NVIDIA#5539](NVIDIA#5539) | v0.0.76 release notes, platform matrix, inference options, and local-inference guidance | | [NVIDIA#6396](NVIDIA#6396), [NVIDIA#6390](NVIDIA#6390), [NVIDIA#6007](NVIDIA#6007) | v0.0.76 release notes and existing messaging guidance | | [NVIDIA#5388](NVIDIA#5388), [NVIDIA#6249](NVIDIA#6249), [NVIDIA#6303](NVIDIA#6303), [NVIDIA#6306](NVIDIA#6306) | v0.0.76 release notes and command/lifecycle guidance | ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [x] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [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 - [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 — `npx vitest run --project integration test/generate-platform-docs.test.ts test/agent-variant-docs.test.ts test/sync-agent-variant-docs.test.ts` (3 files, 29 tests passed) - [ ] 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) — completed with 0 errors and 2 pre-existing Fern warnings - [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) --- Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added v0.0.76 release notes content, and removed an older conflicting bullet from the surrounding release history. * Expanded Local NVIDIA NIM guidance across inference/provider docs, including an advisory for Linux arm64 DGX Spark/DGX Station hosts when a matching `linux/arm64` image manifest is unavailable. * Updated the command reference for correct session-section rendering and clarified `gc` image cleanup sources. * **Tests** * Added coverage ensuring Deep Agents omits sessions headings while Hermes includes them. * **CI** * Refreshed Local NVIDIA NIM provider notes used in the platform matrix. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Summary
Translate Hermes top-level resumed one-shot invocations through the native non-interactive chat resume path so the new turn appends to the selected session instead of fragmenting into a fresh session.
Related Issue
Fixes #5254
Changes
--resume/--continuecombined with-z/--oneshotin the installed Hermes wrapper.hermes chat --query ... --quiet --resume/--continue ..., preserving model/tool/config flags and leaving plain one-shot invocations untouched.Type of Change
Quality Gates
gatewayguard andconfig showmasker branches remain first and unchanged, and the new path delegates to Hermes' nativechat --query --quiet --resume/--continueimplementation instead of directly editing session storage.npx vitest run test/hermes-gateway-wrapper.test.tsis skipped by the existing Linux+python3canRungate on macOS; CI Linux should execute it.Verification
Verifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablepython3 -m py_compile agents/hermes/hermes-wrapper.pypassed; direct Python assertions for_translate_resumed_oneshotpassed;NPM_CONFIG_CACHE=/tmp/nemoclaw-5254-npm-cache npx biome check test/hermes-gateway-wrapper.test.tspassed;NPM_CONFIG_CACHE=/tmp/nemoclaw-5254-npm-cache npx vitest run test/hermes-gateway-wrapper.test.tsloaded but skipped all 45 tests due the existing macOS gate.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Signed-off-by: Chengjie Wang chengjiew@nvidia.com
Summary by CodeRabbit
New Features
chat --queryresume flow.Bug Fixes
--termination and conflicting usage).Tests
realArgv).Chores