Skip to content

feat: add TypeScript adapter contract - #199

Draft
AjayThorve wants to merge 3 commits into
NVIDIA:mainfrom
AjayThorve:feat/typescript-adapter-contract
Draft

feat: add TypeScript adapter contract#199
AjayThorve wants to merge 3 commits into
NVIDIA:mainfrom
AjayThorve:feat/typescript-adapter-contract

Conversation

@AjayThorve

@AjayThorve AjayThorve commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Overview

Add the dependency-free @nvidia/nemo-fabric-adapter-contract TypeScript projection of the Rust-generated v1alpha2 adapter schemas. Stable descriptor, configuration, and runtime-context types are exported from the package root; invocation request/result types remain isolated under ./preview until the typed lifecycle transport is finalized.

The package has zero production dependencies. json-schema-to-typescript@15.0.4 is an exact-pinned build dependency selected to avoid hand-maintaining a parallel contract hierarchy. Its development-only transitive graph includes argparse@2.0.1 under Python-2.0; dependency approver acknowledgement is requested before merge.

This PR does not add a TypeScript lifecycle host, runtime validator, Pi adapter, or npm publication credentials. Trusted npm publication is the second PR in this stack.

Details

  • Generate strict TypeScript declarations and byte-identical packaged schemas from the five canonical adapter-contract schemas.
  • Export JSON-safe open maps, exact literal unions, contract-version constants, and a discriminated preview result union.
  • Fail closed when the canonical schema inventory or projected result conditionals change unexpectedly.
  • Add strict positive/negative compile fixtures and a clean packed-consumer smoke test with an exact tarball manifest.
  • Add Node 20.18.3 and 24 CI, release-version stamping, just recipes, documentation, and maintainer workflow parity.
  • Align the descriptor schema with existing runtime enforcement for contract version, telemetry providers, and nonblank identifiers.

Validation

  • just test-typescript
  • just test-rust
  • just test-python (729 passed, 16 skipped)
  • cargo fmt --all -- --check
  • uv run pytest -q tests/scripts/test_set_typescript_project_version.py (6 passed)
  • just docs (strict broken-link validation passed; unauthenticated redirect check was skipped)
  • uv run pre-commit run --all-files
  • git diff --check

npm publication was not exercised in this PR; the stacked trusted-publishing PR owns that boundary.

Where should the reviewer start?

Start with typescript/adapter-contract/package.json, then review typescript/adapter-contract/scripts/generate.mjs and typescript/adapter-contract/test/. The key design decision is the stable root versus ./preview split.

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • Relates to FABRIC-190

  • Relates to FABRIC-193, FABRIC-194, and FABRIC-195

  • I confirm this contribution is my own work, or I have the right to submit it under this project license.

  • I searched existing issues and open pull requests, and this does not duplicate existing work.

Summary by CodeRabbit

  • New Features

    • Added a publishable TypeScript adapter-contract package with stable types, preview request/result types, runtime context definitions, and bundled JSON Schemas.
    • Added build, generation, packaging, versioning, and validation workflows.
  • Bug Fixes

    • Strengthened validation for contract versions, identifiers, paths, model fields, and supported telemetry providers.
  • Documentation

    • Expanded adapter-contract, contribution, release, and development guidance.
  • Tests

    • Added TypeScript compatibility, schema, packaging, dependency, and version synchronization tests.
    • Added continuous integration coverage for TypeScript contracts.

Signed-off-by: Ajay Thorve <athorve@nvidia.com>
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: dd8e9e0f-5b7d-4c17-bd39-362ca0750689

📥 Commits

Reviewing files that changed from the base of the PR and between ef2f42f and 22f4596.

📒 Files selected for processing (7)
  • .agents/skills/update-project-version/SKILL.md
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/schema.rs
  • typescript/adapter-contract/README.md
  • typescript/adapter-contract/scripts/check-dependencies.mjs
📜 Recent review details
⏰ Context from checks skipped due to timeout. (8)
  • GitHub Check: Test (Python 3.11, linux-amd64)
  • GitHub Check: Test (Python 3.13, windows-amd64)
  • GitHub Check: Test (Python 3.14, windows-amd64)
  • GitHub Check: Pre-commit
  • GitHub Check: Test (Python 3.11, windows-amd64)
  • GitHub Check: Test (Python 3.11, macos-arm64)
  • GitHub Check: Test (Python 3.12, windows-amd64)
  • GitHub Check: Test (Python 3.13, macos-arm64)
