fix(dcode): improve managed first-run sessions - #6680
Conversation
|
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:
📝 WalkthroughWalkthroughManaged Deep Agents Code now preloads onboarding state and ChangesManaged Deep Agents Code runtime
Estimated code review effort: 4 (Complex) | ~45 minutes Suggested labels: Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant Launcher as dcode-launcher.sh
participant Supervisor as dcode-session-supervisor.py
participant Wrapper as dcode-wrapper.sh
participant Descendants as Managed descendants
Launcher->>Supervisor: launch wrapper and arguments
Supervisor->>Wrapper: execute managed wrapper
Wrapper->>Descendants: spawn session processes
Supervisor->>Descendants: terminate descendants during shutdown
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage remains at 96%, unchanged from the TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most impacted files.
Updated |
|
🌿 Preview your docs: https://nvidia-preview-pr-6680.docs.buildwithfern.com/nemoclaw |
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 review. Required findings need action before merge. Warnings and optional suggestions do not require a response or follow-up. A human maintainer makes the final merge decision. |
E2E Target Results — ❌ Some jobs failedRun: 29155835210
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All requested jobs passedRun: 29155824202
|
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 `@agents/langchain-deepagents-code/dcode-session-supervisor.py`:
- Around line 109-137: Move the SIGINT no-op and SIGHUP/SIGTERM forwarding
handler registration in run before subprocess.Popen, ensuring the handlers are
active before the child is created and remain in effect through child.wait and
_cleanup_adopted_descendants. Keep forward targeting the spawned child via its
pid, so preserve the handler setup without weakening signal or cleanup behavior.
🪄 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: a4ba88c4-73f7-4d60-af5a-07fa96603d1f
📒 Files selected for processing (15)
agents/langchain-deepagents-code/Dockerfileagents/langchain-deepagents-code/Dockerfile.baseagents/langchain-deepagents-code/dcode-launcher.shagents/langchain-deepagents-code/dcode-session-supervisor.pyagents/langchain-deepagents-code/dcode-wrapper.shagents/langchain-deepagents-code/generate-config.tsdocs/get-started/quickstart-langchain-deepagents-code.mdxtest/dcode-session-supervisor.test.tstest/dcode-wrapper-identity.test.tstest/deepagents-code-tui-startup-check.test.tstest/e2e/e2e-cloud-experimental/checks/07-deepagents-code-headless-inference.shtest/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.shtest/langchain-deepagents-code-config.test.tstest/langchain-deepagents-code-image.test.tstest/langchain-deepagents-code-proxy-launcher.test.ts
E2E Target Results — ❌ Some jobs failedRun: 29156030382
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh (1)
430-434: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winCapture the expected non-zero status without disabling
errexit.The non-zero
run_tui_expectresult is intentional, but anifstatement makes that handling explicit and prevents future commands added to this window from silently ignoring failures.Suggested refactor
- set +e - run_tui_expect "$raw_capture_file" "$marker_capture_file" "$expect_name_prompt" >"$expect_log_file" 2>&1 - expect_rc=$? - set -e + if run_tui_expect "$raw_capture_file" "$marker_capture_file" "$expect_name_prompt" >"$expect_log_file" 2>&1; then + expect_rc=0 + else + expect_rc=$? + fi🤖 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/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh` around lines 430 - 434, Update the run_tui_expect invocation in the startup check to capture its intentional non-zero status through an explicit if statement, rather than temporarily disabling errexit with set +e/set -e. Preserve assignment of the command’s exit status to expect_rc and ensure failures in any subsequent commands remain subject to errexit.Source: Linters/SAST tools
🤖 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/deepagents-code-tui-startup-check.test.ts`:
- Around line 205-212: Replace the source-text assertions in the test “runs two
managed TUI sessions and waits for the process count to return to baseline” with
helper-backed execution of the startup check, following the existing lifecycle
test pattern. Assert the public command’s status, stdout, and process-capture
outcomes to verify both sessions run and the process count returns to baseline.
---
Nitpick comments:
In `@test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh`:
- Around line 430-434: Update the run_tui_expect invocation in the startup check
to capture its intentional non-zero status through an explicit if statement,
rather than temporarily disabling errexit with set +e/set -e. Preserve
assignment of the command’s exit status to expect_rc and ensure failures in any
subsequent commands remain subject to errexit.
🪄 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: 2f5d6e19-eb2c-49e7-9ebd-3d42edf210be
📒 Files selected for processing (3)
agents/langchain-deepagents-code/dcode-session-supervisor.pytest/deepagents-code-tui-startup-check.test.tstest/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh
🚧 Files skipped from review as they are similar to previous changes (1)
- agents/langchain-deepagents-code/dcode-session-supervisor.py
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All requested jobs passedRun: 29156029318
|
E2E Target Results — ❌ Some jobs failedRun: 29156140629
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ❌ Some jobs failedRun: 29156225307
|
E2E Target Results — ✅ All requested jobs passedRun: 29156139725
|
There was a problem hiding this comment.
🧹 Nitpick comments (1)
test/dcode-session-supervisor.test.ts (1)
19-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoffSignal-forwarding test asserts on mocked
os.killcalls rather than observable behavior.This test stubs
_enable_child_subreaper/_cleanup_adopted_descendantsto no-ops, monkeypatchesmodule.os.kill, and asserts on the captured(pid, sig)tuples — a private-shape/mock-call assertion of an implementation detail rather than an outcome observable through the supervisor's public boundary (e.g., that the real descendant actually receives/reacts to the forwarded signal, as done in the black-box test at lines 58-87). Per path instructions for test files, prefer asserting observable outcomes over mock-call assertions, and flag broad mocks that bypass behavior under test.I recognize the specific pending-signal race window this targets is difficult to reproduce deterministically with real subprocesses/signals, which is likely why this mock-heavy approach was chosen. If a fully black-box reproduction of this race isn't practical, consider at least narrowing the mock surface or documenting why this unit-level approach is necessary here.
As per path instructions for
**/*.test.{ts,js,mts,mjs,cts,cjs}: "Prefer observable outcomes through the public boundary over source-text, private-shape, or mock-call assertions. Flag copied production algorithms, broad mocks that bypass the behavior under test, and conditionals that make a test pass without exercising its claim."🤖 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/dcode-session-supervisor.test.ts` around lines 19 - 49, Replace the mock-call assertion in the “installs disconnect handlers before spawning DCode” test with an observable signal-forwarding outcome through the supervisor’s public boundary, matching the black-box approach used by the nearby test. Avoid broad stubs of _enable_child_subreaper, _cleanup_adopted_descendants, and module.os.kill; if deterministic reproduction requires limited mocking, narrow and document that boundary while still asserting the child’s observable reaction.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/dcode-session-supervisor.test.ts`:
- Around line 19-49: Replace the mock-call assertion in the “installs disconnect
handlers before spawning DCode” test with an observable signal-forwarding
outcome through the supervisor’s public boundary, matching the black-box
approach used by the nearby test. Avoid broad stubs of _enable_child_subreaper,
_cleanup_adopted_descendants, and module.os.kill; if deterministic reproduction
requires limited mocking, narrow and document that boundary while still
asserting the child’s observable reaction.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: dc868384-82fa-4f75-b621-f06c133363f1
📒 Files selected for processing (4)
agents/langchain-deepagents-code/Dockerfile.baseagents/langchain-deepagents-code/dcode-session-supervisor.pytest/dcode-session-supervisor.test.tstest/langchain-deepagents-code-image.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
- agents/langchain-deepagents-code/Dockerfile.base
- test/langchain-deepagents-code-image.test.ts
E2E Target Results — ❌ Some jobs failedRun: 29156344772
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All requested jobs passedRun: 29156343819
|
E2E Target Results — ❌ Some jobs failedRun: 29156501976
|
E2E Target Results — ❌ Some jobs failedRun: 29157514680
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All selected jobs passedRun: 29157831831
|
…p-code-ux-6678 Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All requested tests passedRun: 29158345030
|
E2E Target Results — ✅ All selected tests passedRun: 29158343848
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All requested tests passedRun: 29158798591
|
E2E Target Results — ✅ All selected tests passedRun: 29158797538
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results — ✅ All requested tests passedRun: 29159121344
|
E2E Target Results — ✅ All selected tests passedRun: 29159120240
|
E2E Target Results — ✅ All requested tests passedRun: 29159300097
|
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
…678' into codex/fix-managed-deep-code-ux-6678 Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
E2E Target Results —
|
| Test | Result |
|---|---|
| live |
E2E Target Results — ✅ All requested tests passedRun: 29159581353
|
E2E Target Results — ✅ All selected tests passedRun: 29159580246
|
<!-- markdownlint-disable MD041 --> ## Summary Release-prep documentation for v0.0.81 now summarizes user-facing changes merged since v0.0.80. It also closes the Hermes dashboard-profile backup gap and distinguishes direct blueprint-runner actions from public host CLI commands. ## Changes - Add the `v0.0.81` section to `docs/about/release-notes.mdx` with links to the detailed user guides. - Document that Hermes rebuilds preserve `.hermes/dashboard-home/`, including Dashboard `MEMORY.md` and `USER.md`. - Update Hermes manual backup and restore examples to transfer those two profile files without copying generated configuration or the secret-bearing dashboard `.env`. - Explain the new per-item backup failure causes. - Clarify that migration snapshot retention fragments are direct-runner arguments and are not exposed by the host `nemoclaw` CLI. ### Source summary - #6445 -> `docs/about/release-notes.mdx`, `docs/manage-sandboxes/backup-restore.mdx`, and `docs/manage-sandboxes/workspace-files.mdx`: Summarize manifest-owned key-level restore and current-config authority. - #6617 -> `docs/about/release-notes.mdx` and `docs/manage-sandboxes/backup-restore.mdx`: Record the fail-closed `/proc` fallback used to verify an idle Deep Agents runtime before snapshot creation. - #6685 -> `docs/about/release-notes.mdx`, `docs/manage-sandboxes/backup-restore.mdx`, and `docs/manage-sandboxes/workspace-files.mdx`: Document Hermes Web Dashboard profile persistence and safe manual transfer. - #6649 -> `docs/about/release-notes.mdx`: Summarize host-validated loopback compatible-endpoint routing through the sandbox gateway. - #6643 -> `docs/about/release-notes.mdx`: Summarize automatic `max_completion_tokens` handling for GPT-5 and o-series models. - #6661 -> `docs/about/release-notes.mdx`: Summarize bounded connection reuse for eligible provider-validation probes. - #6704 -> `docs/about/release-notes.mdx`: Record that direct blueprint apply stops instead of persisting incomplete state after provider or inference setup fails. - #6677 -> `docs/about/release-notes.mdx`: Summarize transactional recovery for legacy Docker containers whose managed supervisor disappeared after restart. - #6625 -> `docs/about/release-notes.mdx`: Record Hermes managed-startup persistence across direct Docker restarts. - #6597 -> `docs/about/release-notes.mdx`: Record final-sandbox gateway cleanup on macOS. - #6680 -> `docs/about/release-notes.mdx`: Summarize managed Deep Agents first-run and process-tree cleanup improvements. - #6647 -> `docs/about/release-notes.mdx`: Record fail-closed validation for the managed Deep Agents fetch CA bundle. - #6645 -> `docs/about/release-notes.mdx`: Summarize WhatsApp loopback pairing and trusted npm plugin provenance. - #6673 -> `docs/about/release-notes.mdx` and `docs/manage-sandboxes/backup-restore.mdx`: Document stopped-sandbox backup remediation. - #6631 -> `docs/about/release-notes.mdx` and `docs/manage-sandboxes/backup-restore.mdx`: Document per-item backup failure causes. - #6620 -> `docs/about/release-notes.mdx`: Record the created-but-not-ready sandbox lifecycle receipt. - #6664 -> `docs/about/release-notes.mdx`: Record prompt-aware onboarding progress output. - #6598 -> `docs/about/release-notes.mdx`: Summarize stale replay-result invalidation during resumed onboarding. - #6593 -> `docs/about/release-notes.mdx`: Summarize contextual OpenClaw audit findings for managed dashboard compatibility settings. - #6650 -> `docs/about/release-notes.mdx`: Record redaction of token-shaped URL query values. - #6638 -> `docs/about/release-notes.mdx`: Record the exact-path MCP `DELETE` policy recipe for session termination. - #5453 -> `docs/reference/host-files-and-state.mdx`: Clarify that snapshot retention actions belong to direct runner integrations and are not standalone host CLI commands. ### Skipped from docs-skip - #6633 matched the `openclaw-sandbox-permissive.yaml` path in `docs/.docs-skip` and produced no documentation in this update. ## 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 - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: This is a documentation-only release-prep update; behavior is protected by the merged source PRs, and the documentation build validates the changed examples 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 - [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 — tests are not applicable for this documentation-only change; `npm run docs` completed successfully. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: not run for this documentation-only change. - [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) — 0 errors; two existing Fern warnings remain. - [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) — no new pages. --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Added release notes for v0.0.81 covering state preservation, inference setup, sandbox recovery, session setup, pairing, diagnostics, and security policy updates. - Expanded backup and restore guidance to include dashboard profile files and clarify files that must not be copied. - Added dashboard profile persistence details to workspace and rebuild documentation. - Clarified snapshot retention guidance and the distinction between host CLI capabilities and direct runner actions. - Added more detailed backup failure reporting information. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Carlos Villela <cvillela@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary This PR removes managed Deep Agents Code first-run friction and ensures each terminal session cleans up its associated LangGraph process descendants. The root cause was that the managed image left optional upstream onboarding, tool warnings, and child lifecycle behavior at upstream defaults; existing acceptance coverage allowed the name prompt and did not prove descendant cleanup or native OpenRouter usage identity. ## Related Issue Fixes NVIDIA#6678. ## Changes - Install pinned `ripgrep` in the Deep Agents Code base image and pre-complete the optional upstream name onboarding marker. - Suppress the optional Tavily warning in generated managed config while preserving errors when web search is configured or invoked. - Run managed DCode launches under a Linux child-subreaper supervisor that forwards disconnect signals and terminates only descendants associated with that launch. - Normalize managed OpenRouter status identity and extend installed-runtime acceptance to require native OpenRouter config, identity, usage output, and a headless turn through `inference.local`. - Update the Deep Agents quickstart for the new first-run and terminal cleanup behavior. ## 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 <!-- Check exactly one tests line and one docs line. Check other lines when applicable. Add every requested justification or approval reference. --> - [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: - [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: Issue-scoped review of the root-owned launcher and sandbox image boundary; cleanup is limited to descendants adopted by one DCode launch, with regression coverage for orphan termination and signal/exit behavior. - [ ] 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 — `npx vitest run test/langchain-deepagents-code-config.test.ts test/langchain-deepagents-code-image.test.ts test/dcode-wrapper-identity.test.ts test/deepagents-code-tui-startup-check.test.ts test/dcode-session-supervisor.test.ts test/langchain-deepagents-code-proxy-launcher.test.ts` (67 passed on macOS; 25 Linux-only tests skipped for CI), plus focused ShellCheck and Python compile validation. - [ ] 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) --- <!-- 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: Julie Yaunches <jyaunches@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Managed sessions now include a supervisor that monitors and cleans up descendant processes on terminal exit/disconnect. - Deep Agents Code images now ship with `ripgrep` and default onboarding as completed. - **Bug Fixes** - Managed process exit codes are preserved more reliably, with improved signal forwarding/handling. - Identity/provider reporting is normalized for OpenRouter `openrouter:` models and base URL fallback. - **Documentation** - Quickstart/considerations updated to reflect pre-completed managed flows and session cleanup behavior. - **Tests** - Updated and expanded managed/integration checks for Linux-only supervision and OpenRouter identity scenarios. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Julie Yaunches <jyaunches@nvidia.com> Co-authored-by: Carlos Villela <cvillela@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary Release-prep documentation for v0.0.81 now summarizes user-facing changes merged since v0.0.80. It also closes the Hermes dashboard-profile backup gap and distinguishes direct blueprint-runner actions from public host CLI commands. ## Changes - Add the `v0.0.81` section to `docs/about/release-notes.mdx` with links to the detailed user guides. - Document that Hermes rebuilds preserve `.hermes/dashboard-home/`, including Dashboard `MEMORY.md` and `USER.md`. - Update Hermes manual backup and restore examples to transfer those two profile files without copying generated configuration or the secret-bearing dashboard `.env`. - Explain the new per-item backup failure causes. - Clarify that migration snapshot retention fragments are direct-runner arguments and are not exposed by the host `nemoclaw` CLI. ### Source summary - NVIDIA#6445 -> `docs/about/release-notes.mdx`, `docs/manage-sandboxes/backup-restore.mdx`, and `docs/manage-sandboxes/workspace-files.mdx`: Summarize manifest-owned key-level restore and current-config authority. - NVIDIA#6617 -> `docs/about/release-notes.mdx` and `docs/manage-sandboxes/backup-restore.mdx`: Record the fail-closed `/proc` fallback used to verify an idle Deep Agents runtime before snapshot creation. - NVIDIA#6685 -> `docs/about/release-notes.mdx`, `docs/manage-sandboxes/backup-restore.mdx`, and `docs/manage-sandboxes/workspace-files.mdx`: Document Hermes Web Dashboard profile persistence and safe manual transfer. - NVIDIA#6649 -> `docs/about/release-notes.mdx`: Summarize host-validated loopback compatible-endpoint routing through the sandbox gateway. - NVIDIA#6643 -> `docs/about/release-notes.mdx`: Summarize automatic `max_completion_tokens` handling for GPT-5 and o-series models. - NVIDIA#6661 -> `docs/about/release-notes.mdx`: Summarize bounded connection reuse for eligible provider-validation probes. - NVIDIA#6704 -> `docs/about/release-notes.mdx`: Record that direct blueprint apply stops instead of persisting incomplete state after provider or inference setup fails. - NVIDIA#6677 -> `docs/about/release-notes.mdx`: Summarize transactional recovery for legacy Docker containers whose managed supervisor disappeared after restart. - NVIDIA#6625 -> `docs/about/release-notes.mdx`: Record Hermes managed-startup persistence across direct Docker restarts. - NVIDIA#6597 -> `docs/about/release-notes.mdx`: Record final-sandbox gateway cleanup on macOS. - NVIDIA#6680 -> `docs/about/release-notes.mdx`: Summarize managed Deep Agents first-run and process-tree cleanup improvements. - NVIDIA#6647 -> `docs/about/release-notes.mdx`: Record fail-closed validation for the managed Deep Agents fetch CA bundle. - NVIDIA#6645 -> `docs/about/release-notes.mdx`: Summarize WhatsApp loopback pairing and trusted npm plugin provenance. - NVIDIA#6673 -> `docs/about/release-notes.mdx` and `docs/manage-sandboxes/backup-restore.mdx`: Document stopped-sandbox backup remediation. - NVIDIA#6631 -> `docs/about/release-notes.mdx` and `docs/manage-sandboxes/backup-restore.mdx`: Document per-item backup failure causes. - NVIDIA#6620 -> `docs/about/release-notes.mdx`: Record the created-but-not-ready sandbox lifecycle receipt. - NVIDIA#6664 -> `docs/about/release-notes.mdx`: Record prompt-aware onboarding progress output. - NVIDIA#6598 -> `docs/about/release-notes.mdx`: Summarize stale replay-result invalidation during resumed onboarding. - NVIDIA#6593 -> `docs/about/release-notes.mdx`: Summarize contextual OpenClaw audit findings for managed dashboard compatibility settings. - NVIDIA#6650 -> `docs/about/release-notes.mdx`: Record redaction of token-shaped URL query values. - NVIDIA#6638 -> `docs/about/release-notes.mdx`: Record the exact-path MCP `DELETE` policy recipe for session termination. - NVIDIA#5453 -> `docs/reference/host-files-and-state.mdx`: Clarify that snapshot retention actions belong to direct runner integrations and are not standalone host CLI commands. ### Skipped from docs-skip - NVIDIA#6633 matched the `openclaw-sandbox-permissive.yaml` path in `docs/.docs-skip` and produced no documentation in this update. ## 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 - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: This is a documentation-only release-prep update; behavior is protected by the merged source PRs, and the documentation build validates the changed examples 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 - [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 — tests are not applicable for this documentation-only change; `npm run docs` completed successfully. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: not run for this documentation-only change. - [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) — 0 errors; two existing Fern warnings remain. - [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) — no new pages. --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Added release notes for v0.0.81 covering state preservation, inference setup, sandbox recovery, session setup, pairing, diagnostics, and security policy updates. - Expanded backup and restore guidance to include dashboard profile files and clarify files that must not be copied. - Added dashboard profile persistence details to workspace and rebuild documentation. - Clarified snapshot retention guidance and the distinction between host CLI capabilities and direct runner actions. - Added more detailed backup failure reporting information. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Summary
This PR removes managed Deep Agents Code first-run friction and ensures each terminal session cleans up its associated LangGraph process descendants.
The root cause was that the managed image left optional upstream onboarding, tool warnings, and child lifecycle behavior at upstream defaults; existing acceptance coverage allowed the name prompt and did not prove descendant cleanup or native OpenRouter usage identity.
Related Issue
Fixes #6678.
Changes
ripgrepin the Deep Agents Code base image and pre-complete the optional upstream name onboarding marker.inference.local.Type of Change
Quality Gates
Verification
Verifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpx vitest run test/langchain-deepagents-code-config.test.ts test/langchain-deepagents-code-image.test.ts test/dcode-wrapper-identity.test.ts test/deepagents-code-tui-startup-check.test.ts test/dcode-session-supervisor.test.ts test/langchain-deepagents-code-proxy-launcher.test.ts(67 passed on macOS; 25 Linux-only tests skipped for CI), plus focused ShellCheck and Python compile validation.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: Julie Yaunches jyaunches@nvidia.com
Summary by CodeRabbit
ripgrepand default onboarding as completed.openrouter:models and base URL fallback.