Skip to content

Conversation

@dagardner-nv
Copy link
Contributor

@dagardner-nv dagardner-nv commented Oct 8, 2025

Description

By Submitting this PR I confirm:

  • I am familiar with the Contributing Guidelines.
  • We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
    • Any contribution which contains commits that are not Signed-Off will not be accepted.
  • When the PR is ready for review, new or existing tests cover these changes.
  • When the PR is ready for review, the documentation is up to date with these changes.

Summary by CodeRabbit

  • New Features
    • CLI now loads environment variables from .env and uses clearer, standardized logging output.
    • More robust session management for MCP tools, improving reliability.
  • Documentation
    • Expanded UI launch and configuration guide with WebSocket requirements and human-in-the-loop notes.
    • Added vLLM setup, Google ADK references, and updated examples (messages-based HTTP payloads).
    • Improved diagrams (Mermaid fences) and added prerequisites for sizing calculator.
  • Tests
    • Enabled slow tests, added OpenSearch service/fixtures, new local docker-compose services, and unified test client utility.
  • Chores
    • Added license and project URL metadata across packages.

dagardner-nv and others added 28 commits October 6, 2025 16:38
## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Chores**
  * Updated pre-merge checks to treat PR title non-compliance as an error instead of a warning. Non-compliant titles will now block merging until corrected, improving consistency and enforcement in the review workflow. No changes to the requirements text or other settings. Applies to all new pull requests and updates, ensuring clearer feedback and stricter gatekeeping.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#918
Ensure that ReAct and Tool Calling examples use the OpenAI specification for input.

Closes nvbugs-5560815

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **Documentation**
  * Updated example HTTP request payloads to use a messages array with role/content for both non-streaming and streaming scenarios in agent and tool-calling guides.
  * Aligned request formats across examples for consistency and easier adoption.
  * Clarified how to construct user messages in requests; no changes to logic or control flow.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Yuchen Zhang (https://github.com/yczhang-nv)

URL: NVIDIA#923
Configure Sphinx to support plain mermaid code blocks for documentation.

Advantages: renders cleanly in both GitHub and published documentation.
Disadvantages: none(?)


This PR also removes `# ` from the copybutton action because it essentially forces comments to be "uncommented" which can result in error. It has burned me more than once.

Closes

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Documentation**
  * Enabled GitHub-style Mermaid fences for more consistent diagram rendering.
  * Standardized Mermaid code blocks across docs for uniform formatting.
  * Improved “copy code” behavior by removing extraneous prompt characters from copied snippets.
  * Refreshed diagram layout in multi-user workflow for clearer visualization (no logic changes).

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah)

URL: NVIDIA#924
…VIDIA#926)

- Add Google ADK
- be consistent with yml suffix
- add more libraries to list
- remove all remaining references to `use_uvloop: true`

Closes

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Documentation**
  * Updated Key Features to explicitly include Google ADK.
  * Corrected Hello World example to use workflow.yml and aligned commands/output.
  * Marked Roadmap items (Google ADK, MCP auth/streamable HTTP) as complete.
  * Expanded Acknowledgements with additional open-source projects (e.g., Google ADK, MCP, observability tooling).
  * Refreshed feature/resource bullets to reflect new ADK/MCP and observability references.

* **Chores**
  * Removed the optional event loop optimization setting from example configurations to simplify defaults.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - David Gardner (https://github.com/dagardner-nv)

URL: NVIDIA#926
This PR:
1. Adds clear documentation on lock usages in MCP client session routing
2. Addresses a case of cleanup without correct locking
3. Fix some unrelated doc syntax 

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **New Features**
  * Manual session cleanup API to remove idle sessions (optionally by age).

* **Improvements**
  * Session-aware tool calls now return “Tool temporarily unavailable. Try again.” when a client can’t be obtained.
  * More robust session management to reduce deadlocks and improve concurrency.

* **Bug Fixes**
  * Prevents rare failures during concurrent session cleanup, improving stability under load.

* **Documentation**
  * Removed the "Using Protected MCP Servers" subsection from MCP client docs.

Authors:
  - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah)