🧰 Additional context used
📓 Path-based instructions (18)
**/*

📄 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 spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when 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 with NVIDIA on 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:

  • typescript/adapter-contract/README.md
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • typescript/adapter-contract/scripts/check-dependencies.mjs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
**/*.{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 spell NVIDIA in all caps; do not use Nvidia, nvidia, or NV.
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 as here or read 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.
Use can for possibility and reserve may for permission.
Use after for temporal relationships instead of once, and prefer refer to over see when 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:

  • typescript/adapter-contract/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.
Use can for possibility and reserve may for permission; use after for temporal order; use refer to for cross-references; prefer short direct sentences and specific verbs; avoid unnecessary please in 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: use for example or such as instead of e.g., and so on instead of etc., that is instead of i.e., compared to instead of vs., and by, through, or using instead of via. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Use that without commas for essential clauses, and which with commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such as June 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space before a.m. or p.m.; use ET and PT for needed time zones; avoid 24/7; and prefer from 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:

  • typescript/adapter-contract/README.md
**/*.{md,mdx,yml,py,rs,sh}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

Keep documentation aligned with current NeMo Fabric behavior, repository layout, entry points, commands, package names, APIs, bindings, and support claims.

Files:

  • typescript/adapter-contract/README.md
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
**/*.{md,mdx}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

**/*.{md,mdx}: Use the full product name NVIDIA NeMo Fabric on first use, typically in the title and H1; use NeMo Fabric thereafter. Use fabric alone only for the CLI tool and surround it with backticks.
Treat incorrect or stale commands, package names, paths, APIs, support claims, procedures, examples, terminology, or public behavior documentation as blocking issues.
Capitalize NVIDIA correctly and format code, commands, paths, and filenames as inline code where needed.
Use title case for technical-documentation headings.
Introduce code blocks, tables, and lists with complete lead-in sentences; ensure examples match current APIs and build commands.
Use descriptive anchor text, avoid raw URLs and generic labels such as here, and use repository-relative .mdx paths for links within docs/.
Prefer active voice, present tense, short sentences, plain English, consistent terminology, and imperative, parallel, scannable procedures.
Use after instead of once when expressing temporal sequence, and use can rather than may when describing 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.
When reporting documentation-review findings, lead with Must fix, Should fix, and Nice to have categories; include file path, line reference, current problem, rationale, and a concrete rewrite or direction.

Update documentation and examples in the same branch as the public API change.

For documentation-only changes, use contribute-docs and review-doc-style; run just docs for docs-site or generated-reference changes.

**/*.{md,mdx}: Update corresponding documentation when changes affect public behavior, adapters, examples, or workspace structure.
For docs-site changes, run just docs to regenerate Python and Rust API references and validate the Fern configuration.

Files:

  • typescript/adapter-contract/README.md
typescript/adapter-contract/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Keep the TypeScript adapter contract current when the API changes.

Files:

  • typescript/adapter-contract/README.md
  • typescript/adapter-contract/scripts/check-dependencies.mjs
**/*.{md,mdx,yml,yaml,sh}

📄 CodeRabbit inference engine (AGENTS.md)

When documenting internal maintenance work, reference namespaced helper paths under scripts/docs/; public docs and examples should use the stable root-level wrapper path instead.

Files:

  • typescript/adapter-contract/README.md
**/*.{rs,py,html,md,mdx,toml,yml,yaml,sh,bash}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

All source files must include the appropriate SPDX license header for their file type.

Files:

  • typescript/adapter-contract/README.md
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
{*.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 lowercase fabric CLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.

Files:

  • typescript/adapter-contract/README.md
**/*.{rs,toml}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For any Rust change, run just test-rust and cargo fmt --all -- --check.

Format Rust code with cargo fmt --all, verify formatting with cargo fmt --all -- --check, and compile the workspace with cargo check --workspace --locked.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
crates/fabric-core/**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

Changes under crates/fabric-core must run both the Rust and Python test suites.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
crates/fabric-core/**/*.rs

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

For Rust API reference changes, update Rust documentation comments under crates/fabric-core/ instead of generated API reference files.

If crates/fabric-core changes in a way exposed through Python, run both the Rust and Python suites.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
**/*.rs

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Implement new or changed public API behavior in the shared Rust core first.

When Rust code changes, run cargo fmt --all -- --check and just test-rust.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
**/*.{rs,py,ts,tsx}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When public configuration types change, confirm schema snapshot tests pass and review generated schema diffs.

**/*.{rs,py,ts,tsx}: Use snake_case for Rust and Python functions and variables; use PascalCase for Rust, Python, and TypeScript types.
Run tests for every language surface affected by a change; changes to the Rust core or public adapter-contract schemas require Rust, Python, and TypeScript test suites.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
crates/fabric-core/src/**/*.rs

⚙️ CodeRabbit configuration file

crates/fabric-core/src/**/*.rs: Review the Rust core for runtime lifecycle correctness, handle validation, capability routing accuracy, schema stability, and error semantics.
Public API changes should match committed schemas, tests, and documentation.

Files:

  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/schema.rs
.agents/skills/**

📄 CodeRabbit inference engine (.agents/skills/README.md)

.agents/skills/**: Maintainer skills must be discoverable from .agents/skills/; Claude Code exposes the same set through .claude/skills without mixing in consumer skills.
Keep consumer-facing integration guidance in the top-level skills/ directory and exclude it from the maintainer skill set.

.agents/skills/**: Keep maintainer skills under .agents/skills/ focused on repository contribution concerns such as API, documentation, testing, CI, packaging, release, and PR preparation; repository internals may be referenced.
Do not add external integration guidance to maintainer skills under .agents/skills/.

Files:

  • .agents/skills/update-project-version/SKILL.md
.agents/skills/*/

📄 CodeRabbit inference engine (.agents/skills/README.md)

Use descriptive, task-based names for maintainer skill directories, such as contribute-api or validate-change.

Files:

  • .agents/skills/update-project-version/SKILL.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:18.466Z
Learning: For each public API addition or behavior change, determine whether the CLI, PyO3 binding, Python SDK, type stubs, schemas, and Python/TypeScript adapter-contract bindings need to expose the new surface.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:18.466Z
Learning: Keep every affected public surface in parity when adding or changing an API.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:18.466Z
Learning: Clearly describe public behavior, cover every affected public surface, ensure the validation matrix matches the changed surfaces, and explain the user-facing change in PR notes.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:38.065Z
Learning: Before editing, read the current version, decide exact Cargo, Python, and TypeScript target strings, keep changes scoped, surface assumptions, and define focused validation.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:38.065Z
Learning: Validate version changes with targeted metadata inspections, `cargo check --workspace --locked`, Python build and packaging checks, TypeScript packaging checks when applicable, and `git diff --check`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:57.585Z
Learning: Use branch prefixes `feat/`, `fix/`, `docs/`, `test/`, or `refactor/`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:57.585Z
Learning: Name branches after the work and never include Linear ticket IDs or slugs in branch names.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:57.585Z
Learning: Use Conventional Commit PR titles in the form `<type>: <summary>`; reserve `fix` for actual product bugs, not CI, documentation, or chores.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:57.585Z
Learning: Use signed-off commits for pull-request work with `git commit -s`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:57.585Z
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-08-11T16:44:57.585Z
Learning: 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.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:44:57.585Z
Learning: PR descriptions must state what changed, why it changed, how it was tested, and any breaking changes within the repository template format.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:45:06.573Z
Learning: Use release tags with a leading `v` and SemVer format, such as `v0.1.0` or `v0.1.0-rc.1`; do not use tags without the leading `v`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:45:06.573Z
Learning: All contributors must sign off commits with `git commit -s`; unsigned-off commits are not accepted.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:45:06.573Z
Learning: Before submitting a pull request, run relevant tests, verify affected packages compile, update documentation, and rebase onto the latest `main`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:45:06.573Z
Learning: All pull requests require at least one approving review, and CI must pass before merging.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:45:06.573Z
Learning: Address review feedback with additional commits and do not force-push during review.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:45:06.573Z
Learning: Use commit messages in the format `type: short description`, with one of the documented types, and keep the first line under 72 characters.
🔇 Additional comments (7)
crates/fabric-core/src/config.rs (1)

2426-2429: LGTM!

crates/fabric-core/src/agent_config.rs (1)

16-16: LGTM!

Also applies to: 246-318

crates/fabric-core/src/runtime.rs (1)

22-22: LGTM!

Also applies to: 559-567, 2886-2908

crates/fabric-core/src/schema.rs (1)

223-223: LGTM!

Also applies to: 314-325, 357-401, 407-412, 442-458

typescript/adapter-contract/README.md (1)

29-32: LGTM!

typescript/adapter-contract/scripts/check-dependencies.mjs (1)

15-15: LGTM!

Also applies to: 43-55

.agents/skills/update-project-version/SKILL.md (1)

3-3: LGTM!


Walkthrough

This PR adds a publishable TypeScript adapter-contract package with canonical schemas, generated declarations, preview types, strict tests, package validation, version synchronization, CI, Rust validation, and updated repository guidance.

Changes

TypeScript adapter contract

Layer / File(s) Summary
Contract schemas and validation
crates/fabric-core/src/..., schemas/..., typescript/adapter-contract/schemas/...
The adapter contract fixes fabric.adapter/v1alpha2, rejects blank identifiers and paths, restricts telemetry providers, and defines adapter, agent, runtime, request, and result schemas.
Generated TypeScript API and contract tests
typescript/adapter-contract/scripts/..., typescript/adapter-contract/src/..., typescript/adapter-contract/test/...
Schema generation produces strict declarations, JSON types, discriminated run-result types, and the contract version. Tests validate supported and rejected TypeScript values and projection invariants.
Package, release, and CI validation
typescript/adapter-contract/package.json, typescript/adapter-contract/scripts/..., justfile, scripts/ci/..., .github/workflows/ci_typescript.yml
The package adds ESM exports, generation and build commands, tarball checks, consumer compilation, dependency and license checks, version synchronization, aggregate recipes, cleanup, and TypeScript CI.
Repository guidance and integration references
.agents/skills/..., AGENTS.md, CONTRIBUTING.md, README.md, RELEASING.md, docs/adapter-contract/README.md, schemas/SCHEMA.md, skills/nemo-fabric-build-adapter/SKILL.md
Documentation and skills now describe TypeScript development, packaging, validation, release versioning, public contract synchronization, imports, and runtime schema validation.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CanonicalSchemas
  participant TypeScriptGenerator
  participant AdapterContractPackage
  participant PackageConsumer
  CanonicalSchemas->>TypeScriptGenerator: provide adapter contract schemas
  TypeScriptGenerator->>AdapterContractPackage: generate declarations and version constant
  AdapterContractPackage->>PackageConsumer: publish exports and JSON schemas
  PackageConsumer->>AdapterContractPackage: compile and run representative imports
Loading

Possibly related PRs

  • NVIDIA/NeMo-Fabric#190: Extends the same adapter-contract surface with parallel Python binding and adapter guidance changes.
  • NVIDIA/NeMo-Fabric#193: Consumes the shared adapter contracts, including AgentConfig, RuntimeContext, schemas, and language bindings.
  • NVIDIA/NeMo-Fabric#203: Shares the TypeScript adapter-contract package’s publication workflow and release tooling.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.71% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title uses valid Conventional Commits syntax, describes the TypeScript adapter contract change, and meets the length and casing requirements.
Description check ✅ Passed The description includes the required overview, reviewer guidance, related issues, contribution confirmation, and duplicate-work confirmation, with useful validation details.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.agents/skills/contribute-api/SKILL.md:
- Line 3: Update the description text to use the full product name on first use:
replace “NeMo Fabric” with “NVIDIA NeMo Fabric” in
.agents/skills/contribute-api/SKILL.md:3,
.agents/skills/maintain-packaging/SKILL.md:3, and
.agents/skills/update-project-version/SKILL.md:3.

In @.agents/skills/validate-change/SKILL.md:
- Around line 63-64: Update the public-contract review checklist in the
validation skill to explicitly include checked-in Python representations
alongside JSON Schema snapshots and generated TypeScript sources. Preserve the
existing Rust, Python, and TypeScript test-suite requirements and generated API
reference review.

In `@RELEASING.md`:
- Line 173: Update the test-typescript recipe to add explicit dependency-tree,
license, and vulnerability audit checks alongside the existing npm test
invocation. Reuse the repository’s established package-check commands and
preserve the current TypeScript test behavior.

In `@scripts/ci/set_typescript_project_version.py`:
- Around line 13-16: Update SEMVER_PATTERN in
scripts/ci/set_typescript_project_version.py (lines 13-16) to enforce strict
SemVer: allow arbitrary valid dot-separated prerelease identifiers, while
rejecting leading-zero numeric core and prerelease identifiers. Extend
tests/scripts/test_set_typescript_project_version.py (lines 79-87) with valid
general prerelease cases such as dev.1 and invalid SemVer cases, ensuring the
TypeScript package version follows the Cargo release version.

In `@typescript/adapter-contract/package.json`:
- Around line 53-55: Document the rationale for the newly pinned devDependencies
json-schema-to-typescript and typescript in the package’s maintenance
documentation or release metadata, covering their functional need, viable
alternatives considered, and why these exact dependencies are the narrowest fit.

In `@typescript/adapter-contract/README.md`:
- Around line 12-16: Update the Install section in the README so it does not
present the npm registry command until `@nvidia/nemo-fabric-adapter-contract`
version 0.2.0 is published; otherwise replace it with a supported source or
tarball installation path.
- Around line 18-20: Update the TypeScript version requirement in the README to
5.3 or later, and document that consumer configurations must enable
resolveJsonModule: true alongside the existing module-resolution options.

In `@typescript/adapter-contract/scripts/generate.mjs`:
- Around line 92-96: Guard contractVersion with the existing requireString
before passing it to generateVersion in the pendingFiles setup, ensuring
generation fails when the adapter-descriptor spec has not established a valid
string value.
🪄 Autofix

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: f787fe51-7be3-4137-8c93-3d5ac23b5335

📥 Commits

Reviewing files that changed from the base of the PR and between 4112bea and 88809f0.

⛔ Files ignored due to path filters (6)
  • typescript/adapter-contract/package-lock.json is excluded by !**/package-lock.json
  • typescript/adapter-contract/src/generated/adapter-descriptor.ts is excluded by !**/generated/**
  • typescript/adapter-contract/src/generated/agent-config.ts is excluded by !**/generated/**
  • typescript/adapter-contract/src/generated/agent-run-request.ts is excluded by !**/generated/**
  • typescript/adapter-contract/src/generated/agent-run-result.ts is excluded by !**/generated/**
  • typescript/adapter-contract/src/generated/runtime-context.ts is excluded by !**/generated/**
📒 Files selected for processing (42)
  • .agents/skills/contribute-api/SKILL.md
  • .agents/skills/maintain-packaging/SKILL.md
  • .agents/skills/update-project-version/SKILL.md
  • .agents/skills/validate-change/SKILL.md
  • .github/workflows/ci_typescript.yml
  • .pre-commit-config.yaml
  • AGENTS.md
  • CONTRIBUTING.md
  • README.md
  • RELEASING.md
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • docs/adapter-contract/README.md
  • justfile
  • schemas/SCHEMA.md
  • schemas/adapter-contract/adapter-descriptor.schema.json
  • schemas/run-plan.schema.json
  • scripts/ci/set_typescript_project_version.py
  • skills/nemo-fabric-build-adapter/SKILL.md
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/.gitignore
  • typescript/adapter-contract/LICENSE
  • typescript/adapter-contract/README.md
  • typescript/adapter-contract/package.json
  • typescript/adapter-contract/schemas/adapter-descriptor.schema.json
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • typescript/adapter-contract/schemas/agent-run-request.schema.json
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • typescript/adapter-contract/schemas/runtime-context.schema.json
  • typescript/adapter-contract/scripts/check-package.mjs
  • typescript/adapter-contract/scripts/clean.mjs
  • typescript/adapter-contract/scripts/generate.mjs
  • typescript/adapter-contract/scripts/projection-guards.mjs
  • typescript/adapter-contract/src/index.ts
  • typescript/adapter-contract/src/json.ts
  • typescript/adapter-contract/src/preview.ts
  • typescript/adapter-contract/src/version.ts
  • typescript/adapter-contract/test/preview.test.ts
  • typescript/adapter-contract/test/projection-guards.test.mjs
  • typescript/adapter-contract/test/stable.test.ts
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/tsconfig.build.json
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: Test (Python 3.14, windows-amd64)
  • GitHub Check: Test (Python 3.12, windows-amd64)
  • GitHub Check: Test (Python 3.11, windows-amd64)
  • GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (50)
**/*

📄 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 spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when 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 with NVIDIA on 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:

  • typescript/adapter-contract/scripts/clean.mjs
  • docs/adapter-contract/README.md
  • typescript/adapter-contract/src/version.ts
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • typescript/adapter-contract/src/preview.ts
  • typescript/adapter-contract/test/preview.test.ts
  • typescript/adapter-contract/src/json.ts
  • typescript/adapter-contract/schemas/agent-run-request.schema.json
  • typescript/adapter-contract/tsconfig.build.json
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/schemas/runtime-context.schema.json
  • typescript/adapter-contract/package.json
  • RELEASING.md
  • typescript/adapter-contract/scripts/projection-guards.mjs
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/src/index.ts
  • typescript/adapter-contract/LICENSE
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • crates/fabric-core/src/schema.rs
  • typescript/adapter-contract/test/projection-guards.test.mjs
  • schemas/adapter-contract/adapter-descriptor.schema.json
  • schemas/run-plan.schema.json
  • scripts/ci/set_typescript_project_version.py
  • CONTRIBUTING.md
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • README.md
  • typescript/adapter-contract/scripts/check-package.mjs
  • crates/fabric-core/src/config.rs
  • schemas/SCHEMA.md
  • typescript/adapter-contract/test/stable.test.ts
  • typescript/adapter-contract/README.md
  • justfile
  • typescript/adapter-contract/schemas/adapter-descriptor.schema.json
  • typescript/adapter-contract/scripts/generate.mjs
{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:

  • docs/adapter-contract/README.md
  • 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:

  • docs/adapter-contract/README.md
docs/**/*.{md,mdx,yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Run just docs when the documentation site changes.

Files:

  • docs/adapter-contract/README.md
**/*.{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 spell NVIDIA in all caps; do not use Nvidia, nvidia, or NV.
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 as here or read 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.
Use can for possibility and reserve may for permission.
Use after for temporal relationships instead of once, and prefer refer to over see when 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:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • CONTRIBUTING.md
  • README.md
  • schemas/SCHEMA.md
  • typescript/adapter-contract/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.
Use can for possibility and reserve may for permission; use after for temporal order; use refer to for cross-references; prefer short direct sentences and specific verbs; avoid unnecessary please in 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: use for example or such as instead of e.g., and so on instead of etc., that is instead of i.e., compared to instead of vs., and by, through, or using instead of via. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Use that without commas for essential clauses, and which with commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such as June 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space before a.m. or p.m.; use ET and PT for needed time zones; avoid 24/7; and prefer from 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/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • CONTRIBUTING.md
  • README.md
  • schemas/SCHEMA.md
  • typescript/adapter-contract/README.md
**/*.{md,mdx,yml,py,rs,sh}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

Keep documentation aligned with current NeMo Fabric behavior, repository layout, entry points, commands, package names, APIs, bindings, and support claims.

Files:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • tests/scripts/test_set_typescript_project_version.py
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • CONTRIBUTING.md
  • README.md
  • crates/fabric-core/src/config.rs
  • schemas/SCHEMA.md
  • typescript/adapter-contract/README.md
**/*.{md,mdx}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

**/*.{md,mdx}: Use the full product name NVIDIA NeMo Fabric on first use, typically in the title and H1; use NeMo Fabric thereafter. Use fabric alone only for the CLI tool and surround it with backticks.
Treat incorrect or stale commands, package names, paths, APIs, support claims, procedures, examples, terminology, or public behavior documentation as blocking issues.
Capitalize NVIDIA correctly and format code, commands, paths, and filenames as inline code where needed.
Use title case for technical-documentation headings.
Introduce code blocks, tables, and lists with complete lead-in sentences; ensure examples match current APIs and build commands.
Use descriptive anchor text, avoid raw URLs and generic labels such as here, and use repository-relative .mdx paths for links within docs/.
Prefer active voice, present tense, short sentences, plain English, consistent terminology, and imperative, parallel, scannable procedures.
Use after instead of once when expressing temporal sequence, and use can rather than may when describing 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.
When reporting documentation-review findings, lead with Must fix, Should fix, and Nice to have categories; include file path, line reference, current problem, rationale, and a concrete rewrite or direction.

Update relevant documentation when public behavior, adapters, examples, or workspace structure changes.

Files:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • CONTRIBUTING.md
  • README.md
  • schemas/SCHEMA.md
  • typescript/adapter-contract/README.md
**/*.{md,rst}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Keep documentation and examples current with the install, import, and build commands.

Files:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • CONTRIBUTING.md
  • README.md
  • schemas/SCHEMA.md
  • typescript/adapter-contract/README.md
**/README.md

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update the relevant adapter or example README when that surface changes.

Files:

  • docs/adapter-contract/README.md
  • README.md
  • typescript/adapter-contract/README.md
**/*.{rs,py,md,mdx,toml,yml,yaml,sh,bash}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Every source file must include the specified SPDX copyright and Apache-2.0 license header using the appropriate comment syntax.

Files:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • tests/scripts/test_set_typescript_project_version.py
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • CONTRIBUTING.md
  • README.md
  • crates/fabric-core/src/config.rs
  • schemas/SCHEMA.md
  • typescript/adapter-contract/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.
For links between files under docs/, require paths relative to the source file with the target file's .mdx extension so they work in both Fern builds and repository browsers. Flag Fern site-root links such as NeMo Fabric overview; use the repository-relative equivalent, such as NeMo Fabric overview.

Files:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • README.md
{*.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 lowercase fabric CLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.

Files:

  • docs/adapter-contract/README.md
  • AGENTS.md
  • skills/nemo-fabric-build-adapter/SKILL.md
  • RELEASING.md
  • CONTRIBUTING.md
  • README.md
  • schemas/SCHEMA.md
  • typescript/adapter-contract/README.md
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When the TypeScript adapter contract or one of its source schemas changes, run just test-typescript.

Use strict TypeScript for adapter-contract bindings, preserve JSON wire property names, run the checked-in generator instead of editing generated declarations, and keep production dependencies out of the contract package.

Files:

  • typescript/adapter-contract/src/version.ts
  • typescript/adapter-contract/src/preview.ts
  • typescript/adapter-contract/test/preview.test.ts
  • typescript/adapter-contract/src/json.ts
  • typescript/adapter-contract/src/index.ts
  • typescript/adapter-contract/test/stable.test.ts
**/*.{rs,py,ts,tsx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.{rs,py,ts,tsx}: Use language-appropriate naming: snake_case for Rust and Python functions and variables; PascalCase for Rust, Python, and TypeScript types; preserve wire snake_case names for TypeScript contract properties.
Run tests for every affected language surface. Changes to the Rust core or public adapter-contract schemas require Rust, Python, and TypeScript test suites.

Files:

  • typescript/adapter-contract/src/version.ts
  • typescript/adapter-contract/src/preview.ts
  • typescript/adapter-contract/test/preview.test.ts
  • typescript/adapter-contract/src/json.ts
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/src/index.ts
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/config.rs
  • typescript/adapter-contract/test/stable.test.ts
**/*.{rs,json,py,pyi,ts,tsx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Public contract changes must keep checked-in JSON Schema snapshots, Python representations, and generated TypeScript declarations synchronized.

Files:

  • typescript/adapter-contract/src/version.ts
  • typescript/adapter-contract/src/preview.ts
  • typescript/adapter-contract/test/preview.test.ts
  • typescript/adapter-contract/src/json.ts
  • typescript/adapter-contract/schemas/agent-run-request.schema.json
  • typescript/adapter-contract/tsconfig.build.json
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/schemas/runtime-context.schema.json
  • typescript/adapter-contract/package.json
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/src/index.ts
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • crates/fabric-core/src/schema.rs
  • schemas/adapter-contract/adapter-descriptor.schema.json
  • schemas/run-plan.schema.json
  • scripts/ci/set_typescript_project_version.py
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • crates/fabric-core/src/config.rs
  • typescript/adapter-contract/test/stable.test.ts
  • typescript/adapter-contract/schemas/adapter-descriptor.schema.json
**/AGENTS.md

📄 CodeRabbit inference engine (CLAUDE.md)

Follow the instructions documented in AGENTS.md when working in the repository.

Files:

  • AGENTS.md
**/SKILL.md

📄 CodeRabbit inference engine (.agents/skills/README.md)

Each maintainer skill file must begin with YAML frontmatter containing at least name and description.

Files:

  • skills/nemo-fabric-build-adapter/SKILL.md

⚙️ CodeRabbit configuration file

**/SKILL.md: Do not flag SKILL.md files for missing SPDX headers. Skill entrypoints intentionally start with YAML frontmatter instead.
Verify that every SKILL.md keeps valid YAML frontmatter with at least name and description fields before the Markdown body.

Files:

  • skills/nemo-fabric-build-adapter/SKILL.md
skills/**

📄 CodeRabbit inference engine (AGENTS.md)

skills/**: Keep external integration guidance in skills/; these skills must depend only on supported public contracts and documentation, never repository internals.
Integration skills must link to public GitHub documentation and example URLs rather than a docs-site domain so they remain portable when exported.

Files:

  • skills/nemo-fabric-build-adapter/SKILL.md
skills/nemo-fabric-build-adapter/**

📄 CodeRabbit inference engine (AGENTS.md)

Use skills/nemo-fabric-build-adapter for third-party adapter authoring guidance; repository-internal adapter maintenance belongs in .agents/skills/.

Files:

  • skills/nemo-fabric-build-adapter/SKILL.md
**/{tests,test,**/tests}/**/*

📄 CodeRabbit inference engine (CONTRIBUTING.md)

When adding functionality, include tests in the corresponding Rust crate or relevant tests/ area.

Files:

  • typescript/adapter-contract/test/preview.test.ts
  • typescript/adapter-contract/test/tsconfig.json
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/test/projection-guards.test.mjs
  • typescript/adapter-contract/test/stable.test.ts
**/*.{rs,py,pyi,json,yaml,yml}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When public configuration types change, confirm schema snapshot tests pass in just test-rust and review generated schema diffs.

Files:

  • typescript/adapter-contract/schemas/agent-run-request.schema.json
  • typescript/adapter-contract/tsconfig.build.json
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/schemas/runtime-context.schema.json
  • typescript/adapter-contract/package.json
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • crates/fabric-core/src/schema.rs
  • schemas/adapter-contract/adapter-descriptor.schema.json
  • schemas/run-plan.schema.json
  • scripts/ci/set_typescript_project_version.py
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • crates/fabric-core/src/config.rs
  • typescript/adapter-contract/schemas/adapter-descriptor.schema.json
.pre-commit-config.yaml

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Regenerate Rust and Python attribution files with the named pre-commit hooks rather than editing generated output: attributions-rust and attributions-python.

Files:

  • .pre-commit-config.yaml
**/{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:

  • typescript/adapter-contract/package.json
**/{Cargo.toml,pyproject.toml,package.json}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

**/{Cargo.toml,pyproject.toml,package.json}: When multiple dependencies satisfy the requirement, prefer a maintained OSS option with clear SPDX metadata, a smaller transitive graph, and permissive terms such as Apache-2.0, MIT, BSD, or ISC.
Keep package names, import paths, and module names internally consistent.
New dependencies must be necessary, maintained, and narrower than viable alternatives.

Files:

  • typescript/adapter-contract/package.json
**/{Cargo.toml,pyproject.toml,package.json,Cargo.lock,uv.lock,package-lock.json}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

**/{Cargo.toml,pyproject.toml,package.json,Cargo.lock,uv.lock,package-lock.json}: After updating manifests or lockfiles, run uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/main and review added packages and license changes.
Keep workspace, Python, and lockfile versions aligned where required.

Files:

  • typescript/adapter-contract/package.json
typescript/adapter-contract/package.json

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Make the TypeScript adapter-contract package version follow the workspace release version without changing its independent wire-contract version.

Keep the TypeScript adapter-contract package version aligned with the Cargo SemVer release version.

Files:

  • typescript/adapter-contract/package.json
{Cargo.toml,Cargo.lock,pyproject.toml,python/pyproject.toml,python/uv.lock,adapters/**/pyproject.toml,adapters/**/uv.lock,typescript/adapter-contract/package.json,typescript/adapter-contract/package-lock.json}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Validate version changes with targeted metadata inspections, cargo check --workspace --locked, Python build or test commands as appropriate, wheel and TypeScript packaging checks for release-facing changes, and git diff --check.

Files:

  • typescript/adapter-contract/package.json
**/{package.json,npm-shrinkwrap.json,package-lock.json}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When the TypeScript manifest or npm lockfile changes, inspect the complete npm dependency tree and license fields, confirm zero production dependencies, and run package and audit checks.

Files:

  • typescript/adapter-contract/package.json
RELEASING.md

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Reflect public packaging changes in release-facing documentation.

Files:

  • RELEASING.md
.agents/skills/**

📄 CodeRabbit inference engine (.agents/skills/README.md)

.agents/skills/**: Maintainer skills must be discoverable from .agents/skills/; Claude Code exposes the same set through .claude/skills without mixing in consumer skills.
Keep consumer-facing integration guidance in the top-level skills/ directory and exclude it from the maintainer skill set.

Keep repository-internal contribution guidance in .agents/skills/; maintainer skills may reference repository internals and contribution commands.

Files:

  • .agents/skills/maintain-packaging/SKILL.md
  • .agents/skills/validate-change/SKILL.md
  • .agents/skills/contribute-api/SKILL.md
  • .agents/skills/update-project-version/SKILL.md
.agents/skills/*/

📄 CodeRabbit inference engine (.agents/skills/README.md)

Use descriptive, task-based names for maintainer skill directories, such as contribute-api or validate-change.

Files:

  • .agents/skills/maintain-packaging/SKILL.md
  • .agents/skills/validate-change/SKILL.md
  • .agents/skills/contribute-api/SKILL.md
  • .agents/skills/update-project-version/SKILL.md
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

Files:

  • tests/scripts/test_set_typescript_project_version.py
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/config.rs
tests/**/*.py

📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)

tests/**/*.py: Use pytest to run Python tests.
Do not add @pytest.mark.asyncio to tests; async tests are automatically detected by the async runner.
Do not add -> None return type annotations to test functions.
When mocking a class, use unittest.mock.MagicMock or AsyncMock, using the spec argument when necessary, rather than defining a new class.
Prefix mocked class names with mock, not fake.
Prefer pytest fixtures over helper methods.
If a fixture is needed in multiple test files, define it once in conftest.py rather than repeating it.
Define fixtures using @pytest.fixture(name="<fixture_name>"[, scope="<scope>"]) and a <fixture_name>_fixture function; specify scope only when it is not function.
Prefer pytest.mark.parametrize over separate tests for different input types.
Use @pytest.mark.usefixtures when a fixture is needed but its returned value is unused or it returns no value.
Avoid defensive programming in tests; access expected values directly so missing data raises a clear failure, such as using results["data"] instead of results.get("data").
When adapter installation metadata changes, packaging metadata tests must directly assert that the root project depends unconditionally on the exact-version nemo-fabric-runtime distribution.
Packaging metadata tests must verify that each root harness extra delegates to the matching version of the leaf adapter's harness extra.
Packaging metadata tests must verify that bare leaf dependencies remain adapter-owned and that the root adapter-tests dependency group installs each leaf through its harness extra.
Packaging metadata tests must verify that every leaf provides full; only adapters importing NeMo Relay Python APIs provide relay, while adapters using an external Relay executable have full equal to harness.

Files:

  • tests/scripts/test_set_typescript_project_version.py
**/*.{py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When Python code or a Python-facing adapter changes, run just test-python.

Use type annotations for public Python APIs and keep native binding declarations synchronized with their Rust implementations.

Files:

  • tests/scripts/test_set_typescript_project_version.py
  • scripts/ci/set_typescript_project_version.py
**/*.{rs,py,pyi,toml}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When the PyO3 bridge or package metadata changes, run just build-python and cargo check -p fabric-python --locked.

Files:

  • tests/scripts/test_set_typescript_project_version.py
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/config.rs
{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/scripts/test_set_typescript_project_version.py
**/.github/workflows/*.{yml,yaml}

📄 CodeRabbit inference engine (.agents/skills/maintain-ci/SKILL.md)

**/.github/workflows/*.{yml,yaml}: Define permissions: 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 generic actions/cache when available.
Tie cache invalidation to lockfiles, dependency manifests, or explicit tool versions; avoid caching generated outputs unless deliberate repository behavior requires it.
Use astral-sh/setup-uv cache support with cache-dependency-glob anchored to uv.lock.
Use Swatinem/rust-cache with explicit shared-key and workspaces instead of ad hoc target-directory caching.
Keep deploy and publish permissions isolated to only the jobs that require them; restrict pages: write and id-token: write to Pages deployment jobs and their reusable-workflow callers.
Use contents: read as the minimum permission for checkout-based build, test, documentation, and packaging jobs.
Grant pull-requests: read only to jobs that perform pull-request metadata lookups.
When using workflow_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 equivalent justfile recipes, 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 covering uses:, permissions:, secrets:, concurrency:, cache, and just.

Files:

  • .github/workflows/ci_typescript.yml
.github/workflows/**

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

CI workflows must reference the same package names as local workflows.

Files:

  • .github/workflows/ci_typescript.yml
**/{.github/workflows/**,Dockerfile*,Makefile,Justfile,justfile}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For CI or packaging changes, use maintain-ci or maintain-packaging, then run the recipes and checks whose behavior changed.

Files:

  • .github/workflows/ci_typescript.yml
  • justfile
**/*.{rs,toml}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For any Rust change, run just test-rust and cargo fmt --all -- --check.

When Rust code changes, run cargo fmt --all -- --check and just test-rust.

Files:

  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/config.rs
crates/fabric-core/**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

Changes under crates/fabric-core must run both the Rust and Python test suites.

Files:

  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/config.rs
crates/fabric-core/**/*.rs

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

For Rust API reference changes, update Rust documentation comments under crates/fabric-core/ instead of generated API reference files.

Files:

  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/config.rs
**/*.rs

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

For a new or changed public API surface, start by implementing and validating the shared Rust core behavior first.

Format Rust code with cargo fmt --all and ensure cargo fmt --all -- --check passes. Verify compilation with cargo check --workspace --locked.

Files:

  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/config.rs
crates/fabric-core/**/*

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If crates/fabric-core changes in a way exposed through Python, run both the Rust and Python suites.

Files:

  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/config.rs
crates/fabric-core/src/**/*.rs

⚙️ CodeRabbit configuration file

crates/fabric-core/src/**/*.rs: Review the Rust core for runtime lifecycle correctness, handle validation, capability routing accuracy, schema stability, and error semantics.
Public API changes should match committed schemas, tests, and documentation.

Files:

  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/config.rs
schemas/**/*

⚙️ CodeRabbit configuration file

schemas/**/*: Schemas are generated public contract snapshots. Check that schema diffs correspond to intentional Rust type changes and are covered by core tests.

Files:

  • schemas/adapter-contract/adapter-descriptor.schema.json
  • schemas/run-plan.schema.json
  • schemas/SCHEMA.md
{README.md,docs/index.yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Update README.md or docs/index.yml when documentation entry points or example reading paths change.

Files:

  • README.md
README.md

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update the root README.md when workspace structure, supported adapters, or top-level documentation changes.

Files:

  • README.md
justfile

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Keep build, test, clean, and documentation recipes consistent with current packaging and validation commands.

justfile: The set-version recipe must run just lock-python after updating source metadata.
The version helper contracts must remain aligned: set_project_version calls Cargo, Python, and TypeScript helpers; Cargo validation covers every nemo-fabric-* workspace package; Python discovery covers all adapters; and TypeScript updates both npm lockfile root entries without changing dependency versions.

Files:

  • justfile
🧠 Learnings (5)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:44.158Z
Learning: Before implementing a public API addition or behavior change, determine whether the CLI, PyO3 binding, Python SDK, type stubs, schemas, and Python or TypeScript adapter-contract bindings must expose it.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:44.158Z
Learning: Keep every affected public surface in parity when adding or changing a runtime or binding API.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:44.158Z
Learning: Update documentation and examples in the same branch as the public API change.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:44.158Z
Learning: Ensure public behavior is clearly described, every affected public surface is covered, and the validation matrix matches the changed surfaces.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:44.158Z
Learning: PR notes must explain the user-facing change.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:44.158Z
Learning: Keep changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:55.333Z
Learning: Use `karpathy-guidelines` alongside this guidance; keep changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:55.333Z
Learning: Prefer the standard library, an existing dependency, or a small local implementation when the behavior remains clear and maintainable.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:55.333Z
Learning: Treat `UNKNOWN`, non-SPDX/custom, proprietary or source-available, copyleft, and network-copyleft licenses as explicit review points; route them to dependency approvers with distribution and linkage context rather than silently accepting or rejecting them.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:55.333Z
Learning: Record the functional need, viable alternatives considered, why the selected dependency is the narrowest fit, and any unresolved licensing question.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:52:55.333Z
Learning: Call out licensing uncertainties for dependency-approver review.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:03.782Z
Learning: Before editing, determine exact Cargo, Python, and TypeScript target versions; keep changes scoped, distinguish package-version surfaces from examples or unrelated dependency versions, and audit old-version references with targeted searches.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:14.087Z
Learning: Choose the smallest validation set that covers the surfaces touched by a change; define focused validation before editing and call out checks not run.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:14.087Z
Learning: Format changed files with the language-native formatter before the final test pass.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:14.087Z
Learning: If code changes alter APIs, commands, paths, packaging behavior, telemetry semantics, or documented best practices, update dependent maintainer skills in the same branch and keep consumer skills in parity with changed SDK, Pydantic, and Rust details.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:14.087Z
Learning: For schema or public contract changes, run the Rust, Python, and TypeScript suites and review changes under `schemas/`, generated TypeScript sources, and generated API references.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:14.087Z
Learning: Before review or handoff, verify README and documentation entry points, verify examples use current `just` recipes and public commands, and run `git diff --check`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:27.851Z
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-08-11T14:53:27.851Z
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-08-11T14:53:27.851Z
Learning: PR descriptions must state what changed, why, how it was tested, and any breaking changes while following the repository template format.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:37.943Z
Learning: Release tags must use SemVer with a leading `v`, such as `v0.1.0` or `v0.1.0-rc.1`; tags without the leading `v` are prohibited.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:37.943Z
Learning: All contributors must sign off commits with `git commit -s`; unsigned-off commits are not accepted.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:37.943Z
Learning: Before submitting a pull request, run relevant tests, verify affected packages compile, update documentation, and rebase on the latest `main`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:37.943Z
Learning: Pull requests require at least one approving review, passing CI, and completion of requested review changes without force-pushing during review.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T14:53:37.943Z
Learning: Use commit messages in the format `type: short description`, with one of the approved types, and keep the first line under 72 characters.
📚 Learning: 2026-08-07T07:15:59.993Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Fabric PR: 186
File: docs/adapter-contract/registration-and-discovery.md:103-104
Timestamp: 2026-08-07T07:15:59.993Z
Learning: Keep documentation files under docs/adapter-contract/ in portable Markdown (.md), not MDX. GitHub and the public authoring skill consume these files directly, and the NVIDIA NeMo Fabric documentation pipeline accepts them without conversion; do not flag the lack of MDX conversion for these files.

Applied to files:

  • docs/adapter-contract/README.md
📚 Learning: 2026-08-07T16:20:01.603Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Fabric PR: 186
File: docs/adapter-contract/README.md:1-4
Timestamp: 2026-08-07T16:20:01.603Z
Learning: For maintained Markdown files under docs/adapter-contract/, Fern parses content as MDX. Write SPDX license headers as JSX comments (`{/* ... */}`), not HTML comments, because HTML comments cause Fern parsing failures. This JSX form is accepted by the repository copyright checker and validated by Docs Preview.

Applied to files:

  • docs/adapter-contract/README.md
📚 Learning: 2026-08-07T07:15:33.918Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Fabric PR: 186
File: schemas/adapter-contract/legacy/adapter-invocation.schema.json:176-176
Timestamp: 2026-08-07T07:15:33.918Z
Learning: For the NeMo Fabric v1alpha southbound adapter contract, treat the adapter descriptor's `contract_version` as the version of the complete contract, including `RuntimeContext`. Keep `RuntimeContext` strict by rejecting unknown properties, and require a negotiated contract-version change for additive shape changes.

Applied to files:

  • schemas/adapter-contract/adapter-descriptor.schema.json
📚 Learning: 2026-08-07T07:15:35.305Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Fabric PR: 186
File: schemas/adapter-contract/agent-config.schema.json:374-381
Timestamp: 2026-08-07T07:15:35.305Z
Learning: For the NeMo Fabric southbound adapter contract schemas, treat `AdapterDescriptor.contract_version` as the single negotiated version for the entire contract, covering `AgentConfig`, `AgentRunRequest`, `AgentRunResult`, and `RuntimeContext` before adapter startup. Do not require individual version fields in these payloads; verify behavior against the maintained adapter-contract README.

Applied to files:

  • schemas/adapter-contract/adapter-descriptor.schema.json
🪛 ast-grep (0.45.1)
tests/scripts/test_set_typescript_project_version.py

[info] 24-31: use jsonify instead of json.dumps for JSON output
Context: json.dumps(
{
"name": "@nvidia/nemo-fabric-adapter-contract",
"version": "0.2.0",
"devDependencies": {"typescript": "5.9.3"},
},
indent=2,
)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)


[info] 36-54: use jsonify instead of json.dumps for JSON output
Context: json.dumps(
{
"name": "@nvidia/nemo-fabric-adapter-contract",
"version": "0.2.0",
"lockfileVersion": 3,
"requires": True,
"packages": {
"": {
"name": "@nvidia/nemo-fabric-adapter-contract",
"version": "0.2.0",
"devDependencies": {"typescript": "5.9.3"},
},
"node_modules/typescript": {
"version": "5.9.3",
},
},
},
indent=2,
)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)


[info] 95-95: use jsonify instead of json.dumps for JSON output
Context: json.dumps(lock, indent=2)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)

scripts/ci/set_typescript_project_version.py

[info] 27-27: use jsonify instead of json.dumps for JSON output
Context: json.dumps(value, indent=2)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)

🪛 LanguageTool
.agents/skills/validate-change/SKILL.md

[style] ~26-~26: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...pter changed, run just test-python. - If the TypeScript adapter contract or one ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~35-~35: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ation changed, run its focused tests. - If a Cargo or Python manifest or lockfile ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

.agents/skills/update-project-version/SKILL.md

[style] ~96-~96: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...all Python package metadata resolves. - Run just test-python when the integration...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ing validation of every Python wheel. - Run just pack-typescript to verify the st...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🪛 Ruff (0.16.1)
tests/scripts/test_set_typescript_project_version.py

[warning] 98-98: Pattern passed to match= contains metacharacters but is neither escaped nor raw

(RUF043)

scripts/ci/set_typescript_project_version.py

[warning] 23-23: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 33-33: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 43-43: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 45-45: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 47-47: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 51-51: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 53-55: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 57-57: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 78-78: Avoid specifying long messages outside the exception class

(TRY003)

🔇 Additional comments (42)
crates/fabric-core/src/config.rs (2)

199-206: LGTM!

Also applies to: 242-247, 532-549, 1191-1192


242-247: 🗄️ Data Integrity & Integration

No older adapter descriptor found. All committed JSON descriptors use fabric.adapter/v1alpha2; v1alpha1 appears only in an intentional negative TypeScript test.

crates/fabric-core/src/schema.rs (1)

313-324: LGTM!

Also applies to: 356-388

schemas/adapter-contract/adapter-descriptor.schema.json (1)

201-206: LGTM!

Also applies to: 251-251, 276-276, 314-314

schemas/run-plan.schema.json (1)

111-111: LGTM!

Also applies to: 136-136, 174-174, 337-342

typescript/adapter-contract/schemas/adapter-descriptor.schema.json (1)

1-365: LGTM!

typescript/adapter-contract/schemas/agent-config.schema.json (1)

1-469: LGTM!

typescript/adapter-contract/schemas/agent-run-request.schema.json (1)

1-25: LGTM!

typescript/adapter-contract/schemas/agent-run-result.schema.json (1)

1-259: LGTM!

typescript/adapter-contract/schemas/runtime-context.schema.json (1)

1-229: LGTM!

typescript/adapter-contract/scripts/generate.mjs (5)

98-128: LGTM!


152-174: LGTM!


176-301: LGTM!


312-367: LGTM!


369-425: LGTM!

typescript/adapter-contract/scripts/projection-guards.mjs (1)

1-42: LGTM!

schemas/SCHEMA.md (1)

11-16: LGTM!

Also applies to: 40-48, 138-146

typescript/adapter-contract/src/index.ts (1)

1-40: LGTM!

typescript/adapter-contract/src/json.ts (1)

1-19: LGTM!

typescript/adapter-contract/src/preview.ts (1)

1-11: LGTM!

typescript/adapter-contract/src/version.ts (1)

1-8: LGTM!

typescript/adapter-contract/test/tsconfig.json (1)

1-13: LGTM!

typescript/adapter-contract/tsconfig.build.json (1)

1-16: LGTM!

typescript/adapter-contract/test/stable.test.ts (1)

1-188: LGTM!

typescript/adapter-contract/test/preview.test.ts (1)

1-59: LGTM!

typescript/adapter-contract/test/projection-guards.test.mjs (1)

1-51: LGTM!

typescript/adapter-contract/package.json (1)

1-52: LGTM!

typescript/adapter-contract/.gitignore (1)

1-6: LGTM!

typescript/adapter-contract/LICENSE (1)

1-203: LGTM!

typescript/adapter-contract/README.md (1)

1-11: LGTM!

Also applies to: 22-62, 64-68, 73-88

.agents/skills/validate-change/SKILL.md (1)

26-41: LGTM!

Also applies to: 77-77, 94-98, 128-131

AGENTS.md (1)

51-56: LGTM!

CONTRIBUTING.md (1)

22-27: LGTM!

Also applies to: 103-107, 118-121, 132-136, 147-150

README.md (1)

264-267: LGTM!

Also applies to: 270-273

RELEASING.md (1)

49-52: LGTM!

Also applies to: 150-152

docs/adapter-contract/README.md (1)

84-89: LGTM!

skills/nemo-fabric-build-adapter/SKILL.md (1)

80-87: LGTM!

typescript/adapter-contract/scripts/check-package.mjs (1)

1-187: LGTM!

typescript/adapter-contract/scripts/clean.mjs (1)

1-10: LGTM!

justfile (1)

252-283: LGTM!

Also applies to: 311-327, 400-406

.github/workflows/ci_typescript.yml (1)

19-49: LGTM!

.pre-commit-config.yaml (1)

12-12: LGTM!

Comment thread .agents/skills/contribute-api/SKILL.md Outdated
Comment thread .agents/skills/validate-change/SKILL.md Outdated
Comment thread RELEASING.md
Comment thread scripts/ci/set_typescript_project_version.py
Comment thread typescript/adapter-contract/package.json
Comment thread typescript/adapter-contract/README.md
Comment thread typescript/adapter-contract/README.md Outdated
Comment thread typescript/adapter-contract/scripts/generate.mjs
Signed-off-by: Ajay Thorve <athorve@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
typescript/adapter-contract/schemas/agent-run-result.schema.json (2)

164-209: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Reject null for failed results.

The shared error property must remain nullable for cancelled results, but the failed branch must require a non-null AgentRunError. Requiring only the error property accepts a result such as {"status":"failed","error":null}.

Constrain error to AgentRunError inside the failed branch and add a regression fixture. This must match typescript/adapter-contract/src/generated/agent-run-result.ts, where failed results require AgentRunError.

As per path instructions: Failed results must include an error, while succeeded results must not include one. Based on learnings: Keep every affected public surface in parity.

🤖 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 `@typescript/adapter-contract/schemas/agent-run-result.schema.json` around
lines 164 - 209, Update the failed branch of the agent-run-result schema’s allOf
conditions so its error property is constrained to non-null AgentRunError rather
than merely required; preserve nullable error support for cancelled results and
the succeeded branch’s prohibition. Add a regression fixture for a failed result
with error:null, and keep the schema aligned with the generated
agent-run-result.ts contract across all affected public surfaces.

Sources: Path instructions, Learnings


131-159: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Keep uint64 usage values lossless in TypeScript.

AgentUsage.input_tokens, output_tokens, and total_tokens are generated as number, while Rust and the schema support the full uint64 range. JavaScript cannot represent values above 9007199254740991 exactly, so JSON parsing can change valid token counts. Choose a lossless wire representation and update the Rust model and TypeScript declarations consistently. Add a fixture above the safe-integer limit that tests parsing and serialization.

🤖 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 `@typescript/adapter-contract/schemas/agent-run-result.schema.json` around
lines 131 - 159, Update AgentUsage input_tokens, output_tokens, and total_tokens
to use a lossless uint64 wire representation consistently across the Rust model
and generated TypeScript declarations, rather than number. Preserve nullability
and the existing uint64 bounds, and add a fixture above JavaScript’s
safe-integer limit covering both parsing and serialization.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.agents/skills/update-project-version/SKILL.md:
- Line 3: Update the description metadata for the update-project-version skill
to use the Oxford comma, changing “Cargo, Python and TypeScript” to “Cargo,
Python, and TypeScript.”

In `@crates/fabric-core/src/agent_config.rs`:
- Around line 67-70: Ensure externally deserialized AgentConfig/RunPlan values
are validated before start_runtime hands them to the adapter, using the existing
AgentModelConfig/AgentConfig validation path or regenerating agent_config from
the validated FabricConfig projection. Update the runtime handoff so invalid
blank provider or model values cannot bypass validate_config.

In `@crates/fabric-core/src/config.rs`:
- Around line 1193-1199: Update Config’s assert_all_variants_listed guard to
validate Self::ALL rather than relying only on an exhaustive match, ensuring
every provider variant is included in the array used for propertyNames.enum. Use
a compile-time or test-time assertion that detects variants present in the enum
but missing from Self::ALL, while preserving the existing provider list
behavior.

In `@typescript/adapter-contract/README.md`:
- Around line 29-32: Update the TypeScript configuration guidance in the README
to specify a compatible module/moduleResolution pair, such as module: NodeNext
with moduleResolution: NodeNext or module: ESNext with moduleResolution:
bundler, while retaining the resolveJsonModule requirement for bundled JSON
Schemas.

In `@typescript/adapter-contract/scripts/check-dependencies.mjs`:
- Around line 42-57: Update the dependency license validation around
missingLicenses and licenseInventory to accept only reviewed permissive SPDX
identifiers from an explicit allowlist. Reject whitespace-only, UNKNOWN, custom,
proprietary, source-available, copyleft, network-copyleft, and any other
unlisted values; report the affected dependency paths and require an explicit
dependency-approver review mechanism for exceptions while preserving recorded
license evidence for accepted build dependencies.

---

Outside diff comments:
In `@typescript/adapter-contract/schemas/agent-run-result.schema.json`:
- Around line 164-209: Update the failed branch of the agent-run-result schema’s
allOf conditions so its error property is constrained to non-null AgentRunError
rather than merely required; preserve nullable error support for cancelled
results and the succeeded branch’s prohibition. Add a regression fixture for a
failed result with error:null, and keep the schema aligned with the generated
agent-run-result.ts contract across all affected public surfaces.
- Around line 131-159: Update AgentUsage input_tokens, output_tokens, and
total_tokens to use a lossless uint64 wire representation consistently across
the Rust model and generated TypeScript declarations, rather than number.
Preserve nullability and the existing uint64 bounds, and add a fixture above
JavaScript’s safe-integer limit covering both parsing and serialization.
🪄 Autofix

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: a828d28b-22c9-4efc-b3de-5f52cf2f80a1

📥 Commits

Reviewing files that changed from the base of the PR and between 88809f0 and ef2f42f.

📒 Files selected for processing (26)
  • .agents/skills/contribute-api/SKILL.md
  • .agents/skills/maintain-packaging/SKILL.md
  • .agents/skills/update-project-version/SKILL.md
  • .agents/skills/validate-change/SKILL.md
  • .pre-commit-config.yaml
  • RELEASING.md
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/agent_execution.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • justfile
  • schemas/adapter-contract/agent-config.schema.json
  • schemas/adapter-contract/agent-run-result.schema.json
  • schemas/run-plan.schema.json
  • scripts/ci/set_typescript_project_version.py
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/README.md
  • typescript/adapter-contract/package.json
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • typescript/adapter-contract/scripts/check-dependencies.mjs
  • typescript/adapter-contract/scripts/check-package.mjs
  • typescript/adapter-contract/scripts/generate.mjs
  • typescript/adapter-contract/test/projection-guards.test.mjs
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/tsconfig.build.json
📜 Review details
⏰ Context from checks skipped due to timeout. (9)
  • GitHub Check: Preview docs
  • GitHub Check: Test (Python 3.11, windows-amd64)
  • GitHub Check: Test (Python 3.12, windows-amd64)
  • GitHub Check: Test (Python 3.14, windows-amd64)
  • GitHub Check: Test (Python 3.14, macos-arm64)
  • GitHub Check: Test (Python 3.12, macos-arm64)
  • GitHub Check: Test (Python 3.13, windows-amd64)
  • GitHub Check: Test (Python 3.11, macos-arm64)
  • GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (40)
.pre-commit-config.yaml

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Regenerate attribution files with the named attributions-rust and attributions-python pre-commit hooks instead of editing generated output directly.

Files:

  • .pre-commit-config.yaml
**/*

📄 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 spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when 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 with NVIDIA on 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:

  • schemas/adapter-contract/agent-run-result.schema.json
  • typescript/adapter-contract/tsconfig.build.json
  • typescript/adapter-contract/test/tsconfig.json
  • crates/fabric-core/src/agent_config.rs
  • typescript/adapter-contract/scripts/check-package.mjs
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • crates/fabric-core/src/config.rs
  • typescript/adapter-contract/package.json
  • typescript/adapter-contract/scripts/check-dependencies.mjs
  • justfile
  • schemas/adapter-contract/agent-config.schema.json
  • crates/fabric-core/src/schema.rs
  • RELEASING.md
  • typescript/adapter-contract/scripts/generate.mjs
  • scripts/ci/set_typescript_project_version.py
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • crates/fabric-core/src/agent_execution.rs
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/test/projection-guards.test.mjs
  • typescript/adapter-contract/README.md
  • schemas/run-plan.schema.json
{schemas/**/*,**/*.{rs,py,pyi,ts,tsx}}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For schema or public contract changes, run Rust, Python, and TypeScript suites and review schemas, checked-in Python adapter-contract representations, generated TypeScript sources, and generated API references.

Files:

  • schemas/adapter-contract/agent-run-result.schema.json
  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • schemas/adapter-contract/agent-config.schema.json
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/agent_execution.rs
  • tests/scripts/test_set_typescript_project_version.py
  • schemas/run-plan.schema.json
{.github/**/*,**/*.{yml,yaml},**/Dockerfile,**/*.{toml,json}}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For CI or packaging changes, use the relevant maintenance guidance and run recipes and checks whose behavior changed.

Files:

  • schemas/adapter-contract/agent-run-result.schema.json
  • typescript/adapter-contract/tsconfig.build.json
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • typescript/adapter-contract/package.json
  • schemas/adapter-contract/agent-config.schema.json
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • schemas/run-plan.schema.json
schemas/**/*

⚙️ CodeRabbit configuration file

schemas/**/*: Schemas are generated public contract snapshots. Check that schema diffs correspond to intentional Rust type changes and are covered by core tests.

Files:

  • schemas/adapter-contract/agent-run-result.schema.json
  • schemas/adapter-contract/agent-config.schema.json
  • schemas/run-plan.schema.json
typescript/adapter-contract/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Keep the TypeScript southbound adapter contract documentation current when the API changes.

Files:

  • typescript/adapter-contract/tsconfig.build.json
  • typescript/adapter-contract/test/tsconfig.json
  • typescript/adapter-contract/scripts/check-package.mjs
  • typescript/adapter-contract/schemas/agent-run-result.schema.json
  • typescript/adapter-contract/package.json
  • typescript/adapter-contract/scripts/check-dependencies.mjs
  • typescript/adapter-contract/scripts/generate.mjs
  • typescript/adapter-contract/schemas/agent-config.schema.json
  • typescript/adapter-contract/test/projection-guards.test.mjs
  • typescript/adapter-contract/README.md
**/*.{rs,toml}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For any Rust change, run just test-rust and cargo fmt --all -- --check.

**/*.{rs,toml}: When Rust code changes, run cargo fmt --all -- --check and just test-rust.
For Rust core, CLI, or shared runtime semantic changes, run Rust formatting and tests, adding Python tests when behavior is exposed through the SDK and relevant CLI tests when CLI behavior changes.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/agent_execution.rs
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/agent_execution.rs
  • tests/scripts/test_set_typescript_project_version.py
crates/fabric-core/**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

Changes under crates/fabric-core must run both the Rust and Python test suites.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/agent_execution.rs
crates/fabric-core/**/*.rs

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

For Rust API reference changes, update Rust documentation comments under crates/fabric-core/ instead of generated API reference files.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/agent_execution.rs
**/*.{md,mdx,yml,py,rs,sh}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

Keep documentation aligned with current NeMo Fabric behavior, repository layout, entry points, commands, package names, APIs, bindings, and support claims.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • RELEASING.md
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/agent_execution.rs
  • tests/scripts/test_set_typescript_project_version.py
  • typescript/adapter-contract/README.md
**/*.rs

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Start from the shared Rust core behavior first when contributing a public API addition or behavior change.

**/*.rs: Format Rust code with cargo fmt --all, verify formatting with cargo fmt --all -- --check, and run cargo check --workspace --locked for compilation checks.
Include the specified NVIDIA Apache-2.0 SPDX license header using Rust // comments in every Rust source file.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/agent_execution.rs
crates/fabric-core/**/*

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If crates/fabric-core changes in a way exposed through Python, run both the Rust and Python suites.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/agent_execution.rs
**/*.{rs,py,ts,tsx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.{rs,py,ts,tsx}: Use snake_case for Rust and Python functions and variables, PascalCase for Rust, Python, and TypeScript types, and preserve wire-level snake_case names for TypeScript contract properties.
When adding functionality, include tests in the corresponding Rust crate or relevant tests/ area; public contract changes must keep JSON Schema snapshots, Python representations, and generated TypeScript declarations synchronized.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • scripts/ci/set_typescript_project_version.py
  • crates/fabric-core/src/agent_execution.rs
  • tests/scripts/test_set_typescript_project_version.py
crates/fabric-core/src/**/*.rs

⚙️ CodeRabbit configuration file

crates/fabric-core/src/**/*.rs: Review the Rust core for runtime lifecycle correctness, handle validation, capability routing accuracy, schema stability, and error semantics.
Public API changes should match committed schemas, tests, and documentation.

Files:

  • crates/fabric-core/src/agent_config.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-core/src/agent_execution.rs
.agents/skills/**

📄 CodeRabbit inference engine (.agents/skills/README.md)

.agents/skills/**: Maintainer skills must be discoverable from .agents/skills/; Claude Code exposes the same set through .claude/skills without mixing in consumer skills.
Keep consumer-facing integration guidance in the top-level skills/ directory and exclude it from the maintainer skill set.

Use maintainer skills for repository-internal API, documentation, testing, CI, packaging, release, and PR work; do not place external integration guidance there.

Files:

  • .agents/skills/contribute-api/SKILL.md
  • .agents/skills/maintain-packaging/SKILL.md
  • .agents/skills/validate-change/SKILL.md
  • .agents/skills/update-project-version/SKILL.md
.agents/skills/*/

📄 CodeRabbit inference engine (.agents/skills/README.md)

Use descriptive, task-based names for maintainer skill directories, such as contribute-api or validate-change.

Files:

  • .agents/skills/contribute-api/SKILL.md
  • .agents/skills/maintain-packaging/SKILL.md
  • .agents/skills/validate-change/SKILL.md
  • .agents/skills/update-project-version/SKILL.md
**/{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:

  • typescript/adapter-contract/package.json
**/{Cargo.toml,pyproject.toml,package.json}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

**/{Cargo.toml,pyproject.toml,package.json}: Treat every direct dependency as a long-lived API, supply-chain, and licensing commitment.
Prefer the standard library, an existing dependency, or a small local implementation when that keeps behavior clear and maintainable.
When multiple dependencies satisfy the technical requirement, prefer a maintained OSS option with clear SPDX metadata, a smaller transitive graph, and permissive terms such as Apache-2.0, MIT, BSD, or ISC.

Files:

  • typescript/adapter-contract/package.json
**/{Cargo.toml,pyproject.toml,package.json,Cargo.lock,uv.lock,package-lock.json}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Treat UNKNOWN, non-SPDX/custom, proprietary or source-available terms, and copyleft or network-copyleft terms as explicit review points; route them to dependency approvers with distribution and linkage context.

Files:

  • typescript/adapter-contract/package.json
typescript/adapter-contract/package.json

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

typescript/adapter-contract/package.json: Keep the TypeScript adapter-contract package's production dependency graph empty; build-only dependencies require permissive, recorded license evidence.
The TypeScript adapter-contract package version must follow the workspace release version without changing its independent wire contract version.

Keep the TypeScript adapter-contract package version aligned with the Cargo SemVer release version.

Files:

  • typescript/adapter-contract/package.json
{Cargo.toml,pyproject.toml,adapters/**/pyproject.toml,typescript/adapter-contract/package.json}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

For prerelease or build-metadata releases, use valid Cargo SemVer and equivalent PEP 440 Python metadata rather than blindly copying incompatible syntax.

Files:

  • typescript/adapter-contract/package.json
{Cargo.toml,pyproject.toml,python/pyproject.toml,adapters/**/pyproject.toml,typescript/adapter-contract/package.json}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

When changing versions, audit old-version references and distinguish package-version surfaces from examples and unrelated dependency versions; do not perform blind repository-wide replacements.

Files:

  • typescript/adapter-contract/package.json
typescript/adapter-contract/package{,-lock}.json

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Inspect the TypeScript package manifest and lockfile root version entries.

Files:

  • typescript/adapter-contract/package.json
{Cargo.toml,Cargo.lock,pyproject.toml,python/pyproject.toml,python/uv.lock,adapters/**/pyproject.toml,adapters/**/uv.lock,typescript/adapter-contract/package.json,typescript/adapter-contract/package-lock.json,justfile}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Run the relevant version-update validation, including Cargo checks, Python build/package checks, TypeScript packaging checks, and git diff --check.

Files:

  • typescript/adapter-contract/package.json
  • justfile
{package.json,**/package.json,package-lock.json,**/package-lock.json}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When the TypeScript manifest or npm lockfile changes, inspect the complete npm dependency tree and license fields, confirm zero production dependencies, and run package and audit checks.

Files:

  • typescript/adapter-contract/package.json
justfile

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Keep build, test, clean, and documentation recipes aligned with current package and module paths.

justfile: The set-version recipe must run just lock-python after source metadata is updated.
set_project_version must call the Cargo, Python, and TypeScript project version helpers.
set_cargo_workspace_version must update the workspace version and nemo-fabric-core dependency, then verify every nemo-fabric-* workspace package through Cargo metadata.
set_python_project_versions must update the root setuptools version, recursively discovered adapter versions, and internal exact-version pins while rejecting a static version in python/pyproject.toml.
set_typescript_project_version must update the package manifest and both root version entries in the npm lockfile without changing dependency versions.

Files:

  • justfile
**/*.{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 spell NVIDIA in all caps; do not use Nvidia, nvidia, or NV.
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 as here or read 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.
Use can for possibility and reserve may for permission.
Use after for temporal relationships instead of once, and prefer refer to over see when 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:

  • RELEASING.md
  • typescript/adapter-contract/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.
Use can for possibility and reserve may for permission; use after for temporal order; use refer to for cross-references; prefer short direct sentences and specific verbs; avoid unnecessary please in 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: use for example or such as instead of e.g., and so on instead of etc., that is instead of i.e., compared to instead of vs., and by, through, or using instead of via. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Use that without commas for essential clauses, and which with commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such as June 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space before a.m. or p.m.; use ET and PT for needed time zones; avoid 24/7; and prefer from 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:

  • RELEASING.md
  • typescript/adapter-contract/README.md
**/*.{md,mdx}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

**/*.{md,mdx}: Use the full product name NVIDIA NeMo Fabric on first use, typically in the title and H1; use NeMo Fabric thereafter. Use fabric alone only for the CLI tool and surround it with backticks.
Treat incorrect or stale commands, package names, paths, APIs, support claims, procedures, examples, terminology, or public behavior documentation as blocking issues.
Capitalize NVIDIA correctly and format code, commands, paths, and filenames as inline code where needed.
Use title case for technical-documentation headings.
Introduce code blocks, tables, and lists with complete lead-in sentences; ensure examples match current APIs and build commands.
Use descriptive anchor text, avoid raw URLs and generic labels such as here, and use repository-relative .mdx paths for links within docs/.
Prefer active voice, present tense, short sentences, plain English, consistent terminology, and imperative, parallel, scannable procedures.
Use after instead of once when expressing temporal sequence, and use can rather than may when describing 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.
When reporting documentation-review findings, lead with Must fix, Should fix, and Nice to have categories; include file path, line reference, current problem, rationale, and a concrete rewrite or direction.

Files:

  • RELEASING.md
  • typescript/adapter-contract/README.md
RELEASING.md

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Reflect public packaging changes in release-facing documentation, including release tags, registry publication, and current install or usage commands.

Keep release policy and the end-to-end maintainer workflow in RELEASING.md; do not move release-history policy into user-facing documentation or add a duplicate CHANGELOG.md.

Files:

  • RELEASING.md
{docs/**/*,examples/**/*,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

{docs/**/*,examples/**/*,**/*.md}: When documentation or examples change, run just docs when practical and verify documented commands against the current repository.
For documentation-only changes, use contribute-docs and review-doc-style; run just docs for docs-site or generated-reference changes.

Files:

  • RELEASING.md
  • typescript/adapter-contract/README.md
**/*.{html,md}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Include the specified NVIDIA Apache-2.0 SPDX license header using HTML comments in every HTML or Markdown source file.

Files:

  • RELEASING.md
  • typescript/adapter-contract/README.md
{*.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 lowercase fabric CLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.

Files:

  • RELEASING.md
  • typescript/adapter-contract/README.md
**/*.{py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

When Python code or a Python-facing adapter changes, run just test-python.

Files:

  • scripts/ci/set_typescript_project_version.py
  • tests/scripts/test_set_typescript_project_version.py
{**/*.py,**/*.pyi,**/Cargo.toml,**/Cargo.lock,pyproject.toml}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For Python SDK or PyO3 binding changes, use Python test guidance, run focused pytest tests first, then just test-python, and rebuild with just build-python when native code or packaging changes.

Files:

  • scripts/ci/set_typescript_project_version.py
  • tests/scripts/test_set_typescript_project_version.py
**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.py: Use type annotations for public Python APIs and keep native binding declarations synchronized with their Rust implementations.
Include the specified NVIDIA Apache-2.0 SPDX license header using Python # comments in every Python source file.

Files:

  • scripts/ci/set_typescript_project_version.py
  • tests/scripts/test_set_typescript_project_version.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.asyncio to tests; async tests are automatically detected by the async runner.
Do not add -> None return type annotations to test functions.
When mocking a class, use unittest.mock.MagicMock or AsyncMock, using the spec argument when necessary, rather than defining a new class.
Prefix mocked class names with mock, not fake.
Prefer pytest fixtures over helper methods.
If a fixture is needed in multiple test files, define it once in conftest.py rather than repeating it.
Define fixtures using @pytest.fixture(name="<fixture_name>"[, scope="<scope>"]) and a <fixture_name>_fixture function; specify scope only when it is not function.
Prefer pytest.mark.parametrize over separate tests for different input types.
Use @pytest.mark.usefixtures when a fixture is needed but its returned value is unused or it returns no value.
Avoid defensive programming in tests; access expected values directly so missing data raises a clear failure, such as using results["data"] instead of results.get("data").
When adapter installation metadata changes, packaging metadata tests must directly assert that the root project depends unconditionally on the exact-version nemo-fabric-runtime distribution.
Packaging metadata tests must verify that each root harness extra delegates to the matching version of the leaf adapter's harness extra.
Packaging metadata tests must verify that bare leaf dependencies remain adapter-owned and that the root adapter-tests dependency group installs each leaf through its harness extra.
Packaging metadata tests must verify that every leaf provides full; only adapters importing NeMo Relay Python APIs provide relay, while adapters using an external Relay executable have full equal to harness.

Files:

  • tests/scripts/test_set_typescript_project_version.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/scripts/test_set_typescript_project_version.py
**/README.md

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update the relevant adapter or example README.md when that surface changes.

Files:

  • typescript/adapter-contract/README.md
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Determine whether the CLI, PyO3 binding, Python SDK, type stubs, schemas, and Python/TypeScript adapter-contract bindings must expose the new API surface.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Keep every affected public surface in parity.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Clearly describe public behavior.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Cover every affected public surface.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Ensure the validation matrix matches the changed surfaces.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Explain the user-facing change in PR notes.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:15.848Z
Learning: Keep changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:25.192Z
Learning: Record the functional need, viable alternatives considered, why the selected dependency is the narrowest fit, and any unresolved licensing question.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:12:25.192Z
Learning: Keep changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: Run tests for every language surface affected by a change. Changes touching the Rust core or public adapter-contract schemas require Rust, Python, and TypeScript test suites.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: Update corresponding documentation when changes affect public behavior, adapters, examples, or workspace structure.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: All contributors must sign off every commit using `git commit -s`; unsigned commits will not be accepted.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: Before submitting a pull request, identify an issue, run relevant tests, verify affected packages compile, update documentation, and rebase onto the latest `main`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: Pull requests require at least one approving review, CI must pass before merging, and review feedback must be addressed without force-pushing during review.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: Use commit messages in the form `type: short description`, using one of `feat`, `fix`, `docs`, `test`, `refactor`, `chore`, or `perf`; keep the first line under 72 characters.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric

Timestamp: 2026-08-11T16:13:03.735Z
Learning: Use release tags in SemVer format with a leading `v`, such as `v0.1.0` or `v0.1.0-rc.1`; do not omit the leading `v`.
📚 Learning: 2026-08-07T07:15:33.918Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Fabric PR: 186
File: schemas/adapter-contract/legacy/adapter-invocation.schema.json:176-176
Timestamp: 2026-08-07T07:15:33.918Z
Learning: For the NeMo Fabric v1alpha southbound adapter contract, treat the adapter descriptor's `contract_version` as the version of the complete contract, including `RuntimeContext`. Keep `RuntimeContext` strict by rejecting unknown properties, and require a negotiated contract-version change for additive shape changes.

Applied to files:

  • schemas/adapter-contract/agent-run-result.schema.json
  • schemas/adapter-contract/agent-config.schema.json
📚 Learning: 2026-08-07T07:15:35.305Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Fabric PR: 186
File: schemas/adapter-contract/agent-config.schema.json:374-381
Timestamp: 2026-08-07T07:15:35.305Z
Learning: For the NeMo Fabric southbound adapter contract schemas, treat `AdapterDescriptor.contract_version` as the single negotiated version for the entire contract, covering `AgentConfig`, `AgentRunRequest`, `AgentRunResult`, and `RuntimeContext` before adapter startup. Do not require individual version fields in these payloads; verify behavior against the maintained adapter-contract README.

Applied to files:

  • schemas/adapter-contract/agent-run-result.schema.json
  • schemas/adapter-contract/agent-config.schema.json
🪛 ast-grep (0.45.1)
tests/scripts/test_set_typescript_project_version.py

[info] 119-119: use jsonify instead of json.dumps for JSON output
Context: json.dumps(lock, indent=2)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)

🔇 Additional comments (23)
typescript/adapter-contract/package.json (1)

34-36: LGTM!

typescript/adapter-contract/scripts/check-package.mjs (1)

175-175: LGTM!

justfile (1)

311-325: LGTM!

Also applies to: 402-403

scripts/ci/set_typescript_project_version.py (1)

13-19: LGTM!

tests/scripts/test_set_typescript_project_version.py (1)

19-20: LGTM!

Also applies to: 63-79, 89-123

.pre-commit-config.yaml (1)

12-12: LGTM!

RELEASING.md (1)

150-154: LGTM!

.agents/skills/contribute-api/SKILL.md (1)

3-3: LGTM!

.agents/skills/maintain-packaging/SKILL.md (1)

3-3: LGTM!

Also applies to: 27-28, 64-67, 87-88, 107-109

.agents/skills/validate-change/SKILL.md (1)

26-27: LGTM!

Also applies to: 63-65

crates/fabric-core/src/config.rs (1)

199-205: LGTM!

Also applies to: 242-248, 532-550

crates/fabric-core/src/schema.rs (1)

313-324: LGTM!

Also applies to: 356-389, 394-399, 429-429

crates/fabric-core/src/agent_execution.rs (1)

145-146: LGTM!

Also applies to: 177-177, 200-200, 209-209, 308-308

schemas/adapter-contract/agent-config.schema.json (1)

173-179: LGTM!

typescript/adapter-contract/README.md (1)

6-27: LGTM!

Also applies to: 34-58, 59-74, 76-100, 102-113

typescript/adapter-contract/schemas/agent-config.schema.json (1)

1-373: LGTM!

Also applies to: 374-471

schemas/adapter-contract/agent-run-result.schema.json (1)

33-50: LGTM!

schemas/run-plan.schema.json (1)

108-112: LGTM!

Also applies to: 135-139, 171-175, 332-343, 611-622

typescript/adapter-contract/schemas/agent-run-result.schema.json (1)

2-112: LGTM!

Also applies to: 210-260

typescript/adapter-contract/scripts/generate.mjs (1)

95-97: LGTM!

typescript/adapter-contract/test/projection-guards.test.mjs (1)

30-34: LGTM!

typescript/adapter-contract/test/tsconfig.json (1)

1-16: LGTM!

typescript/adapter-contract/tsconfig.build.json (1)

1-19: LGTM!

Comment thread .agents/skills/update-project-version/SKILL.md Outdated
Comment thread crates/fabric-core/src/agent_config.rs
Comment thread crates/fabric-core/src/config.rs Outdated
Comment thread typescript/adapter-contract/README.md Outdated
Comment thread typescript/adapter-contract/scripts/check-dependencies.mjs Outdated
Signed-off-by: Ajay Thorve <athorve@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant