fix(onboard): default extra-agents workspace and agentDir when omitted - #5661
Conversation
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-5661.docs.buildwithfern.com/nemoclaw |
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:
📝 WalkthroughWalkthrough
ChangesOptional workspace/agentDir for extra agents
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
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
|
PR Review Advisor — No blocking findingsMerge posture: No blocking advisor findings This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision. |
There was a problem hiding this comment.
Actionable comments posted: 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 `@docs/reference/commands.mdx`:
- Around line 2169-2170: Update the documentation for the workspace and agentDir
parameters to clarify that the validator accepts absolute paths that resolve to
the canonical paths, rather than requiring exact literal string matches. Change
the wording from "must equal that exact value" to reflect that paths resolving
to the canonical paths are accepted, making the documentation consistent with
the actual runtime path resolution 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: 0fc5b37f-eeae-4083-a8a3-63e78c5c3337
📒 Files selected for processing (3)
docs/reference/commands.mdxscripts/generate-openclaw-config.mtstest/generate-openclaw-config.test.ts
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
test/generate-openclaw-config-path-defaults.test.ts (1)
74-90: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winCover the symmetric partial-default case (
agentDirprovided,workspaceomitted).Line 74 currently validates omitted-both and
workspace-provided cases. Add anagentDir-provided entry too, so both optional path fields are independently regression-tested.Suggested test extension
it("auto-fills workspace and agentDir from id when omitted (full or partial)", () => { const config = runConfigScript({ NEMOCLAW_EXTRA_AGENTS_JSON_B64: extraAgentsB64([ { id: "alpha", tools: TOOLS_OK }, { id: "beta", workspace: "/sandbox/.openclaw/workspace-beta", tools: TOOLS_OK }, + { id: "gamma", agentDir: "/sandbox/.openclaw/agents/gamma", tools: TOOLS_OK }, ]), }); @@ expect(config.agents.list[2]).toMatchObject({ id: "beta", workspace: "/sandbox/.openclaw/workspace-beta", agentDir: "/sandbox/.openclaw/agents/beta", }); + expect(config.agents.list[3]).toMatchObject({ + id: "gamma", + workspace: "/sandbox/.openclaw/workspace-gamma", + agentDir: "/sandbox/.openclaw/agents/gamma", + }); });🤖 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/generate-openclaw-config-path-defaults.test.ts` around lines 74 - 90, The test "auto-fills workspace and agentDir from id when omitted (full or partial)" currently tests the cases where both paths are omitted and where workspace is provided but agentDir is omitted. Add a third test entry to the extraAgentsB64 array with an agent that has an agentDir specified but workspace omitted, then add a corresponding expect statement for config.agents.list[3] to verify that the workspace field is auto-filled from the id while the provided agentDir is preserved. This ensures both optional path fields are independently tested for regression.
🤖 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/generate-openclaw-config-path-defaults.test.ts`:
- Around line 74-90: The test "auto-fills workspace and agentDir from id when
omitted (full or partial)" currently tests the cases where both paths are
omitted and where workspace is provided but agentDir is omitted. Add a third
test entry to the extraAgentsB64 array with an agent that has an agentDir
specified but workspace omitted, then add a corresponding expect statement for
config.agents.list[3] to verify that the workspace field is auto-filled from the
id while the provided agentDir is preserved. This ensures both optional path
fields are independently tested for regression.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: a2ec93bb-19b8-4b10-acba-1e5027850855
📒 Files selected for processing (1)
test/generate-openclaw-config-path-defaults.test.ts
…r legacy and object payloads Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
There was a problem hiding this comment.
🧹 Nitpick comments (2)
docs/reference/commands.mdx (2)
2177-2177: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPut one sentence per source line.
Line 2177 contains two sentences on the same line; split them so each sentence is on its own line.
As per coding guidelines, "Keep one sentence per line in Markdown and MDX source files."
🤖 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 `@docs/reference/commands.mdx` at line 2177, Line 2177 in the docs/reference/commands.mdx file contains two sentences that need to be split. The first sentence ending with "per-agent `subagents` object." should remain on its own line, and the second sentence starting with "To set it, use the object payload shape..." should be moved to a new line below it. This follows the markdown guideline of keeping one sentence per line for better source file readability.Source: Coding guidelines
2163-2163: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winUse active voice for this behavior statement.
Line 2163 is passive (“is always written first”); rewrite it to active voice.
As per path instructions, "Active voice required. Flag passive constructions."
🤖 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 `@docs/reference/commands.mdx` at line 2163, The sentence on line 2163 contains passive voice in the phrase "is always written first" which obscures the actor performing the action. Rewrite this phrase using active voice by identifying who or what performs the action (for example, replacing "is always written first" with an active construction like "the system always writes" or "we always write" depending on context). Ensure the rewritten sentence maintains the same meaning while clearly stating the subject performing the action of writing the canonical main entry first.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 `@docs/reference/commands.mdx`:
- Line 2177: Line 2177 in the docs/reference/commands.mdx file contains two
sentences that need to be split. The first sentence ending with "per-agent
`subagents` object." should remain on its own line, and the second sentence
starting with "To set it, use the object payload shape..." should be moved to a
new line below it. This follows the markdown guideline of keeping one sentence
per line for better source file readability.
- Line 2163: The sentence on line 2163 contains passive voice in the phrase "is
always written first" which obscures the actor performing the action. Rewrite
this phrase using active voice by identifying who or what performs the action
(for example, replacing "is always written first" with an active construction
like "the system always writes" or "we always write" depending on context).
Ensure the rewritten sentence maintains the same meaning while clearly stating
the subject performing the action of writing the canonical main entry first.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 5075bf0e-d89d-49f5-8618-d1a05818a268
📒 Files selected for processing (2)
docs/reference/commands.mdxtest/generate-openclaw-config-path-defaults.test.ts
…ection Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
<!-- 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 -->
NVIDIA#5661) ## Summary `NEMOCLAW_EXTRA_AGENTS_JSON` entries that omit `workspace` or `agentDir` cause the sandbox image build to abort at `generate-openclaw-config.mts` because the validator rejects undefined paths. The YAML manifest path already auto-fills both fields from the agent id before encoding, so the same payload works there. This change mirrors that defaulting at the build-time validator so the env-var path accepts the terse `[{id, tools}]` shape too. ## Related Issue Fixes NVIDIA#5660 ## Changes - `scripts/generate-openclaw-config.mts`: in `validateExtraAgents`, when `workspace` or `agentDir` is omitted, derive it from `expectedAgentPath(kind, id)`. When supplied, keep the existing absolute and canonical-equality checks; the failure message now reads `"…must be a non-empty string when present"`. - `test/generate-openclaw-config.test.ts`: add positive tests for the both-omitted and one-supplied cases. - `docs/reference/commands.mdx`: loosen the contract for `workspace` and `agentDir` to "optional, defaults to the canonical path" while keeping the canonical-equality requirement when supplied. ## Type of Change - [x] Code change with doc updates - [ ] Code change (feature, bug fix, or refactor) - [ ] 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 - [x] 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: Tinson Lai <tinsonl@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated the OpenClaw “Extra OpenClaw agents” reference to support both array and object payload formats, clarify optional `workspace`/`agentDir` with deterministic default paths, and revise schema rules for `model` and `subagents`. Also updated how `maxSpawnDepth` is configured under `defaults.subagents`. * **Bug Fixes** * Improved extra-agent validation/normalization: omitted `workspace`/`agentDir` are now defaulted automatically, and any provided values must be absolute and match the expected canonical paths. * **Tests** * Added coverage for defaulting behavior across multiple extra-agent payload shapes, including legacy formats. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Tinson Lai <tinsonl@nvidia.com> Co-authored-by: Carlos Villela <cvillela@nvidia.com>
<!-- 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
NEMOCLAW_EXTRA_AGENTS_JSONentries that omitworkspaceoragentDircause the sandbox image build to abort atgenerate-openclaw-config.mtsbecause the validator rejects undefined paths. The YAML manifest path already auto-fills both fields from the agent id before encoding, so the same payload works there. This change mirrors that defaulting at the build-time validator so the env-var path accepts the terse[{id, tools}]shape too.Related Issue
Fixes #5660
Changes
scripts/generate-openclaw-config.mts: invalidateExtraAgents, whenworkspaceoragentDiris omitted, derive it fromexpectedAgentPath(kind, id). When supplied, keep the existing absolute and canonical-equality checks; the failure message now reads"…must be a non-empty string when present".test/generate-openclaw-config.test.ts: add positive tests for the both-omitted and one-supplied cases.docs/reference/commands.mdx: loosen the contract forworkspaceandagentDirto "optional, defaults to the canonical path" while keeping the canonical-equality requirement when supplied.Type of Change
Verification
Verifiedin GitHubnpx prek run --from-ref main --to-ref HEADpassesnpm testpasses (broad runtime changes only)npm run docsbuilds without warnings (doc changes only)Signed-off-by: Tinson Lai tinsonl@nvidia.com
Summary by CodeRabbit
workspace/agentDirwith deterministic default paths, and revise schema rules formodelandsubagents. Also updated howmaxSpawnDepthis configured underdefaults.subagents.workspace/agentDirare now defaulted automatically, and any provided values must be absolute and match the expected canonical paths.