Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions docs/agents/plugins.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ nemo services run
| Evaluator | Optional model and agent evaluation workflows |
| Auditor | Red-teaming against deployed agents |
| Anonymizer | PII handling for training data |
| Insights | Analyze agent telemetry and persist actionable insights |
| Experimentalist | Optimize agents |
| Eval Author | Author evaluations |

## Coding-Agent Skills

Expand Down
2 changes: 2 additions & 0 deletions plugins/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ The package name is the `name` field in the plugin's `pyproject.toml`, not the d
| `nemo-data-designer/` | `nemo-data-designer-plugin` |
| `nemo-eval-author/` | `nemo-eval-author-plugin` |
| `nemo-evaluator/` | `nemo-evaluator-plugin` |
| `nemo-experimentalist/` | `nemo-experimentalist-plugin` |
| `nemo-guardrails/` | `nemo-guardrails-plugin` |
| `nemo-insights/` | `nemo-insights-plugin` |
| `nemo-switchyard/` | `nemo-switchyard` |

Example:
Expand Down
8 changes: 4 additions & 4 deletions plugins/nemo-insights/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# NeMo Insights

Optional NeMo Platform plugin for analyzing agent telemetry and persisting actionable insights.
NeMo Platform plugin for analyzing agent telemetry and persisting actionable insights.

## Install from the monorepo

```bash
uv sync --group insights
uv sync
```

The plugin is intentionally not part of `enabled-plugins`.
The plugin is installed by default through the root workspace's `enabled-plugins` group.

## CLI

Expand Down Expand Up @@ -86,7 +86,7 @@ export NEMO_INSIGHTS_ANALYST_TIMEZONE=America/Denver
## Development

```bash
uv run --group insights pytest plugins/nemo-insights/tests
uv run pytest plugins/nemo-insights/tests
uv run ruff check plugins/nemo-insights
```

