Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
30639a0
Add a note that the transport on the MCP client andMCP server need t…
AnuradhaKaruppiah Oct 1, 2025
f9cc1d0
Improve new workflow template (#851)
zhongxuanwang-nv Oct 2, 2025
d8becf6
Enhance OpenAI Chat API Compatibility (#889)
ericevans-nv Oct 2, 2025
19a4f53
Add configurable token storage to MCP auth (#883)
yczhang-nv Oct 2, 2025
81a9194
chore: additional workflow template cleanup (#899)
willkill07 Oct 2, 2025
2379834
fix: documentation CLI tree update (#900)
willkill07 Oct 2, 2025
cb31e79
Add hierarchical IDs for consistent telemetry and reporting (#863)
zhongxuanwang-nv Oct 2, 2025
ec5ecc2
Fix Google ADK Demo registration (#901)
willkill07 Oct 2, 2025
1910117
Update MCP related CLI commands in `cli.md` (#903)
yczhang-nv Oct 2, 2025
4908e35
Update CLI Docs for Optimizer (#902)
dnandakumar-nv Oct 3, 2025
a48b9b8
Perform vale spelling checks on notebooks (#896)
dagardner-nv Oct 3, 2025
ee91056
docs: add note about increasing file descriptor limit (#897)
nouraellm Oct 3, 2025
014d05c
Implement deprecated decorator for deprecation notices (#904)
AnuradhaKaruppiah Oct 3, 2025
5be77b0
Add sizing calc summary in the main CLI docs (#908)
AnuradhaKaruppiah Oct 3, 2025
8a8d734
Add missing plugins to list in `installing.md` (#906)
dagardner-nv Oct 3, 2025
5128bb9
Implement session aware MCP client routing (#898)
AnuradhaKaruppiah Oct 3, 2025
620602d
fix: haystack deep research example test failure (#910)
willkill07 Oct 3, 2025
4ee0dfd
fix: Improve version detection for prerelease workflow creation (#911)
willkill07 Oct 3, 2025
d9eb559
Include plugins in the staged API tree for documentation builds (#909)
dagardner-nv Oct 3, 2025
ebe5bb1
docs: Add nat object-store documentation to CLI docs (#907)
willkill07 Oct 4, 2025
b96d3d3
feat: Improve the developer journey for example notebooks (#912)
willkill07 Oct 4, 2025
14cfda4
feat: Improve the developer journey for example notebooks (part 2) (#…
willkill07 Oct 5, 2025
d0491cb
fix: TTC must await get_function from builder (#914)
willkill07 Oct 6, 2025
4a7f2cf
fix: ReWOO example must properly escape quotes in string (#915)
willkill07 Oct 6, 2025
107b72a
fix: Docker must redeclare args in multi-stage builds; fix path in do…
willkill07 Oct 6, 2025
36e0595
docs: Clarify MinIO directions for simple_web_query_eval (#917)
willkill07 Oct 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 31 additions & 2 deletions ci/scripts/documentation_checks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,37 @@
set +e

# Intentionally excluding CHANGELOG.md as it immutable
DOC_FILES=$(git ls-files "*.md" "*.rst" | grep -v -E '^(CHANGELOG|LICENSE)\.md$' | grep -v -E '^nv_internal/')
DOC_FILES=$(git ls-files "*.md" "*.rst" | grep -v -E '^(CHANGELOG|LICENSE)\.md$')
NOTEBOOK_FILES=$(git ls-files "*.ipynb")

vale ${DOC_FILES}
if [[ -v ${WORKSPACE_TMP} ]]; then
MKTEMP_ARGS=""
else
MKTEMP_ARGS="--tmpdir=${WORKSPACE_TMP}"
fi

EXPORT_DIR=$(mktemp -d ${MKTEMP_ARGS} nat_converted_notebooks.XXXXXX)
if [[ ! -d "${EXPORT_DIR}" ]]; then
echo "ERROR: Failed to create temporary directory" >&2
exit 1
fi

jupyter nbconvert -y --log-level=WARN --to markdown --output-dir ${EXPORT_DIR} ${NOTEBOOK_FILES}
if [[ $? -ne 0 ]]; then
echo "ERROR: Failed to convert notebooks" >&2
rm -rf "${EXPORT_DIR}"
exit 1
fi

CONVERTED_NOTEBOOK_FILES=$(find ${EXPORT_DIR} -type f -name "*.md")

vale ${DOC_FILES} ${CONVERTED_NOTEBOOK_FILES}
RETVAL=$?

if [[ "${PRESERVE_TMP}" == "1" ]]; then
echo "Preserving temporary directory: ${EXPORT_DIR}"
else
rm -rf "${EXPORT_DIR}"
fi

exit $RETVAL
4 changes: 2 additions & 2 deletions ci/scripts/path_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,8 @@
),
# ignore notebook-relative paths
(
r"^examples/notebooks/retail_sales_agent/.*configs/",
r"^\./retail_sales_agent/data/",
r"^examples/notebooks/",
r".*(configs|data|src).*",
),
(
r"^examples/frameworks/haystack_deep_research_agent/README.md",
Expand Down
10 changes: 8 additions & 2 deletions ci/vale/styles/config/vocabularies/nat/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@ Authlib
[Cc]hatbot(s?)
# clangd is never capitalized even at the start of a sentence https://clangd.llvm.org/
clangd
Colab
CMake
[Cc]omposability
[Cc]omposable
Conda
concurrencies
config
Configurability
[Cc]onfigurability
[Cc]oroutine(s?)
CPython
[Cc]ryptocurrenc[y|ies]
Expand All @@ -56,6 +57,7 @@ Dynatrace
[Ee]val
[Ee]xplainability
Faiss
Gantt
[Gg]eneratable
GitHub
glog
Expand All @@ -65,7 +67,9 @@ groundedness
[Gg]ranularities
[Hh]ashable
[Hh]yperparameter(s?)
impactful
[Ii]nferencing
[Ii]nterquartile
isort
Jira
jsonlines
Expand Down Expand Up @@ -114,6 +118,7 @@ Pydantic
PyPI
pytest
[Rr]edis
[Rr]eimplement(ing)?
[Rr]einstall(s?)
[Rr]eplatform(ing)?
[Rr]epo
Expand All @@ -135,6 +140,7 @@ Tavily
[Tt]okenization
[Tt]okenizer(s?)
triages
[Uu]ncomment
[Uu]nencrypted
[Uu]nittest(s?)
[Uu]nprocessable
Expand All @@ -150,4 +156,4 @@ zsh
Zep
Optuna
[Oo]ptimizable
[Cc]heckpointed
[Cc]heckpointed
4 changes: 4 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ ARG NAT_VERSION

FROM --platform=$TARGETPLATFORM ${BASE_IMAGE_URL}:${BASE_IMAGE_TAG}

ARG PYTHON_VERSION
ARG UV_VERSION
ARG NAT_VERSION

COPY --from=ghcr.io/astral-sh/uv:${UV_VERSION} /uv /uvx /bin/

ENV PYTHONDONTWRITEBYTECODE=1
Expand Down
60 changes: 44 additions & 16 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,32 +27,60 @@
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.

import glob
import os
import shutil
import subprocess
import typing
from pathlib import Path

if typing.TYPE_CHECKING:
from autoapi._objects import PythonObject

CUR_DIR = os.path.dirname(os.path.abspath(__file__))
DOC_DIR = os.path.dirname(CUR_DIR)
ROOT_DIR = os.path.dirname(os.path.dirname(CUR_DIR))
NAT_DIR = os.path.join(ROOT_DIR, "src", "nat")

# Work-around for https://github.com/readthedocs/sphinx-autoapi/issues/298
# AutoAPI support for implicit namespaces is broken, so we need to manually
# construct an nat package with an __init__.py file
BUILD_DIR = os.path.join(DOC_DIR, "build")
API_TREE = os.path.join(BUILD_DIR, "_api_tree")
def _build_api_tree() -> Path:
# Work-around for https://github.com/readthedocs/sphinx-autoapi/issues/298
# AutoAPI support for implicit namespaces is broken, so we need to manually

if os.path.exists(API_TREE):
shutil.rmtree(API_TREE)
cur_dir = Path(os.path.abspath(__file__)).parent
docs_dir = cur_dir.parent
root_dir = docs_dir.parent
nat_dir = root_dir / "src" / "nat"
plugins_dir = root_dir / "packages"

os.makedirs(API_TREE)
shutil.copytree(NAT_DIR, os.path.join(API_TREE, "nat"))
with open(os.path.join(API_TREE, "nat", "__init__.py"), "w") as f:
f.write("")
build_dir = docs_dir / "build"
api_tree = build_dir / "_api_tree"
dest_dir = api_tree / "nat"

if api_tree.exists():
shutil.rmtree(api_tree.absolute())

os.makedirs(api_tree.absolute())
shutil.copytree(nat_dir, dest_dir)
dest_plugins_dir = dest_dir / "plugins"

for sub_dir in (dest_dir, dest_plugins_dir):
with open(sub_dir / "__init__.py", "w", encoding="utf-8") as f:
f.write("")

plugin_dirs = [Path(p) for p in glob.glob(f'{plugins_dir}/nvidia_nat_*')]
for plugin_dir in plugin_dirs:
src_dir = plugin_dir / 'src/nat/plugins'
if src_dir.exists():
for plugin_subdir in src_dir.iterdir():
if plugin_subdir.is_dir():
dest_subdir = dest_plugins_dir / plugin_subdir.name
shutil.copytree(plugin_subdir, dest_subdir)
package_file = dest_subdir / "__init__.py"
if not package_file.exists():
with open(package_file, "w", encoding="utf-8") as f:
f.write("")

return api_tree


API_TREE = _build_api_tree()
print(f"API tree built at {API_TREE}")

# -- Project information -----------------------------------------------------

Expand Down Expand Up @@ -87,7 +115,7 @@
"sphinxmermaid"
]

autoapi_dirs = [API_TREE]
autoapi_dirs = [str(API_TREE.absolute())]

autoapi_root = "api"
autoapi_python_class_content = "both"
Expand Down
4 changes: 4 additions & 0 deletions docs/source/quick-start/installing.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,18 @@ To install these first-party plugin libraries, you can use the full distribution

- `nvidia-nat[adk]` or `nvidia-nat-adk` - [Google ADK](https://github.com/google/adk-python)
- `nvidia-nat[agno]` or `nvidia-nat-agno` - [Agno](https://agno.com/)
- `nvidia-nat[all]` or `nvidia-nat-all` - Pseudo-package for installing all optional dependencies
- `nvidia-nat[crewai]` or `nvidia-nat-crewai` - [CrewAI](https://www.crewai.com/)
- `nvidia-nat[data-flywheel]` or `nvidia-nat-data-flywheel` - [NeMo DataFlywheel](https://github.com/NVIDIA-AI-Blueprints/data-flywheel)
- `nvidia-nat[ingestion]` or `nvidia-nat-ingestion` - Additional dependencies needed for data ingestion
- `nvidia-nat[langchain]` or `nvidia-nat-langchain` - [LangChain](https://www.langchain.com/), [LangGraph](https://www.langchain.com/langgraph)
- `nvidia-nat[llama-index]` or `nvidia-nat-llama-index` - [LlamaIndex](https://www.llamaindex.ai/)
- `nvidia-nat[mcp]` or `nvidia-nat-mcp` - [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
- `nvidia-nat[mem0ai]` or `nvidia-nat-mem0ai` - [Mem0](https://mem0.ai/)
- `nvidia-nat[mysql]` or `nvidia-nat-mysql` - [MySQL](https://www.mysql.com/)
- `nvidia-nat[opentelemetry]` or `nvidia-nat-opentelemetry` - [OpenTelemetry](https://opentelemetry.io/)
- `nvidia-nat[phoenix]` or `nvidia-nat-phoenix` - [Arize Phoenix](https://arize.com/docs/phoenix)
- `nvidia-nat[profiling]` or `nvidia-nat-profiling` - Additional dependencies needed for profiling
- `nvidia-nat[ragaai]` or `nvidia-nat-ragaai` - [RagaAI Catalyst](https://raga.ai/)
- `nvidia-nat[redis]` or `nvidia-nat-redis` - [Redis](https://redis.io/)
- `nvidia-nat[s3]` or `nvidia-nat-s3` - [Amazon S3](https://aws.amazon.com/s3/)
Expand Down
Loading