fix: address issue #5667 - #5672
Conversation
…erence model The HOSTED_INFERENCE_MODEL fallback used when onboarding an OpenAI-compatible endpoint without an explicit NEMOCLAW_MODEL was hardcoded as "nvidia/nvidia/nemotron-3-super-v3", a doubled "nvidia/" namespace segment. This malformed id was persisted into NEMOCLAW_MODEL/NEMOCLAW_COMPAT_MODEL and surfaced in status output, the sandbox image build ARG, and the dcode runtime header. Standard NIM model ids carry exactly one namespace segment, so this fixes the constant to the canonical "nvidia/nemotron-3-super-v3". Adds a regression test exercising the real HOSTED_INFERENCE_MODEL constant and stageHostedInferenceSourceSecretEnv() staging path. Fixes #5667 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ults The #5667 fix corrected the HOSTED_INFERENCE_MODEL fallback constant but left the malformed "nvidia/nvidia/nemotron-3-super-v3" id throughout the e2e infrastructure, where CI exports, fixture/helper defaults, and shell fixtures reintroduced the doubled namespace prefix against the real inference-api.nvidia.com endpoint. Sweeps every occurrence of the doubled id to the canonical single-prefix "nvidia/nemotron-3-super-v3": - hosted CI inference exports in e2e-script.yaml, nightly-e2e.yaml, and e2e-vitest-scenarios.yaml - the e2e fixture default DEFAULT_HOSTED_INFERENCE_MODEL and the live-helper / shell-fixture fallbacks (agent-turn-latency, hermes-discord, hermes-slack, rebuild-hermes, upgrade-stale-sandbox, ci-compatible-inference.sh, test-rebuild-*.sh, test-upgrade-stale-sandbox.sh) - the onboard-probes probe-payload test literal - the workflow-content guard assertions in e2e-script-workflow.test.ts that had locked in the doubled value The regression test continues to gate on NVIDIA_INFERENCE_API_KEY, which is the sole trigger for stageHostedInferenceSourceSecretEnv() (the model-recording path that caused #5667); NEMOCLAW_PROVIDER_KEY is unrelated to model staging. Refs #5667 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codex review (automated, advisory)
Verdict: Partial fix; the core fallback constant is corrected, but other defaults still reintroduce the doubled model id. Addressed in this PRAddressed the reviewer's completeness findings by sweeping the doubled 'nvidia/nvidia/nemotron-3-super-v3' id to the canonical 'nvidia/nemotron-3-super-v3' everywhere it represented this model — not just the original constant. The earlier claim that CI/fixtures were 'intentionally untouched' was wrong: those defaults reintroduced the malformed id. Changed: the hosted CI exports in .github/workflows/{e2e-script,nightly-e2e,e2e-vitest-scenarios}.yaml; the e2e fixture default DEFAULT_HOSTED_INFERENCE_MODEL (test/e2e-scenario/fixtures/hosted-inference.ts) and the live-helper/shell-fixture fallbacks (agent-turn-latency-helpers, hermes-discord, hermes-slack-e2e-helpers, rebuild-hermes, upgrade-stale-sandbox-helpers, ci-compatible-inference.sh, test-rebuild-*.sh, test-upgrade-stale-sandbox.sh); the onboard-probes probe-payload test literal; and the workflow-content guard assertions in test/e2e-script-workflow.test.ts that had locked in the doubled value. Finding #3 (regression test should use NEMOCLAW_PROVIDER_KEY) was rejected as incorrect: stageHostedInferenceSourceSecretEnv() — the function that records the model and was the root cause — gates exclusively on NVIDIA_INFERENCE_API_KEY (HOSTED_INFERENCE_SOURCE_ENV); NEMOCLAW_PROVIDER_KEY is a provider-credential hint used only by the Model Router / Hermes / deepagents config paths and never triggers model staging, so the test correctly exercises the real bug path. Verified: rebuilt dist and ran the issue-5667 regression test, e2e-script-workflow guard tests, onboard-probes, and hosted-inference support tests — 67 tests pass. |
|
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:
📝 WalkthroughWalkthroughCorrects a duplicated ChangesModel ID Namespace Fix and Deep Agents Support
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
Possibly related issues
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
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 |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
PR Review Advisor — BlockedMerge posture: Do not merge until addressed Action checklist
Findings index
🚨 Required before mergeAddress these before merging unless a maintainer explicitly overrides the advisor with rationale.
|
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
|
…inear The #5667 namespace fix swept the doubled "nvidia/nvidia/nemotron-3-super-v3" default to the canonical "nvidia/nemotron-3-super-v3" but left two CI gates red: - tools/e2e-scenarios/workflow-boundary.mts still pinned the rebuild-hermes vitest jobs to the doubled id, so validateE2eVitestScenariosWorkflowBoundary() reported 4 violations (cli-test-shards shard 2). - the new regression test's env teardown used an if/else, tripping the codebase-growth-guardrails 'changed test files must not add if statements' gate. Align the workflow-boundary pins with the swept jobs, rewrite the teardown as a wholesale env snapshot/restore (no conditional), and apply the Biome formatting the auto-commit skipped on the live hermes e2e fixtures. Refs #5667 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Jason Ma <jama@nvidia.com>
Follow-up: completed the single-prefix sweep and turned CI greenThe core fix is correct — CI was fully red, though, because the sweep was incomplete and the auto-commit skipped formatting. Pushed one commit (
The One thing to confirm separately: the completed sweep aligns the live e2e model pins to the single-prefix id on the assumption that 🤖 Generated with Claude Code |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-5672.docs.buildwithfern.com/nemoclaw |
…ence-deep-agents' into auto/fix-5667-ubuntu-24-04-inference-deep-agents
## Summary Preserves the provider/namespace/model ID convention for the private CI-compatible `https://inference-api.nvidia.com/v1` endpoint. This follow-up keeps the public NVIDIA provider catalog separate from the custom OpenAI-compatible Inference Hub path used by CI. ## Related Issue Follow-up to #5672 / #5667. ## Changes - Restores hosted-compatible CI defaults to `nvidia/nvidia/nemotron-3-ultra` across workflow env, E2E fixtures, and shell helpers. - Documents in `src/lib/onboard/providers.ts` that the private `inference-api.nvidia.com` endpoint uses provider/namespace/model IDs and is staged as a custom compatible provider. - Updates hosted inference regression tests to assert the provider-convention ID is preserved end-to-end instead of normalized. ## 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) ## Verification - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Git hooks passed during commit and push, or `npx prek run --from-ref main --to-ref HEAD` passes - [x] Targeted tests pass for changed behavior - [ ] Full `npm test` passes (broad runtime changes only) - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `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: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Updated hosted inference and E2E scenarios to use the correct model identifier consistently. * Improved fallback behavior so tests and workflows resolve the same hosted model across CI, rebuild, and upgrade flows. * Added coverage for the provider-style model naming to prevent namespace mismatches. * **Documentation** * Clarified the model naming convention used for hosted inference in the onboarding flow. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary Restore issue #5800 parity package `P0-A` for merged bash-suite inference-helper deltas only. This is a focused support-test parity PR: the helper/product behavior already exists on `main`; this adds missing Vitest assertions so shell retirement keeps the hosted/hermetic inference contracts covered. ## Related Issues Refs #5800 Refs #5098 Refs #5373 Refs #5374 Refs #5385 Refs #5395 Refs #5399 Refs #5400 Refs #5411 Refs #5751 Refs #5672 Refs #5757 ## Scope gate - Package: `P0-A — Hosted/hermetic inference helper parity` - Included PRs all merged and touched `test/e2e`: yes - Out of scope: unmerged/non-bash PRs; product cleanup; shell lane retirement / PR #5756 cleanup ## Parity map | ID | Source PR | Contract | Inference classification | Vitest assertion / waiver | Status | | --- | --- | --- | --- | --- | --- | | A1 | #5373 | Fake OpenAI-compatible helper supports `/models`, chat completions, responses API, auth checking, and request capture. | `hermetic-default` | `test/e2e-scenario/support-tests/hosted-inference.test.ts` starts `startFakeOpenAiCompatibleServer` and asserts models/chat/responses/request log behavior. | covered | | A2 | #5374, #5385, #5395 | Hosted CI inference stages `NVIDIA_INFERENCE_API_KEY` as `COMPATIBLE_API_KEY`, routes as `custom`/`compatible-endpoint`, and prefers `openai-completions`. | `hosted-compatible capable` | Existing workflow/helper assertions plus new shell helper staging assertion in `hosted-inference.test.ts`. | covered | | A3 | #5399, #5751, #5672, #5757 | Hosted model default remains the Inference Hub provider/namespace/model ID `nvidia/nvidia/nemotron-3-ultra`; explicit `NEMOCLAW_MODEL` takes precedence over `NEMOCLAW_COMPAT_MODEL`, which takes precedence over helper options/default. | `hosted-compatible capable` | New `requireHostedInferenceConfig` model precedence/default assertion; existing workflow/model namespace tests remain green. | covered | | A4 | #5400, #5411 | Hosted reachability probe is bounded and low-cost: no `/models`, chat completions, auth header, or bearer token spend. | `hosted-compatible capable` | Existing probe tests retained and revalidated. | covered | | A5 | #5385 | Public NVIDIA/nvapi shell mode remains distinct from hosted-compatible mode and is not restaged as compatible inference. | `public-nvidia required` | New shell helper assertion checks `nvapi-*` + `cloud` keeps `nvidia-prod`, leaves `COMPATIBLE_API_KEY` unset. | covered | ## Inference mode support - Default mode for touched live targets: none touched; this PR only changes support tests. - Real inference support preserved: yes, by asserting hosted-compatible and public-NVIDIA helper boundaries without invoking real inference. - Modes validated in this PR: hermetic fake endpoint and shell helper mocked hosted-compatible/public boundary. - If not validated with real inference: not required; no live target or hosted secret path changed. ## Validation - [x] `npx vitest run --project e2e-vitest-support test/e2e-scenario/support-tests/hosted-inference.test.ts` - [x] `npx vitest run test/e2e-script-workflow.test.ts test/issue-5667-hosted-inference-model-namespace.test.ts src/lib/inference/onboard-probes.test.ts src/lib/onboard/providers.test.ts` - [x] `git diff --check` - [ ] hosted/public selective E2E workflow, if required by classification: not required; support-test-only PR, no live/workflow behavior changed. ## Follow-ups / waivers - Pre-push full `Test (CLI)` / `Test (plugin)` hooks were not clean on local macOS after the commit: CLI run hit existing macOS/stat/OOM-style failures; plugin run could not import package `json5`. Focused target tests above passed. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Tests** * Expanded end-to-end coverage for hosted inference compatibility and model ID/model precedence behavior. * Added validations for environment variable staging rules and shell mode behavior across NVAPI key scenarios. * Introduced a fake OpenAI-compatible server and added contract checks for `/models`, auth-required flows, and streamed responses on chat/response endpoints, including cleanup after runs. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- markdownlint-disable MD041 --> ## Summary Refreshes the v0.0.68 docs with release notes, Microsoft Teams messaging guidance, and generated support-matrix coverage. Also corrects the Hermes generated command reference so `sessions export` examples match Hermes-only behavior while keeping the shared command heading compatible with CLI parity checks. ## Changes - #5585 -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/platform-support.mdx`: Documents experimental Microsoft Teams channel setup, Bot Framework credentials, webhook forwarding, local `MSTEAMS_PORT` conflicts, and the generated integration support row. - #5526 -> `docs/reference/commands.mdx`, `docs/reference/commands-nemohermes.mdx`: Keeps Hermes `sessions export` examples on the supported single-JSONL export path while preserving the canonical shared CLI heading. - #5044 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for installer onboarding failure propagation. - #5641 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for fresh recovery after pre-sandbox installer interruption. - #5673 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for explicit deny-all messaging manifests. - #5743 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for unsupported-agent channel-add rejection. - #5252 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for Hermes `gateway-token` dashboard guidance. - #5659 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for local OpenClaw `agent` wrapper help. - #5661 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for default extra-agent paths. - #5669 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for Deep Agents Code branding. - #5672 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for hosted-compatible default model ID preservation. - #5725 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for Deep Agents Code sandbox liveness. - #5644 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for DGX Spark managed-vLLM express install defaults. - #5712 -> `docs/about/release-notes.mdx`, `docs/reference/platform-support.mdx`: Adds v0.0.68 release-note coverage for the canonical support matrix and updates the matrix source with Teams. ## 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 all that apply. For any "covered by existing tests", "not applicable", or waiver entry, add a brief justification on the same line or in the Changes section. --> - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: docs-only release refresh; no runtime code changed. - [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 item you ran and confirmed. Leave unchecked items you skipped. Doc-only changes do not require npm test unless you ran it. --> - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Git hooks passed during commit and push, or `npx prek run --from-ref main --to-ref HEAD` passes - [ ] Targeted tests pass for changed behavior - [ ] Full `npm test` passes (broad runtime changes only) - [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) — `npm run docs` passed with 0 errors; Fern reported the existing light-mode accent contrast warning. - [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) Additional verification: - `python3 scripts/generate-platform-docs.py --check` passed. - `npm run docs:sync-agent-variants` passed. - `bash test/e2e/e2e-cloud-experimental/check-docs.sh --only-cli` passed. - `npm run docs` passed with 0 errors and one Fern theme warning: light-mode accent contrast ratio is 2.41:1 and should be at least 3:1. - `npm run build:cli` refreshed local untracked `dist/` artifacts after rebase; no tracked files changed. - `npm run typecheck:cli` passed. - Normal commit and push hooks passed after the local CLI rebuild. --- <!-- 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: Miyoung Choi <miyoungc@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added **Microsoft Teams** as an experimental messaging channel, including manifest-first onboarding, local port routing/conflict handling, sandbox delivery controls, and policy preset support. * **Documentation** * Expanded messaging-channel setup for Teams (prerequisites, credential/webhook setup, wizard flow, and add/remove commands). * Updated reference docs for **agent-specific** session export examples (OpenClaw vs Hermes). * Refreshed platform support guidance and added the latest release-notes entry. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary Issue NVIDIA#5667: onboarding a Deep Agents / OpenAI-compatible sandbox without an explicit NEMOCLAW_MODEL recorded the model id as 'nvidia/nvidia/nemotron-3-super-v3' (doubled 'nvidia/' namespace). Root cause was the default fallback constant HOSTED_INFERENCE_MODEL in src/lib/onboard/providers.ts, which was hardcoded with a duplicated namespace segment (dev-triage hypothesis NVIDIA#3). When NEMOCLAW_MODEL is unset, stageHostedInferenceSourceSecretEnv() falls back to this constant and persists it into NEMOCLAW_MODEL / NEMOCLAW_COMPAT_MODEL, surfacing the doubled prefix everywhere (status, build ARG, dcode header). Fixed by changing the constant to the canonical single-prefix id 'nvidia/nemotron-3-super-v3'. Scope limited to the default constant; CI workflow YAML and e2e fixtures set NEMOCLAW_MODEL explicitly and are intentionally untouched. ## Related Issue Fixes NVIDIA#5667 ## Changes - Automated Claude Code fix selected by `auto_fix/auto_fix_recent_issues.py`. - See the commits on this branch for the exact file-level changes. ## 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) ## Verification <!-- Check each item you ran and confirmed. Leave unchecked items you skipped. Doc-only changes do not require npm test unless you ran it. --> - [ ] Git hooks passed during commit and push, or `npx prek run --from-ref main --to-ref HEAD` passes - [ ] Targeted tests pass for changed behavior - [ ] Full `npm test` passes (broad runtime changes only) - [ ] Tests added or updated for new or changed behavior - [ ] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `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) Verification details reported by automation: - Codex review (independent, advisory) posted as a PR comment. - Addressed from codex review: Addressed the reviewer's completeness findings by sweeping the doubled 'nvidia/nvidia/nemotron-3-super-v3' id to the canonical 'nvidia/nemotron-3-super-v3' everywhere it represented this model — not just the original constant. The earlier claim that CI/fixtures were 'intentionally untouched' was wrong: those defaults reintroduced the malformed id. Changed: the hosted CI exports in .github/workflows/{e2e-script,nightly-e2e,e2e-vitest-scenarios}.yaml; the e2e fixture default DEFAULT_HOSTED_INFERENCE_MODEL (test/e2e-scenario/fixtures/hosted-inference.ts) and the live-helper/shell-fixture fallbacks (agent-turn-latency-helpers, hermes-discord, hermes-slack-e2e-helpers, rebuild-hermes, upgrade-stale-sandbox-helpers, ci-compatible-inference.sh, test-rebuild-*.sh, test-upgrade-stale-sandbox.sh); the onboard-probes probe-payload test literal; and the workflow-content guard assertions in test/e2e-script-workflow.test.ts that had locked in the doubled value. Finding NVIDIA#3 (regression test should use NEMOCLAW_PROVIDER_KEY) was rejected as incorrect: stageHostedInferenceSourceSecretEnv() — the function that records the model and was the root cause — gates exclusively on NVIDIA_INFERENCE_API_KEY (HOSTED_INFERENCE_SOURCE_ENV); NEMOCLAW_PROVIDER_KEY is a provider-credential hint used only by the Model Router / Hermes / deepagents config paths and never triggers model staging, so the test correctly exercises the real bug path. Verified: rebuilt dist and ran the issue-5667 regression test, e2e-script-workflow guard tests, onboard-probes, and hosted-inference support tests — 67 tests pass. - Added focused regression test test/issue-5667-hosted-inference-model-namespace.test.ts that exercises the real exported HOSTED_INFERENCE_MODEL constant and the real stageHostedInferenceSourceSecretEnv() staging path (no mocking of the unit under test). - Built dist from the unfixed source and confirmed the new test fails red: NEMOCLAW_MODEL staged as 'nvidia/nvidia/nemotron-3-super-v3'. - Applied the one-line fix to src/lib/onboard/providers.ts, rebuilt dist, and confirmed the test passes green (2/2). - Ran related suites (credential-exposure, onboard-selection, onboard-probes, e2e-script-workflow) — 129 tests pass — confirming no regression and that the explicitly-overridden CI workflow values are unaffected. - `npm install --ignore-scripts` - `npm run build:cli` - `./node_modules/.bin/vitest run test/issue-5667-hosted-inference-model-namespace.test.ts --project cli` - `./node_modules/.bin/vitest run test/credential-exposure.test.ts test/onboard-selection.test.ts src/lib/inference/onboard-probes.test.ts test/issue-5667-hosted-inference-model-namespace.test.ts` - `./node_modules/.bin/vitest run test/e2e-script-workflow.test.ts` --- <!-- DCO sign-off required by CI. Run: git config user.name && git config user.email --> Signed-off-by: Jason Ma <jama@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Corrected hosted-inference Nemotron model identifiers to consistently use the proper single-prefix format (removing duplicated `nvidia/nvidia/`) across onboarding, live scenarios, and CI/E2E workflows. * Improved Deep Agents hosted-inference staging by adding a safe fallback for provider-key handling. * **Tests** * Updated E2E/workflow expectations and fixtures to match the corrected model identifiers. * Added/adjusted regression tests to prevent duplicated model namespaces and verify Deep Agents staging behavior. * **Documentation** * Fixed the Model Router pool example for Nemotron-3 Nano. * **Security/Quality** * Expanded secret redaction and direct-credential-env checks to include `NEMOCLAW_PROVIDER_KEY`. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Jason Ma <jama@nvidia.com> Signed-off-by: Carlos Villela <cvillela@nvidia.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Carlos Villela <cvillela@nvidia.com>
## Summary Preserves the provider/namespace/model ID convention for the private CI-compatible `https://inference-api.nvidia.com/v1` endpoint. This follow-up keeps the public NVIDIA provider catalog separate from the custom OpenAI-compatible Inference Hub path used by CI. ## Related Issue Follow-up to NVIDIA#5672 / NVIDIA#5667. ## Changes - Restores hosted-compatible CI defaults to `nvidia/nvidia/nemotron-3-ultra` across workflow env, E2E fixtures, and shell helpers. - Documents in `src/lib/onboard/providers.ts` that the private `inference-api.nvidia.com` endpoint uses provider/namespace/model IDs and is staged as a custom compatible provider. - Updates hosted inference regression tests to assert the provider-convention ID is preserved end-to-end instead of normalized. ## 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) ## Verification - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Git hooks passed during commit and push, or `npx prek run --from-ref main --to-ref HEAD` passes - [x] Targeted tests pass for changed behavior - [ ] Full `npm test` passes (broad runtime changes only) - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `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: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Updated hosted inference and E2E scenarios to use the correct model identifier consistently. * Improved fallback behavior so tests and workflows resolve the same hosted model across CI, rebuild, and upgrade flows. * Added coverage for the provider-style model naming to prevent namespace mismatches. * **Documentation** * Clarified the model naming convention used for hosted inference in the onboarding flow. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary Restore issue NVIDIA#5800 parity package `P0-A` for merged bash-suite inference-helper deltas only. This is a focused support-test parity PR: the helper/product behavior already exists on `main`; this adds missing Vitest assertions so shell retirement keeps the hosted/hermetic inference contracts covered. ## Related Issues Refs NVIDIA#5800 Refs NVIDIA#5098 Refs NVIDIA#5373 Refs NVIDIA#5374 Refs NVIDIA#5385 Refs NVIDIA#5395 Refs NVIDIA#5399 Refs NVIDIA#5400 Refs NVIDIA#5411 Refs NVIDIA#5751 Refs NVIDIA#5672 Refs NVIDIA#5757 ## Scope gate - Package: `P0-A — Hosted/hermetic inference helper parity` - Included PRs all merged and touched `test/e2e`: yes - Out of scope: unmerged/non-bash PRs; product cleanup; shell lane retirement / PR NVIDIA#5756 cleanup ## Parity map | ID | Source PR | Contract | Inference classification | Vitest assertion / waiver | Status | | --- | --- | --- | --- | --- | --- | | A1 | NVIDIA#5373 | Fake OpenAI-compatible helper supports `/models`, chat completions, responses API, auth checking, and request capture. | `hermetic-default` | `test/e2e-scenario/support-tests/hosted-inference.test.ts` starts `startFakeOpenAiCompatibleServer` and asserts models/chat/responses/request log behavior. | covered | | A2 | NVIDIA#5374, NVIDIA#5385, NVIDIA#5395 | Hosted CI inference stages `NVIDIA_INFERENCE_API_KEY` as `COMPATIBLE_API_KEY`, routes as `custom`/`compatible-endpoint`, and prefers `openai-completions`. | `hosted-compatible capable` | Existing workflow/helper assertions plus new shell helper staging assertion in `hosted-inference.test.ts`. | covered | | A3 | NVIDIA#5399, NVIDIA#5751, NVIDIA#5672, NVIDIA#5757 | Hosted model default remains the Inference Hub provider/namespace/model ID `nvidia/nvidia/nemotron-3-ultra`; explicit `NEMOCLAW_MODEL` takes precedence over `NEMOCLAW_COMPAT_MODEL`, which takes precedence over helper options/default. | `hosted-compatible capable` | New `requireHostedInferenceConfig` model precedence/default assertion; existing workflow/model namespace tests remain green. | covered | | A4 | NVIDIA#5400, NVIDIA#5411 | Hosted reachability probe is bounded and low-cost: no `/models`, chat completions, auth header, or bearer token spend. | `hosted-compatible capable` | Existing probe tests retained and revalidated. | covered | | A5 | NVIDIA#5385 | Public NVIDIA/nvapi shell mode remains distinct from hosted-compatible mode and is not restaged as compatible inference. | `public-nvidia required` | New shell helper assertion checks `nvapi-*` + `cloud` keeps `nvidia-prod`, leaves `COMPATIBLE_API_KEY` unset. | covered | ## Inference mode support - Default mode for touched live targets: none touched; this PR only changes support tests. - Real inference support preserved: yes, by asserting hosted-compatible and public-NVIDIA helper boundaries without invoking real inference. - Modes validated in this PR: hermetic fake endpoint and shell helper mocked hosted-compatible/public boundary. - If not validated with real inference: not required; no live target or hosted secret path changed. ## Validation - [x] `npx vitest run --project e2e-vitest-support test/e2e-scenario/support-tests/hosted-inference.test.ts` - [x] `npx vitest run test/e2e-script-workflow.test.ts test/issue-5667-hosted-inference-model-namespace.test.ts src/lib/inference/onboard-probes.test.ts src/lib/onboard/providers.test.ts` - [x] `git diff --check` - [ ] hosted/public selective E2E workflow, if required by classification: not required; support-test-only PR, no live/workflow behavior changed. ## Follow-ups / waivers - Pre-push full `Test (CLI)` / `Test (plugin)` hooks were not clean on local macOS after the commit: CLI run hit existing macOS/stat/OOM-style failures; plugin run could not import package `json5`. Focused target tests above passed. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Tests** * Expanded end-to-end coverage for hosted inference compatibility and model ID/model precedence behavior. * Added validations for environment variable staging rules and shell mode behavior across NVAPI key scenarios. * Introduced a fake OpenAI-compatible server and added contract checks for `/models`, auth-required flows, and streamed responses on chat/response endpoints, including cleanup after runs. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- markdownlint-disable MD041 --> ## Summary Refreshes the v0.0.68 docs with release notes, Microsoft Teams messaging guidance, and generated support-matrix coverage. Also corrects the Hermes generated command reference so `sessions export` examples match Hermes-only behavior while keeping the shared command heading compatible with CLI parity checks. ## Changes - NVIDIA#5585 -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/platform-support.mdx`: Documents experimental Microsoft Teams channel setup, Bot Framework credentials, webhook forwarding, local `MSTEAMS_PORT` conflicts, and the generated integration support row. - NVIDIA#5526 -> `docs/reference/commands.mdx`, `docs/reference/commands-nemohermes.mdx`: Keeps Hermes `sessions export` examples on the supported single-JSONL export path while preserving the canonical shared CLI heading. - NVIDIA#5044 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for installer onboarding failure propagation. - NVIDIA#5641 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for fresh recovery after pre-sandbox installer interruption. - NVIDIA#5673 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for explicit deny-all messaging manifests. - NVIDIA#5743 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for unsupported-agent channel-add rejection. - NVIDIA#5252 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for Hermes `gateway-token` dashboard guidance. - NVIDIA#5659 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for local OpenClaw `agent` wrapper help. - NVIDIA#5661 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for default extra-agent paths. - NVIDIA#5669 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for Deep Agents Code branding. - NVIDIA#5672 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for hosted-compatible default model ID preservation. - NVIDIA#5725 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for Deep Agents Code sandbox liveness. - NVIDIA#5644 -> `docs/about/release-notes.mdx`: Adds v0.0.68 release-note coverage for DGX Spark managed-vLLM express install defaults. - NVIDIA#5712 -> `docs/about/release-notes.mdx`, `docs/reference/platform-support.mdx`: Adds v0.0.68 release-note coverage for the canonical support matrix and updates the matrix source with Teams. ## 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 all that apply. For any "covered by existing tests", "not applicable", or waiver entry, add a brief justification on the same line or in the Changes section. --> - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: docs-only release refresh; no runtime code changed. - [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 item you ran and confirmed. Leave unchecked items you skipped. Doc-only changes do not require npm test unless you ran it. --> - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Git hooks passed during commit and push, or `npx prek run --from-ref main --to-ref HEAD` passes - [ ] Targeted tests pass for changed behavior - [ ] Full `npm test` passes (broad runtime changes only) - [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) — `npm run docs` passed with 0 errors; Fern reported the existing light-mode accent contrast warning. - [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) Additional verification: - `python3 scripts/generate-platform-docs.py --check` passed. - `npm run docs:sync-agent-variants` passed. - `bash test/e2e/e2e-cloud-experimental/check-docs.sh --only-cli` passed. - `npm run docs` passed with 0 errors and one Fern theme warning: light-mode accent contrast ratio is 2.41:1 and should be at least 3:1. - `npm run build:cli` refreshed local untracked `dist/` artifacts after rebase; no tracked files changed. - `npm run typecheck:cli` passed. - Normal commit and push hooks passed after the local CLI rebuild. --- <!-- 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: Miyoung Choi <miyoungc@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added **Microsoft Teams** as an experimental messaging channel, including manifest-first onboarding, local port routing/conflict handling, sandbox delivery controls, and policy preset support. * **Documentation** * Expanded messaging-channel setup for Teams (prerequisites, credential/webhook setup, wizard flow, and add/remove commands). * Updated reference docs for **agent-specific** session export examples (OpenClaw vs Hermes). * Refreshed platform support guidance and added the latest release-notes entry. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
Issue #5667: onboarding a Deep Agents / OpenAI-compatible sandbox without an explicit NEMOCLAW_MODEL recorded the model id as 'nvidia/nvidia/nemotron-3-super-v3' (doubled 'nvidia/' namespace). Root cause was the default fallback constant HOSTED_INFERENCE_MODEL in src/lib/onboard/providers.ts, which was hardcoded with a duplicated namespace segment (dev-triage hypothesis #3). When NEMOCLAW_MODEL is unset, stageHostedInferenceSourceSecretEnv() falls back to this constant and persists it into NEMOCLAW_MODEL / NEMOCLAW_COMPAT_MODEL, surfacing the doubled prefix everywhere (status, build ARG, dcode header). Fixed by changing the constant to the canonical single-prefix id 'nvidia/nemotron-3-super-v3'. Scope limited to the default constant; CI workflow YAML and e2e fixtures set NEMOCLAW_MODEL explicitly and are intentionally untouched.
Related Issue
Fixes #5667
Changes
auto_fix/auto_fix_recent_issues.py.Type of Change
Verification
npx prek run --from-ref main --to-ref HEADpassesnpm testpasses (broad runtime changes only)npm run docsbuilds without warnings (doc changes only)Verification details reported by automation:
npm install --ignore-scriptsnpm run build:cli./node_modules/.bin/vitest run test/issue-5667-hosted-inference-model-namespace.test.ts --project cli./node_modules/.bin/vitest run test/credential-exposure.test.ts test/onboard-selection.test.ts src/lib/inference/onboard-probes.test.ts test/issue-5667-hosted-inference-model-namespace.test.ts./node_modules/.bin/vitest run test/e2e-script-workflow.test.tsSigned-off-by: Jason Ma jama@nvidia.com
Summary by CodeRabbit
nvidia/nvidia/) across onboarding, live scenarios, and CI/E2E workflows.NEMOCLAW_PROVIDER_KEY.