refactor: slim adapter runtime dependencies#105
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:
WalkthroughThe change separates adapter-owned dependencies from harness-owned SDKs, adds explicit Claude Agent and adapter test dependency groups, updates installation guidance across adapters and documentation, and adjusts Harbor, notebook, Relay, CI, and metadata checks to validate the revised contract. ChangesAdapter dependency and compatibility contracts
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
Fern docs preview: https://nvidia-preview-pull-request-105.docs.buildwithfern.com/nemo/fabric |
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
pypi.md (1)
28-36: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winTell readers to choose one adapter extra.
The block presents four commands without stating that they are alternatives. Copying the block installs every adapter, which defeats the minimal adapter-installation boundary described immediately afterward.
Suggested wording
-When the runtime and adapter share an environment, install a short adapter -extra: +When the runtime and adapter share an environment, choose one short adapter +extra:🤖 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 `@pypi.md` around lines 28 - 36, Update the adapter installation instructions in the “When the runtime and adapter share an environment” section to explicitly tell readers to choose exactly one adapter extra, clarifying that the four pip commands are alternatives and preventing installation of all adapters together.
🤖 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 `@adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py`:
- Around line 139-141: Update the adapter’s dependency guard around the existing
Deep Agents availability check to validate that deepagents, langchain, and
langgraph are all installed and satisfy the versions advertised in the error
message. Keep the diagnostic tied to the combined compatibility check so agent
creation is not reached when any dependency is missing or incompatible.
In `@adapters/hermes/README.md`:
- Around line 12-16: Update the installation instructions near the “pip install
nemo-fabric-adapters-hermes” command to also install the compatible hermes-agent
harness version, or link to the required harness setup, so a fresh environment
can start the adapter under the separate adapter-and-harness installation
contract.
In `@examples/notebooks/README.md`:
- Around line 28-34: Update the “Deep Agents, Codex, Claude” installation
instructions in the notebooks README so the Codex credentials are presented as
alternatives: users may authenticate with an existing Codex/ChatGPT login or
provide OPENAI_API_KEY, rather than requiring both. Keep the Deep Agents and
Claude credential requirements unchanged.
In `@tests/adapters/test_deepagents.py`:
- Line 490: Update the pytest.raises match patterns near the affected tests to
use raw regex literals, including both occurrences of the
“nemo-relay.*deepagents” pattern, so Ruff RUF043 is satisfied while preserving
the intended regex matching behavior.
---
Outside diff comments:
In `@pypi.md`:
- Around line 28-36: Update the adapter installation instructions in the “When
the runtime and adapter share an environment” section to explicitly tell readers
to choose exactly one adapter extra, clarifying that the four pip commands are
alternatives and preventing installation of all adapters together.
🪄 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: ASSERTIVE
Plan: Enterprise
Run ID: 0ba68397-a238-4bb9-be18-c1fba54d3f3b
⛔ Files ignored due to path filters (5)
adapters/claude/uv.lockis excluded by!**/*.lockadapters/codex/uv.lockis excluded by!**/*.lockadapters/deepagents/uv.lockis excluded by!**/*.lockadapters/hermes/uv.lockis excluded by!**/*.lockuv.lockis excluded by!**/*.lock
📒 Files selected for processing (23)
README.mdadapters/claude/README.mdadapters/claude/pyproject.tomladapters/codex/README.mdadapters/codex/pyproject.tomladapters/deepagents/README.mdadapters/deepagents/pyproject.tomladapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/hermes/README.mdadapters/hermes/pyproject.tomldocs/experimentation/cli.mdxdocs/getting-started/install.mdxdocs/integrations/claude.mdxexamples/code_review_agent/README.mdexamples/harbor/calculator/task/environment/Dockerfileexamples/harbor/prepare_swebench.shexamples/notebooks/02_variations.ipynbexamples/notebooks/README.mdpypi.mdpyproject.tomltests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
💤 Files with no reviewable changes (3)
- adapters/claude/pyproject.toml
- adapters/hermes/pyproject.toml
- adapters/codex/pyproject.toml
📜 Review details
⏰ Context from checks skipped due to timeout. (15)
- GitHub Check: Preview docs
- GitHub Check: Test (Python 3.12, windows-amd64)
- GitHub Check: Test (Python 3.13, windows-amd64)
- GitHub Check: Test (Python 3.14, windows-amd64)
- GitHub Check: Test (Python 3.11, windows-amd64)
- GitHub Check: Test (Python 3.12, linux-arm64)
- GitHub Check: Test (Python 3.13, linux-amd64)
- GitHub Check: Test (Python 3.12, macos-arm64)
- GitHub Check: Test (Python 3.13, linux-arm64)
- GitHub Check: Test (Python 3.13, macos-arm64)
- GitHub Check: Test (Python 3.11, macos-arm64)
- GitHub Check: Test (Python 3.14, macos-arm64)
- GitHub Check: Test (Python 3.11, linux-amd64)
- GitHub Check: Test (Python 3.12, linux-amd64)
- GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (41)
**/*.{md,rst}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Update documentation and examples in the same branch as the public API change.
Files:
examples/code_review_agent/README.mdexamples/notebooks/README.mdpypi.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
{README.md,docs/**/*.{md,mdx,yml},examples/**/*.{md,mdx,yml}}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Keep package names, repository references, and build commands current in documentation and examples.
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxexamples/notebooks/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdxREADME.md
{docs/**/*.{md,mdx,yml},examples/**/*.{md,mdx,yml}}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update relevant getting-started, reference, adapter, and example documentation when the corresponding examples or adapters change.
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxexamples/notebooks/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdx
**/*
📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)
**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.
**/*: Always spellNVIDIAin all caps; do not useNvidia,nvidia,nVidia,nVIDIA, orNV.
Usean NVIDIAbefore a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol afterNVIDIAwhen referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names withNVIDIAon first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...
Files:
examples/code_review_agent/README.mdexamples/harbor/prepare_swebench.shdocs/integrations/claude.mdxexamples/harbor/calculator/task/environment/Dockerfileexamples/notebooks/README.mddocs/getting-started/install.mdxpypi.mdpyproject.tomldocs/experimentation/cli.mdxadapters/hermes/README.mdtests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdtests/adapters/test_deepagents.pyexamples/notebooks/02_variations.ipynbREADME.mdadapters/deepagents/pyproject.tomltests/integrations/test_harbor_runner.py
**/*.{md,mdx,rst}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)
**/*.{md,mdx,rst}: For NeMo Fabric documentation, verify technical claims against the current repository, public API, or documented command before reviewing style.
Always spellNVIDIAin all caps; do not useNvidia,nvidia, orNV.
Format commands, code elements, expressions, package names, file names, and paths as inline code.
Use descriptive link text; avoid raw URLs and weak anchors such ashereorread more.
Use title case consistently for technical documentation headings.
Introduce code blocks, lists, tables, and images with complete sentences.
Write procedures as imperative, parallel steps; split long procedures into smaller tasks.
Prefer active voice, present tense, short sentences, contractions, and plain English while preserving necessary technical precision.
Usecanfor possibility and reservemayfor permission.
Useafterfor temporal relationships instead ofonce, and preferrefer tooverseewhen directing readers to another resource.
Avoid culture-specific idioms, unnecessary Latinisms, jokes, and marketing exaggeration in technical documentation.
Spell out months in body text, avoid ordinal dates, and use clear time zones.
Spell out whole numbers from zero through nine unless they are technical values, parameters, versions, or UI values; use numerals for 10 or greater and commas in thousands.
Do not add trademark symbols to learning-oriented documentation unless the source, platform, or legal guidance explicitly requires them.
Do not replace precise technical terms with simpler words when doing so would lose precision.
Do not flag passive voice when the actor is unknown or the action is the important part.
Do not rewrite API names, package names, command flags, or code literals for style.
**/*.{md,mdx,rst}: Use consistent title case for technical-document headings and table headers; avoid quotation marks, ampersands, and exclamation marks in headings, while preserving official product, event, research, and whitepaper title ...
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxexamples/notebooks/README.mddocs/getting-started/install.mdxpypi.mddocs/experimentation/cli.mdxadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
**/*.{md,rst,txt,adoc}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-language-mechanics.md)
**/*.{md,rst,txt,adoc}: For technical documentation, use professional, active, conversational, engaging, precise, and plain-English prose. Prefer active voice, present tense, short sentences, and scannable paragraphs. Avoid casual or imprecise language, swearing, threats, insults, jokes, puns, culture-specific idioms, marketing exaggeration, and unsupported third-party comparisons.
Usecanfor possibility and reservemayfor permission; useafterfor temporal order; userefer tofor cross-references; prefer short direct sentences and specific verbs; avoid unnecessarypleasein technical documentation.
Prefer active voice when the actor matters. Passive voice is acceptable when the actor is unknown or irrelevant, when the action or result is the focus, or in programmer documentation.
Use natural contractions in conversational technical prose, but do not force them in formal legal copy, API references, or generated text.
Prefer simpler English over Latinisms: usefor exampleorsuch asinstead ofe.g.,and so oninstead ofetc.,that isinstead ofi.e.,compared toinstead ofvs., andby,through, orusinginstead ofvia. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Usethatwithout commas for essential clauses, andwhichwith commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such asJune 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space beforea.m.orp.m.; useETandPTfor needed time zones; avoid24/7; and preferfrom 12:30 to 1:00 p.m.for prose ranges.
Format numbers consistently: spell out zero through nine in body text, use numerals for 10 or greater and for technical values, use commas in thousands, do not begin a sentence with a numeral, spell out ordinals, and use numerals consistently within a category wh...
Files:
examples/code_review_agent/README.mdexamples/notebooks/README.mdpypi.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, and integration README files when public behavior or entry-point documentation changes.
Files:
examples/code_review_agent/README.mdexamples/notebooks/README.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
**/*.{md,mdx}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
**/*.{md,mdx}: Use the full product nameNVIDIA NeMo Fabricon its first usage, typically in the title or H1; useNeMo Fabricthereafter.
Usefabricby itself only when referring to the CLI tool, and surround those references with backticks.
CapitalizeNVIDIAcorrectly in public documentation.
Format commands, code elements, expressions, file names, paths, and filenames as inline code where needed.
Use title case consistently for headings in technical documentation.
Introduce code blocks, tables, and lists with complete lead-in sentences.
Use descriptive anchor text instead of raw URLs or generic link text such ashere.
Prefer active voice, present tense, short sentences, and plain English.
Use consistent terminology for the same concept throughout a document.
Write procedures as imperative, parallel, easy-to-scan steps, and split long sequences into smaller tasks.
Useafterinstead ofoncewhen expressing temporal sequence.
Usecaninstead ofmaywhen the intended meaning is possibility rather than permission.
Avoid ambiguous numeric dates and ordinal dates in body text.
For learning-oriented documentation, do not force trademark symbols unless the source document explicitly requires them.
Introduce examples' code blocks with full sentences and ensure examples match current APIs and build commands.For documentation-site changes, run
just docsto regenerate Python and Rust API references and validate Fern configuration.
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxexamples/notebooks/README.mddocs/getting-started/install.mdxpypi.mddocs/experimentation/cli.mdxadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant SDK, API, adapter, example, integration, and embedded documentation when public behavior or the corresponding surface changes.
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxexamples/notebooks/README.mddocs/getting-started/install.mdxpypi.mddocs/experimentation/cli.mdxadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
**/*.{html,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
HTML and Markdown files must use the specified HTML comment form for SPDX license headers.
Files:
examples/code_review_agent/README.mdexamples/notebooks/README.mdpypi.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdREADME.md
{adapters/**,examples/**}
⚙️ CodeRabbit configuration file
{adapters/**,examples/**}: Review adapter and example changes for command correctness, config/schema consistency, artifact handling, and compatibility with the public NeMo Fabric contracts.
Files:
examples/code_review_agent/README.mdexamples/harbor/prepare_swebench.shexamples/harbor/calculator/task/environment/Dockerfileexamples/notebooks/README.mdadapters/hermes/README.mdadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdexamples/notebooks/02_variations.ipynbadapters/deepagents/pyproject.toml
{*.md,**/*.md,**/*.mdx,**/*.ipynb}
⚙️ CodeRabbit configuration file
{*.md,**/*.md,**/*.mdx,**/*.ipynb}: Enforce the product name in user-facing prose: use "NVIDIA NeMo Fabric" on first use and "NeMo Fabric" thereafter. Flag standalone capitalized "Fabric" when it refers to the product. Do not flag the lowercasefabricCLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxexamples/notebooks/README.mddocs/getting-started/install.mdxpypi.mddocs/experimentation/cli.mdxadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdexamples/notebooks/02_variations.ipynbREADME.md
**/*.{toml,yml,yaml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
TOML, YAML, and shell files must use the specified
#-comment SPDX license header.
Files:
examples/harbor/prepare_swebench.shpyproject.tomladapters/deepagents/pyproject.toml
**/*.mdx
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
In MDX files, use JSX comment delimiters (
{/*and*/}) for top-of-file comments, including SPDX headers; do not use HTML comments.Use
{/* ... */}delimiters for top-of-file MDX SPDX comments, not HTML comment delimiters.MDX files must use a JSX comment for the SPDX license header.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
docs/**/*.{md,mdx,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Run
just docswhen the documentation site changes.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
{docs/**,README.md,AGENTS.md}
⚙️ CodeRabbit configuration file
{docs/**,README.md,AGENTS.md}: Review documentation for technical accuracy against the current API, command correctness, and consistency with generated schemas.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdxREADME.md
{Cargo.toml,python/pyproject.toml,pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Keep Rust workspace/package metadata and Python/maturin package metadata internally consistent, including package names, versions, import paths, and module names.
Files:
pyproject.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}: Keep workspace, Python, and lockfile dependency versions aligned where required, and review both direct and transitive dependency changes from resolved lockfiles.
Inspect resolved transitive licenses, explicitly surface UNKNOWN, non-SPDX/custom, proprietary, source-available, copyleft, or network-copyleft terms, and route unresolved licensing questions to dependency approvers with distribution and linkage context.
Document the functional need, alternatives considered, rationale for the selected dependency, and any unresolved licensing question when introducing dependencies.
Files:
pyproject.toml
{Cargo.toml,pyproject.toml,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Before adding a dependency, prefer the standard library, an existing dependency, or a small local implementation when appropriate; otherwise select a maintained, narrow-fit dependency with clear SPDX metadata and a permissive license where possible.
Files:
pyproject.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
After updating manifests or lockfiles, run
uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/mainand review added packages and license changes.
Files:
pyproject.toml
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.
Files:
pyproject.toml
**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For any Rust change, run
just test-rustandcargo fmt --all -- --check.For Rust core, CLI, or shared runtime semantic changes, run Rust formatting and tests, and add Python tests when behavior is exposed through the SDK.
Use Rust stable tooling; format Rust code with
cargo fmt --all, check formatting withcargo fmt --all -- --check, and compile withcargo check --workspace --locked.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/{Cargo.toml,Cargo.lock,pyproject.toml,package.json}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/*.{toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If a manifest or lockfile changes, run the license-diff script against
origin/main, review transitive license changes, and run theattributions-rustandattributions-pythonpre-commit hooks.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/*.{yml,yaml,toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For CI or packaging changes, use
maintain-ciormaintain-packaging, then run recipes and checks whose behavior changed.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
{pyproject.toml,adapters/**/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
{pyproject.toml,adapters/**/pyproject.toml}: Update the literalproject.versionin the root setuptools project and every adapterpyproject.toml.
Keep internal exact-version requirements aligned: rootnemo-fabric-* == <version>optional dependencies and each adapter'snemo-fabric-adapters-common == <version>dependency.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/*.{rs,py,toml}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
When editing version helpers, verify every
nemo-fabric-*workspace package through Cargo metadata and reject a static version inpython/pyproject.toml.
Files:
pyproject.tomltests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pyadapters/deepagents/pyproject.tomltests/integrations/test_harbor_runner.py
**/*.{toml,rs,py}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.
Files:
pyproject.tomltests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pyadapters/deepagents/pyproject.tomltests/integrations/test_harbor_runner.py
adapters/*/README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update adapter README files when public behavior, examples, or supported bindings change.
Files:
adapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.md
**/*.{rs,py,pyi,json,yaml,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.
Files:
tests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
Files:
tests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
**/*.{py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Python code or a Python-facing adapter changes, run
just test-python.Use type annotations for public Python APIs and keep native Python binding declarations synchronized with their Rust implementations.
Files:
tests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
**/*.{rs,py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.
**/*.{rs,py,pyi}: Usesnake_casefor Rust and Python functions and variables; usePascalCasefor Rust types and Python classes.
Keep native Python binding declarations synchronized with their Rust implementations when public contracts change.
Files:
tests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
tests/adapters/**/*.py
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
tests/adapters/**/*.py: If an adapter or integration changes, run its focused tests.
For adapter behavior changes, run focused adapter tests undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.py
**/*.{py,pyi,rs}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For Python SDK or PyO3 binding changes, use
python-tests, run focused pytest tests first, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
tests/adapters/test_adapter_package_metadata.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
tests/**/*.{rs,py}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
When adding functionality, include tests in the corresponding Rust crate or the relevant area under
tests/.
Files:
tests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
tests/**/*.py
📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)
tests/**/*.py: Use Pytest to run Python tests.
Do not add@pytest.mark.asyncioto tests; async tests are automatically detected and run by the async runner.
Do not add-> Nonereturn type annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorunittest.mock.AsyncMock, using thespecargument when necessary, rather than defining a new class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files inconftest.py.
Define fixtures using@pytest.fixture(name="<fixture_name>"[, scope="<scope>"])and a function named<fixture_name>_fixture; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its return value is unused or it does not return a value.
Use the autouserestore_environ_fixturefromtests/conftest.pyto restore environment variables; modify variables withos.environand do not usemonkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as usingresults["data"]instead ofresults.get("data").
Files:
tests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
{tests/**,python/tests/**}
⚙️ CodeRabbit configuration file
{tests/**,python/tests/**}: Tests should cover the behavior promised by the changed API surface, including error paths, lifecycle cleanup, and SDK/native parity where relevant.
Files:
tests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
{README.md,docs/index.yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update
README.mdordocs/index.ymlwhen documentation entry points or example reading paths change.
Files:
README.md
README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update the root
README.mdwhen public behavior, thenemo-fabricpackage, examples, or supported bindings change.Update the top-level
README.mdwhen changed behavior affects an entry point users would naturally consult.Update the root
README.mdwhen workspace structure, supported adapters, or top-level documentation changes.
Files:
README.md
🧠 Learnings (1)
📚 Learning: 2026-07-09T22:28:51.689Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 43
File: adapters/claude-sdk/src/nemo_fabric_adapters/claude_sdk/adapter.py:164-168
Timestamp: 2026-07-09T22:28:51.689Z
Learning: In the NeMo-Fabric adapters, treat path values used in Fabric adapter configuration (including logic like `_resolve_path` in adapter.py) as config-root-relative. Do not apply `Path.expanduser()` (or otherwise apply `~`/home or shell-style expansion), because it will make the resolved paths normalize inconsistently across adapters. Also, do not rely on or add any resolution behavior that uses `harness.settings.cwd` as an override point for these adapter paths—`harness.settings.cwd` is explicitly unsupported in this adapter context.
Applied to files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
🪛 Ruff (0.15.21)
tests/adapters/test_deepagents.py
[warning] 490-490: Pattern passed to match= contains metacharacters but is neither escaped nor raw
(RUF043)
[warning] 512-512: Pattern passed to match= contains metacharacters but is neither escaped nor raw
(RUF043)
🔇 Additional comments (21)
adapters/deepagents/pyproject.toml (2)
29-34: LGTM!
36-46: LGTM!pyproject.toml (1)
48-52: LGTM!Also applies to: 93-102, 133-133
tests/adapters/test_adapter_package_metadata.py (1)
1-79: LGTM!README.md (1)
140-143: LGTM!Also applies to: 158-158, 176-181
adapters/claude/README.md (1)
12-15: LGTM!Also applies to: 17-42, 153-155
adapters/codex/README.md (1)
10-13: LGTM!Also applies to: 15-33, 71-74
adapters/deepagents/README.md (1)
12-34: LGTM!Also applies to: 153-167
adapters/hermes/README.md (1)
18-29: LGTM!docs/experimentation/cli.mdx (1)
188-192: LGTM!docs/getting-started/install.mdx (1)
32-35: LGTM!Also applies to: 48-68
docs/integrations/claude.mdx (1)
13-16: LGTM!examples/code_review_agent/README.md (1)
62-62: LGTM!examples/notebooks/02_variations.ipynb (1)
203-204: LGTM!Also applies to: 206-209, 210-214
pypi.md (1)
38-58: LGTM!adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py (1)
754-755: LGTM!tests/adapters/test_deepagents.py (2)
309-319: LGTM!
322-325: 🎯 Functional CorrectnessNo issue here.
fake_relayinstallsnemo_relayandnemo_relay.integrationsas plain modules without a package path, so removing onlynemo_relay.integrations.deepagentsstill leaves the later test on the missing-integration path.> Likely an incorrect or invalid review comment.examples/harbor/calculator/task/environment/Dockerfile (1)
18-18: LGTM!examples/harbor/prepare_swebench.sh (1)
67-67: LGTM!tests/integrations/test_harbor_runner.py (1)
20-20: LGTM!Also applies to: 257-265
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 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 `@adapters/deepagents/README.md`:
- Around line 54-58: Update the installation guidance around the “nemo-fabric
doctor” reference in the adapter README to state that the command requires the
NeMo Fabric Runtime installation, or place the runtime installation step before
invoking it. Keep the adapter-only installation instructions accurate and
preserve the existing doctor validation purpose.
In `@docs/reference/api/python-library-reference/nemo_fabric.client.md`:
- Line 4: Update scripts/generate_api_docs.sh lines 70-80 so the client and
models descriptions start with “NVIDIA NeMo Fabric”; update the module docstring
in python/src/nemo_fabric/runtime.py line 4 to start with the same wording, then
regenerate the affected API Markdown pages:
docs/reference/api/python-library-reference/nemo_fabric.client.md line 4,
nemo_fabric.models.md line 4, and nemo_fabric.runtime.md line 10.
In `@tests/adapters/test_adapters_common_relay_gateway.py`:
- Around line 82-84: Update the pytest.raises matcher in the RelayGatewayError
test to escape the literal periods in both version numbers, preserving the
intended “NeMo Fabric requires >=0.6.0,<0.7.0” message match and satisfying Ruff
RUF043.
🪄 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: ASSERTIVE
Plan: Enterprise
Run ID: 0f9d08d2-bb83-48a2-81fc-26bfd80842aa
⛔ Files ignored due to path filters (2)
examples/notebooks/img/fabric-contract.svgis excluded by!**/*.svgexamples/notebooks/img/variations.svgis excluded by!**/*.svg
📒 Files selected for processing (99)
.agents/skills/contribute-docs/SKILL.md.agents/skills/prepare-pr/SKILL.md.agents/skills/review-doc-style/SKILL.md.agents/skills/review-doc-style/assets/nvidia-style-guide.md.coderabbit.yamlAGENTS.mdadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/codex/src/nemo_fabric_adapters/codex/adapter.pyadapters/common/src/nemo_fabric_adapters/common/__init__.pyadapters/common/src/nemo_fabric_adapters/common/lifecycle.pyadapters/common/src/nemo_fabric_adapters/common/relay_gateway.pyadapters/deepagents/README.mdadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/hermes/README.mdadapters/hermes/src/nemo_fabric_adapters/hermes/adapter.pycrates/fabric-cli/src/app.rscrates/fabric-core/src/config.rscrates/fabric-core/src/doctor.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/schema.rscrates/fabric-python/src/lib.rsdocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/nemo_fabric.types.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-capabilitytarget.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-mcpexposure.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/fn-resolve-run-plan-from-config.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/index.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterconfigsupport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-capabilityplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpserverconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvecontext.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/doctor/index.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/index.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/type-result.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/index.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/enum-errorstage.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/fn-run-plan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/index.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-adapterinvocation.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-environmenthandle.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-errorinfo.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-fabricevent.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runrequest.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runresult.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimehandle.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimetelemetrycontext.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/schema/enum-schemaname.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/schema/index.mdxexamples/code_review_agent/config.pyexamples/harbor/calculator/task/task.tomlexamples/harbor/prepare_swebench.shjustfilepython/src/nemo_fabric/client.pypython/src/nemo_fabric/errors.pypython/src/nemo_fabric/integrations/harbor/fabric_agent.pypython/src/nemo_fabric/integrations/harbor/models.pypython/src/nemo_fabric/integrations/harbor/runner.pypython/src/nemo_fabric/integrations/harbor/telemetry.pypython/src/nemo_fabric/models.pypython/src/nemo_fabric/runtime.pypython/src/nemo_fabric/types.pyschemas/adapter-descriptor.schema.jsonschemas/adapter-invocation.schema.jsonschemas/agent.schema.jsonschemas/environment-handle.schema.jsonschemas/error-info.schema.jsonschemas/fabric-event.schema.jsonschemas/run-plan.schema.jsonschemas/run-request.schema.jsonschemas/run-result.schema.jsonschemas/runtime-context.schema.jsonschemas/runtime-handle.schema.jsontests/_utils/configs.pytests/adapters/test_adapters_common_relay_gateway.pytests/adapters/test_deepagents.pytests/adapters/test_hermes_adapter.pytests/e2e/test_codex.pytests/e2e/test_harbor_swebench_task.pytests/e2e/test_hermes_config_mapping.pytests/e2e/test_hermes_runtime.pytests/e2e/test_swebench_style.pytests/integrations/test_harbor_runner.pytests/python/test_sdk_concurrency.pytests/python/test_sdk_contract.pytests/python/test_typed_config.py
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
.agents/skills/review-doc-style/SKILL.md (1)
60-62: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winMake the shell example runnable.
<changed-files>is parsed as shell redirection, so copying this command literally produces a shell syntax error. Use a concrete path list or a shell-safe variable, for example:git diff --unified=0 -- . \ | rg --pcre2 '^\+(?!\+\+).*?(?<!NeMo )\bFabric\b'As per coding guidelines, documentation commands must remain current and usable.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.agents/skills/review-doc-style/SKILL.md around lines 60 - 62, Update the shell command in the documentation to replace the placeholder <changed-files> with a shell-safe path argument, such as ., while preserving the existing git diff and rg filtering behavior so the example can be copied and run directly.Source: Coding guidelines
adapters/deepagents/README.md (2)
30-35: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winClarify that the harness install is still required with the combined command.
The adapter-only path above explicitly notes the harness is not bundled, but this combined-install snippet doesn't repeat that. A reader who skips straight to
pip install "nemo-fabric[deepagents]"could reasonably assume the harness is now included.Proposed wording
To install the NeMo Fabric Runtime and Deep Agents adapter in the same environment: ```bash pip install "nemo-fabric[deepagents]"
+This still does not install
deepagents,langchain, orlanggraph; install
+the compatible harness versions shown above in the same environment.</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In
@adapters/deepagents/README.mdaround lines 30 - 35, Update the
combined-install section adjacent to thepip install "nemo-fabric[deepagents]"
command to state that it does not installdeepagents,langchain, or
langgraph. Direct readers to install the compatible harness versions specified
earlier in the README within the same environment.</details> <!-- cr-comment:v1:7eb87a7db7bf22013b4bedb1 --> --- `165-168`: _📐 Maintainability & Code Quality_ | _🔵 Trivial_ | _⚡ Quick win_ **Reword the conditional `relay` extra explanation for clarity.** "If the host environment constrains the Deep Agents and LangGraph stack independently, the adapter's `relay` extra is a minimal shorthand..." — the `if` clause doesn't clearly gate the statement about what the extra installs. This reads as two unrelated ideas stitched together. <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In
@adapters/deepagents/README.mdaround lines 165 - 168, Reword the paragraph
describing the adapter’srelayextra so its purpose and installation behavior
are stated directly, without making the explanation conditional on independently
constrained Deep Agents and LangGraph dependencies. Preserve the detail that the
extra installs only the basenemo-relaypackage.</details> <!-- cr-comment:v1:b2ca34316338713e0f83cd0c --> </blockquote></details> <details> <summary>pypi.md (1)</summary><blockquote> `41-48`: _📐 Maintainability & Code Quality_ | _🔵 Trivial_ | _⚡ Quick win_ **Separate the co-located vs. separate-environment install scenarios explicitly.** This paragraph blends two installation scenarios (harness co-located with the adapter vs. harness in its own environment) into one run-on set of sentences, and doesn't state that the harness package itself must also be installed alongside `nemo-fabric-adapters-*` in the separate-environment case. <details> <summary>Proposed rewording</summary> ```diff -Install a compatible harness separately in the same virtual environment as the -adapter. If the harness environment is separate from the NeMo Fabric runtime, -install the corresponding `nemo-fabric-adapters-*` distribution directly in the -harness environment. Refer to the -[adapter compatibility reference](https://github.com/NVIDIA/NeMo-Fabric/tree/main/adapters) -for package names and harness installation instructions. +- **Co-located:** install a compatible harness separately in the same virtual + environment as the adapter. +- **Separate environment:** install the corresponding `nemo-fabric-adapters-*` + distribution, plus the compatible harness itself, directly in the harness + environment. Refer to the + [adapter compatibility reference](https://github.com/NVIDIA/NeMo-Fabric/tree/main/adapters) + for package names and harness installation instructions.🤖 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 `@pypi.md` around lines 41 - 48, Revise the installation guidance in pypi.md to explicitly separate the co-located harness-and-adapter scenario from the separate-environment scenario. State that co-located setups install a compatible harness in the adapter environment, while separate setups require installing both the harness package and the corresponding nemo-fabric-adapters-* distribution in the harness environment, preserving the existing compatibility-reference link.
🤖 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 `@python/src/nemo_fabric/errors.py`:
- Line 4: Update the module docstrings in python/src/nemo_fabric/errors.py at
lines 4-4 and python/src/nemo_fabric/types.py at lines 4-4 to use the short
product name “NeMo Fabric” instead of “NVIDIA NeMo Fabric.”
---
Outside diff comments:
In @.agents/skills/review-doc-style/SKILL.md:
- Around line 60-62: Update the shell command in the documentation to replace
the placeholder <changed-files> with a shell-safe path argument, such as .,
while preserving the existing git diff and rg filtering behavior so the example
can be copied and run directly.
In `@adapters/deepagents/README.md`:
- Around line 30-35: Update the combined-install section adjacent to the `pip
install "nemo-fabric[deepagents]"` command to state that it does not install
`deepagents`, `langchain`, or `langgraph`. Direct readers to install the
compatible harness versions specified earlier in the README within the same
environment.
- Around line 165-168: Reword the paragraph describing the adapter’s `relay`
extra so its purpose and installation behavior are stated directly, without
making the explanation conditional on independently constrained Deep Agents and
LangGraph dependencies. Preserve the detail that the extra installs only the
base `nemo-relay` package.
In `@pypi.md`:
- Around line 41-48: Revise the installation guidance in pypi.md to explicitly
separate the co-located harness-and-adapter scenario from the
separate-environment scenario. State that co-located setups install a compatible
harness in the adapter environment, while separate setups require installing
both the harness package and the corresponding nemo-fabric-adapters-*
distribution in the harness environment, preserving the existing
compatibility-reference link.
🪄 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: ASSERTIVE
Plan: Enterprise
Run ID: bc76c0e5-1ab8-484a-a001-4793c9a66808
📒 Files selected for processing (22)
.agents/skills/contribute-docs/SKILL.md.agents/skills/prepare-pr/SKILL.md.agents/skills/review-doc-style/SKILL.md.agents/skills/review-doc-style/assets/nvidia-style-guide.md.coderabbit.yamlAGENTS.mdadapters/deepagents/README.mdadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pydocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/nemo_fabric.types.mdpypi.mdpython/src/nemo_fabric/errors.pypython/src/nemo_fabric/runtime.pypython/src/nemo_fabric/types.pyscripts/generate_api_docs.shtests/adapters/test_adapters_common_relay_gateway.pytests/adapters/test_deepagents.py
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
- GitHub Check: Test (Python 3.13, windows-amd64)
- GitHub Check: Test (Python 3.11, windows-amd64)
- GitHub Check: Test (Python 3.12, windows-amd64)
- GitHub Check: Test (Python 3.14, windows-amd64)
🧰 Additional context used
📓 Path-based instructions (38)
**/*.{md,rst}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Update documentation and examples in the same branch as the public API change.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*
📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)
**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.
**/*: Always spellNVIDIAin all caps; do not useNvidia,nvidia,nVidia,nVIDIA, orNV.
Usean NVIDIAbefore a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol afterNVIDIAwhen referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names withNVIDIAon first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpython/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypypi.mdAGENTS.mdpython/src/nemo_fabric/errors.pydocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mdtests/adapters/test_adapters_common_relay_gateway.pyscripts/generate_api_docs.shdocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.mdpython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
⚙️ CodeRabbit configuration file
**/*: Enforce the product name in user-facing prose. In standalone documents, pages, and pull request descriptions, use "NVIDIA NeMo Fabric" on the first product mention and "NeMo Fabric" thereafter. In source comments, docstrings, diagnostics, and schema-description fragments, use "NeMo Fabric" whenever the product is named, except when source text renders as the first product mention on a standalone generated page; use "NVIDIA NeMo Fabric" there. Flag standalone capitalized "Fabric" when it refers to the product. Do not flag exact package/import/crate/command names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word; examples includeFabric,FabricConfig,nemo_fabric,nemo-fabric-core,nemo-fabric, andcrates/fabric-core.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpython/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypypi.mdAGENTS.mdpython/src/nemo_fabric/errors.pydocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mdtests/adapters/test_adapters_common_relay_gateway.pyscripts/generate_api_docs.shdocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.mdpython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
**/*.{md,rst,txt,adoc}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-language-mechanics.md)
**/*.{md,rst,txt,adoc}: For technical documentation, use professional, active, conversational, engaging, precise, and plain-English prose. Prefer active voice, present tense, short sentences, and scannable paragraphs. Avoid casual or imprecise language, swearing, threats, insults, jokes, puns, culture-specific idioms, marketing exaggeration, and unsupported third-party comparisons.
Usecanfor possibility and reservemayfor permission; useafterfor temporal order; userefer tofor cross-references; prefer short direct sentences and specific verbs; avoid unnecessarypleasein technical documentation.
Prefer active voice when the actor matters. Passive voice is acceptable when the actor is unknown or irrelevant, when the action or result is the focus, or in programmer documentation.
Use natural contractions in conversational technical prose, but do not force them in formal legal copy, API references, or generated text.
Prefer simpler English over Latinisms: usefor exampleorsuch asinstead ofe.g.,and so oninstead ofetc.,that isinstead ofi.e.,compared toinstead ofvs., andby,through, orusinginstead ofvia. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Usethatwithout commas for essential clauses, andwhichwith commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such asJune 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space beforea.m.orp.m.; useETandPTfor needed time zones; avoid24/7; and preferfrom 12:30 to 1:00 p.m.for prose ranges.
Format numbers consistently: spell out zero through nine in body text, use numerals for 10 or greater and for technical values, use commas in thousands, do not begin a sentence with a numeral, spell out ordinals, and use numerals consistently within a category wh...
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*.{md,mdx,rst}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-technical-docs.md)
**/*.{md,mdx,rst}: Use consistent title case for technical-document headings and table headers; avoid quotation marks, ampersands, and exclamation marks in headings, while preserving official product, event, research, and whitepaper title case.
Format code elements, commands, parameters, package names, expressions, directories, file names, and paths in monospace; represent path placeholders as angle-bracketed values inside monospace.
Use quotation marks for error messages and strings when appropriate, while retaining code formatting for literal code strings when it provides clearer meaning.
Format UI buttons, menus, fields, and labels in bold; separate consecutive menu selections with>and match UI text exactly, including capitalization.
Use italics on first use of new terms, italicize publication titles, and do so sparingly where appropriate.
Write keyboard shortcuts as plain text and link GitHub repositories using owner/repository link text, such as[NVIDIA/NeMo](link).
Introduce every code block with a complete sentence; do not let a code block complete or continue the surrounding sentence, and use syntax highlighting when supported.
Avoid the word “snippet” unless the surrounding documentation already uses it as a term of art, and keep inline method, function, and class references consistent with nearby documentation.
Use descriptive link text matching the destination title when possible; avoid raw URLs, generic anchors, long-sentence links, and unnecessary links that distract from procedures.
Ensure lists have a complete lead-in sentence, more than one item, no more than two levels, parallel construction, one idea or action per item, and appropriate end punctuation.
Use bulleted lists when order does not matter and numbered lists when order matters or the list is a task sequence.
Format definition lists with a bold term followed by a complete, parallel, punctuated definition.
Use tables for reference information, decision support, compatibility matrices,...
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant SDK, API, adapter, example, integration, and embedded documentation when public behavior or the corresponding surface changes.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*.{md,mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
For documentation-site changes, run
just docsto regenerate Python and Rust API references and validate Fern configuration.
**/*.{md,mdx}: In standalone documentation, useNVIDIA NeMo Fabricfor the first product mention andNeMo Fabricthereafter; never use standalone capitalizedFabricas the product name.
CapitalizeNVIDIAcorrectly and use descriptive inline code formatting for commands, code, APIs, filenames, and paths.
Use title case for technical-documentation headings.
Introduce code blocks, tables, and lists with complete lead-in sentences.
Use descriptive link text instead of raw URLs or generic labels such ashere.
Prefer active voice, present tense, short sentences, and plain English; usecanfor possibility rather thanmay, and preferafteroveronce.
Write procedures as concise, imperative, parallel steps and split long sequences into smaller tasks.
Use unambiguous date formats and avoid ordinal dates in body text.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*.{html,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
HTML and Markdown files must use the specified HTML comment form for SPDX license headers.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*.{md,mdx,rst,yml,yaml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
**/*.{md,mdx,rst,yml,yaml}: Prefer the documented public API over internal shortcuts in documentation and examples.
Keep package names, repository references, and build commands current.
Update entry-point documentation, includingREADME.mdordocs/index.yml, when examples or reading paths change.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
docs/reference/api/**
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Treat files under
docs/reference/api/as generated output; do not modify them directly.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*.{py,rs,md,mdx}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Preserve exact code and API identifiers such as
Fabric,FabricConfig,FabricError, andnemo_fabric, as well as exact package, command, and path forms such asnemo-fabric-core,nemo-fabric, andcrates/fabric-core.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpython/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypypi.mdAGENTS.mdpython/src/nemo_fabric/errors.pydocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mdtests/adapters/test_adapters_common_relay_gateway.pydocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.mdpython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
{README.md,docs/**/*,adapters/*/README.md,python/src/nemo_fabric/integrations/*/README.md,examples/README.md}
📄 CodeRabbit inference engine (AGENTS.md)
Update user-facing entry points when public behavior, the
nemo-fabricpackage, examples, or supported bindings change, including the root README, Fern documentation, adapter and integration READMEs, and examples README.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
{docs/sdk/python.mdx,schemas/SCHEMA.md,docs/reference/api/**/*,skills/**/*}
📄 CodeRabbit inference engine (AGENTS.md)
When the public API changes, keep the Python/Rust binding contract current in the Python SDK documentation, JSON Schema notes, generated API references, and consumer skills; run
just docsafter changing the docs site.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
{README.md,examples/**/*,docs/**/*}
📄 CodeRabbit inference engine (AGENTS.md)
Use the stable public wrapper
scripts/generate_api_docs.shin documentation and examples; referencescripts/docs/helper paths only when documenting internal maintenance work.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
{README.md,docs/**/*,*.md,**/*.md}
📄 CodeRabbit inference engine (AGENTS.md)
For the first product mention in standalone documents, pages, and pull-request descriptions, write
NVIDIA NeMo Fabric; useNeMo Fabricthereafter. Never shorten the product name toFabric, and preserve exact code, package, command, and path forms such asFabric,FabricConfig,nemo_fabric,nemo-fabric-core,nemo-fabric, andcrates/fabric-core.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdpypi.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mdadapters/deepagents/README.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
{docs/**,README.md,AGENTS.md}
⚙️ CodeRabbit configuration file
{docs/**,README.md,AGENTS.md}: Review documentation for technical accuracy against the current API, command correctness, and consistency with generated schemas.
Files:
docs/reference/api/python-library-reference/nemo_fabric.runtime.mdAGENTS.mddocs/reference/api/python-library-reference/index.mddocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.types.md
**/*.{rs,py,pyi,json,yaml,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
python/src/nemo_fabric/**
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Ensure the editable maturin build continues to produce the native extension at
nemo_fabric._native, with generated artifacts placed where downstream consumers expect.
Files:
python/src/nemo_fabric/runtime.pypython/src/nemo_fabric/errors.pypython/src/nemo_fabric/types.py
**/*.{py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Python code or a Python-facing adapter changes, run
just test-python.Use type annotations for public Python APIs and keep native Python binding declarations synchronized with their Rust implementations.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
**/*.{rs,py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.
**/*.{rs,py,pyi}: Usesnake_casefor Rust and Python functions and variables; usePascalCasefor Rust types and Python classes.
Keep native Python binding declarations synchronized with their Rust implementations when public contracts change.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
**/*.{py,pyi,rs}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For Python SDK or PyO3 binding changes, use
python-tests, run focused pytest tests first, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
**/*.{rs,py,toml}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
When editing version helpers, verify every
nemo-fabric-*workspace package through Cargo metadata and reject a static version inpython/pyproject.toml.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
**/*.{toml,rs,py}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
Files:
python/src/nemo_fabric/runtime.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pypython/src/nemo_fabric/errors.pytests/adapters/test_adapters_common_relay_gateway.pypython/src/nemo_fabric/types.pytests/adapters/test_deepagents.pyadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
python/src/nemo_fabric/**/*.py
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
For Python API reference changes, update source docstrings under
python/src/nemo_fabric/rather than generated reference files.
Files:
python/src/nemo_fabric/runtime.pypython/src/nemo_fabric/errors.pypython/src/nemo_fabric/types.py
python/src/nemo_fabric/**/*
⚙️ CodeRabbit configuration file
python/src/nemo_fabric/**/*: Review Python SDK changes for typed API consistency, import-time dependency neutrality, async/session behavior, and parity with the native extension.
Stubs and runtime implementations should stay aligned.
Files:
python/src/nemo_fabric/runtime.pypython/src/nemo_fabric/errors.pypython/src/nemo_fabric/types.py
.agents/skills/**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Each maintainer skill file must begin with YAML frontmatter containing at least
nameanddescription.
Files:
.agents/skills/prepare-pr/SKILL.md.agents/skills/contribute-docs/SKILL.md.agents/skills/review-doc-style/SKILL.md
.agents/skills/*/
📄 CodeRabbit inference engine (.agents/skills/README.md)
Use descriptive, task-based names for maintainer skill directories, such as
contribute-apiandvalidate-change.
Files:
.agents/skills/prepare-pr/SKILL.md.agents/skills/contribute-docs/SKILL.md.agents/skills/review-doc-style/assets/nvidia-style-guide.md.agents/skills/review-doc-style/SKILL.md
.agents/skills/**
📄 CodeRabbit inference engine (.agents/skills/README.md)
Maintainer skills are auto-discovered from
.agents/skills/; Claude Code uses.claude/skillsas a symlink to the same directory rather than a separate skill set.Keep maintainer skills under
.agents/skills/focused on repository contribution work, including API, documentation, testing, CI, packaging, release, and PR preparation.
Files:
.agents/skills/prepare-pr/SKILL.md.agents/skills/contribute-docs/SKILL.md.agents/skills/review-doc-style/assets/nvidia-style-guide.md.agents/skills/review-doc-style/SKILL.md
{adapters/**,examples/**}
⚙️ CodeRabbit configuration file
{adapters/**,examples/**}: Review adapter and example changes for command correctness, config/schema consistency, artifact handling, and compatibility with the public NeMo Fabric contracts.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.pyadapters/deepagents/README.mdadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
*
📄 CodeRabbit inference engine (AGENTS.md)
*: Use branch prefixesfeat/,fix/,docs/,test/, orrefactor/, and name branches after the work rather than Linear tickets; do not include ticket IDs or slugs.
Use Conventional Commit pull-request titles in the form<type>: <summary>; reservefixfor actual product bugs, not CI, documentation, or chores.
Use signed-off commits for pull-request work withgit commit -s.
When creating a pull request from the current branch, target the upstream repository rather than a fork.
If repository-local PR guidance conflicts with generic GitHub connector or plugin guidance, follow the repository-local guidance for PR body format and review handoff details.
PR descriptions must state what changed, why it changed, how it was tested, and any breaking changes within the repository template format.
Files:
pypi.mdAGENTS.md
**/AGENTS.md
📄 CodeRabbit inference engine (CLAUDE.md)
Follow the instructions documented in
AGENTS.mdwhen working in the repository.
Files:
AGENTS.md
tests/adapters/**/*.py
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
tests/adapters/**/*.py: If an adapter or integration changes, run its focused tests.
For adapter behavior changes, run focused adapter tests undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_adapters_common_relay_gateway.pytests/adapters/test_deepagents.py
tests/**/*.{rs,py}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
When adding functionality, include tests in the corresponding Rust crate or the relevant area under
tests/.
Files:
tests/adapters/test_adapters_common_relay_gateway.pytests/adapters/test_deepagents.py
tests/**/*.py
📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)
tests/**/*.py: Use Pytest to run Python tests.
Do not add@pytest.mark.asyncioto tests; async tests are automatically detected and run by the async runner.
Do not add-> Nonereturn type annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorunittest.mock.AsyncMock, using thespecargument when necessary, rather than defining a new class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files inconftest.py.
Define fixtures using@pytest.fixture(name="<fixture_name>"[, scope="<scope>"])and a function named<fixture_name>_fixture; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its return value is unused or it does not return a value.
Use the autouserestore_environ_fixturefromtests/conftest.pyto restore environment variables; modify variables withos.environand do not usemonkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as usingresults["data"]instead ofresults.get("data").
Files:
tests/adapters/test_adapters_common_relay_gateway.pytests/adapters/test_deepagents.py
{tests/**,python/tests/**}
⚙️ CodeRabbit configuration file
{tests/**,python/tests/**}: Tests should cover the behavior promised by the changed API surface, including error paths, lifecycle cleanup, and SDK/native parity where relevant.
Files:
tests/adapters/test_adapters_common_relay_gateway.pytests/adapters/test_deepagents.py
**/*.{toml,yml,yaml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
TOML, YAML, and shell files must use the specified
#-comment SPDX license header.
Files:
scripts/generate_api_docs.sh
scripts/generate_api_docs.sh
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update
scripts/generate_api_docs.shwhen the Python API documentation generator itself requires a change.
Files:
scripts/generate_api_docs.sh
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, or integration README files when their documented public behavior or entry points change.
Files:
adapters/deepagents/README.md
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:45:53.332Z
Learning: Keep documentation and example changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:45:53.332Z
Learning: Run `just docs` when the documentation site changes.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:46:07.714Z
Learning: Prioritize factual accuracy, current repository behavior, commands, paths, package names, APIs, bindings, support claims, and executable examples over copy polish.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:46:07.714Z
Learning: Run `just docs` after changing API documentation sources or generators to regenerate and validate the API reference.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:46:14.565Z
Learning: Report documentation findings by severity with the file and line, explain the reader or accuracy impact, and provide a concrete rewrite or remediation direction.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:46:14.565Z
Learning: Avoid style-only findings when wording is clear, accurate, and consistent with nearby documentation; do not enforce marketing or social-media rules on technical documentation.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T02:46:14.565Z
Learning: Open only the smallest support document needed to resolve an ambiguity or finding, rather than loading all support documents.
📚 Learning: 2026-06-28T04:03:32.877Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 26
File: python/tests/smoke_typed_config.py:163-177
Timestamp: 2026-06-28T04:03:32.877Z
Learning: In NVIDIA NeMo Fabric Python SDK serialization of `RuntimeCapabilities` (to satisfy the “parity contract” with Rust core and the CLI), do not emit metadata keys when the corresponding metadata is absent. Instead, omit those fields entirely so the produced JSON matches the Rust/CLI output (e.g., avoid `null`, empty objects, or placeholder metadata). During review, verify the serializer/builders follow this omission rule and that Python outputs/parity tests reflect the same shape.
Applied to files:
python/src/nemo_fabric/runtime.pypython/src/nemo_fabric/errors.pypython/src/nemo_fabric/types.py
📚 Learning: 2026-07-09T22:28:51.689Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 43
File: adapters/claude-sdk/src/nemo_fabric_adapters/claude_sdk/adapter.py:164-168
Timestamp: 2026-07-09T22:28:51.689Z
Learning: In the NeMo-Fabric adapters, treat path values used in Fabric adapter configuration (including logic like `_resolve_path` in adapter.py) as config-root-relative. Do not apply `Path.expanduser()` (or otherwise apply `~`/home or shell-style expansion), because it will make the resolved paths normalize inconsistently across adapters. Also, do not rely on or add any resolution behavior that uses `harness.settings.cwd` as an override point for these adapter paths—`harness.settings.cwd` is explicitly unsupported in this adapter context.
Applied to files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
🪛 ast-grep (0.44.1)
tests/adapters/test_deepagents.py
[error] 348-355: Command coming from incoming request
Context: subprocess.run(
[sys.executable, "-c", script, blocked],
check=False,
capture_output=True,
input=f"{json.dumps(request)}\n",
text=True,
timeout=30,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
[error] 383-389: Command coming from incoming request
Context: subprocess.run(
[sys.executable, "-c", script],
check=False,
capture_output=True,
text=True,
timeout=30,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
[info] 352-352: use jsonify instead of json.dumps for JSON output
Context: json.dumps(request)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
🪛 Ruff (0.15.21)
adapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.py
[warning] 18-18: Missing return type annotation for special method __init__
Add return type annotation: None
(ANN204)
[warning] 26-26: Dynamically typed expressions (typing.Any) are disallowed in request
(ANN401)
[warning] 34-34: Dynamically typed expressions (typing.Any) are disallowed in request
(ANN401)
[warning] 34-34: Dynamically typed expressions (typing.Any) are disallowed in handler
(ANN401)
[warning] 34-34: Dynamically typed expressions (typing.Any) are disallowed in awrap_tool_call
(ANN401)
[warning] 39-39: Dynamically typed expressions (typing.Any) are disallowed in request
(ANN401)
[warning] 39-39: Dynamically typed expressions (typing.Any) are disallowed in handler
(ANN401)
[warning] 39-39: Dynamically typed expressions (typing.Any) are disallowed in wrap_tool_call
(ANN401)
tests/adapters/test_deepagents.py
[error] 349-349: subprocess call: check for execution of untrusted input
(S603)
[error] 384-384: subprocess call: check for execution of untrusted input
(S603)
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
[warning] 122-124: Abstract raise to an inner function
(TRY301)
[warning] 122-124: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 265-265: Dynamically typed expressions (typing.Any) are disallowed in _tool_gate_middleware
(ANN401)
🔇 Additional comments (24)
python/src/nemo_fabric/runtime.py (1)
4-4: LGTM!tests/adapters/test_adapters_common_relay_gateway.py (1)
82-84: LGTM!scripts/generate_api_docs.sh (1)
44-46: LGTM!Also applies to: 68-73, 83-83
docs/reference/api/python-library-reference/index.md (1)
4-4: LGTM!Also applies to: 14-14, 26-26, 42-42, 57-63
docs/reference/api/python-library-reference/nemo_fabric.client.md (1)
4-4: LGTM!Also applies to: 43-43, 115-115
docs/reference/api/python-library-reference/nemo_fabric.errors.md (1)
10-18: LGTM!Also applies to: 44-44, 79-79, 114-114, 149-149, 184-184, 219-219
docs/reference/api/python-library-reference/nemo_fabric.models.md (1)
4-4: LGTM!Also applies to: 262-262, 1426-1426, 1564-1564
.agents/skills/review-doc-style/assets/nvidia-style-guide.md (1)
8-10: LGTM!Also applies to: 29-34
.coderabbit.yaml (1)
77-79: LGTM!AGENTS.md (1)
10-11: LGTM!Also applies to: 47-55
docs/reference/api/python-library-reference/nemo_fabric.runtime.md (1)
10-10: 📐 Maintainability & Code QualityRegenerate changed API references from source docstrings.
Both changed files are generated output. Update the corresponding Python source docstrings and run
just docs; do not rely on hand-edits that can be overwritten.
docs/reference/api/python-library-reference/nemo_fabric.runtime.md#L10-L10: regenerate the runtime reference from its source docstring.docs/reference/api/python-library-reference/nemo_fabric.types.md#L10-L10: regenerate the types reference from its source docstring.As per path instructions, generated API references must not be modified directly. Based on learnings, run
just docsafter docs-site changes.Sources: Path instructions, Learnings
python/src/nemo_fabric/errors.py (1)
35-35: LGTM!python/src/nemo_fabric/types.py (1)
175-175: LGTM!Also applies to: 545-545, 875-875, 1152-1161, 1205-1205, 1220-1220, 1230-1230
.agents/skills/contribute-docs/SKILL.md (1)
3-3: LGTM!Also applies to: 24-29, 41-42
.agents/skills/prepare-pr/SKILL.md (1)
3-3: LGTM!Also applies to: 35-37
.agents/skills/review-doc-style/SKILL.md (1)
3-3: LGTM!Also applies to: 42-52, 84-85, 115-120
adapters/deepagents/README.md (1)
54-59: LGTM!pypi.md (1)
28-29: LGTM!adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py (2)
43-55: LGTM! The compatibility guard now walks deepagents, langchain, langchain_core, and langgraph symbols and matches the version guidance shown in the README and test assertions.Also applies to: 107-153
759-760: 🗄️ Data Integrity & IntegrationNo change needed for
_relay_dependency_errorThe message already uses the same
nemo-relay[deepagents]>=0.5.0,<0.7range as the README, so there’s no drift here.> Likely an incorrect or invalid review comment.adapters/deepagents/src/nemo_fabric_adapters/deepagents/middleware.py (1)
1-43: LGTM!tests/adapters/test_deepagents.py (3)
113-129: LGTM! The stub expansion and cache eviction correctly force the lazily-importedToolGateMiddlewareto bind to the test's stubbed SDK modules.Also applies to: 145-167, 270-273
323-421: LGTM! The subprocess-based import-blocking test, the "supported deps pass" test, and the parametrizedREQUIRED_HARNESS_APIScoverage all correctly exercise the new preflight guard and its metadata contract.
958-999: LGTM! Middleware-class reference updated correctly to the newnemo_fabric_adapters.deepagents.middlewaremodule.
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.agents/skills/review-doc-style/SKILL.md (1)
88-89: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winKeep the identifier exception consistent with the canonical rule.
This blocking bullet exempts only exact code or API identifiers, while
.coderabbit.yamlalso preserves exact package, command, configuration-key, and path forms. Reuse the broader exception so reviewers do not flag valid identifiers.Proposed wording
-- The product is shortened to standalone capitalized "Fabric" outside an exact - code or API identifier +- The product is shortened to standalone capitalized "Fabric" outside an exact + code, API, package, command, configuration-key, or path identifier🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.agents/skills/review-doc-style/SKILL.md around lines 88 - 89, Update the “Fabric” naming rule in the review-doc-style skill to use the same broad exact-identifier exception as the canonical rule, covering package, command, configuration-key, path, code, and API identifiers. Keep the standalone capitalized “Fabric” restriction unchanged outside those exact forms.Source: Coding guidelines
🤖 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.
Outside diff comments:
In @.agents/skills/review-doc-style/SKILL.md:
- Around line 88-89: Update the “Fabric” naming rule in the review-doc-style
skill to use the same broad exact-identifier exception as the canonical rule,
covering package, command, configuration-key, path, code, and API identifiers.
Keep the standalone capitalized “Fabric” restriction unchanged outside those
exact forms.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Enterprise
Run ID: 20e60740-86c6-426b-bddc-710e06c1e119
📒 Files selected for processing (4)
.agents/skills/review-doc-style/SKILL.md.coderabbit.yamladapters/deepagents/README.mdpypi.md
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
- GitHub Check: Test (Python 3.13, windows-amd64)
- GitHub Check: Test (Python 3.12, windows-amd64)
- GitHub Check: Test (Python 3.14, windows-amd64)
- GitHub Check: Test (Python 3.11, windows-amd64)
🧰 Additional context used
📓 Path-based instructions (17)
**/*.{md,rst}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Update documentation and examples in the same branch as the public API change.
Files:
pypi.mdadapters/deepagents/README.md
**/*
📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)
**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.
**/*: Always spellNVIDIAin all caps; do not useNvidia,nvidia,nVidia,nVIDIA, orNV.
Usean NVIDIAbefore a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol afterNVIDIAwhen referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names withNVIDIAon first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...
Files:
pypi.mdadapters/deepagents/README.md
⚙️ CodeRabbit configuration file
**/*: Enforce the product name in user-facing prose. In standalone documents, pages, and pull request descriptions, use "NVIDIA NeMo Fabric" on the first product mention and "NeMo Fabric" thereafter. In source comments, docstrings, diagnostics, and schema-description fragments, use "NeMo Fabric" whenever the product is named, except when source text renders as the first product mention on a standalone generated page; use "NVIDIA NeMo Fabric" there. Module docstrings copied bylazydocsthat become the first product mention on standalone API reference pages are an example of this exception and must keep the full name; their repeated overview-page summaries use the short name after the overview introduces the product. Flag standalone capitalized "Fabric" when it refers to the product. Do not flag exact package/import/crate/command names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word; examples includeFabric,FabricConfig,nemo_fabric,nemo-fabric-core,nemo-fabric, andcrates/fabric-core.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,rst,txt,adoc}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-language-mechanics.md)
**/*.{md,rst,txt,adoc}: For technical documentation, use professional, active, conversational, engaging, precise, and plain-English prose. Prefer active voice, present tense, short sentences, and scannable paragraphs. Avoid casual or imprecise language, swearing, threats, insults, jokes, puns, culture-specific idioms, marketing exaggeration, and unsupported third-party comparisons.
Usecanfor possibility and reservemayfor permission; useafterfor temporal order; userefer tofor cross-references; prefer short direct sentences and specific verbs; avoid unnecessarypleasein technical documentation.
Prefer active voice when the actor matters. Passive voice is acceptable when the actor is unknown or irrelevant, when the action or result is the focus, or in programmer documentation.
Use natural contractions in conversational technical prose, but do not force them in formal legal copy, API references, or generated text.
Prefer simpler English over Latinisms: usefor exampleorsuch asinstead ofe.g.,and so oninstead ofetc.,that isinstead ofi.e.,compared toinstead ofvs., andby,through, orusinginstead ofvia. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Usethatwithout commas for essential clauses, andwhichwith commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such asJune 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space beforea.m.orp.m.; useETandPTfor needed time zones; avoid24/7; and preferfrom 12:30 to 1:00 p.m.for prose ranges.
Format numbers consistently: spell out zero through nine in body text, use numerals for 10 or greater and for technical values, use commas in thousands, do not begin a sentence with a numeral, spell out ordinals, and use numerals consistently within a category wh...
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,mdx,rst}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-technical-docs.md)
**/*.{md,mdx,rst}: Use consistent title case for technical-document headings and table headers; avoid quotation marks, ampersands, and exclamation marks in headings, while preserving official product, event, research, and whitepaper title case.
Format code elements, commands, parameters, package names, expressions, directories, file names, and paths in monospace; represent path placeholders as angle-bracketed values inside monospace.
Use quotation marks for error messages and strings when appropriate, while retaining code formatting for literal code strings when it provides clearer meaning.
Format UI buttons, menus, fields, and labels in bold; separate consecutive menu selections with>and match UI text exactly, including capitalization.
Use italics on first use of new terms, italicize publication titles, and do so sparingly where appropriate.
Write keyboard shortcuts as plain text and link GitHub repositories using owner/repository link text, such as[NVIDIA/NeMo](link).
Introduce every code block with a complete sentence; do not let a code block complete or continue the surrounding sentence, and use syntax highlighting when supported.
Avoid the word “snippet” unless the surrounding documentation already uses it as a term of art, and keep inline method, function, and class references consistent with nearby documentation.
Use descriptive link text matching the destination title when possible; avoid raw URLs, generic anchors, long-sentence links, and unnecessary links that distract from procedures.
Ensure lists have a complete lead-in sentence, more than one item, no more than two levels, parallel construction, one idea or action per item, and appropriate end punctuation.
Use bulleted lists when order does not matter and numbered lists when order matters or the list is a task sequence.
Format definition lists with a bold term followed by a complete, parallel, punctuated definition.
Use tables for reference information, decision support, compatibility matrices,...
Files:
pypi.mdadapters/deepagents/README.md
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant SDK, API, adapter, example, integration, and embedded documentation when public behavior or the corresponding surface changes.
In standalone documents, pages, and pull request descriptions, use “NVIDIA NeMo Fabric” for the first product mention and “NeMo Fabric” thereafter; never shorten it to “Fabric”.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
For documentation-site changes, run
just docsto regenerate Python and Rust API references and validate Fern configuration.Top-of-file MDX SPDX comments must use
{/* ... */}delimiters rather than HTML comment delimiters.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{html,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
HTML and Markdown files must use the specified HTML comment form for SPDX license headers.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,mdx,rst,yml,yaml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
**/*.{md,mdx,rst,yml,yaml}: Prefer the documented public API over internal shortcuts in documentation and examples.
Keep package names, repository references, and build commands current.
Update entry-point documentation when examples or documentation reading paths change.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,mdx,rst,txt,yml,yaml,py,rs}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Use current repository commands, package names, APIs, bindings, paths, entry points, and support claims; flag stale or incorrect documentation.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,mdx,rst,txt,py,rs}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Use
NVIDIA NeMo Fabricfor the first product mention in a standalone document or generated standalone page, then useNeMo Fabric; useNeMo Fabricin source prose fragments. Never use standalone capitalizedFabricas the product name, while preserving exact identifiers such asFabric,FabricConfig,FabricError, andnemo_fabric.
Files:
pypi.mdadapters/deepagents/README.md
**/*.{md,mdx,rst,txt,py,rs,yml,yaml}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Capitalize
NVIDIAcorrectly and keep user-facing terminology consistent with current repository terminology.
Files:
pypi.mdadapters/deepagents/README.md
.agents/skills/**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Each maintainer skill file must begin with YAML frontmatter containing at least
nameanddescription.
Files:
.agents/skills/review-doc-style/SKILL.md
.agents/skills/*/
📄 CodeRabbit inference engine (.agents/skills/README.md)
Use descriptive, task-based names for maintainer skill directories, such as
contribute-apiandvalidate-change.
Files:
.agents/skills/review-doc-style/SKILL.md
.agents/skills/**
📄 CodeRabbit inference engine (.agents/skills/README.md)
Maintainer skills are auto-discovered from
.agents/skills/; Claude Code uses.claude/skillsas a symlink to the same directory rather than a separate skill set.Maintainer skills may reference repository internals and contribution commands; do not add consumer integration guidance to this tier.
Files:
.agents/skills/review-doc-style/SKILL.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update relevant getting-started, reference, example, or adapter documentation when those areas change.
Check package, crate, adapter, and integration README files for corresponding updates when public behavior changes.
Files:
adapters/deepagents/README.md
{README.md,docs/**,adapters/*/README.md,python/src/nemo_fabric/integrations/*/README.md,examples/README.md}
📄 CodeRabbit inference engine (AGENTS.md)
Update user-facing entry points when public behavior, the
nemo-fabricpackage, examples, or supported bindings change.
Files:
adapters/deepagents/README.md
{adapters/**,examples/**}
⚙️ CodeRabbit configuration file
{adapters/**,examples/**}: Review adapter and example changes for command correctness, config/schema consistency, artifact handling, and compatibility with the public NeMo Fabric contracts.
Files:
adapters/deepagents/README.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:29.970Z
Learning: Run `just docs` when the documentation site changes.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Run relevant validation under `validate-change` before opening a pull request.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Update documentation and examples when public behavior changes.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Use `NVIDIA NeMo Fabric` on the first product mention and `NeMo Fabric` thereafter; use standalone `Fabric` only as an exact code or API identifier.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Update dependent maintainer or consumer skills when code changes affect their APIs, bindings, commands, paths, packaging guidance, or best practices.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Use Conventional Commit style for pull-request titles: `<type>: <concise imperative summary>`. Choose the type from the actual change surface; use `fix` only for an actual user-facing or runtime/product code bug fix, never for chores, CI, docs, tests, packaging metadata, generated output, or agent/skill guidance.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: The pull-request body must contain `#### Overview`, `#### Details`, `#### Validation`, `#### Where should the reviewer start?`, and `#### Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)` sections, with the required summary, changes, validation, reviewer-start point, and issue reference or `Relates to: none`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: For dependency changes, include dependency rationale and material license-diff findings in the `#### Overview`; treat the license diff as review evidence, not a compatibility decision.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Only check contribution-confirmation boxes when they are true; if either confirmation cannot be made, stop before opening the pull request and surface the blocker.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: After creating or editing a pull request, fetch the rendered body and verify that the template's visible headings and checklist items remain present.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:38.656Z
Learning: Explicitly call out breaking changes or renamed surfaces in the pull request.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:46.974Z
Learning: Prioritize factual accuracy, current repository behavior, and actionable findings over copy polish during documentation reviews.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:46.974Z
Learning: Keep documentation changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:46.974Z
Learning: When reporting documentation findings, lead with `Must fix`, `Should fix`, and `Nice to have` sections; include a file path, line reference, current problem, rationale, and concrete rewrite or direction.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Review documentation in this order: verify facts, run the fast-path checklist, consult only the relevant support document, and report findings with severity and a concrete rewrite or direction.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Classify findings as Must fix for incorrect, stale, misleading, or clearly noncompliant content; Should fix for comprehension, scanability, or consistency problems; and Nice to have for optional polish that does not affect accuracy or reader success.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Omit style-only findings when wording is clear, accurate, and consistent with nearby documentation unless a deep copyedit is requested.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Do not enforce marketing or social-media rules on technical documentation.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Do not replace precise technical terms with simpler words when precision would be lost.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Do not report a style issue without a concrete rewrite or remediation path.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: When support documents do not answer a question, consult Merriam-Webster, AP Stylebook, Chicago Manual of Style, and then Microsoft Style Guide in that order.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: Use the finding format: severity and short issue, file and line, current problem, why it matters, and a concrete rewrite.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:11:57.523Z
Learning: For code review output, use the review tool's inline finding format when available and keep the finding body focused on reader impact and the fix.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:12:05.454Z
Learning: Use branch prefixes `feat/`, `fix/`, `docs/`, `test/`, or `refactor/`; name branches after the work and never include Linear ticket IDs or slugs.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:12:05.454Z
Learning: Use signed-off commits for pull request work by running `git commit -s`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:12:05.454Z
Learning: When creating a pull request from the current branch, target the upstream repository rather than a fork.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T03:12:05.454Z
Learning: PR descriptions must state what changed, why, how it was tested, and any breaking changes within the repository template format.
🔇 Additional comments (7)
.coderabbit.yaml (1)
77-79: LGTM!.agents/skills/review-doc-style/SKILL.md (3)
3-3: LGTM!
42-68: LGTM!
119-124: LGTM!adapters/deepagents/README.md (1)
37-39: LGTM!Also applies to: 62-62, 169-177
pypi.md (2)
28-29: LGTM!
41-53: LGTM!
78f61e8 to
0e3ac3e
Compare
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
.agents/skills/contribute-adapter/SKILL.md (2)
1-5: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick winAdd the required SPDX header.
The
licensefrontmatter is not an SPDX header. Add the required HTML SPDX comments after the frontmatter so this new source file complies with the repository-wide license-header rule.Proposed fix
--- name: contribute-adapter description: Add or substantially change a NeMo Fabric harness adapter, including its architecture, descriptor claims, package wiring, capability and policy mapping, runtime behavior, and validation. license: Apache-2.0 --- +<!-- SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. --> +<!-- SPDX-License-Identifier: Apache-2.0 --> + # Contribute an Adapter to NVIDIA NeMo Fabric🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.agents/skills/contribute-adapter/SKILL.md around lines 1 - 5, Add the repository-required HTML SPDX license comments immediately after the frontmatter in SKILL.md, while preserving the existing name, description, and license metadata.Source: Coding guidelines
150-154: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winSync
adapter-testsbefore the focused adapter command.just test-pythonalready installs that group, but the standaloneuv run --no-sync pytest tests/adapters/test_<name>*.pyexample can fail on a fresh environment. Adduv sync --group adapter-testsfirst, or point readers tojust test-python.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.agents/skills/contribute-adapter/SKILL.md around lines 150 - 154, Update the validation instructions in the contribute-adapter skill to synchronize the adapter-tests dependency group before the standalone focused pytest command, using uv sync --group adapter-tests, or direct readers to just test-python instead. Keep the existing validate-change and applicable adapter test guidance intact.
🤖 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 `@adapters/deepagents/pyproject.toml`:
- Around line 42-44: Update the Relay version comment in the dependency
configuration to state that 0.6.0 is already published, while preserving the
lockfile behavior: use 0.5.0 today and adopt 0.6.x on the next re-lock.
In `@adapters/deepagents/README.md`:
- Around line 61-62: Update the adapter documentation command from “fabric
doctor” to “nemo-fabric doctor” while preserving the existing NeMo Fabric
Runtime installation qualification. Apply this change in
adapters/deepagents/README.md lines 61-62 and adapters/hermes/README.md line 77.
In `@pypi.md`:
- Around line 28-29: Update the adapter-extra installation examples in the
runtime/adapter environment section to explicitly require choosing exactly one
adapter. Replace the sequential install commands with a placeholder command or
clearly labeled mutually exclusive alternatives so readers install only the
selected adapter distribution.
---
Outside diff comments:
In @.agents/skills/contribute-adapter/SKILL.md:
- Around line 1-5: Add the repository-required HTML SPDX license comments
immediately after the frontmatter in SKILL.md, while preserving the existing
name, description, and license metadata.
- Around line 150-154: Update the validation instructions in the
contribute-adapter skill to synchronize the adapter-tests dependency group
before the standalone focused pytest command, using uv sync --group
adapter-tests, or direct readers to just test-python instead. Keep the existing
validate-change and applicable adapter test guidance intact.
🪄 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: ASSERTIVE
Plan: Enterprise
Run ID: 2537bba3-1e06-449f-b1cb-1684e494a9b0
⛔ Files ignored due to path filters (5)
adapters/claude/uv.lockis excluded by!**/*.lockadapters/codex/uv.lockis excluded by!**/*.lockadapters/deepagents/uv.lockis excluded by!**/*.lockadapters/hermes/uv.lockis excluded by!**/*.lockuv.lockis excluded by!**/*.lock
📒 Files selected for processing (26)
.agents/skills/contribute-adapter/SKILL.md.github/workflows/ci_python.ymlREADME.mdadapters/claude/README.mdadapters/claude/pyproject.tomladapters/codex/README.mdadapters/codex/pyproject.tomladapters/deepagents/README.mdadapters/deepagents/pyproject.tomladapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/hermes/README.mdadapters/hermes/pyproject.tomldocs/experimentation/cli.mdxdocs/getting-started/install.mdxdocs/integrations/claude.mdxexamples/code_review_agent/README.mdexamples/harbor/calculator/task/environment/Dockerfileexamples/harbor/prepare_swebench.shexamples/notebooks/02_variations.ipynbexamples/notebooks/README.mdjustfilepypi.mdpyproject.tomltests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.pytests/integrations/test_harbor_runner.py
💤 Files with no reviewable changes (3)
- adapters/hermes/pyproject.toml
- adapters/claude/pyproject.toml
- adapters/codex/pyproject.toml
📜 Review details
🧰 Additional context used
📓 Path-based instructions (53)
**/*.{md,rst}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Update documentation and examples in the same branch as the public API change.
Files:
examples/code_review_agent/README.mdREADME.mdadapters/claude/README.mdadapters/hermes/README.mdexamples/notebooks/README.mdpypi.mdadapters/codex/README.mdadapters/deepagents/README.md
{README.md,docs/**/*.{md,mdx,yml},examples/**/*.{md,mdx,yml}}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Keep package names, repository references, and build commands current in documentation and examples.
Files:
examples/code_review_agent/README.mdREADME.mddocs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.md
{docs/**/*.{md,mdx,yml},examples/**/*.{md,mdx,yml}}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update relevant getting-started, reference, adapter, and example documentation when the corresponding examples or adapters change.
Files:
examples/code_review_agent/README.mddocs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.md
**/*
📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)
**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.
**/*: Always spellNVIDIAin all caps; do not useNvidia,nvidia,nVidia,nVIDIA, orNV.
Usean NVIDIAbefore a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol afterNVIDIAwhen referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names withNVIDIAon first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...
Files:
examples/code_review_agent/README.mdexamples/harbor/calculator/task/environment/DockerfileREADME.mddocs/integrations/claude.mdxadapters/claude/README.mdadapters/hermes/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.mdexamples/harbor/prepare_swebench.shadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pypyproject.tomlpypi.mdtests/adapters/test_adapter_package_metadata.pyexamples/notebooks/02_variations.ipynbadapters/codex/README.mdadapters/deepagents/README.mdadapters/deepagents/pyproject.tomljustfiletests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{md,mdx,rst}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)
**/*.{md,mdx,rst}: For NeMo Fabric documentation, verify technical claims against the current repository, public API, or documented command before reviewing style.
Always spellNVIDIAin all caps; do not useNvidia,nvidia, orNV.
Format commands, code elements, expressions, package names, file names, and paths as inline code.
Use descriptive link text; avoid raw URLs and weak anchors such ashereorread more.
Use title case consistently for technical documentation headings.
Introduce code blocks, lists, tables, and images with complete sentences.
Write procedures as imperative, parallel steps; split long procedures into smaller tasks.
Prefer active voice, present tense, short sentences, contractions, and plain English while preserving necessary technical precision.
Usecanfor possibility and reservemayfor permission.
Useafterfor temporal relationships instead ofonce, and preferrefer tooverseewhen directing readers to another resource.
Avoid culture-specific idioms, unnecessary Latinisms, jokes, and marketing exaggeration in technical documentation.
Spell out months in body text, avoid ordinal dates, and use clear time zones.
Spell out whole numbers from zero through nine unless they are technical values, parameters, versions, or UI values; use numerals for 10 or greater and commas in thousands.
Do not add trademark symbols to learning-oriented documentation unless the source, platform, or legal guidance explicitly requires them.
Do not replace precise technical terms with simpler words when doing so would lose precision.
Do not flag passive voice when the actor is unknown or the action is the important part.
Do not rewrite API names, package names, command flags, or code literals for style.
**/*.{md,mdx,rst}: Use consistent title case for technical-document headings and table headers; avoid quotation marks, ampersands, and exclamation marks in headings, while preserving official product, event, research, and whitepaper title ...
Files:
examples/code_review_agent/README.mdREADME.mddocs/integrations/claude.mdxadapters/claude/README.mdadapters/hermes/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.mdpypi.mdadapters/codex/README.mdadapters/deepagents/README.md
**/*.{md,rst,txt,adoc}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-language-mechanics.md)
**/*.{md,rst,txt,adoc}: For technical documentation, use professional, active, conversational, engaging, precise, and plain-English prose. Prefer active voice, present tense, short sentences, and scannable paragraphs. Avoid casual or imprecise language, swearing, threats, insults, jokes, puns, culture-specific idioms, marketing exaggeration, and unsupported third-party comparisons.
Usecanfor possibility and reservemayfor permission; useafterfor temporal order; userefer tofor cross-references; prefer short direct sentences and specific verbs; avoid unnecessarypleasein technical documentation.
Prefer active voice when the actor matters. Passive voice is acceptable when the actor is unknown or irrelevant, when the action or result is the focus, or in programmer documentation.
Use natural contractions in conversational technical prose, but do not force them in formal legal copy, API references, or generated text.
Prefer simpler English over Latinisms: usefor exampleorsuch asinstead ofe.g.,and so oninstead ofetc.,that isinstead ofi.e.,compared toinstead ofvs., andby,through, orusinginstead ofvia. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Usethatwithout commas for essential clauses, andwhichwith commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such asJune 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space beforea.m.orp.m.; useETandPTfor needed time zones; avoid24/7; and preferfrom 12:30 to 1:00 p.m.for prose ranges.
Format numbers consistently: spell out zero through nine in body text, use numerals for 10 or greater and for technical values, use commas in thousands, do not begin a sentence with a numeral, spell out ordinals, and use numerals consistently within a category wh...
Files:
examples/code_review_agent/README.mdREADME.mdadapters/claude/README.mdadapters/hermes/README.mdexamples/notebooks/README.mdpypi.mdadapters/codex/README.mdadapters/deepagents/README.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, and integration README files when public behavior or entry-point documentation changes.
Files:
examples/code_review_agent/README.mdREADME.mdadapters/claude/README.mdadapters/hermes/README.mdexamples/notebooks/README.mdadapters/codex/README.mdadapters/deepagents/README.md
**/*.{md,mdx}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
**/*.{md,mdx}: Use the full product nameNVIDIA NeMo Fabricon its first usage, typically in the title or H1; useNeMo Fabricthereafter.
Usefabricby itself only when referring to the CLI tool, and surround those references with backticks.
CapitalizeNVIDIAcorrectly in public documentation.
Format commands, code elements, expressions, file names, paths, and filenames as inline code where needed.
Use title case consistently for headings in technical documentation.
Introduce code blocks, tables, and lists with complete lead-in sentences.
Use descriptive anchor text instead of raw URLs or generic link text such ashere.
Prefer active voice, present tense, short sentences, and plain English.
Use consistent terminology for the same concept throughout a document.
Write procedures as imperative, parallel, easy-to-scan steps, and split long sequences into smaller tasks.
Useafterinstead ofoncewhen expressing temporal sequence.
Usecaninstead ofmaywhen the intended meaning is possibility rather than permission.
Avoid ambiguous numeric dates and ordinal dates in body text.
For learning-oriented documentation, do not force trademark symbols unless the source document explicitly requires them.
Introduce examples' code blocks with full sentences and ensure examples match current APIs and build commands.For documentation-site changes, run
just docsto regenerate Python and Rust API references and validate Fern configuration.
Files:
examples/code_review_agent/README.mdREADME.mddocs/integrations/claude.mdxadapters/claude/README.mdadapters/hermes/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.mdpypi.mdadapters/codex/README.mdadapters/deepagents/README.md
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant SDK, API, adapter, example, integration, and embedded documentation when public behavior or the corresponding surface changes.
Files:
examples/code_review_agent/README.mdREADME.mddocs/integrations/claude.mdxadapters/claude/README.mdadapters/hermes/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.mdpypi.mdadapters/codex/README.mdadapters/deepagents/README.md
**/*.{html,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
HTML and Markdown files must use the specified HTML comment form for SPDX license headers.
Files:
examples/code_review_agent/README.mdREADME.mdadapters/claude/README.mdadapters/hermes/README.mdexamples/notebooks/README.mdpypi.mdadapters/codex/README.mdadapters/deepagents/README.md
{adapters/**,examples/**}
⚙️ CodeRabbit configuration file
{adapters/**,examples/**}: Review adapter and example changes for command correctness, config/schema consistency, artifact handling, and compatibility with the public NeMo Fabric contracts.
Files:
examples/code_review_agent/README.mdexamples/harbor/calculator/task/environment/Dockerfileadapters/claude/README.mdadapters/hermes/README.mdexamples/notebooks/README.mdexamples/harbor/prepare_swebench.shadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyexamples/notebooks/02_variations.ipynbadapters/codex/README.mdadapters/deepagents/README.mdadapters/deepagents/pyproject.toml
{*.md,**/*.md,**/*.mdx,**/*.ipynb}
⚙️ CodeRabbit configuration file
{*.md,**/*.md,**/*.mdx,**/*.ipynb}: Enforce the product name in user-facing prose: use "NVIDIA NeMo Fabric" on first use and "NeMo Fabric" thereafter. Flag standalone capitalized "Fabric" when it refers to the product. Do not flag the lowercasefabricCLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.
Files:
examples/code_review_agent/README.mdREADME.mddocs/integrations/claude.mdxadapters/claude/README.mdadapters/hermes/README.mddocs/getting-started/install.mdxdocs/experimentation/cli.mdxexamples/notebooks/README.mdpypi.mdexamples/notebooks/02_variations.ipynbadapters/codex/README.mdadapters/deepagents/README.md
**/.github/workflows/*.{yml,yaml}
📄 CodeRabbit inference engine (.agents/skills/maintain-ci/SKILL.md)
**/.github/workflows/*.{yml,yaml}: Definepermissions:per job that needs token access, using the minimum required scopes; avoid workflow-level permissions unless centralized inheritance is intentionally documented.
Pin every third-party GitHub Action to a full commit SHA and retain a readable version comment after the SHA.
Use action-native or ecosystem-native caching instead of genericactions/cachewhen available.
Tie cache invalidation to lockfiles, dependency manifests, or explicit tool versions; avoid caching generated outputs unless deliberate repository behavior requires it.
Useastral-sh/setup-uvcache support withcache-dependency-globanchored touv.lock.
UseSwatinem/rust-cachewith explicitshared-keyandworkspacesinstead of ad hoc target-directory caching.
Keep deploy and publish permissions isolated to only the jobs that require them; restrictpages: writeandid-token: writeto Pages deployment jobs and their reusable-workflow callers.
Usecontents: readas the minimum permission for checkout-based build, test, documentation, and packaging jobs.
Grantpull-requests: readonly to jobs that perform pull-request metadata lookups.
When usingworkflow_call, inspect both caller and callee, and ensure the caller grants every permission required by the called jobs because the callee cannot elevate permissions.
Keep local workflow commands aligned with equivalentjustfilerecipes, and keep Python, Rust, and documentation jobs aligned with their lockfiles.
Preserve intended concurrency settings, branch filters, and documentation publish guards when modifying workflows.
Before editing workflows, inspect workflow relationships and settings with searches coveringuses:,permissions:,secrets:,concurrency:,cache, andjust.
Files:
.github/workflows/ci_python.yml
{docs/package.json,docs/package-lock.json,.github/workflows/*.yml,justfile}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Keep documentation tooling, CI workflows, install commands, build/test/clean recipes, and examples consistent with current package names and commands.
Files:
.github/workflows/ci_python.ymljustfile
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.
Files:
.github/workflows/ci_python.ymlpyproject.tomljustfile
{README.md,docs/index.yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update
README.mdordocs/index.ymlwhen documentation entry points or example reading paths change.
Files:
README.md
README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update the root
README.mdwhen public behavior, thenemo-fabricpackage, examples, or supported bindings change.Update the top-level
README.mdwhen changed behavior affects an entry point users would naturally consult.Update the root
README.mdwhen workspace structure, supported adapters, or top-level documentation changes.
Files:
README.md
{docs/**,README.md,AGENTS.md}
⚙️ CodeRabbit configuration file
{docs/**,README.md,AGENTS.md}: Review documentation for technical accuracy against the current API, command correctness, and consistency with generated schemas.
Files:
README.mddocs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
**/*.mdx
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
In MDX files, use JSX comment delimiters (
{/*and*/}) for top-of-file comments, including SPDX headers; do not use HTML comments.Use
{/* ... */}delimiters for top-of-file MDX SPDX comments, not HTML comment delimiters.MDX files must use a JSX comment for the SPDX license header.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
docs/**/*.{md,mdx,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Run
just docswhen the documentation site changes.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/integrations/claude.mdxdocs/getting-started/install.mdxdocs/experimentation/cli.mdx
.agents/skills/**
📄 CodeRabbit inference engine (AGENTS.md)
Keep maintainer skills under
.agents/skills/focused on repository contribution work, including API, documentation, testing, CI, packaging, release, and PR preparation; do not add consumer integration guidance.Maintainer skills are auto-discovered from
.agents/skills/; Claude Code uses.claude/skillsas a symlink to the same directory rather than a separate skill set.
Files:
.agents/skills/contribute-adapter/SKILL.md
.agents/skills/**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Each maintainer skill file must begin with YAML frontmatter containing at least
nameanddescription.
Files:
.agents/skills/contribute-adapter/SKILL.md
.agents/skills/*/
📄 CodeRabbit inference engine (.agents/skills/README.md)
Use descriptive, task-based names for maintainer skill directories, such as
contribute-apiandvalidate-change.
Files:
.agents/skills/contribute-adapter/SKILL.md
adapters/*/README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update adapter README files when public behavior, examples, or supported bindings change.
Files:
adapters/claude/README.mdadapters/hermes/README.mdadapters/codex/README.mdadapters/deepagents/README.md
adapters/**/*
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
adapters/**/*: Place repository adapters underadapters/<name>and include the required adapter structure, includingLICENSE -> ../../LICENSE,README.md,fabric-adapter.json, native package and lock files, a source entry point, and focused tests.
Provide a credential-free fixture coveringplan,doctor, andrun; keep live credential-dependent harness tests opt-in while retaining a deterministic CI end-to-end path.
Files:
adapters/claude/README.mdadapters/hermes/README.mdadapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pyadapters/codex/README.mdadapters/deepagents/README.mdadapters/deepagents/pyproject.toml
adapters/**/README.md
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Document installation, supported configuration, harness-only settings, credentials, lifecycle, telemetry, artifacts, limitations, focused test commands, and canonical typed SDK or harness-native YAML examples where applicable.
Files:
adapters/claude/README.mdadapters/hermes/README.mdadapters/codex/README.mdadapters/deepagents/README.md
**/*.{toml,yml,yaml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
TOML, YAML, and shell files must use the specified
#-comment SPDX license header.
Files:
examples/harbor/prepare_swebench.shpyproject.tomladapters/deepagents/pyproject.toml
**/*.{rs,py,pyi,json,yaml,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Python code or a Python-facing adapter changes, run
just test-python.Use type annotations for public Python APIs and keep native Python binding declarations synchronized with their Rust implementations.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{rs,py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.
**/*.{rs,py,pyi}: Usesnake_casefor Rust and Python functions and variables; usePascalCasefor Rust types and Python classes.
Keep native Python binding declarations synchronized with their Rust implementations when public contracts change.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{py,pyi,rs}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For Python SDK or PyO3 binding changes, use
python-tests, run focused pytest tests first, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pytests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{rs,py,toml}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
When editing version helpers, verify every
nemo-fabric-*workspace package through Cargo metadata and reject a static version inpython/pyproject.toml.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pypyproject.tomltests/adapters/test_adapter_package_metadata.pyadapters/deepagents/pyproject.tomltests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
**/*.{toml,rs,py}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.pypyproject.tomltests/adapters/test_adapter_package_metadata.pyadapters/deepagents/pyproject.tomltests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
adapters/**/*.py
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
adapters/**/*.py: For Python adapters, usepyproject.toml,uv.lock,src/nemo_fabric_adapters/<name>/adapter.py, andtests/adapters/test_<name>*.py.
Use the existing Fabricpythonorprocessrunner and normalized request/result contracts; do not add a runner or one-off abstraction for a single adapter.
Treat normalizedconfig,capability_plan,telemetry_plan, andruntime_contextas authoritative; reserveharness.settingsfor harness-specific behavior and apply precedence in that order before descriptor and adapter defaults.
Reject conflicting duplicate declarations or unsupported behavior with an actionable error naming the field and supported alternatives; never silently drop configuration.
Never expose credential values in output, errors, events, logs, or fixtures.
Forward only required system variables, selected credential variables, telemetry variables, and documented harness-specific environment; never forward or log unrelated environment values.
Start one local adapter host per Fabric runtime and keep it alive for orderedstart→invoke*→stop; emit one JSON lifecycle response per request on stdout and diagnostics only on stderr.
Return harness-level invoke failures as successful lifecycle responses withresponse: null,failed: true, and structurederrorfields (code,message,retryable, and optionalmetadata).
Scope workspace, generated configuration, state, sessions, and artifacts to the resolved runtime context, and isolate stateful adapters by Fabric runtime ID.
Keep stdout stable: emitresponseplus adapter-specific extensions such aserror, harness events, usage, and session IDs; do not duplicate Fabric-owned result fields.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
adapters/**/*.{py,json}
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Add focused evidence for descriptor shape and exact capabilities, positive mappings, unsupported-value rejection, unenforceable-policy rejection, result normalization without secret leakage, one-shot and continuation behavior, runtime isolation, and packaged entry-point execution.
Files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
{Cargo.toml,python/pyproject.toml,pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Keep Rust workspace/package metadata and Python/maturin package metadata internally consistent, including package names, versions, import paths, and module names.
Files:
pyproject.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}: Keep workspace, Python, and lockfile dependency versions aligned where required, and review both direct and transitive dependency changes from resolved lockfiles.
Inspect resolved transitive licenses, explicitly surface UNKNOWN, non-SPDX/custom, proprietary, source-available, copyleft, or network-copyleft terms, and route unresolved licensing questions to dependency approvers with distribution and linkage context.
Document the functional need, alternatives considered, rationale for the selected dependency, and any unresolved licensing question when introducing dependencies.
Files:
pyproject.toml
{Cargo.toml,pyproject.toml,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Before adding a dependency, prefer the standard library, an existing dependency, or a small local implementation when appropriate; otherwise select a maintained, narrow-fit dependency with clear SPDX metadata and a permissive license where possible.
Files:
pyproject.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
After updating manifests or lockfiles, run
uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/mainand review added packages and license changes.
Files:
pyproject.toml
**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For any Rust change, run
just test-rustandcargo fmt --all -- --check.For Rust core, CLI, or shared runtime semantic changes, run Rust formatting and tests, and add Python tests when behavior is exposed through the SDK.
Use Rust stable tooling; format Rust code with
cargo fmt --all, check formatting withcargo fmt --all -- --check, and compile withcargo check --workspace --locked.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/{Cargo.toml,Cargo.lock,pyproject.toml,package.json}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/*.{toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If a manifest or lockfile changes, run the license-diff script against
origin/main, review transitive license changes, and run theattributions-rustandattributions-pythonpre-commit hooks.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/*.{yml,yaml,toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For CI or packaging changes, use
maintain-ciormaintain-packaging, then run recipes and checks whose behavior changed.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
{pyproject.toml,adapters/**/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
{pyproject.toml,adapters/**/pyproject.toml}: Update the literalproject.versionin the root setuptools project and every adapterpyproject.toml.
Keep internal exact-version requirements aligned: rootnemo-fabric-* == <version>optional dependencies and each adapter'snemo-fabric-adapters-common == <version>dependency.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
**/pyproject.toml
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Wire public Python adapter packages into root optional extras, the adapter dependency group,
[tool.uv.sources], andpython_projectsinjustfile; ship descriptors undershare/nemo-fabric/adapters/<name>.
Files:
pyproject.tomladapters/deepagents/pyproject.toml
tests/adapters/**/*.py
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
tests/adapters/**/*.py: If an adapter or integration changes, run its focused tests.
For adapter behavior changes, run focused adapter tests undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_adapter_package_metadata.pytests/adapters/test_deepagents.py
tests/**/*.{rs,py}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
When adding functionality, include tests in the corresponding Rust crate or the relevant area under
tests/.
Files:
tests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
tests/**/*.py
📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)
tests/**/*.py: Use Pytest to run Python tests.
Do not add@pytest.mark.asyncioto tests; async tests are automatically detected and run by the async runner.
Do not add-> Nonereturn type annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorunittest.mock.AsyncMock, using thespecargument when necessary, rather than defining a new class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files inconftest.py.
Define fixtures using@pytest.fixture(name="<fixture_name>"[, scope="<scope>"])and a function named<fixture_name>_fixture; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its return value is unused or it does not return a value.
Use the autouserestore_environ_fixturefromtests/conftest.pyto restore environment variables; modify variables withos.environand do not usemonkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as usingresults["data"]instead ofresults.get("data").
Files:
tests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
{tests/**,python/tests/**}
⚙️ CodeRabbit configuration file
{tests/**,python/tests/**}: Tests should cover the behavior promised by the changed API surface, including error paths, lifecycle cleanup, and SDK/native parity where relevant.
Files:
tests/adapters/test_adapter_package_metadata.pytests/integrations/test_harbor_runner.pytests/adapters/test_deepagents.py
adapters/**/pyproject.toml
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Keep published runtime dependencies razor-thin and adapter-owned. Do not declare wrapped harness or consumer-agent libraries; declare only other directly imported runtime libraries owned by the adapter.
Files:
adapters/deepagents/pyproject.toml
justfile
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
justfile: Theset-versionrecipe must runjust lock-pythonafter source metadata is updated.
set_project_versionmust invoke both Cargo and Python project version helpers.
Files:
justfile
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T21:08:38.534Z
Learning: Read the authoritative reference surfaces before editing and use the closest existing adapter only for harness-specific patterns, not for the core contract.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-23T21:08:38.534Z
Learning: Use companion guidance for scoped changes, tests, packaging, documentation, validation, and review handoff; do not use this adapter-contribution guidance for applications that merely select an existing adapter.
📚 Learning: 2026-07-09T22:28:51.689Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 43
File: adapters/claude-sdk/src/nemo_fabric_adapters/claude_sdk/adapter.py:164-168
Timestamp: 2026-07-09T22:28:51.689Z
Learning: In the NeMo-Fabric adapters, treat path values used in Fabric adapter configuration (including logic like `_resolve_path` in adapter.py) as config-root-relative. Do not apply `Path.expanduser()` (or otherwise apply `~`/home or shell-style expansion), because it will make the resolved paths normalize inconsistently across adapters. Also, do not rely on or add any resolution behavior that uses `harness.settings.cwd` as an override point for these adapter paths—`harness.settings.cwd` is explicitly unsupported in this adapter context.
Applied to files:
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
🪛 SkillSpector (2.3.11)
.agents/skills/contribute-adapter/SKILL.md
[error] 169: [RA1] Self-Modification: Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
Remediation: Prevent the skill from modifying its own code, SKILL.md, or configuration files. Treat skill files as read-only at runtime.
(Rogue Agent (RA1))
🪛 zizmor (1.26.1)
.github/workflows/ci_python.yml
[warning] 91-91: code injection via template expansion (template-injection): may expand into attacker-controllable code
(template-injection)
[warning] 91-91: code injection via template expansion (template-injection): may expand into attacker-controllable code
(template-injection)
🔇 Additional comments (23)
.agents/skills/contribute-adapter/SKILL.md (1)
7-146: LGTM!Also applies to: 155-178
adapters/deepagents/pyproject.toml (1)
36-40: LGTM!Also applies to: 45-46
pyproject.toml (1)
48-52: LGTM!Also applies to: 93-101
tests/adapters/test_adapter_package_metadata.py (1)
1-79: LGTM!.github/workflows/ci_python.yml (1)
91-91: LGTM!examples/notebooks/02_variations.ipynb (1)
203-214: LGTM!examples/notebooks/README.md (1)
28-35: LGTM!adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py (1)
139-139: LGTM!examples/harbor/calculator/task/environment/Dockerfile (1)
18-18: LGTM!examples/harbor/prepare_swebench.sh (1)
67-67: LGTM!tests/adapters/test_deepagents.py (1)
315-318: LGTM!tests/integrations/test_harbor_runner.py (1)
20-20: LGTM!Also applies to: 257-265
justfile (1)
404-404: LGTM!README.md (1)
140-143: LGTM!Also applies to: 158-158, 176-181
adapters/claude/README.md (1)
12-42: LGTM!Also applies to: 153-154
adapters/codex/README.md (1)
10-33: LGTM!Also applies to: 71-74
adapters/deepagents/README.md (1)
12-40: LGTM!Also applies to: 157-171
adapters/hermes/README.md (1)
12-36: LGTM!docs/experimentation/cli.mdx (1)
188-192: LGTM!docs/getting-started/install.mdx (1)
32-67: LGTM!docs/integrations/claude.mdx (1)
13-16: LGTM!pypi.md (1)
38-63: LGTM!examples/code_review_agent/README.md (1)
62-62: LGTM!
a3897ef to
bb5294d
Compare
bb5294d to
8fd8458
Compare
8fd8458 to
6daba0d
Compare
6daba0d to
8b03fcc
Compare
8b03fcc to
a6ef90d
Compare
| requires-python = ">=3.11" | ||
| dependencies = [ | ||
| "nemo-fabric-adapters-common == 0.1.0", | ||
| "claude-agent-sdk==0.2.120", |
There was a problem hiding this comment.
i get it for CLIs, but for SDKs, why do we need to remove it?
Also, how do we know what version of SDK our adapter is compatible with?
There was a problem hiding this comment.
Thanks Ajay! Here we moved the SDK from the standalone adapter wheels to the root [pyproject.toml](https://github.com/NVIDIA/NeMo-Fabric/pull/105/changes#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711) to prevent installing an adapter into a harness-owned env from changing that env's SDK.
For that version, CI tests this version (ci_python.yml:91 and ci_python.yml:96) by installing the claude and codex extras with these versions and runs just test-python so I assumed it would be compatible; I left the version unchanged
| dependencies = [ | ||
| "nemo-fabric-adapters-common == 0.1.0", | ||
| "openai-codex==0.144.4", | ||
| "tomli-w~=1.2", |
There was a problem hiding this comment.
same question as for claude sdk dep
There was a problem hiding this comment.
Same to claude sdk above, we moved them to the root [pyproject.toml](https://github.com/NVIDIA/NeMo-Fabric/pull/105/changes#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711)
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
a6ef90d to
f5b953c
Compare
Overview
Slims the published Python adapter dependency boundary so each adapter wheel
declares only the runtime packages it owns. Wrapped harness packages move to the
existing root
claude,codex, anddeepagentsextras and to a non-defaultadapter-testsdependency group used by repository tests.The existing root extras keep their prior complete-install behavior; no new
public extra is introduced. The intentional
hermes/hermes-agentsplitremains unchanged. The resolved package set and licenses are unchanged, and
adapter runtime behavior is unchanged.
This is rebased on latest
main(a2d9f1c), including the merged docsrefactor from #103 and example hardening from #113.
Details
Hermes-provided PyYAML from adapter runtime requirements.
published wheel metadata.
environment supplies the harness stack.
the new boundary.
ownership rule.
Validation
just lock-pythonjust test-pythonafter rebasing — 425 passed, 44 skippedjust build-pythoncargo check -p fabric-python --lockedjust wheelsplus root and adapter wheelRequires-Distinspectionjust docs— passed; generated API references were reviewed and excludedfrom this packaging diff, with Rust remaining at 1.96.1 locally
uv run pre-commit run --all-filesjust --fmt --checkandgit diff --checkWhere should the reviewer start?
Start with
pyproject.toml, the four adapterpyproject.tomlfiles, andtests/adapters/test_adapter_package_metadata.py. Then review the correspondingbuilt-wheel dependency boundary and the one-line
justfiletest-group wiring.Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)
Closes [REDACTED]
Relates to docs: Reafactor the
README.md#103, feat: add Relay-backed runtime streaming #109, fix: repair documented workflows and API references #115, feat: normalize portable adapter configuration #117, and feat: validate adapter model compatibility #118I confirm this contribution is my own work, or I have the right to submit it under this project's license.
I searched existing issues and open pull requests, and this does not duplicate existing work.