Approvers:
  - Yuchen Zhang (https://github.com/yczhang-nv)
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#922
* The default value for `Config.workflow` is `EmptyFunctionConfig()` however this config is never registered and thus triggers a serialize warning if someone calls `model_dump` on the config. Since a config with a workflow set to the empty function config is not valid, this is something that happens only in tests and does not come up in routine NAT usage.
* Use the `--run_slow` flag in GitHub CI.
* Mark `test_websocket_oauth2_flow_error_handling` as slow as this test is taking about 5 minutes to run.
* Fix out of date `e2e` mark on `test_haystack_deep_research_agent`, update fixtures to match the rest of NAT.

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Chores**
  * Removed deprecated constant and streaming test endpoints to reduce maintenance overhead and surface area.

* **Tests**
  * Added an autouse session fixture that registers a no‑op function to streamline test setup.
  * Marked a websocket OAuth2 error‑handling test as slow for clearer test categorization.
  * Adjusted test discovery behavior for a configuration class to align with current test expectations.

No user-facing features or behavior changes.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#925
Closes

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

- New Features
  - Added “Haystack Deep Research Agent” example to the examples catalog.
  - Introduced an optional “nvidia_haystack” feature for streamlined installation via extras.
  - Unified multi-framework setup to use the consolidated extra instead of a separate package.

- Chores
  - Updated and pinned dependencies for improved stability; removed deprecated NVIDIA Haystack package in favor of extras.
  - Expanded Python compatibility to include 3.13 (now <3.14).
  - Aligned workspace configuration to reference the new example and extras setup.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - David Gardner (https://github.com/dagardner-nv)

URL: NVIDIA#927
`uvicorn` versions 0.36 and higher run into runtime errors due to `nest_asyncio`'s patching being out-of-date on Python >= 3.12

Pin `uvicorn` to a version that does not exhibit runtime errors

Closes

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

- Chores
  - Updated the server runtime dependency uvicorn[standard] version constraint from ~=0.34 to <0.36.
  - Standardizes supported versions to reduce unexpected behavior during upgrades and improve deployment reliability.
  - No changes to application features or user interface.
  - All other dependencies remain unchanged, keeping build performance and size consistent.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - David Gardner (https://github.com/dagardner-nv)

URL: NVIDIA#929
* When using `AyncMock` all attributes return another `AyncMock`, there were a few cases where a method was being called  on an AsyncMock that was expected to be blocking (yielding an `... was never awaited` warning). In these situations I explicitly set a blocking mock object.
* Use the `model_fields` attribute on the class not the instance, avoids Pydantic deprecation warning

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

- Refactor
  - Improved component reference discovery by using class-level metadata for more consistent behavior. No API changes or user-facing differences expected.

- Tests
  - Updated tests to align with metadata handling changes.
  - Enhanced HTTP response mocks (including headers and status behavior) for more realistic scenarios.
  - Expanded authentication tests to cover callback setup in token flows.

- Chores
  - General reliability and consistency improvements, with no impact on existing workflows.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#928
This PR implements comprehensive security enhancements including server-side input validation, protection against parameter injection attacks, and proper OpenAI chat completions request handling.

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Chores**
  * Updated external UI submodule to a newer upstream commit for alignment and maintenance.
  * Dependency housekeeping to keep the project current and consistent with upstream assets.
  * No user-facing impact: no new features, fixes, UI changes, or behavioral differences expected.

Authors:
  - Eric Evans II (https://github.com/ericevans-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#932
…VIDIA#931)

Previously, session cleanup was calling client.__aexit__() from a different task context than where __aenter__() was called, violating anyio's CancelScope requirement that enter and exit must happen in the same task. This caused "Attempted to exit cancel scope in a different task" errors during session cleanup.
    
Solution:
-    Introduce a per-client lifetime task that manages the entire client lifecycle
-    The lifetime task enters the client context (async with client:) and waits  for a stop_event signal before exiting
-    Session cleanup now signals the stop_event and waits for the lifetime task  to complete, ensuring __aexit__ runs in the correct task context

This ensures proper cancel scope handling and prevents resource leaks while  maintaining thread-safe session management.

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **Bug Fixes**
  * Sessions now shut down cleanly (stop signaling and fallback cleanup), reducing hangs and timeouts; inactive sessions are reliably removed.

* **Refactor**
  * Session lifecycle reworked to include explicit stop events and managed background lifetime tasks for more robust session management.

* **Chores**
  * Initialization and cleanup wiring improved to avoid orphaned tasks and lower resource use during idle/long runs.

* **Tests**
  * Test harness updated with session cleanup helpers to ensure per-session tasks are torn down and improve isolation.

Authors:
  - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah)

Approvers:
  - Yuchen Zhang (https://github.com/yczhang-nv)

URL: NVIDIA#931
When we upgraded weave to a newer version, we forgot to update the API for the sanitize logic.

This PR:
- corrects the import
- uses the new API for adding redaction keys

Closes nvbugs-5564010

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

- Bug Fixes
  - Improves reliability of sensitive data redaction when custom keys are configured, ensuring consistent and predictable masking across traces and sessions.
  - Prevents unintended side effects from global redaction settings, reducing risk of over- or under-redaction in mixed workloads.
  - Enhances stability in environments with multiple plugins or concurrent runs.
  - Backwards compatible: existing redaction settings continue to work without user changes.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Yuchen Zhang (https://github.com/yczhang-nv)

URL: NVIDIA#934
In a prior PR (NVIDIA#834), we unified the `async` interface across most builder patterns.

We missed await-ing `get_memory_client` in the built-in memory_tools.

Closes nvbugs-5563968

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- New Features
  - None

- Bug Fixes
  - Fixed inconsistent default memory selection to prevent unexpected errors.
  - Resolved occasional failures when connecting to the memory service by ensuring proper asynchronous handling.

- Refactor
  - Standardized memory tool configuration for add, delete, and get operations to improve consistency and reliability.

- Documentation
  - Clarified descriptions for memory tools to improve user-facing text.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Yuchen Zhang (https://github.com/yczhang-nv)

URL: NVIDIA#935
* Update `pyproject.toml` files, setting `license = "Apache-2.0"` rather than the full text of the license file.
* Add project links

Closes NVIDIA#936

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- New Features
  - Automatic discovery enabled for LangChain integration and Mem0AI component via new package entry points.

- Documentation
  - Added documentation and source repository links to package metadata across subpackages for easier access.

- Chores
  - Standardized license metadata to Apache-2.0 across the project and declared license files in top-level packaging.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#938
Closes 

This is a small PR that adds the test_llm as a LLM Client for Google ADK, with related tests.

Since in NAT we use ADK's LiteLLM, I did check what public functions/fields were implemented by LiteLLM and overrode them properly. [[LiteLLM code source](https://github.com/google/adk-python/blob/2699ad7aff1e94220e9101919c402e9edd156332/src/google/adk/models/lite_llm.py#L749)]

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- **New Features**
  - Added a Google ADK–compatible LLM client for NAT test utilities, providing deterministic, scriptable async responses for integration scenarios.

- **Tests**
  - Added ADK-based integration tests validating ADK-driven function execution and deterministic outputs across single and repeated invocations.

Authors:
  - Zhongxuan (Daniel) Wang (https://github.com/zhongxuanwang-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#937
This PR standardizes UI documentation across the repository by updating installation commands to use npm ci for reproducible builds, adding prominent WebSocket requirement notices for human-in-the-loop workflows (OAuth, interactive prompts), and consolidating all UI setup references to point to the comprehensive launching-ui.md guide. The changes improve the Settings Options documentation with clearer structure matching the current UI implementation and enhance examples/UI/README.md with configuration examples and troubleshooting sections. These updates provide a single source of truth for UI configuration and help users avoid common issues by clearly explaining when WebSocket mode is required versus HTTP requests.
## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- Documentation
  - Revamped "Launching the UI" guide: modernized UI features, clearer prerequisites, step-by-step startup, expanded Appearance/API/WebSocket configuration, and detailed HTTP vs streaming endpoint guidance.
  - Emphasized WebSocket requirement for human-in-the-loop, OAuth, and interactive workflows; updated multiple READMEs and workflow docs for consistency.
- Chores
  - Updated UI submodule to a newer revision.

Authors:
  - Eric Evans II (https://github.com/ericevans-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#939
Closes nvbugs-5564774

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **Documentation**
  * Added a Prerequisites section with profiling installation instructions.
  * Clarified package-based installation options for profiling tools.
  * Added setup and installation steps for the simple calculator example.
  * Kept guidance to update configuration (base_url) for the example to complete setup.

Authors:
  - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#942
- The NIM model name has been switched to be in Title Case
- Directions were slightly unclear on how to install nat + example

Closes

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **Documentation**
  * Corrected model references to nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1 across NIM and vLLM examples.
  * Added NVIDIA NeMo Agent (NAT) to installation guidance alongside the simple web query example.
  * Updated install commands to use the "uv pip" workflow with steps for editable installs at project root and example.
  * Harmonized setup instructions across NIM and vLLM for consistent, clearer guidance.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - David Gardner (https://github.com/dagardner-nv)

URL: NVIDIA#941
* Enables running the `examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py` integration test.

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

- Chores
  - Updated CI pipeline to provision an OpenSearch service container (opensearchproject/opensearch:2.11.1) with single-node mode and security disabled for CI execution.
  - Added a CI environment variable for the OpenSearch endpoint (http://opensearch:9200).
  - These changes standardize the CI environment and improve consistency of pipeline runs involving search-related operations.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#944
…A#945)

* Adds a new test for `examples/front_ends/simple_calculator_custom_routes`
* Removes unused LLM in `config-metadata.yml`
* Move/rename the `_build_client` helper method to `build_nat_client` in the tests package to be shared among tests

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- New Features
  - Added a reusable test client helper to simplify starting the app and making HTTP requests in tests.

- Tests
  - Migrated FastAPI front-end and OpenAI-compatibility tests to the new client helper for cleaner setup and lifecycle management.
  - Added an integration test for the simple calculator with custom routes, validating request metadata handling.

- Chores
  - Removed the OpenAI LLM option from the example calculator configuration, leaving only the NVIDIA NIM LLM.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#945
Based on feedback from TMEs and SAs, move the sample ADK agent back to the ADK example.

Closes

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- Tests
  - Expanded ADK framework coverage across key test flows, added import guards and ADK-specific branches, and streamlined ADK result handling.
  - Removed outdated ADK integration tests to reduce flakiness.

- Chores
  - Adjusted ADK-related imports: enabled ADK agent usage in the demo while removing an unused ADK dependency elsewhere to simplify the dependency graph.

- Refactor
  - Tightened ADK-related type annotations for clearer test interfaces without changing public behavior.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Zhongxuan (Daniel) Wang (https://github.com/zhongxuanwang-nv)

URL: NVIDIA#943
* Adds a docker compose yaml to bootstrap the required services needed to run integration tests locally
* Change redis version to the same version used in the documentation.
* Set gitlab service pull policy to `if-not-present`

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

- Tests
  - Added a docker-compose services setup for integration tests including etcd, Milvus, MinIO, MySQL, OpenSearch, Phoenix, and Redis with healthchecks and dependencies.
  - Updated default MySQL test credentials to “my_password”.
- Chores
  - CI/test service definitions standardized with explicit image references and a uniform pull policy for clarity and consistency.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#946
User specification of console logging did nothing. The root issue was we had multiple logger handlers. This PR addresses this bug and fixes it via the following:

- Fixed logging configuration not being applied - Workflow builder now properly manages console handlers to respect configured log levels
- Added `extra="forbid"` to `GeneralConfig` - Invalid configuration fields are now rejected with clear validation errors
- Ensured workflow results always visible - If console log level is greater than info, print the workflow results. If <= INFO, then log the results
- Fixed example config structure - Updated simple_auth config to use correct general.telemetry.logging format
- Improved logging format to have the level come after the time. Also added line number of file/module

Default level:
```
<snipped for brevity>
...
------------------------------
2025-10-07 21:05:36 - INFO     - nat.agent.rewoo_agent.agent:373 - [AGENT] Completed level 1 with 1 tools
2025-10-07 21:05:37 - INFO     - nat.agent.rewoo_agent.agent:493 - ReWOO agent solver output: 
------------------------------
[AGENT]
Agent input: Make a joke comparing Elon and Mark Zuckerberg's birthdays?
Agent's thoughts: 
Why did Elon Musk and Mark Zuckerberg's birthdays go to therapy? Because Elon's birthday (June 28) was feeling a little "spacey" and Mark's birthday (May 14) was having some "social" anxiety!
------------------------------
2025-10-07 21:05:37 - WARNING  - nat.builder.intermediate_step_manager:94 - Step id a1b24e96-0fdd-4fc5-9a07-a6b3c0699e80 not found in outstanding start steps
2025-10-07 21:05:37 - CRITICAL - nat.front_ends.console.console_front_end_plugin:100 - 
--------------------------------------------------
Workflow Result:
['Why did Elon Musk and Mark Zuckerberg\'s birthdays go to therapy? Because Elon\'s birthday (June 28) was feeling a little "spacey" and Mark\'s birthday (May 14) was having some "social" anxiety!']
--------------------------------------------------
```

Error level (when set in workflow config):
```
2025-10-07 21:07:59 - INFO     - nat.cli.commands.start:192 - Starting NAT from config file: 'examples/agents/rewoo/configs/config.yml'

Configuration Summary:
--------------------
Workflow Type: rewoo_agent
Number of Functions: 6
Number of Function Groups: 0
Number of LLMs: 1
Number of Embedders: 0
Number of Memory: 0
Number of Object Stores: 0
Number of Retrievers: 0
Number of TTC Strategies: 0
Number of Authentication Providers: 0

2025-10-07 21:07:11 - CRITICAL - nat.front_ends.console.console_front_end_plugin:100 - 
--------------------------------------------------
Workflow Result:
["Why did Elon Musk and Mark Zuckerberg have different birthday parties? Because Elon's was a 'rocket' success on June 28, while Mark's was a 'social' gathering on May 14! Guess you could say their birthdays were 'launched' on different trajectories!"]
--------------------------------------------------
```

Error level (when set as envvar):
```
2025-10-07 21:07:11 - CRITICAL - nat.front_ends.console.console_front_end_plugin:100 - 
--------------------------------------------------
Workflow Result:
["Why did Elon Musk and Mark Zuckerberg have different birthday parties? Because Elon's was a 'rocket' success on June 28, while Mark's was a 'social' gathering on May 14! Guess you could say their birthdays were 'launched' on different trajectories!"]
--------------------------------------------------
```


## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **New Features**
  * Result messages are now always surfaced (logged at a higher severity) so workflow outputs are visible regardless of INFO-level settings.

* **Refactor**
  * Logging settings reorganized under a telemetry namespace while preserving console type and level.
  * Root-level logging management unified to prevent duplicate handlers and restore prior console behavior on exit.

* **Bug Fixes**
  * Log formatting standardized to include timestamp, level, logger name and line number.

* **Chores**
  * Configuration validation tightened: unknown config fields are rejected.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Eric Evans II (https://github.com/ericevans-nv)

URL: NVIDIA#947
We should clarify that a virtual environment may be needed for a "vanilla" pip install.

Closes nvbugs-5553762

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Documentation**
  * Updated installation instructions to recommend using a Python virtual environment before installing the package.
  * Added macOS/Linux commands to create (python3 -m venv .venv) and activate (source .venv/bin/activate) the environment in the Stable Version section.
  * Clarifies setup steps to reduce dependency conflicts and streamline installation.
  * Existing pip install command remains unchanged.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - Eric Evans II (https://github.com/ericevans-nv)

URL: NVIDIA#948
Newer versions of NAT support the latest numpy while vLLM does not.
Since vLLM is not a true dependency of NAT, we should encourage users running vLLM locally to use a separate virtual environment.

Closes nvbugs-5566124

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.




## Summary by CodeRabbit

* **Documentation**
  * Expanded “Using vLLM” guidance with details on its OpenAI-compatible server.
  * Added recommendation to install vLLM in a separate virtual environment.
  * Reorganized and clarified content: split a combined paragraph, trimmed references to specific models, and moved related details into notes.
  * Improved readability without changing any functionality or runtime behavior.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - David Gardner (https://github.com/dagardner-nv)

URL: NVIDIA#950
…IDIA#953)

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **Chores**
  * CI configuration updated so artifact upload now runs for release branches matching release/*.
  * Ensures build artifacts (wheels/uploads) are produced for release branches to improve availability for testing and distribution.
  * No changes to application behavior or UI.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#953
We already have an indirect dependency on `python-dotenv` -- make it an explicit one and ensure the entrypoint loads the environment

Closes NVIDIA#865

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.

Authors:
  - Will Killian (https://github.com/willkill07)

Approvers:
  - David Gardner (https://github.com/dagardner-nv)

URL: NVIDIA#952
@dagardner-nv dagardner-nv requested review from a team as code owners October 8, 2025 19:13
@dagardner-nv dagardner-nv self-assigned this Oct 8, 2025
@dagardner-nv dagardner-nv added improvement Improvement to existing functionality non-breaking Non-breaking change labels Oct 8, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 8, 2025

Walkthrough

This PR updates CI/CD (adds OpenSearch service, release branch rules), tightens config validation and logging behavior, adds .env loading, adjusts memory tools to async client retrieval, overhauls MCP session lifecycle, expands docs (Mermaid fences, UI/MCP guides), revises examples/tests, updates package metadata, and bumps the UI submodule.

Changes

Cohort / File(s) Summary
CI/CD and workflows
\.coderabbit.yaml, \.gitlab-ci.yml, ci/scripts/github/tests.sh, ci/scripts/gitlab/build_wheel.sh, tests/test_data/docker-compose.services.yml
Title check escalated to error; CI adds OpenSearch service/env and pull policies; runs slow tests; wheel uploads on release/*; docker-compose services for local tests.
Core runtime and logging
src/nat/cli/entrypoint.py, src/nat/observability/register.py, src/nat/builder/workflow_builder.py, src/nat/front_ends/console/console_front_end_plugin.py, src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py, src/nat/runtime/session.py
Load .env, standardize handler format; manage root handlers attach/restore; conditional console stdout; text tweaks (WebSocket capitalization).
Config models and utils
src/nat/data_models/config.py, src/nat/builder/component_utils.py
Forbid extra fields in GeneralConfig; traverse Pydantic model fields via class-level model_fields.
Memory tools (async client retrieval)
src/nat/tool/memory_tools/add_memory_tool.py, .../delete_memory_tool.py, .../get_memory_tool.py
Change default MemoryRef initialization; await builder.get_memory_client; description text adjustments.
MCP session lifecycle
packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
Add per-session stop_event/lifetime_task; refine session ID sourcing; restructure creation/cleanup under locks; unconditional session-aware tool path; new helper for random session IDs.
MCP tests
tests/nat/mcp/test_mcp_session_management.py, tests/nat/mcp/test_mcp_auth_provider.py, tests/nat/mcp/test_mcp_token_storage.py
Extensive lifecycle/cleanup tests; adjust mocks to MagicMock; add internal auth callback mocking.
Test infrastructure and helpers
packages/nvidia_nat_test/src/nat/test/utils.py, packages/nvidia_nat_test/src/nat/test/plugin.py, tests/conftest.py, tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py, tests/nat/front_ends/fastapi/test_openai_compatibility.py, tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py, packages/nvidia_nat_mysql/tests/test_mysql_object_store.py
Add build_nat_client async context manager; new SERPERDEV fixture; register empty function fixture; migrate tests to common client; mark slow test; change default MySQL password in tests.
ADK support in tests
packages/nvidia_nat_test/src/nat/test/llm.py, packages/nvidia_nat_test/tests/test_test_llm.py
Add Google ADK test LLM client and ADK test path with conditional import/skip.
Docs engine and Mermaid fences
docs/source/conf.py, docs/source/extend/telemetry-exporters.md, docs/source/reference/evaluate-api.md, docs/source/workflows/mcp/mcp-auth.md, docs/source/workflows/mcp/mcp-client.md, docs/source/index.md
Enable MyST mermaid fences; adjust copybutton prompt; convert {mermaid} to mermaid; diagram updates and minor text fixes.
Docs content updates
README.md, docs/source/quick-start/launching-ui.md, docs/source/workflows/llms/using-local-llms.md, docs/source/workflows/sizing-calc.md, examples/**/README.md
Update filenames, features, prerequisites, UI/WebSocket notes, vLLM/NAT instructions, and example payloads.
Examples configs and wiring
examples/.../configs/*.yml, examples/frameworks/adk_demo/src/nat_adk_demo/register.py
Move console logging under telemetry; remove use_uvloop flags; remove openai_llm from a config; add local agent import; add new custom-routes integration test.
Haystack deep research agent
examples/frameworks/haystack_deep_research_agent/pyproject.toml, .../tests/test_haystack_deep_research_agent.py
Update deps/extras/Python range; add OpenSearch URL fixture; switch to load_config/run_workflow; mark integration and use API key fixtures.
Root project and workspaces
pyproject.toml, external/nat-ui
Add python-dotenv; adjust uvicorn constraint; add license metadata and URLs; add nvidia_haystack extra; include haystack example in optional deps/workspace; update UI submodule ref.
Pydantic field access in tests
tests/nat/builder/test_component_utils.py, tests/nat/data_models/test_optimizable.py
Access model_fields via class definitions in tests.
Package metadata additions
packages/*/*/pyproject.toml (compat and nvidia_nat_* packages)
Add license, license-files, authors, maintainers, and project.urls across multiple subpackages; no runtime changes.
Weave exporter registration
packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
Switch to sanitize.add_redact_key API and import path update.
ADK plugin import cleanup
packages/nvidia_nat_adk/src/nat/plugins/adk/register.py, examples/frameworks/adk_demo/src/nat_adk_demo/register.py
Remove import of local agent in package; add import in example demo.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Caller
  participant MCPFunctionGroup as MCP FunctionGroup
  participant Cache as Session Cache
  participant Client as MCP Client
  participant Task as Lifetime Task

  Note over MCPFunctionGroup: Session-aware tool invocation (updated)

  Caller->>MCPFunctionGroup: invoke_tool(session_id?)
  MCPFunctionGroup->>MCPFunctionGroup: resolve_session_id (cookie/testing/default)
  MCPFunctionGroup->>Cache: check existing session
  alt session exists
    Cache-->>MCPFunctionGroup: SessionData(client, stop_event, lifetime_task)
  else create new
    MCPFunctionGroup->>MCPFunctionGroup: _create_session_client()
    MCPFunctionGroup-->>MCPFunctionGroup: (client, stop_event, lifetime_task)
    MCPFunctionGroup->>Cache: store SessionData
  end

  MCPFunctionGroup->>Client: use client within session context
  Client-->>Caller: tool result or "temporarily unavailable" on failure

  par Background lifetime
    Task-->>MCPFunctionGroup: inactivity timeout triggers
    MCPFunctionGroup->>Cache: mark for cleanup (outside writer lock)
    MCPFunctionGroup->>Client: graceful close using stop_event
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

breaking

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 68.64% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title succinctly and accurately describes the main action in imperative mood, clearly indicating the forward merge of the release branch into develop, and is under the 72-character limit.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@dagardner-nv dagardner-nv removed the request for review from a team October 8, 2025 19:16
@coderabbitai coderabbitai bot added the breaking Breaking change label Oct 8, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 12

Caution

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

⚠️ Outside diff range comments (5)
docs/source/workflows/llms/using-local-llms.md (1)

20-21: Fix first mention naming.

Per the docs style guide, the first reference must read “NVIDIA NeMo Agent toolkit.” Update the opening sentence accordingly.

-NeMo Agent toolkit has the ability to interact with locally hosted LLMs,
+NVIDIA NeMo Agent toolkit has the ability to interact with locally hosted LLMs,
packages/nvidia_nat_profiling/pyproject.toml (1)

25-25: Use two-digit version constraint for prefixspan.

The coding guidelines specify using ~=<two-digit> version constraints (e.g., ~=0.5 instead of ~=0.5.2).

As per coding guidelines: "Use ~= version constraints (e.g., ~=1.0) for dependencies"

Apply this diff:

-  "prefixspan~=0.5.2",
+  "prefixspan~=0.5",
packages/nvidia_nat_agno/pyproject.toml (1)

24-25: Use two-digit version constraints for dependencies.

Both agno and google-search-results use three-digit version constraints. The coding guidelines specify using ~=<two-digit> version constraints.

As per coding guidelines: "Use ~= version constraints (e.g., ~=1.0) for dependencies"

Apply this diff:

-  "agno~=1.2.3",
-  "google-search-results~=2.4.2",
+  "agno~=1.2",
+  "google-search-results~=2.4",
packages/nvidia_nat_redis/pyproject.toml (1)

24-24: Use two-digit version constraint for redis.

The coding guidelines specify using ~=<two-digit> version constraints (e.g., ~=4.3 instead of ~=4.3.4).

As per coding guidelines: "Use ~= version constraints (e.g., ~=1.0) for dependencies"

Apply this diff:

-  "redis~=4.3.4",
+  "redis~=4.3",
packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py (1)

230-257: Use logger.exception when swallowing exceptions.

Per project guidelines, whenever we catch an exception and do not re-raise it we must log with logger.exception() so the stack trace is preserved. These cleanup handlers currently call logger.warning(...) and drop the traceback. Please switch both catch blocks to logger.exception(...).

-                logger.warning("Error cleaning up session client %s: %s", truncate_session_id(session_id), e)
+                logger.exception("Error cleaning up session client %s", truncate_session_id(session_id))
...
-            except Exception as e:
-                logger.warning("Error cleaning up session client %s: %s", truncate_session_id(session_id), e)
+            except Exception:
+                logger.exception("Error cleaning up session client %s", truncate_session_id(session_id))
🧹 Nitpick comments (3)
src/nat/front_ends/console/console_front_end_plugin.py (1)

105-108: Use isinstance and effective levels when probing handlers.

The current all(type(h) is not logging.StreamHandler or h.level > logging.INFO ...) check treats any subclassed stream handler (e.g., logging.FileHandler, custom color handlers) as “not a stream handler”, so the fallback print() path triggers and duplicates output even when an INFO-capable console handler is already active. Please switch to isinstance(..., logging.StreamHandler) and compare against h.getEffectiveLevel() so only genuinely higher-threshold stream handlers trigger the fallback.

docs/source/workflows/mcp/mcp-auth.md (1)

156-157: Avoid bare URL (markdownlint MD034).

Wrap the URL to satisfy linters.

-- Connect to the UI at http://localhost:3000
+- Connect to the UI at <http://localhost:3000>
tests/nat/mcp/test_mcp_session_management.py (1)

34-50: Tighten cleanup helper: catch asyncio.TimeoutError explicitly.

Aligns with asyncio.wait_for behavior; keeps intent clear.

-                except (TimeoutError, asyncio.CancelledError):
+                except (asyncio.TimeoutError, asyncio.CancelledError):
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dc34299 and 5216b1e.

⛔ Files ignored due to path filters (3)
  • docs/source/_static/hitl_settings.png is excluded by !**/*.png
  • docs/source/_static/ui_home_page.png is excluded by !**/*.png
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (91)
  • .coderabbit.yaml (1 hunks)
  • .gitlab-ci.yml (3 hunks)
  • README.md (6 hunks)
  • ci/scripts/github/tests.sh (1 hunks)
  • ci/scripts/gitlab/build_wheel.sh (1 hunks)
  • docs/source/conf.py (1 hunks)
  • docs/source/extend/telemetry-exporters.md (2 hunks)
  • docs/source/index.md (1 hunks)
  • docs/source/quick-start/launching-ui.md (2 hunks)
  • docs/source/reference/evaluate-api.md (1 hunks)
  • docs/source/workflows/llms/using-local-llms.md (3 hunks)
  • docs/source/workflows/mcp/mcp-auth.md (3 hunks)
  • docs/source/workflows/mcp/mcp-client.md (0 hunks)
  • docs/source/workflows/sizing-calc.md (2 hunks)
  • examples/MCP/simple_auth_mcp/README.md (1 hunks)
  • examples/UI/README.md (1 hunks)
  • examples/advanced_agents/profiler_agent/README.md (2 hunks)
  • examples/agents/react/README.md (2 hunks)
  • examples/agents/tool_calling/README.md (2 hunks)
  • examples/evaluation_and_profiling/email_phishing_analyzer/configs/config_optimizer.yml (0 hunks)
  • examples/frameworks/adk_demo/configs/config.yml (0 hunks)
  • examples/frameworks/adk_demo/src/nat_adk_demo/register.py (1 hunks)
  • examples/frameworks/haystack_deep_research_agent/pyproject.toml (1 hunks)
  • examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py (1 hunks)
  • examples/frameworks/multi_frameworks/pyproject.toml (1 hunks)
  • examples/front_ends/simple_auth/README.md (2 hunks)
  • examples/front_ends/simple_auth/src/nat_simple_auth/configs/config.yml (1 hunks)
  • examples/front_ends/simple_calculator_custom_routes/configs/config-metadata.yml (0 hunks)
  • examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py (1 hunks)
  • external/nat-ui (1 hunks)
  • packages/compat/aiqtoolkit/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_agno/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_crewai/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_langchain/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_llama_index/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_mem0ai/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_semantic_kernel/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_test/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_weave/pyproject.toml (1 hunks)
  • packages/compat/aiqtoolkit_zep_cloud/pyproject.toml (1 hunks)
  • packages/nvidia_nat_adk/pyproject.toml (1 hunks)
  • packages/nvidia_nat_adk/src/nat/plugins/adk/register.py (0 hunks)
  • packages/nvidia_nat_agno/pyproject.toml (1 hunks)
  • packages/nvidia_nat_all/pyproject.toml (1 hunks)
  • packages/nvidia_nat_crewai/pyproject.toml (1 hunks)
  • packages/nvidia_nat_data_flywheel/pyproject.toml (1 hunks)
  • packages/nvidia_nat_ingestion/pyproject.toml (1 hunks)
  • packages/nvidia_nat_langchain/pyproject.toml (1 hunks)
  • packages/nvidia_nat_llama_index/pyproject.toml (1 hunks)
  • packages/nvidia_nat_mcp/pyproject.toml (1 hunks)
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py (11 hunks)
  • packages/nvidia_nat_mem0ai/pyproject.toml (1 hunks)
  • packages/nvidia_nat_mysql/pyproject.toml (1 hunks)
  • packages/nvidia_nat_mysql/tests/test_mysql_object_store.py (2 hunks)
  • packages/nvidia_nat_opentelemetry/pyproject.toml (1 hunks)
  • packages/nvidia_nat_phoenix/pyproject.toml (1 hunks)
  • packages/nvidia_nat_profiling/pyproject.toml (1 hunks)
  • packages/nvidia_nat_ragaai/pyproject.toml (1 hunks)
  • packages/nvidia_nat_redis/pyproject.toml (1 hunks)
  • packages/nvidia_nat_s3/pyproject.toml (1 hunks)
  • packages/nvidia_nat_semantic_kernel/pyproject.toml (1 hunks)
  • packages/nvidia_nat_test/pyproject.toml (1 hunks)
  • packages/nvidia_nat_test/src/nat/test/llm.py (1 hunks)
  • packages/nvidia_nat_test/src/nat/test/plugin.py (1 hunks)
  • packages/nvidia_nat_test/src/nat/test/utils.py (2 hunks)
  • packages/nvidia_nat_test/tests/test_test_llm.py (3 hunks)
  • packages/nvidia_nat_weave/pyproject.toml (1 hunks)
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py (1 hunks)
  • packages/nvidia_nat_zep_cloud/pyproject.toml (1 hunks)
  • pyproject.toml (5 hunks)
  • src/nat/builder/component_utils.py (1 hunks)
  • src/nat/builder/workflow_builder.py (4 hunks)
  • src/nat/cli/entrypoint.py (2 hunks)
  • src/nat/data_models/config.py (1 hunks)
  • src/nat/front_ends/console/console_front_end_plugin.py (1 hunks)
  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py (1 hunks)
  • src/nat/observability/register.py (2 hunks)
  • src/nat/runtime/session.py (1 hunks)
  • src/nat/tool/memory_tools/add_memory_tool.py (2 hunks)
  • src/nat/tool/memory_tools/delete_memory_tool.py (2 hunks)
  • src/nat/tool/memory_tools/get_memory_tool.py (2 hunks)
  • tests/conftest.py (1 hunks)
  • tests/nat/builder/test_component_utils.py (1 hunks)
  • tests/nat/data_models/test_optimizable.py (5 hunks)
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py (1 hunks)
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py (8 hunks)
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py (7 hunks)
  • tests/nat/mcp/test_mcp_auth_provider.py (14 hunks)
  • tests/nat/mcp/test_mcp_session_management.py (12 hunks)
  • tests/nat/mcp/test_mcp_token_storage.py (1 hunks)
  • tests/test_data/docker-compose.services.yml (1 hunks)
💤 Files with no reviewable changes (5)
  • examples/frameworks/adk_demo/configs/config.yml
  • examples/front_ends/simple_calculator_custom_routes/configs/config-metadata.yml
  • docs/source/workflows/mcp/mcp-client.md
  • packages/nvidia_nat_adk/src/nat/plugins/adk/register.py
  • examples/evaluation_and_profiling/email_phishing_analyzer/configs/config_optimizer.yml
🧰 Additional context used
📓 Path-based instructions (21)
{scripts/**,ci/scripts/**}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Shell or utility scripts belong in scripts/ or ci/scripts/ and must not be mixed with library code

Files:

  • ci/scripts/gitlab/build_wheel.sh
  • ci/scripts/github/tests.sh
**/*

⚙️ CodeRabbit configuration file

**/*: # Code Review Instructions

  • Ensure the code follows best practices and coding standards. - For Python code, follow
    PEP 20 and
    PEP 8 for style guidelines.
  • Check for security vulnerabilities and potential issues. - Python methods should use type hints for all parameters and return values.
    Example:
    def my_function(param1: int, param2: str) -> bool:
        pass
  • For Python exception handling, ensure proper stack trace preservation:
    • When re-raising exceptions: use bare raise statements to maintain the original stack trace,
      and use logger.error() (not logger.exception()) to avoid duplicate stack trace output.
    • When catching and logging exceptions without re-raising: always use logger.exception()
      to capture the full stack trace information.

Documentation Review Instructions - Verify that documentation and comments are clear and comprehensive. - Verify that the documentation doesn't contain any TODOs, FIXMEs or placeholder text like "lorem ipsum". - Verify that the documentation doesn't contain any offensive or outdated terms. - Verify that documentation and comments are free of spelling mistakes, ensure the documentation doesn't contain any

words listed in the ci/vale/styles/config/vocabularies/nat/reject.txt file, words that might appear to be
spelling mistakes but are listed in the ci/vale/styles/config/vocabularies/nat/accept.txt file are OK.

Misc. - All code (except .mdc files that contain Cursor rules) should be licensed under the Apache License 2.0,

and should contain an Apache License 2.0 header comment at the top of each file.

  • Confirm that copyright years are up-to date whenever a file is changed.

Files:

  • ci/scripts/gitlab/build_wheel.sh
  • docs/source/extend/telemetry-exporters.md
  • tests/nat/mcp/test_mcp_token_storage.py
  • packages/nvidia_nat_test/src/nat/test/plugin.py
  • packages/compat/aiqtoolkit_weave/pyproject.toml
  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • examples/advanced_agents/profiler_agent/README.md
  • docs/source/conf.py
  • packages/compat/aiqtoolkit/pyproject.toml
  • docs/source/quick-start/launching-ui.md
  • docs/source/index.md
  • src/nat/data_models/config.py
  • tests/nat/builder/test_component_utils.py
  • examples/front_ends/simple_auth/README.md
  • packages/nvidia_nat_langchain/pyproject.toml
  • packages/nvidia_nat_all/pyproject.toml
  • src/nat/runtime/session.py
  • tests/conftest.py
  • examples/agents/tool_calling/README.md
  • src/nat/builder/workflow_builder.py
  • packages/compat/aiqtoolkit_llama_index/pyproject.toml
  • packages/nvidia_nat_phoenix/pyproject.toml
  • packages/nvidia_nat_data_flywheel/pyproject.toml
  • packages/nvidia_nat_crewai/pyproject.toml
  • packages/nvidia_nat_mcp/pyproject.toml
  • packages/nvidia_nat_ragaai/pyproject.toml
  • packages/nvidia_nat_ingestion/pyproject.toml
  • packages/nvidia_nat_redis/pyproject.toml
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • docs/source/workflows/llms/using-local-llms.md
  • packages/compat/aiqtoolkit_zep_cloud/pyproject.toml
  • examples/frameworks/multi_frameworks/pyproject.toml
  • packages/nvidia_nat_test/pyproject.toml
  • src/nat/observability/register.py
  • examples/MCP/simple_auth_mcp/README.md
  • docs/source/workflows/sizing-calc.md
  • packages/nvidia_nat_s3/pyproject.toml
  • tests/nat/data_models/test_optimizable.py
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
  • examples/agents/react/README.md
  • tests/nat/mcp/test_mcp_auth_provider.py
  • tests/test_data/docker-compose.services.yml
  • packages/compat/aiqtoolkit_semantic_kernel/pyproject.toml
  • src/nat/tool/memory_tools/add_memory_tool.py
  • packages/nvidia_nat_llama_index/pyproject.toml
  • packages/nvidia_nat_test/src/nat/test/utils.py
  • examples/frameworks/haystack_deep_research_agent/pyproject.toml
  • packages/nvidia_nat_zep_cloud/pyproject.toml
  • external/nat-ui
  • packages/nvidia_nat_agno/pyproject.toml
  • examples/front_ends/simple_auth/src/nat_simple_auth/configs/config.yml
  • examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py
  • packages/nvidia_nat_mem0ai/pyproject.toml
  • packages/nvidia_nat_test/tests/test_test_llm.py
  • docs/source/reference/evaluate-api.md
  • examples/frameworks/adk_demo/src/nat_adk_demo/register.py
  • src/nat/cli/entrypoint.py
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py
  • examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py
  • packages/nvidia_nat_weave/pyproject.toml
  • README.md
  • packages/nvidia_nat_profiling/pyproject.toml
  • packages/compat/aiqtoolkit_test/pyproject.toml
  • ci/scripts/github/tests.sh
  • packages/nvidia_nat_mysql/pyproject.toml
  • packages/compat/aiqtoolkit_crewai/pyproject.toml
  • packages/nvidia_nat_adk/pyproject.toml
  • packages/nvidia_nat_semantic_kernel/pyproject.toml
  • examples/UI/README.md
  • packages/nvidia_nat_mysql/tests/test_mysql_object_store.py
  • docs/source/workflows/mcp/mcp-auth.md
  • packages/compat/aiqtoolkit_langchain/pyproject.toml
  • packages/compat/aiqtoolkit_mem0ai/pyproject.toml
  • src/nat/builder/component_utils.py
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py
  • tests/nat/mcp/test_mcp_session_management.py
  • packages/nvidia_nat_test/src/nat/test/llm.py
  • packages/compat/aiqtoolkit_agno/pyproject.toml
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
  • src/nat/tool/memory_tools/get_memory_tool.py
  • packages/nvidia_nat_opentelemetry/pyproject.toml
  • pyproject.toml
docs/source/**/*.md

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

docs/source/**/*.md: Use the official naming throughout documentation: first use “NVIDIA NeMo Agent toolkit”, subsequent “NeMo Agent toolkit”; never use deprecated names (Agent Intelligence toolkit, aiqtoolkit, AgentIQ, AIQ/aiq)
Documentation sources are Markdown files under docs/source; images belong in docs/source/_static
Keep docs in sync with code; documentation pipeline must pass Sphinx and link checks; avoid TODOs/FIXMEs/placeholders; avoid offensive/outdated terms; ensure spelling correctness
Do not use words listed in ci/vale/styles/config/vocabularies/nat/reject.txt; accepted terms in accept.txt are allowed

Files:

  • docs/source/extend/telemetry-exporters.md
  • docs/source/quick-start/launching-ui.md
  • docs/source/index.md
  • docs/source/workflows/llms/using-local-llms.md
  • docs/source/workflows/sizing-calc.md
  • docs/source/reference/evaluate-api.md
  • docs/source/workflows/mcp/mcp-auth.md
docs/source/**/*

⚙️ CodeRabbit configuration file

This directory contains the source code for the documentation. All documentation should be written in Markdown format. Any image files should be placed in the docs/source/_static directory.

Files:

  • docs/source/extend/telemetry-exporters.md
  • docs/source/conf.py
  • docs/source/quick-start/launching-ui.md
  • docs/source/index.md
  • docs/source/workflows/llms/using-local-llms.md
  • docs/source/workflows/sizing-calc.md
  • docs/source/reference/evaluate-api.md
  • docs/source/workflows/mcp/mcp-auth.md
**/*.{py,yaml,yml}

📄 CodeRabbit inference engine (.cursor/rules/nat-test-llm.mdc)

**/*.{py,yaml,yml}: Configure response_seq as a list of strings; values cycle per call, and [] yields an empty string.
Configure delay_ms to inject per-call artificial latency in milliseconds for nat_test_llm.

Files:

  • tests/nat/mcp/test_mcp_token_storage.py
  • packages/nvidia_nat_test/src/nat/test/plugin.py
  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • docs/source/conf.py
  • src/nat/data_models/config.py
  • tests/nat/builder/test_component_utils.py
  • src/nat/runtime/session.py
  • tests/conftest.py
  • src/nat/builder/workflow_builder.py
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • src/nat/observability/register.py
  • tests/nat/data_models/test_optimizable.py
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
  • tests/nat/mcp/test_mcp_auth_provider.py
  • tests/test_data/docker-compose.services.yml
  • src/nat/tool/memory_tools/add_memory_tool.py
  • packages/nvidia_nat_test/src/nat/test/utils.py
  • examples/front_ends/simple_auth/src/nat_simple_auth/configs/config.yml
  • examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py
  • packages/nvidia_nat_test/tests/test_test_llm.py
  • examples/frameworks/adk_demo/src/nat_adk_demo/register.py
  • src/nat/cli/entrypoint.py
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py
  • examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py
  • packages/nvidia_nat_mysql/tests/test_mysql_object_store.py
  • src/nat/builder/component_utils.py
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py
  • tests/nat/mcp/test_mcp_session_management.py
  • packages/nvidia_nat_test/src/nat/test/llm.py
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
  • src/nat/tool/memory_tools/get_memory_tool.py
**/*.py

📄 CodeRabbit inference engine (.cursor/rules/nat-test-llm.mdc)

**/*.py: Programmatic use: create TestLLMConfig(response_seq=[...], delay_ms=...), add with builder.add_llm("", cfg).
When retrieving the test LLM wrapper, use builder.get_llm(name, wrapper_type=LLMFrameworkEnum.) and call the framework’s method (e.g., ainvoke, achat, call).

**/*.py: In code comments/identifiers use NAT abbreviations as specified: nat for API namespace/CLI, nvidia-nat for package name, NAT for env var prefixes; do not use these abbreviations in documentation
Follow PEP 20 and PEP 8; run yapf with column_limit=120; use 4-space indentation; end files with a single trailing newline
Run ruff check --fix as linter (not formatter) using pyproject.toml config; fix warnings unless explicitly ignored
Respect naming: snake_case for functions/variables, PascalCase for classes, UPPER_CASE for constants
Treat pyright warnings as errors during development
Exception handling: use bare raise to re-raise; log with logger.error() when re-raising to avoid duplicate stack traces; use logger.exception() when catching without re-raising
Provide Google-style docstrings for every public module, class, function, and CLI command; first line concise and ending with a period; surround code entities with backticks
Validate and sanitize all user input, especially in web or CLI interfaces
Prefer httpx with SSL verification enabled by default and follow OWASP Top-10 recommendations
Use async/await for I/O-bound work; profile CPU-heavy paths with cProfile or mprof before optimizing; cache expensive computations with functools.lru_cache or external cache; leverage NumPy vectorized operations when beneficial

Files:

  • tests/nat/mcp/test_mcp_token_storage.py
  • packages/nvidia_nat_test/src/nat/test/plugin.py
  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • docs/source/conf.py
  • src/nat/data_models/config.py
  • tests/nat/builder/test_component_utils.py
  • src/nat/runtime/session.py
  • tests/conftest.py
  • src/nat/builder/workflow_builder.py
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • src/nat/observability/register.py
  • tests/nat/data_models/test_optimizable.py
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
  • tests/nat/mcp/test_mcp_auth_provider.py
  • src/nat/tool/memory_tools/add_memory_tool.py
  • packages/nvidia_nat_test/src/nat/test/utils.py
  • examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py
  • packages/nvidia_nat_test/tests/test_test_llm.py
  • examples/frameworks/adk_demo/src/nat_adk_demo/register.py
  • src/nat/cli/entrypoint.py
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py
  • examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py
  • packages/nvidia_nat_mysql/tests/test_mysql_object_store.py
  • src/nat/builder/component_utils.py
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py
  • tests/nat/mcp/test_mcp_session_management.py
  • packages/nvidia_nat_test/src/nat/test/llm.py
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
  • src/nat/tool/memory_tools/get_memory_tool.py
tests/**/*.py

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Unit tests reside under tests/ and should use markers defined in pyproject.toml (e.g., integration)

Files:

  • tests/nat/mcp/test_mcp_token_storage.py
  • tests/nat/builder/test_component_utils.py
  • tests/conftest.py
  • tests/nat/data_models/test_optimizable.py
  • tests/nat/mcp/test_mcp_auth_provider.py
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py
  • tests/nat/mcp/test_mcp_session_management.py

⚙️ CodeRabbit configuration file

tests/**/*.py: - Ensure that tests are comprehensive, cover edge cases, and validate the functionality of the code. - Test functions should be named using the test_ prefix, using snake_case. - Any frequently repeated code should be extracted into pytest fixtures. - Pytest fixtures should define the name argument when applying the pytest.fixture decorator. The fixture
function being decorated should be named using the fixture_ prefix, using snake_case. Example:
@pytest.fixture(name="my_fixture")
def fixture_my_fixture():
pass

Files:

  • tests/nat/mcp/test_mcp_token_storage.py
  • tests/nat/builder/test_component_utils.py
  • tests/conftest.py
  • tests/nat/data_models/test_optimizable.py
  • tests/nat/mcp/test_mcp_auth_provider.py
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py
  • tests/nat/mcp/test_mcp_session_management.py
{tests/**/*.py,examples/*/tests/**/*.py}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

{tests/**/*.py,examples/*/tests/**/*.py}: Use pytest (with pytest-asyncio for async); name test files test_*.py; test functions start with test_; extract repeated code into fixtures; fixtures must set name in decorator and be named with fixture_ prefix
Mock external services with pytest_httpserver or unittest.mock; do not hit live endpoints
Mark expensive tests with @pytest.mark.slow or @pytest.mark.integration

Files:

  • tests/nat/mcp/test_mcp_token_storage.py
  • tests/nat/builder/test_component_utils.py
  • tests/conftest.py
  • tests/nat/data_models/test_optimizable.py
  • tests/nat/mcp/test_mcp_auth_provider.py
  • tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py
  • tests/nat/front_ends/auth_flow_handlers/test_websocket_flow_handler.py
  • tests/nat/front_ends/fastapi/test_openai_compatibility.py
  • tests/nat/mcp/test_mcp_session_management.py
packages/*/src/**/*.py

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Importable Python code inside packages must live under packages//src/

Files:

  • packages/nvidia_nat_test/src/nat/test/plugin.py
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
  • packages/nvidia_nat_test/src/nat/test/utils.py
  • packages/nvidia_nat_test/src/nat/test/llm.py
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
{src/**/*.py,packages/*/src/**/*.py}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

All public APIs must have Python 3.11+ type hints on parameters and return values; prefer typing/collections.abc abstractions; use typing.Annotated when useful

Files:

  • packages/nvidia_nat_test/src/nat/test/plugin.py
  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • src/nat/data_models/config.py
  • src/nat/runtime/session.py
  • src/nat/builder/workflow_builder.py
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • src/nat/observability/register.py
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
  • src/nat/tool/memory_tools/add_memory_tool.py
  • packages/nvidia_nat_test/src/nat/test/utils.py
  • src/nat/cli/entrypoint.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • src/nat/builder/component_utils.py
  • packages/nvidia_nat_test/src/nat/test/llm.py
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
  • src/nat/tool/memory_tools/get_memory_tool.py
packages/**/*

⚙️ CodeRabbit configuration file

packages/**/*: - This directory contains optional plugin packages for the toolkit, each should contain a pyproject.toml file. - The pyproject.toml file should declare a dependency on nvidia-nat or another package with a name starting
with nvidia-nat-. This dependency should be declared using ~=<version>, and the version should be a two
digit version (ex: ~=1.0).

  • Not all packages contain Python code, if they do they should also contain their own set of tests, in a
    tests/ directory at the same level as the pyproject.toml file.

Files:

  • packages/nvidia_nat_test/src/nat/test/plugin.py
  • packages/compat/aiqtoolkit_weave/pyproject.toml
  • packages/compat/aiqtoolkit/pyproject.toml
  • packages/nvidia_nat_langchain/pyproject.toml
  • packages/nvidia_nat_all/pyproject.toml
  • packages/compat/aiqtoolkit_llama_index/pyproject.toml
  • packages/nvidia_nat_phoenix/pyproject.toml
  • packages/nvidia_nat_data_flywheel/pyproject.toml
  • packages/nvidia_nat_crewai/pyproject.toml
  • packages/nvidia_nat_mcp/pyproject.toml
  • packages/nvidia_nat_ragaai/pyproject.toml
  • packages/nvidia_nat_ingestion/pyproject.toml
  • packages/nvidia_nat_redis/pyproject.toml
  • packages/compat/aiqtoolkit_zep_cloud/pyproject.toml
  • packages/nvidia_nat_test/pyproject.toml
  • packages/nvidia_nat_s3/pyproject.toml
  • packages/nvidia_nat_weave/src/nat/plugins/weave/register.py
  • packages/compat/aiqtoolkit_semantic_kernel/pyproject.toml
  • packages/nvidia_nat_llama_index/pyproject.toml
  • packages/nvidia_nat_test/src/nat/test/utils.py
  • packages/nvidia_nat_zep_cloud/pyproject.toml
  • packages/nvidia_nat_agno/pyproject.toml
  • packages/nvidia_nat_mem0ai/pyproject.toml
  • packages/nvidia_nat_test/tests/test_test_llm.py
  • packages/nvidia_nat_weave/pyproject.toml
  • packages/nvidia_nat_profiling/pyproject.toml
  • packages/compat/aiqtoolkit_test/pyproject.toml
  • packages/nvidia_nat_mysql/pyproject.toml
  • packages/compat/aiqtoolkit_crewai/pyproject.toml
  • packages/nvidia_nat_adk/pyproject.toml
  • packages/nvidia_nat_semantic_kernel/pyproject.toml
  • packages/nvidia_nat_mysql/tests/test_mysql_object_store.py
  • packages/compat/aiqtoolkit_langchain/pyproject.toml
  • packages/compat/aiqtoolkit_mem0ai/pyproject.toml
  • packages/nvidia_nat_test/src/nat/test/llm.py
  • packages/compat/aiqtoolkit_agno/pyproject.toml
  • packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py
  • packages/nvidia_nat_opentelemetry/pyproject.toml
src/**/*.py

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

All importable Python code must live under src/ (or packages//src/)

Files:

  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • src/nat/data_models/config.py
  • src/nat/runtime/session.py
  • src/nat/builder/workflow_builder.py
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • src/nat/observability/register.py
  • src/nat/tool/memory_tools/add_memory_tool.py
  • src/nat/cli/entrypoint.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • src/nat/builder/component_utils.py
  • src/nat/tool/memory_tools/get_memory_tool.py
src/nat/**/*

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Changes in src/nat should prioritize backward compatibility

Files:

  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • src/nat/data_models/config.py
  • src/nat/runtime/session.py
  • src/nat/builder/workflow_builder.py
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • src/nat/observability/register.py
  • src/nat/tool/memory_tools/add_memory_tool.py
  • src/nat/cli/entrypoint.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • src/nat/builder/component_utils.py
  • src/nat/tool/memory_tools/get_memory_tool.py

⚙️ CodeRabbit configuration file

This directory contains the core functionality of the toolkit. Changes should prioritize backward compatibility.

Files:

  • src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
  • src/nat/data_models/config.py
  • src/nat/runtime/session.py
  • src/nat/builder/workflow_builder.py
  • src/nat/tool/memory_tools/delete_memory_tool.py
  • src/nat/observability/register.py
  • src/nat/tool/memory_tools/add_memory_tool.py
  • src/nat/cli/entrypoint.py
  • src/nat/front_ends/console/console_front_end_plugin.py
  • src/nat/builder/component_utils.py
  • src/nat/tool/memory_tools/get_memory_tool.py
**/README.@(md|ipynb)

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Ensure READMEs follow the naming convention; avoid deprecated names; use “NeMo Agent Toolkit” (capital T) in headings

Files:

  • examples/advanced_agents/profiler_agent/README.md
  • examples/front_ends/simple_auth/README.md
  • examples/agents/tool_calling/README.md
  • examples/MCP/simple_auth_mcp/README.md
  • examples/agents/react/README.md
  • README.md
  • examples/UI/README.md
examples/**/*

⚙️ CodeRabbit configuration file

examples/**/*: - This directory contains example code and usage scenarios for the toolkit, at a minimum an example should
contain a README.md or file README.ipynb.

  • If an example contains Python code, it should be placed in a subdirectory named src/ and should
    contain a pyproject.toml file. Optionally, it might also contain scripts in a scripts/ directory.
  • If an example contains YAML files, they should be placed in a subdirectory named configs/. - If an example contains sample data files, they should be placed in a subdirectory named data/, and should
    be checked into git-lfs.

Files:

  • examples/advanced_agents/profiler_agent/README.md
  • examples/front_ends/simple_auth/README.md
  • examples/agents/tool_calling/README.md
  • examples/frameworks/multi_frameworks/pyproject.toml
  • examples/MCP/simple_auth_mcp/README.md
  • examples/agents/react/README.md
  • examples/frameworks/haystack_deep_research_agent/pyproject.toml
  • examples/front_ends/simple_auth/src/nat_simple_auth/configs/config.yml
  • examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py
  • examples/frameworks/adk_demo/src/nat_adk_demo/register.py
  • examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py
  • examples/UI/README.md
packages/*/pyproject.toml

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

packages/*/pyproject.toml: Each package must contain a pyproject.toml
In packages, declare a dependency on nvidia-nat or packages starting with nvidia-nat-
Use ~= version constraints (e.g., ~=1.0) for dependencies

Files:

  • packages/nvidia_nat_langchain/pyproject.toml
  • packages/nvidia_nat_all/pyproject.toml
  • packages/nvidia_nat_phoenix/pyproject.toml
  • packages/nvidia_nat_data_flywheel/pyproject.toml
  • packages/nvidia_nat_crewai/pyproject.toml
  • packages/nvidia_nat_mcp/pyproject.toml
  • packages/nvidia_nat_ragaai/pyproject.toml
  • packages/nvidia_nat_ingestion/pyproject.toml
  • packages/nvidia_nat_redis/pyproject.toml
  • packages/nvidia_nat_test/pyproject.toml
  • packages/nvidia_nat_s3/pyproject.toml
  • packages/nvidia_nat_llama_index/pyproject.toml
  • packages/nvidia_nat_zep_cloud/pyproject.toml
  • packages/nvidia_nat_agno/pyproject.toml
  • packages/nvidia_nat_mem0ai/pyproject.toml
  • packages/nvidia_nat_weave/pyproject.toml
  • packages/nvidia_nat_profiling/pyproject.toml
  • packages/nvidia_nat_mysql/pyproject.toml
  • packages/nvidia_nat_adk/pyproject.toml
  • packages/nvidia_nat_semantic_kernel/pyproject.toml
  • packages/nvidia_nat_opentelemetry/pyproject.toml
{packages/*/pyproject.toml,uv.lock}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Add new dependencies to both pyproject.toml (alphabetically) and uv.lock via uv pip install --sync

Files:

  • packages/nvidia_nat_langchain/pyproject.toml
  • packages/nvidia_nat_all/pyproject.toml
  • packages/nvidia_nat_phoenix/pyproject.toml
  • packages/nvidia_nat_data_flywheel/pyproject.toml
  • packages/nvidia_nat_crewai/pyproject.toml
  • packages/nvidia_nat_mcp/pyproject.toml
  • packages/nvidia_nat_ragaai/pyproject.toml
  • packages/nvidia_nat_ingestion/pyproject.toml
  • packages/nvidia_nat_redis/pyproject.toml
  • packages/nvidia_nat_test/pyproject.toml
  • packages/nvidia_nat_s3/pyproject.toml
  • packages/nvidia_nat_llama_index/pyproject.toml
  • packages/nvidia_nat_zep_cloud/pyproject.toml
  • packages/nvidia_nat_agno/pyproject.toml
  • packages/nvidia_nat_mem0ai/pyproject.toml
  • packages/nvidia_nat_weave/pyproject.toml
  • packages/nvidia_nat_profiling/pyproject.toml
  • packages/nvidia_nat_mysql/pyproject.toml
  • packages/nvidia_nat_adk/pyproject.toml
  • packages/nvidia_nat_semantic_kernel/pyproject.toml
  • packages/nvidia_nat_opentelemetry/pyproject.toml
**/*.{yaml,yml}

📄 CodeRabbit inference engine (.cursor/rules/nat-test-llm.mdc)

In workflow/config YAML, set llms.._type: nat_test_llm to stub responses.

Files:

  • tests/test_data/docker-compose.services.yml
  • examples/front_ends/simple_auth/src/nat_simple_auth/configs/config.yml
**/configs/**

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Configuration files consumed by code must be stored next to that code in a configs/ folder

Files:

  • examples/front_ends/simple_auth/src/nat_simple_auth/configs/config.yml
packages/*/tests/**/*.py

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

If a package contains Python code, include tests in a tests/ directory at the same level as pyproject.toml

Files:

  • packages/nvidia_nat_test/tests/test_test_llm.py
  • packages/nvidia_nat_mysql/tests/test_mysql_object_store.py
examples/*/README.@(md|ipynb)

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Each example must include a README.md or README.ipynb

Files:

  • examples/UI/README.md
🧠 Learnings (3)
📚 Learning: 2025-09-23T18:39:15.023Z
Learnt from: CR
PR: NVIDIA/NeMo-Agent-Toolkit#0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2025-09-23T18:39:15.023Z
Learning: Applies to **/README.@(md|ipynb) : Ensure READMEs follow the naming convention; avoid deprecated names; use “NeMo Agent Toolkit” (capital T) in headings

Applied to files:

  • examples/advanced_agents/profiler_agent/README.md
📚 Learning: 2025-09-23T18:39:15.023Z
Learnt from: CR
PR: NVIDIA/NeMo-Agent-Toolkit#0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2025-09-23T18:39:15.023Z
Learning: Applies to packages/*/pyproject.toml : In packages, declare a dependency on nvidia-nat or packages starting with nvidia-nat-

Applied to files:

  • packages/nvidia_nat_langchain/pyproject.toml
  • packages/nvidia_nat_all/pyproject.toml
  • packages/nvidia_nat_phoenix/pyproject.toml
  • packages/nvidia_nat_data_flywheel/pyproject.toml
  • packages/nvidia_nat_crewai/pyproject.toml
  • packages/nvidia_nat_mcp/pyproject.toml
  • packages/nvidia_nat_ingestion/pyproject.toml
  • packages/nvidia_nat_redis/pyproject.toml
  • examples/frameworks/multi_frameworks/pyproject.toml
  • packages/nvidia_nat_test/pyproject.toml
  • packages/nvidia_nat_s3/pyproject.toml
  • packages/nvidia_nat_llama_index/pyproject.toml
  • packages/nvidia_nat_zep_cloud/pyproject.toml
  • packages/nvidia_nat_agno/pyproject.toml
  • packages/nvidia_nat_mem0ai/pyproject.toml
  • packages/nvidia_nat_weave/pyproject.toml
  • packages/nvidia_nat_profiling/pyproject.toml
  • packages/nvidia_nat_mysql/pyproject.toml
  • packages/nvidia_nat_adk/pyproject.toml
  • packages/nvidia_nat_semantic_kernel/pyproject.toml
  • packages/nvidia_nat_opentelemetry/pyproject.toml
📚 Learning: 2025-09-09T20:32:39.016Z
Learnt from: CR
PR: NVIDIA/NeMo-Agent-Toolkit#0
File: .cursor/rules/nat-test-llm.mdc:0-0
Timestamp: 2025-09-09T20:32:39.016Z
Learning: Applies to **/*.py : When retrieving the test LLM wrapper, use builder.get_llm(name, wrapper_type=LLMFrameworkEnum.<FRAMEWORK>) and call the framework’s method (e.g., ainvoke, achat, call).

Applied to files:

  • packages/nvidia_nat_test/tests/test_test_llm.py
🧬 Code graph analysis (14)
tests/nat/mcp/test_mcp_token_storage.py (2)
src/nat/authentication/oauth2/oauth2_auth_code_flow_provider.py (1)
  • _set_custom_auth_callback (81-84)
packages/nvidia_nat_mcp/src/nat/plugins/mcp/auth/auth_provider.py (1)
  • _set_custom_auth_callback (319-327)
tests/conftest.py (2)
src/nat/builder/builder.py (1)
  • Builder (68-290)
src/nat/data_models/function.py (1)
  • EmptyFunctionConfig (58-59)
src/nat/tool/memory_tools/delete_memory_tool.py (2)
src/nat/data_models/component_ref.py (1)
  • MemoryRef (127-135)
examples/object_store/user_report/tests/test_objext_store_example_user_report_tool.py (1)
  • builder (29-40)
tests/nat/mcp/test_mcp_auth_provider.py (1)
tests/nat/authentication/test_bearer_token_validator.py (1)
  • raise_for_status (114-116)
src/nat/tool/memory_tools/add_memory_tool.py (1)
src/nat/data_models/component_ref.py (1)
  • MemoryRef (127-135)
packages/nvidia_nat_test/src/nat/test/utils.py (1)
src/nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py (2)
  • FastApiFrontEndPluginWorker (222-1253)
  • build_app (129-154)
packages/nvidia_nat_test/tests/test_test_llm.py (2)
src/nat/builder/framework_enum.py (1)
  • LLMFrameworkEnum (19-25)
packages/nvidia_nat_test/src/nat/test/llm.py (1)
  • generate_content_async (225-231)
tests/nat/front_ends/fastapi/test_fastapi_front_end_plugin.py (1)
packages/nvidia_nat_test/src/nat/test/utils.py (1)
  • build_nat_client (97-127)
examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py (1)
packages/nvidia_nat_test/src/nat/test/utils.py (1)
  • build_nat_client (97-127)
tests/nat/front_ends/fastapi/test_openai_compatibility.py (1)
packages/nvidia_nat_test/src/nat/test/utils.py (1)
  • build_nat_client (97-127)
tests/nat/mcp/test_mcp_session_management.py (1)
packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py (6)
  • SessionData (40-49)
  • cleanup_sessions (186-199)
  • _create_session_client (347-413)
  • _cleanup_inactive_sessions (201-256)
  • _get_session_client (258-314)
  • _session_usage_context (317-345)
packages/nvidia_nat_test/src/nat/test/llm.py (2)
src/nat/builder/framework_enum.py (1)
  • LLMFrameworkEnum (19-25)
src/nat/builder/builder.py (1)
  • Builder (68-290)
packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py (5)
src/nat/builder/function.py (1)
  • FunctionGroup (352-714)
src/nat/builder/context.py (1)
  • Context (117-315)
packages/nvidia_nat_mcp/src/nat/plugins/mcp/utils.py (1)
  • truncate_session_id (24-37)
packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_base.py (2)
  • MCPBaseClient (128-407)
  • name (598-600)
tests/nat/mcp/test_mcp_session_management.py (1)
  • function_group (92-98)
src/nat/tool/memory_tools/get_memory_tool.py (1)
src/nat/data_models/component_ref.py (1)
  • MemoryRef (127-135)
🪛 markdownlint-cli2 (0.18.1)
examples/front_ends/simple_auth/README.md

146-146: Bare URL used

(MD034, no-bare-urls)

examples/MCP/simple_auth_mcp/README.md

76-76: Bare URL used

(MD034, no-bare-urls)

docs/source/workflows/mcp/mcp-auth.md

156-156: Bare URL used

(MD034, no-bare-urls)

🪛 Ruff (0.13.3)
tests/conftest.py

594-594: Unused function argument: config

(ARG001)


594-594: Unused function argument: builder

(ARG001)

examples/frameworks/haystack_deep_research_agent/tests/test_haystack_deep_research_agent.py

27-27: Audit URL open for permitted schemes. Allowing use of file: or custom schemes is often unexpected.

(S310)


29-29: Do not catch blind exception: Exception

(BLE001)


32-32: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)

examples/front_ends/simple_calculator_custom_routes/tests/test_simple_calculator_custom_routes.py

32-32: Unused function argument: restore_environ

(ARG001)

tests/nat/mcp/test_mcp_session_management.py

599-599: Unused function argument: self

(ARG001)


607-607: Pattern passed to match= contains metacharacters but is neither escaped nor raw

(RUF043)


644-644: Unused function argument: self

(ARG001)


650-650: Unused function argument: self

(ARG001)

packages/nvidia_nat_test/src/nat/test/llm.py

209-209: Unused function argument: builder

(ARG001)


218-219: Avoid specifying long messages outside the exception class

(TRY003)


227-227: Unused method argument: stream

(ARG002)

packages/nvidia_nat_mcp/src/nat/plugins/mcp/client_impl.py

255-255: Do not catch blind exception: Exception

(BLE001)


297-298: Avoid specifying long messages outside the exception class

(TRY003)


398-400: Use logging.exception instead of logging.error

Replace with exception

(TRY400)


401-401: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling

(B904)


401-401: Avoid specifying long messages outside the exception class

(TRY003)


408-408: Use logging.exception instead of logging.error

Replace with exception

(TRY400)


409-409: Avoid specifying long messages outside the exception class

(TRY003)

@willkill07 willkill07 removed the breaking Breaking change label Oct 9, 2025
@AnuradhaKaruppiah
Copy link
Contributor

/merge

@willkill07 willkill07 added DO NOT MERGE PR should not be merged; see PR for details and removed improvement Improvement to existing functionality non-breaking Non-breaking change labels Oct 9, 2025
@AnuradhaKaruppiah AnuradhaKaruppiah merged commit b3aaa42 into NVIDIA:develop Oct 9, 2025
17 checks passed
@willkill07 willkill07 removed the DO NOT MERGE PR should not be merged; see PR for details label Oct 9, 2025
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.

5 participants