-
Notifications
You must be signed in to change notification settings - Fork 423
Update UI Submodule and Reference Docs #939
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update UI Submodule and Reference Docs #939
Conversation
…ompletion request up to spec. Signed-off-by: Eric Evans <[email protected]>
…to ui-submodule-update-1.3
…to ui-submodule-update-1.3
Signed-off-by: Eric Evans <[email protected]>
…to ui-submodule-update-1.3
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (2)
examples/UI/README.md (1)
18-18: Fix product heading and WebSocket casing.
- Prefer including “NeMo” in the main heading.
- Use “WebSocket” (capital S) consistently.
-# Agent Toolkit User Interface Integration +# NeMo Agent Toolkit User Interface Integration @@ -> **Important**: Workflows requiring human input or interaction (such as human-in-the-loop workflows, OAuth authentication, or interactive prompts) must use WebSocket connections. HTTP requests are the default method of communication, but human-in-the-loop functionality is not supported through HTTP. Ensure that `Websocket` mode is enabled in the UI by navigating to the top-right corner and selecting the `Websocket` option in the arrow pop-out. +> **Important**: Workflows requiring human input or interaction (such as human-in-the-loop workflows, OAuth authentication, or interactive prompts) must use WebSocket connections. HTTP requests are the default method of communication, but human-in-the-loop functionality is not supported through HTTP. Ensure that `WebSocket` mode is enabled in the UI by navigating to the top-right corner and selecting the `WebSocket` option in the arrow pop-out.As per coding guidelines
Also applies to: 43-43
docs/source/quick-start/launching-ui.md (1)
18-21: Fix product naming per docs/source convention.In docs/source, first use should be “NVIDIA NeMo Agent toolkit” (lowercase t). Adjust the H1 accordingly.
-# Launching the NVIDIA NeMo Agent Toolkit API Server and User Interface +# Launching the NVIDIA NeMo Agent toolkit API Server and User Interface - -NVIDIA NeMo Agent toolkit provides a user interface for interacting with your running workflow. This guide walks you through starting the API server and launching the web-based user interface to interact with your workflows. +NVIDIA NeMo Agent toolkit provides a user interface for interacting with your running workflow. This guide walks you through starting the API server and launching the web-based user interface to interact with your workflows.Based on learnings
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
docs/source/_static/hitl_settings.pngis excluded by!**/*.pngdocs/source/_static/ui_home_page.pngis excluded by!**/*.png
📒 Files selected for processing (7)
docs/source/quick-start/launching-ui.md(2 hunks)docs/source/workflows/mcp/mcp-auth.md(1 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/front_ends/simple_auth/README.md(2 hunks)external/nat-ui(1 hunks)
🧰 Additional context used
📓 Path-based instructions (6)
**/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/UI/README.mdexamples/front_ends/simple_auth/README.mdexamples/MCP/simple_auth_mcp/README.mdexamples/advanced_agents/profiler_agent/README.md
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
**/*
⚙️ 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
raisestatements to maintain the original stack trace,
and uselogger.error()(notlogger.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.txtfile, words that might appear to be
spelling mistakes but are listed in theci/vale/styles/config/vocabularies/nat/accept.txtfile 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:
examples/UI/README.mdexamples/front_ends/simple_auth/README.mdexamples/MCP/simple_auth_mcp/README.mdexternal/nat-uidocs/source/quick-start/launching-ui.mdexamples/advanced_agents/profiler_agent/README.mddocs/source/workflows/mcp/mcp-auth.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 apyproject.tomlfile. Optionally, it might also contain scripts in ascripts/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 nameddata/, and should
be checked into git-lfs.
Files:
examples/UI/README.mdexamples/front_ends/simple_auth/README.mdexamples/MCP/simple_auth_mcp/README.mdexamples/advanced_agents/profiler_agent/README.md
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/quick-start/launching-ui.mddocs/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/_staticdirectory.
Files:
docs/source/quick-start/launching-ui.mddocs/source/workflows/mcp/mcp-auth.md
🧠 Learnings (1)
📚 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 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)
Applied to files:
docs/source/quick-start/launching-ui.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: CI Pipeline / Check
🔇 Additional comments (12)
examples/UI/README.md (3)
29-29: LGTM – good addition.Clear HITL capability note aligns with UI docs.
37-37: LGTM – env‑var note helpful.Keeps customization centralized.
41-41: Link target exists and is valid The file docs/source/quick-start/launching-ui.md is present and contains a heading beginning with “Launching,” so the link will not be broken.examples/advanced_agents/profiler_agent/README.md (2)
24-31: LGTM – ToC reorg is clear.Improves navigation without content changes.
86-86: LGTM – unified UI link.Points to single source of truth.
docs/source/workflows/mcp/mcp-auth.md (1)
155-159: LGTM – explicit WebSocket requirement.Clear guidance and correct casing.
docs/source/quick-start/launching-ui.md (4)
98-104: LGTM – use npm ci.Reproducible installs for the UI are preferred.
45-49: LGTM – submodule init step.Prevents missing UI sources locally.
69-77: LGTM – HTTP API verification example.Helpful sanity check before UI connection.
121-143: LGTM – Settings structured clearly.Matches current UI implementation.
examples/front_ends/simple_auth/README.md (2)
122-122: LGTM – unified UI instructions.Keeps deployment guidance centralized.
156-156: LGTM – troubleshooting tip.Accurate limitation note re: HTTP vs HITL/OAuth.
willkill07
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Style changes only.
Use proper admonitions based on GFM or Sphinx.
Always make the URL clickable if the user is intended to access it.
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
Co-authored-by: Will Killian <[email protected]> Signed-off-by: Eric Evans II <[email protected]>
…to ui-submodule-update-1.3
…nt-iq into ui-submodule-update-1.3
Signed-off-by: Eric Evans <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (4)
examples/front_ends/simple_auth/README.md (1)
146-150: Fix “WebSocket” casing; streamline wording.
Replace “Websocket” with “WebSocket” (twice). Optional: “These default values can be changed” → “These defaults can be changed.”-Open the NeMo Agent Toolkit UI in your browser at `http://localhost:3000`. By default, the UI is configured to connect to your agent's API endpoint at `http://localhost:8000` and the WebSocket URL at `ws://localhost:8000/websocket`. These default values can be changed using environment variables. See the [Launching the UI](../../../docs/source/quick-start/launching-ui.md) guide for environment variable configuration details. +Open the NeMo Agent Toolkit UI in your browser at `http://localhost:3000`. By default, the UI is configured to connect to your agent's API endpoint at `http://localhost:8000` and the WebSocket URL at `ws://localhost:8000/websocket`. These defaults can be changed using environment variables. See the [Launching the UI](../../../docs/source/quick-start/launching-ui.md) guide for environment variable configuration details. @@ -> **Important**: In your chat window, ensure that `Websocket` mode is enabled by navigating to the top-right corner and selecting the `Websocket` option in the arrow pop-out. This is required for the OAuth 2.0 authentication flow to work properly. +> **Important**: In your chat window, ensure that `WebSocket` mode is enabled by navigating to the top-right corner and selecting the `WebSocket` option in the arrow pop-out. This is required for the OAuth 2.0 authentication flow to work properly.docs/source/quick-start/launching-ui.md (1)
111-113: Standardize “WebSocket” casing in the admonition.
Use “WebSocket” (capital S) in both inline code mentions.:::important -Workflows requiring human input or interaction (such as human-in-the-loop workflows, OAuth authentication, or interactive prompts) must use WebSocket connections. HTTP requests are the default method of communication, but human-in-the-loop functionality is not supported through HTTP. Ensure that `Websocket` mode is enabled in the UI by navigating to the top-right corner and selecting the `Websocket` option in the arrow pop-out. +Workflows requiring human input or interaction (such as human-in-the-loop workflows, OAuth authentication, or interactive prompts) must use WebSocket connections. HTTP requests are the default method of communication, but human-in-the-loop functionality is not supported through HTTP. Ensure that `WebSocket` mode is enabled in the UI by navigating to the top-right corner and selecting the `WebSocket` option in the arrow pop-out. :::To ensure no other occurrences remain, run:
#!/bin/bash set -euo pipefail rg -n -S --no-ignore 'Websocket' -g '!**/node_modules/**' -g '*.md' -C2 || trueexamples/UI/README.md (1)
41-44: Fix “WebSocket” casing in the important note.
Replace both occurrences of “Websocket” with “WebSocket”.-> [!IMPORTANT] -> Workflows requiring human input or interaction (such as human-in-the-loop workflows, OAuth authentication, or interactive prompts) must use WebSocket connections. HTTP requests are the default method of communication, but human-in-the-loop functionality is not supported through HTTP. Ensure that `Websocket` mode is enabled in the UI by navigating to the top-right corner and selecting the `Websocket` option in the arrow pop-out. +> [!IMPORTANT] +> Workflows requiring human input or interaction (such as human-in-the-loop workflows, OAuth authentication, or interactive prompts) must use WebSocket connections. HTTP requests are the default method of communication, but human-in-the-loop functionality is not supported through HTTP. Ensure that `WebSocket` mode is enabled in the UI by navigating to the top-right corner and selecting the `WebSocket` option in the arrow pop-out.Additionally, consider updating the H1 to include the product name:
-# Agent Toolkit User Interface Integration +# NeMo Agent Toolkit User Interface IntegrationAs per coding guidelines.
examples/MCP/simple_auth_mcp/README.md (1)
76-79: Fix “WebSocket” casing in UI instructions.
Standardize to “WebSocket” (capital S) in both mentions.- Start the UI by following the instructions in the [Launching the UI](../../../docs/source/quick-start/launching-ui.md) guide. Connect to the URL http://localhost:3000. + Start the UI by following the instructions in the [Launching the UI](../../../docs/source/quick-start/launching-ui.md) guide. Connect to the URL http://localhost:3000. @@ - > [!IMPORTANT] - > Ensure that `Websocket` mode is enabled by navigating to the top-right corner and selecting the `Websocket` option in the arrow pop-out. WebSocket connections are required for OAuth authentication workflows. + > [!IMPORTANT] + > Ensure that `WebSocket` mode is enabled by navigating to the top-right corner and selecting the `WebSocket` option in the arrow pop-out. WebSocket connections are required for OAuth authentication workflows.
🧹 Nitpick comments (1)
docs/source/quick-start/launching-ui.md (1)
19-21: Branding consistency: first use should be “NVIDIA NeMo Agent toolkit”.
Header currently uses “Toolkit”. For docs under docs/source, first use should be “NVIDIA NeMo Agent toolkit” (lowercase ‘toolkit’). Consider updating the H1.Outside selected range, update the header:
-# Launching the NVIDIA NeMo Agent Toolkit API Server and User Interface +# Launching the NVIDIA NeMo Agent toolkit API Server and User InterfaceAs per coding guidelines.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
docs/source/_static/ui_home_page.pngis excluded by!**/*.png
📒 Files selected for processing (5)
docs/source/quick-start/launching-ui.md(2 hunks)docs/source/workflows/mcp/mcp-auth.md(1 hunks)examples/MCP/simple_auth_mcp/README.md(1 hunks)examples/UI/README.md(1 hunks)examples/front_ends/simple_auth/README.md(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/source/workflows/mcp/mcp-auth.md
🧰 Additional context used
📓 Path-based instructions (6)
**/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/MCP/simple_auth_mcp/README.mdexamples/front_ends/simple_auth/README.mdexamples/UI/README.md
**/*
⚙️ 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
raisestatements to maintain the original stack trace,
and uselogger.error()(notlogger.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.txtfile, words that might appear to be
spelling mistakes but are listed in theci/vale/styles/config/vocabularies/nat/accept.txtfile 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:
examples/MCP/simple_auth_mcp/README.mddocs/source/quick-start/launching-ui.mdexamples/front_ends/simple_auth/README.mdexamples/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 apyproject.tomlfile. Optionally, it might also contain scripts in ascripts/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 nameddata/, and should
be checked into git-lfs.
Files:
examples/MCP/simple_auth_mcp/README.mdexamples/front_ends/simple_auth/README.mdexamples/UI/README.md
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/quick-start/launching-ui.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/_staticdirectory.
Files:
docs/source/quick-start/launching-ui.md
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
🔇 Additional comments (4)
examples/front_ends/simple_auth/README.md (1)
122-122: Good consolidation to the canonical UI guide.
Reference to launching-ui.md is correct and helps dedupe instructions.docs/source/quick-start/launching-ui.md (1)
100-104: npm ci is the right choice for reproducible installs.
Good switch from npm install to npm ci.examples/UI/README.md (2)
29-29: Nice addition highlighting human-in-the-loop support.
Clear and aligned with the UI’s capabilities.
37-37: Environment-variable configurability called out clearly.
Accurate and helpful.
Signed-off-by: Eric Evans <[email protected]>
Signed-off-by: Eric Evans <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
docs/source/quick-start/launching-ui.md (1)
136-143: Use "Scheme" instead of "Schema" for protocol selection."Schema" refers to a data structure definition, while "Scheme" (or "protocol scheme") refers to the protocol identifier (ws/wss). The correct terminology for WebSocket connections is "scheme."
Apply this diff:
**WebSocket Configuration:** -- `WebSocket Schema`: Select schema for real-time connections: +- `WebSocket Scheme`: Select scheme for real-time connections: - **Chat Completions — Streaming** - Streaming chat over WebSocket (recommended for intermediate results) - **Chat Completions — Non-Streaming** - Non-streaming chat over WebSocket - **Generate — Streaming** - Streaming generation over WebSocket - **Generate — Non-Streaming** - Non-streaming generation over WebSocket
🧹 Nitpick comments (2)
examples/MCP/simple_auth_mcp/README.md (1)
76-76: Consider wrapping URL in angle brackets.The bare URL triggers a markdownlint warning. While functional, wrapping it in angle brackets follows Markdown best practices and improves rendering consistency.
Apply this diff:
- Start the UI by following the instructions in the [Launching the UI](../../../docs/source/quick-start/launching-ui.md) guide. Connect to the URL http://localhost:3000. + Start the UI by following the instructions in the [Launching the UI](../../../docs/source/quick-start/launching-ui.md) guide. Connect to the URL <http://localhost:3000>.examples/front_ends/simple_auth/README.md (1)
146-146: Consider wrapping URL in angle brackets.The bare URL triggers a markdownlint warning (MD034). Wrapping it in angle brackets follows Markdown best practices.
Apply this diff:
-Open the NeMo Agent Toolkit UI in your browser at http://localhost:3000. +Open the NeMo Agent Toolkit UI in your browser at <http://localhost:3000>.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
docs/source/index.md(1 hunks)docs/source/quick-start/launching-ui.md(2 hunks)examples/MCP/simple_auth_mcp/README.md(1 hunks)examples/UI/README.md(1 hunks)examples/front_ends/simple_auth/README.md(2 hunks)src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py(1 hunks)src/nat/runtime/session.py(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- src/nat/runtime/session.py
🧰 Additional context used
📓 Path-based instructions (11)
**/*.{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:
src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.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:
src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
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/**/*
📄 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
⚙️ 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/**/*.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:
src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py
**/*
⚙️ 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
raisestatements to maintain the original stack trace,
and uselogger.error()(notlogger.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.txtfile, words that might appear to be
spelling mistakes but are listed in theci/vale/styles/config/vocabularies/nat/accept.txtfile 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:
src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.pyexamples/UI/README.mddocs/source/quick-start/launching-ui.mddocs/source/index.mdexamples/MCP/simple_auth_mcp/README.mdexamples/front_ends/simple_auth/README.md
**/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/UI/README.mdexamples/MCP/simple_auth_mcp/README.mdexamples/front_ends/simple_auth/README.md
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
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 apyproject.tomlfile. Optionally, it might also contain scripts in ascripts/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 nameddata/, and should
be checked into git-lfs.
Files:
examples/UI/README.mdexamples/MCP/simple_auth_mcp/README.mdexamples/front_ends/simple_auth/README.md
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/quick-start/launching-ui.mddocs/source/index.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/_staticdirectory.
Files:
docs/source/quick-start/launching-ui.mddocs/source/index.md
🪛 markdownlint-cli2 (0.18.1)
examples/MCP/simple_auth_mcp/README.md
76-76: Bare URL used
(MD034, no-bare-urls)
examples/front_ends/simple_auth/README.md
146-146: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (11)
src/nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py (1)
26-27: LGTM! Capitalization standardized.The capitalization fix from "Websockets" to "WebSockets" aligns with the PR's goal to standardize WebSocket terminology across the codebase.
docs/source/index.md (1)
134-134: LGTM! TOC entry capitalization corrected.The capitalization of "WebSockets" in the table of contents entry is now consistent with the standard terminology.
examples/MCP/simple_auth_mcp/README.md (1)
78-79: LGTM! Clear WebSocket requirement notice.The IMPORTANT callout effectively communicates that WebSocket mode is required for OAuth authentication workflows, which aligns with the PR's goal to clarify when WebSocket connections are necessary.
examples/UI/README.md (2)
29-29: LGTM! Human-in-the-loop support documented.Adding the human-in-the-loop support feature to the key features list accurately reflects the UI's capabilities and aligns with the PR's emphasis on interactive workflows.
43-44: LGTM! Clear WebSocket usage guidance.The IMPORTANT callout effectively distinguishes when WebSocket connections are required (human-in-the-loop workflows) versus when HTTP requests suffice, addressing a key PR objective.
examples/front_ends/simple_auth/README.md (2)
148-151: LGTM! Clear default configuration details.Explicitly stating the default API endpoint and WebSocket URL, along with a reference to environment variable configuration, helps users understand the out-of-the-box behavior and customization options.
159-160: LGTM! Helpful troubleshooting tip.The TIP callout effectively guides users to verify WebSocket mode when encountering errors, clarifying that HTTP doesn't support human-in-the-loop functionality including OAuth authentication.
docs/source/quick-start/launching-ui.md (4)
19-32: LGTM! Comprehensive feature list.The expanded feature list accurately reflects the UI's capabilities and provides users with a clear understanding of what to expect, aligning with the PR's goal to improve documentation clarity.
100-104: LGTM! Reproducible builds with npm ci.Using
npm ciinstead ofnpm installensures reproducible builds by installing exact versions from package-lock.json, which is a best practice and aligns with the PR objectives.
111-113: LGTM! Clear WebSocket requirement guidance.The IMPORTANT callout effectively communicates when WebSocket connections are required, distinguishing between HTTP (default) and WebSocket (required for human-in-the-loop) modes, which addresses a key PR objective.
122-146: LGTM! Well-organized settings documentation.The restructured settings options with clear categorization (Appearance, API Configuration, WebSocket Configuration) and detailed descriptions improve usability and align with the PR's goal to provide comprehensive UI configuration guidance.
|
/merge |
Description
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:
Summary by CodeRabbit