Expand Down
22 changes: 12 additions & 10 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,14 @@ dependencies = [
version = "0.0.0"

[dependency-groups]
# Optional Insights analyst plugin.
# Insights analyst plugin convenience group.
insights = ["nemo-insights-plugin"]
# Optional Experimentalist agent-optimization plugin. Experimentalist depends on Eval Author
# because insight mode imports it at module scope; Eval Author still depends back on
# Experimentalist for evaluator/trace helpers, but that arrow is being removed (see
# plugins/nemo-eval-author/README.md).
# Experimentalist and Eval Author currently support Python 3.12 and 3.13. Both are listed
# because insight mode imports Eval Author at module scope, while Eval Author still depends
# back on Experimentalist for evaluator/trace helpers (see plugins/nemo-eval-author/README.md).
experimentalist = [
"nemo-experimentalist-plugin",
"nemo-eval-author-plugin",
"nemo-experimentalist-plugin ; python_full_version < '3.14'",
"nemo-eval-author-plugin ; python_full_version < '3.14'",
]
dev = [
"pre-commit>=3.8.0",
Expand Down Expand Up @@ -176,6 +175,9 @@ enabled-plugins = [
"nemo-anonymizer-plugin",
"nemo-data-designer-plugin",
"nemo-evaluator-plugin",
"nemo-insights-plugin",
"nemo-experimentalist-plugin ; python_full_version < '3.14'",
"nemo-eval-author-plugin ; python_full_version < '3.14'",
"nemo-guardrails-plugin",
"nemo-auditor-plugin",
"nemo-safe-synthesizer-plugin",
Expand Down Expand Up @@ -565,11 +567,11 @@ extra-paths = [
# nemo-evaluator plugin is not a workspace member; add its src so ty can
# resolve nemo_evaluator imports when checking plugin test files.
"plugins/nemo-evaluator/src",
# The optional Insights analyst is not part of the default environment.
# Source path for the Insights analyst plugin.
"plugins/nemo-insights/src",
# Same for the optional Eval Author plugin.
# Source path for the Eval Author plugin.
"plugins/nemo-eval-author/src",
# Same for the optional Experimentalist; its tests also import the benchmark runner.
# Source path for Experimentalist; its tests also import the benchmark runner.
"plugins/nemo-experimentalist/src",
# Agentic-use tests place both tests/agentic-use and tests/agentic-use/shared
# on sys.path in tests/conftest.py.
Expand Down
4 changes: 2 additions & 2 deletions services/studio/src/nmp/studio/env_mappings.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ class EnvMapping:
default="true",
),
EnvMapping(
marker="STUDIO_UI_VITE_FF_INTAKE_ENABLED", config_path="studio.feature_flags.intake_enabled", default="false"
marker="STUDIO_UI_VITE_FF_INTAKE_ENABLED", config_path="studio.feature_flags.intake_enabled", default="true"
),
EnvMapping(
marker="STUDIO_UI_VITE_FF_JOBS_ENABLED", config_path="studio.feature_flags.jobs_enabled", default="true"
Expand All @@ -146,7 +146,7 @@ class EnvMapping:
EnvMapping(
marker="STUDIO_UI_VITE_FF_OPTIMIZER_ENABLED",
config_path="studio.feature_flags.optimizer_enabled",
default="false",
default="true",
),
EnvMapping(
marker="STUDIO_UI_VITE_FF_SAFE_SYNTHESIZER_ENABLED",
Expand Down
28 changes: 28 additions & 0 deletions third_party/licenses.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,10 @@
{"name": "dataclasses-json", "license": "MIT", "compatible": true}
{"name": "datasets", "license": "APACHE-2.0", "compatible": true}
{"name": "defusedxml", "license": "PSF-2.0", "compatible": true}
{"name": "deprecation", "license": "APACHE-2.0", "compatible": true}
{"name": "diff-cover", "license": "APACHE-2.0", "compatible": true}
{"name": "dill", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "dirhash", "license": "MIT", "compatible": true}
{"name": "distro", "license": "APACHE-2.0", "compatible": true}
{"name": "dnspython", "license": "ISC", "compatible": true}
{"name": "docker", "license": "APACHE-2.0", "compatible": true}
Expand All @@ -73,22 +75,30 @@
{"name": "flatbuffers", "license": "APACHE-2.0", "compatible": true}
{"name": "frozenlist", "license": "APACHE-2.0", "compatible": true}
{"name": "fsspec", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "genai-prices", "license": "MIT", "compatible": true}
{"name": "gitdb", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "gitpython", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "google-auth", "license": "APACHE-2.0", "compatible": true}
{"name": "googleapis-common-protos", "license": "APACHE-2.0", "compatible": true}
{"name": "greenlet", "license": "MIT", "compatible": true}
{"name": "griffelib", "license": "ISC", "compatible": true}
{"name": "grpcio", "license": "APACHE-2.0", "compatible": true}
{"name": "gunicorn", "license": "MIT", "compatible": true}
{"name": "h11", "license": "MIT", "compatible": true}
{"name": "h2", "license": "MIT", "compatible": true}
{"name": "harbor", "license": "APACHE-2.0", "compatible": true}
{"name": "hf-xet", "license": "APACHE-2.0", "compatible": true}
{"name": "hpack", "license": "MIT", "compatible": true}
{"name": "httpcore", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "httpcore2", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "httptools", "license": "MIT", "compatible": true}
{"name": "httpx", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "httpx-retries", "license": "MIT", "compatible": true}
{"name": "httpx-sse", "license": "MIT", "compatible": true}
{"name": "httpx2", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "huggingface-hub", "license": "APACHE-2.0", "compatible": true}
{"name": "hvac", "license": "APACHE-2.0", "compatible": true}
{"name": "hyperframe", "license": "MIT", "compatible": true}
{"name": "idna", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "importlib-metadata", "license": "APACHE-2.0", "compatible": true}
{"name": "instructor", "license": "MIT", "compatible": true}
Expand Down Expand Up @@ -134,6 +144,7 @@
{"name": "langsmith", "license": "MIT", "compatible": true}
{"name": "lark", "license": "MIT", "compatible": true}
{"name": "litellm", "license": "MIT", "compatible": true}
{"name": "logfire-api", "license": "MIT", "compatible": true}
{"name": "loguru", "license": "MIT", "compatible": true}
{"name": "lxml", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "lz4", "license": "BSD-3-CLAUSE", "compatible": true}
Expand All @@ -160,6 +171,7 @@
{"name": "networkx", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "ngcsdk", "license": "APACHE-2.0", "compatible": true}
{"name": "nltk", "license": "APACHE-2.0", "compatible": true}
{"name": "nooa", "license": "APACHE-2.0", "compatible": true}
{"name": "numpy", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "nvidia-ml-py", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "nvidia-nat-atif", "license": "APACHE-2.0", "compatible": true}
Expand All @@ -175,6 +187,8 @@
{"name": "openai", "license": "APACHE-2.0", "compatible": true}
{"name": "openapi-pydantic", "license": "MIT", "compatible": true}
{"name": "openevals", "license": "MIT", "compatible": true}
{"name": "openinference-instrumentation", "license": "APACHE-2.0", "compatible": true}
{"name": "openinference-instrumentation-litellm", "license": "APACHE-2.0", "compatible": true}
{"name": "openinference-semantic-conventions", "license": "APACHE-2.0", "compatible": true}
{"name": "opentelemetry-api", "license": "APACHE-2.0", "compatible": true}
{"name": "opentelemetry-distro", "license": "APACHE-2.0", "compatible": true}
Expand Down Expand Up @@ -210,6 +224,7 @@
{"name": "pluggy", "license": "MIT", "compatible": true}
{"name": "polling2", "license": "MIT", "compatible": true}
{"name": "portalocker", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "postgrest", "license": "MIT", "compatible": true}
{"name": "prettytable", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "prometheus-client", "license": "APACHE-2.0", "compatible": true}
{"name": "prometheus-fastapi-instrumentator", "license": "ISC", "compatible": true}
Expand All @@ -225,8 +240,12 @@
{"name": "pyasn1-modules", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "pycparser", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "pydantic", "license": "MIT", "compatible": true}
{"name": "pydantic-ai-harness", "license": "MIT", "compatible": true}
{"name": "pydantic-ai-slim", "license": "MIT", "compatible": true}
{"name": "pydantic-core", "license": "MIT", "compatible": true}
{"name": "pydantic-extra-types", "license": "MIT", "compatible": true}
{"name": "pydantic-graph", "license": "MIT", "compatible": true}
{"name": "pydantic-monty", "license": "MIT", "compatible": true}
{"name": "pydantic-settings", "license": "MIT", "compatible": true}
{"name": "pygments", "license": "BSD-2-CLAUSE", "compatible": true}
{"name": "pyjwt", "license": "MIT", "compatible": true}
Expand All @@ -241,6 +260,7 @@
{"name": "pytz", "license": "MIT", "compatible": true}
{"name": "pyyaml", "license": "MIT", "compatible": true}
{"name": "ragas", "license": "APACHE-2.0", "compatible": true}
{"name": "realtime", "license": "MIT", "compatible": true}
{"name": "referencing", "license": "MIT", "compatible": true}
{"name": "regex", "license": "APACHE-2.0", "compatible": true}
{"name": "requests", "license": "APACHE-2.0", "compatible": true}
Expand All @@ -257,6 +277,7 @@
{"name": "s3transfer", "license": "APACHE-2.0", "compatible": true}
{"name": "sacrebleu", "license": "APACHE-2.0", "compatible": true}
{"name": "safetensors", "license": "APACHE-2.0", "compatible": true}
{"name": "scantree", "license": "MIT", "compatible": true}
{"name": "scikit-network", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "scipy", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "secretstorage", "license": "BSD-3-CLAUSE", "compatible": true}
Expand All @@ -276,18 +297,25 @@
{"name": "sqlparse", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "sse-starlette", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "starlette", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "storage3", "license": "MIT", "compatible": true}
{"name": "streaming-form-data", "license": "MIT", "compatible": true}
{"name": "strenum", "license": "MIT", "compatible": true}
{"name": "structlog", "license": "APACHE-2.0", "compatible": true}
{"name": "supabase", "license": "MIT", "compatible": true}
{"name": "supabase-auth", "license": "MIT", "compatible": true}
{"name": "supabase-functions", "license": "MIT", "compatible": true}
{"name": "sympy", "license": "BSD-3-CLAUSE", "compatible": true}
{"name": "tabulate", "license": "MIT", "compatible": true}
{"name": "tblib", "license": "BSD-2-CLAUSE", "compatible": true}
{"name": "tenacity", "license": "APACHE-2.0", "compatible": true}
{"name": "tiktoken", "license": "MIT", "compatible": true}
{"name": "tokenizers", "license": "APACHE-2.0", "compatible": true}
{"name": "toml", "license": "MIT", "compatible": true}
{"name": "tomlkit", "license": "MIT", "compatible": true}
{"name": "tornado", "license": "APACHE-2.0", "compatible": true}
{"name": "tqdm", "license": "MIT", "compatible": true}
{"name": "transformers", "license": "APACHE-2.0", "compatible": true}
{"name": "truststore", "license": "MIT", "compatible": true}
{"name": "typer", "license": "MIT", "compatible": true}
{"name": "types-aioboto3", "license": "MIT", "compatible": true}
{"name": "types-aiobotocore", "license": "MIT", "compatible": true}
Expand Down
Loading
Loading