fix(customizer): resolve metadata drift in model upload - #756
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughChangesModel upload metadata now comes from model-entity tool-calling configuration. Shared helpers replace flat metadata construction, and Automodel, RL, and Unsloth compilers use the new fileset metadata shape with updated tests. Model fileset metadata propagation
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (2)
services/rl/tests/test_compiler.py (1)
221-221: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winTest the populated metadata path.
services/rl/tests/test_compiler.py#L221-L221: configure the model fixture withspec.chat_templateorspec.tool_call_configand assert the nested{"model": {"tool_calling": ...}}upload metadata.services/unsloth/tests/test_compiler_validation_path.py#L125-L125: addspecmetadata to the mocked entity and assert its propagation instead of only the no-spec path.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@services/rl/tests/test_compiler.py` at line 221, Extend the compiler tests to cover populated metadata: in services/rl/tests/test_compiler.py at lines 221-221, configure the model fixture with spec.chat_template or spec.tool_call_config and assert nested {"model": {"tool_calling": ...}} upload metadata; in services/unsloth/tests/test_compiler_validation_path.py at lines 125-125, add spec metadata to the mocked entity and assert that it propagates instead of only validating the no-spec path.packages/nmp_customization_common/src/nmp/customization_common/tasks/file_io_metadata.py (1)
6-42: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winType these helpers and the upload config arg.
packages/nmp_customization_common/src/nmp/customization_common/tasks/file_io_metadata.py: replaceAny/baredictwithModelEntity(or a narrow protocol) and typed metadata mappings.services/rl/src/nmp/rl/app/jobs/compiler.py: annotatemeasModelEntityto match the download path.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/nmp_customization_common/src/nmp/customization_common/tasks/file_io_metadata.py` around lines 6 - 42, The helpers extract_tool_calling_metadata, build_model_fileset_metadata, and build_output_fileset_metadata_from_model_entity currently use Any and unparameterized dict types; replace them with ModelEntity (or a narrow protocol) and precise typed metadata mappings, preserving existing behavior. In services/rl/src/nmp/rl/app/jobs/compiler.py lines 124-130, annotate the upload configuration variable me as ModelEntity to match the download path.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In
`@packages/nmp_customization_common/src/nmp/customization_common/tasks/file_io_metadata.py`:
- Around line 6-42: The helpers extract_tool_calling_metadata,
build_model_fileset_metadata, and
build_output_fileset_metadata_from_model_entity currently use Any and
unparameterized dict types; replace them with ModelEntity (or a narrow protocol)
and precise typed metadata mappings, preserving existing behavior. In
services/rl/src/nmp/rl/app/jobs/compiler.py lines 124-130, annotate the upload
configuration variable me as ModelEntity to match the download path.
In `@services/rl/tests/test_compiler.py`:
- Line 221: Extend the compiler tests to cover populated metadata: in
services/rl/tests/test_compiler.py at lines 221-221, configure the model fixture
with spec.chat_template or spec.tool_call_config and assert nested {"model":
{"tool_calling": ...}} upload metadata; in
services/unsloth/tests/test_compiler_validation_path.py at lines 125-125, add
spec metadata to the mocked entity and assert that it propagates instead of only
validating the no-spec path.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 10cad0b5-c76e-4dca-b644-ee97a15029e4
📒 Files selected for processing (7)
packages/nmp_customization_common/src/nmp/customization_common/tasks/file_io_metadata.pypackages/nmp_customization_common/tests/tasks/test_file_io_metadata.pyservices/automodel/src/nmp/automodel/app/jobs/compiler.pyservices/rl/src/nmp/rl/app/jobs/compiler.pyservices/rl/tests/test_compiler.pyservices/unsloth/src/nmp/unsloth/app/jobs/compiler.pyservices/unsloth/tests/test_compiler_validation_path.py
|
4fbae79 to
30bce98
Compare
There was a problem hiding this comment.
Actionable comments posted: 9
🧹 Nitpick comments (5)
plugins/nemo-evaluator/src/nemo_evaluator/intake/mapping.py (1)
72-79: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueConsider renaming
experiment_idparameter toevaluation_id.The function is named
run_task_to_evaluation_contextand outputsevaluation_id, but the parameter is stillexperiment_id. The docstring explains the mapping, but renaming the parameter would reduce cognitive load once all callers are updated.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/nemo-evaluator/src/nemo_evaluator/intake/mapping.py` around lines 72 - 79, Rename the experiment_id parameter in run_task_to_evaluation_context to evaluation_id, update all callers and keyword arguments accordingly, and preserve the returned evaluation_context mapping with evaluation_id set from the renamed parameter.services/intake/src/nmp/intake/api/v2/experiments/endpoints.py (1)
666-674: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueEndpoint description hardcodes "300" instead of using
INTAKE_PREVIEW_PAYLOAD_CHAR_LIMIT.The schema field descriptions in
schemas.pyuseINTAKE_PREVIEW_PAYLOAD_CHAR_LIMITfor the truncation limit, but this endpoint description hardcodes "300 characters". If the constant changes, the OpenAPI description here will be out of sync.♻️ Suggested fix
mode: EvaluationSessionMode = Query( default="detailed", description=( - "Response mode. summary omits root-span input and output; preview includes both truncated to " - "300 characters; detailed returns full root-span payloads." + f"Response mode. summary omits root-span input and output; preview includes both truncated to " + f"{INTAKE_PREVIEW_PAYLOAD_CHAR_LIMIT} characters; detailed returns full root-span payloads." ), ),🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@services/intake/src/nmp/intake/api/v2/experiments/endpoints.py` around lines 666 - 674, Update the mode Query description in the endpoint definition to interpolate or otherwise reuse INTAKE_PREVIEW_PAYLOAD_CHAR_LIMIT instead of hardcoding “300”, keeping the existing summary, preview, and detailed behavior wording unchanged.services/intake/src/nmp/intake/spans/api/spans_schemas.py (1)
122-124: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value
SPAN_SUMMARY_ERROR_MESSAGE_CHAR_LIMITname is now misleading.This constant is used for truncation in both summary and preview modes (via
_error_message_for_modewithcompact=True), but its name only references "summary". Consider renaming toSPAN_COMPACT_ERROR_MESSAGE_CHAR_LIMITfor clarity.Also applies to: 246-249
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@services/intake/src/nmp/intake/spans/api/spans_schemas.py` around lines 122 - 124, Rename SPAN_SUMMARY_ERROR_MESSAGE_CHAR_LIMIT to SPAN_COMPACT_ERROR_MESSAGE_CHAR_LIMIT throughout the spans schema and error-message formatting code, including _error_message_for_mode and its documentation, while preserving the existing truncation behavior for both summary and preview modes.web/packages/studio/src/components/sidePanels/AgentPanels/AgentPanel/index.tsx (1)
111-112: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueConsider a type guard instead of
asassertion, and note format coverage gap.The
agent?.config as AgentConfig | undefinedassertion bypasses type checking. Per coding guidelines, prefer type guards over assertions. Additionally,AgentConfigonly models the legacynat-workflow-v1format (llms.model_name); agents using the newnemo-agents-spec-v1format (withharnesses/modelsinstead ofllms) will silently show no model names. This degrades gracefully but is a feature gap worth tracking.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/packages/studio/src/components/sidePanels/AgentPanels/AgentPanel/index.tsx` around lines 111 - 112, Replace the unchecked assertion in the agentModelNames initialization with a type guard that validates the configuration before passing it to getAgentModelNames. Extend the configuration/model-name handling to support nemo-agents-spec-v1 agents using harnesses and models, while preserving legacy nat-workflow-v1 support and graceful empty results for unsupported configurations.Source: Coding guidelines
web/packages/studio/src/components/dataViews/JobsDataView/index.tsx (1)
116-128: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueRef mutation during render.
seenSourcesRef.current.add(job.source)mutates a ref during render. While safe in practice (idempotentSet.add), React advises against writing refs during render. Consider computing the accumulated set inuseMemokeyed onjobsData?.dataand storing it in the ref inside an effect, or derivingmergedSourceOptionspurely from current data + auseMemo-cached accumulation.♻️ Optional refactor: derive seen sources without render-time ref mutation
- // Surface plugin sources not in the static list (e.g. nemo-agents-plugin). - const seenSourcesRef = useRef<Set<string>>(new Set()); - for (const job of jobsData?.data ?? []) { - if (job.source) seenSourcesRef.current.add(job.source); - } - - const staticSourceValues = new Set(sourceFilterOptions.map((option) => option.value)); - const dynamicSourceOptions = [...seenSourcesRef.current] - .filter((source) => !staticSourceValues.has(source) && !hiddenJobSources.includes(source)) - .sort() - .map((source) => ({ label: SOURCE_DISPLAY[source]?.label ?? source, value: source })); + // Surface plugin sources not in the static list (e.g. nemo-agents-plugin). + const seenSourcesRef = useRef<Set<string>>(new Set()); + const currentSources = useMemo( + () => { + const next = new Set(seenSourcesRef.current); + for (const job of jobsData?.data ?? []) { + if (job.source) next.add(job.source); + } + return next; + }, + [jobsData?.data] + ); + useEffect(() => { + seenSourcesRef.current = currentSources; + }, [currentSources]); + + const staticSourceValues = new Set(sourceFilterOptions.map((option) => option.value)); + const dynamicSourceOptions = [...currentSources] + .filter((source) => !staticSourceValues.has(source) && !hiddenJobSources.includes(source)) + .sort() + .map((source) => ({ label: SOURCE_DISPLAY[source]?.label ?? source, value: source }));🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/packages/studio/src/components/dataViews/JobsDataView/index.tsx` around lines 116 - 128, Remove the render-time mutation of seenSourcesRef in the JobsDataView source-option logic. Derive the accumulated source set with useMemo keyed on jobsData?.data, then update the ref from an effect if retaining the ref is necessary; ensure mergedSourceOptions is computed from the current data and accumulated sources without writing to the ref during render.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci.yaml:
- Around line 1213-1214: Update the checkout step using actions/checkout in the
workflow to set persist-credentials to false, matching the secure configuration
used by the other checkout steps. Keep the existing pinned action reference
unchanged.
In `@docs/agents/deploy-agents.mdx`:
- Around line 362-364: Update the documented `uv run nemo services run` command
to bind port 8080 only to the Docker bridge gateway/interface instead of
`0.0.0.0`. Preserve the existing port and service invocation while replacing the
host value with the bridge-specific address.
In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/README.md`:
- Around line 1-22: Restructure the Fabric Config Boundary README as an
EXPLANATION page: add a Prerequisites section at the top and a closing Next
Steps section, while preserving the existing configuration-boundary explanation.
Replace hardcoded product names throughout the document with the repository’s
configured documentation substitutions, including the title and references to
Platform, Fabric, and NeMo Agents.
In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/validation.py`:
- Around line 55-58: Update the plan execution error handling around
fabric_client.plan in the validation flow to catch non-configuration exceptions
as well as FabricConfigError, and wrap them in FabricValidationError while
preserving the original exception as the cause. Keep the existing
configuration-specific handling and validation error message context intact.
In `@plugins/nemo-insights/src/nemo_insights_plugin/cli.py`:
- Around line 55-70: Restrict the load_env_file call in _load_profile_or_error
to explicitly supported analysis environment keys, or skip automatic .env
loading unless the user explicitly opts in. Preserve explicit profile loading
behavior while preventing discovered profiles from injecting arbitrary
os.environ values.
- Around line 152-154: Update the output-path handling in the CLI around
analysis.profile_output so explicit --insights-file-output paths also create
their parent directory with parents=True and exist_ok=True before invoking the
runner. Preserve the existing behavior for profile-derived paths and avoid
duplicating directory-creation logic where possible.
In `@plugins/nemo-insights/src/nemo_insights_plugin/preflight.py`:
- Around line 23-30: Update the readiness check in the preflight HTTP request to
return true only when the response status is in the 2xx success range, replacing
the current status_code < 500 condition while preserving the existing URL,
timeout, and redirect behavior.
In `@plugins/nemo-insights/testbed/publish.py`:
- Around line 136-145: Serialize the complete publishing transaction in the flow
around release.next_ref, release._release_gh("upload"), and the subsequent
"edit" so concurrent publishers cannot read and overwrite the same release notes
body. Hold the existing catalog/release lock across ref generation, asset
upload, notes retrieval, catalog_row creation, and insert_catalog_row editing,
preserving immutable asset collision behavior.
In `@services/core/jobs/src/nmp/core/jobs/app/dispatcher.py`:
- Line 343: Update the job listing flow around the dispatcher query and
in-memory status filtering so status-filtered candidates are determined before
applying pagination. Ensure source sorting still operates correctly, matching
jobs from later store pages are included, and total_results reflects the
status-filtered set.
---
Nitpick comments:
In `@plugins/nemo-evaluator/src/nemo_evaluator/intake/mapping.py`:
- Around line 72-79: Rename the experiment_id parameter in
run_task_to_evaluation_context to evaluation_id, update all callers and keyword
arguments accordingly, and preserve the returned evaluation_context mapping with
evaluation_id set from the renamed parameter.
In `@services/intake/src/nmp/intake/api/v2/experiments/endpoints.py`:
- Around line 666-674: Update the mode Query description in the endpoint
definition to interpolate or otherwise reuse INTAKE_PREVIEW_PAYLOAD_CHAR_LIMIT
instead of hardcoding “300”, keeping the existing summary, preview, and detailed
behavior wording unchanged.
In `@services/intake/src/nmp/intake/spans/api/spans_schemas.py`:
- Around line 122-124: Rename SPAN_SUMMARY_ERROR_MESSAGE_CHAR_LIMIT to
SPAN_COMPACT_ERROR_MESSAGE_CHAR_LIMIT throughout the spans schema and
error-message formatting code, including _error_message_for_mode and its
documentation, while preserving the existing truncation behavior for both
summary and preview modes.
In `@web/packages/studio/src/components/dataViews/JobsDataView/index.tsx`:
- Around line 116-128: Remove the render-time mutation of seenSourcesRef in the
JobsDataView source-option logic. Derive the accumulated source set with useMemo
keyed on jobsData?.data, then update the ref from an effect if retaining the ref
is necessary; ensure mergedSourceOptions is computed from the current data and
accumulated sources without writing to the ref during render.
In
`@web/packages/studio/src/components/sidePanels/AgentPanels/AgentPanel/index.tsx`:
- Around line 111-112: Replace the unchecked assertion in the agentModelNames
initialization with a type guard that validates the configuration before passing
it to getAgentModelNames. Extend the configuration/model-name handling to
support nemo-agents-spec-v1 agents using harnesses and models, while preserving
legacy nat-workflow-v1 support and graceful empty results for unsupported
configurations.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: eebdc267-0f08-4e59-a0c9-635b19b94a7c
⛔ Files ignored due to path filters (34)
sdk/python/nemo-platform/.nmpcontext/openapi.yamlis excluded by!sdk/**sdk/python/nemo-platform/.nmpcontext/stainless.yamlis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/beta/evaluator/enums.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/beta/evaluator/values/common.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/app.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/sessions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/traces.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/evaluations/sessions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/intake/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/intake/api.mdis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/intake/intake.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/intake/sessions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/intake/spans/spans.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/intake/traces.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/jobs/api.mdis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/resources/jobs/jobs.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/evaluations/evaluation_session_response.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/evaluations/session_list_params.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/session.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/span.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/span_list_params.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/trace.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/trace_list_params.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/intake/trace_retrieve_params.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/jobs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/jobs/job_list_params.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/types/jobs/platform_job_list_sort_field.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/api_resources/intake/test_sessions.pyis excluded by!sdk/**sdk/stainless.yamlis excluded by!sdk/**uv.lockis excluded by!**/*.lock
📒 Files selected for processing (141)
.github/workflows/ci.yaml.github/workflows/insights-testbed.yml.gitignoreconftest.pydocker/Dockerfile.bakedocker/base/Dockerfile.nmp-jobs-launcherdocs/agents/deploy-agents.mdxdocs/cli/reference.mdxdocs/customizer/tutorials/embedding-customization-job.mdxdocs/evaluator/index.mdxdocs/fern/package.jsondocs/fern/scripts/docs-watch.mjsdocs/fern/scripts/sync-helm-docs.mjsdocs/helm/_snippets/helm-values.cssdocs/helm/index.mdxdocs/set-up/config-reference.mdxdocs/set-up/helm/install.mdxe2e/configs/local-docker-agents.yamle2e/services_pool.pye2e/test_evaluator_plugin.pye2e/test_nemo_agents_docker.pyopenapi/ga/individual/platform.openapi.yamlopenapi/ga/openapi.yamlopenapi/openapi.yamlpackages/nemo_evaluator_sdk/src/nemo_evaluator_sdk/enums.pypackages/nemo_evaluator_sdk/src/nemo_evaluator_sdk/values/common.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/app.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/sessions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/__init__.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/jobs/api_factory.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/jobs/types.pypackages/nemo_platform_plugin/tests/test_jobs_create_spec_json.pyplugins/nemo-agents/examples/nemo-agent-config/agent.yamlplugins/nemo-agents/openapi/openapi.yamlplugins/nemo-agents/pyproject.tomlplugins/nemo-agents/src/nemo_agents_plugin/agent_config.pyplugins/nemo-agents/src/nemo_agents_plugin/entities.pyplugins/nemo-agents/src/nemo_agents_plugin/fabric/README.mdplugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.pyplugins/nemo-agents/src/nemo_agents_plugin/fabric/validation.pyplugins/nemo-agents/src/nemo_agents_plugin/schema.pyplugins/nemo-agents/tests/unit/test_agent_config.pyplugins/nemo-agents/tests/unit/test_entities.pyplugins/nemo-agents/tests/unit/test_fabric_translator.pyplugins/nemo-agents/tests/unit/test_fabric_validation.pyplugins/nemo-evaluator/src/nemo_evaluator/api/service/task_service.pyplugins/nemo-evaluator/src/nemo_evaluator/api/v2/tasks.pyplugins/nemo-evaluator/src/nemo_evaluator/intake/mapping.pyplugins/nemo-evaluator/tests/api/service/test_task_service.pyplugins/nemo-evaluator/tests/api/v2/test_metrics_routes.pyplugins/nemo-evaluator/tests/api/v2/test_tasks_routes.pyplugins/nemo-evaluator/tests/intake/test_mapping.pyplugins/nemo-evaluator/tests/intake/test_publish.pyplugins/nemo-evaluator/tests/integration/test_publish_to_intake.pyplugins/nemo-evaluator/tests/test_evaluate_job.pyplugins/nemo-evaluator/tests/test_sdk.pyplugins/nemo-insights/README.mdplugins/nemo-insights/pyproject.tomlplugins/nemo-insights/src/nemo_insights_plugin/analyst/analyst_backend.pyplugins/nemo-insights/src/nemo_insights_plugin/analyst/run.pyplugins/nemo-insights/src/nemo_insights_plugin/cli.pyplugins/nemo-insights/src/nemo_insights_plugin/contracts/checks.pyplugins/nemo-insights/src/nemo_insights_plugin/contracts/insights.pyplugins/nemo-insights/src/nemo_insights_plugin/contracts/profile.pyplugins/nemo-insights/src/nemo_insights_plugin/preflight.pyplugins/nemo-insights/src/nemo_insights_plugin/profile.pyplugins/nemo-insights/testbed/README.mdplugins/nemo-insights/testbed/cli.pyplugins/nemo-insights/testbed/publish.pyplugins/nemo-insights/testbed/reingest.pyplugins/nemo-insights/testbed/release.pyplugins/nemo-insights/tests/contracts/test_checks.pyplugins/nemo-insights/tests/contracts/test_insights.pyplugins/nemo-insights/tests/contracts/test_profile_contract.pyplugins/nemo-insights/tests/test_cli_profile.pyplugins/nemo-insights/tests/test_periodic_analysis.pyplugins/nemo-insights/tests/test_preflight.pyplugins/nemo-insights/tests/test_profile.pyplugins/nemo-insights/tests/testbed/test_cli.pyplugins/nemo-insights/tests/testbed/test_publish.pyplugins/nemo-insights/tests/testbed/test_reingest.pyplugins/nemo-insights/tests/testbed/test_release.pypyproject.tomlpytest.iniscript/generate_config_docs.pyservices/automodel/src/nmp/automodel/app/jobs/compiler.pyservices/core/auth/src/nmp/core/auth/assets/static-authz.yamlservices/core/jobs/src/nmp/core/jobs/api/v2/jobs/endpoints.pyservices/core/jobs/src/nmp/core/jobs/api/v2/jobs/schemas.pyservices/core/jobs/src/nmp/core/jobs/app/dispatcher.pyservices/core/jobs/src/nmp/core/jobs/controllers/backends/config.pyservices/core/jobs/tests/test_config.pyservices/core/jobs/tests/test_dispatcher.pyservices/core/models/src/nmp/core/models/api/v2/models.pyservices/intake/README.mdservices/intake/src/nmp/intake/api/v2/experiments/endpoints.pyservices/intake/src/nmp/intake/api/v2/experiments/schemas.pyservices/intake/src/nmp/intake/service.pyservices/intake/src/nmp/intake/spans/api/dependencies.pyservices/intake/src/nmp/intake/spans/api/sessions.pyservices/intake/src/nmp/intake/spans/api/sessions_schemas.pyservices/intake/src/nmp/intake/spans/api/spans.pyservices/intake/src/nmp/intake/spans/api/spans_schemas.pyservices/intake/src/nmp/intake/spans/api/traces.pyservices/intake/src/nmp/intake/spans/api/traces_schemas.pyservices/intake/src/nmp/intake/spans/domain.pyservices/intake/src/nmp/intake/spans/evaluation_session_repository.pyservices/intake/src/nmp/intake/spans/service.pyservices/intake/src/nmp/intake/spans/session_repository.pyservices/intake/src/nmp/intake/spans/span_repository.pyservices/intake/src/nmp/intake/spans/span_rollups.pyservices/intake/src/nmp/intake/spans/storage.pyservices/intake/src/nmp/intake/spans/trace_repository.pyservices/intake/tests/integration/spans/test_chat_completions_ingest.pyservices/intake/tests/integration/spans/test_experiment_sessions.pyservices/intake/tests/integration/spans/test_sessions_read.pyservices/intake/tests/integration/spans/test_traces_read.pyservices/intake/tests/integration/test_intake.pyservices/intake/tests/test_evaluation_session_clickhouse_repository.pyservices/intake/tests/test_experiment_session_schemas.pyservices/intake/tests/test_sessions_api.pyservices/intake/tests/test_sessions_clickhouse_repository.pyservices/intake/tests/test_spans_clickhouse_repository.pyservices/intake/tests/test_spans_schemas.pyservices/intake/tests/test_spans_storage.pyservices/intake/tests/test_traces_clickhouse_repository.pyweb/packages/studio/src/components/IntakeLists/IntakePayloadPreviewCell.tsxweb/packages/studio/src/components/IntakeLists/IntakeSpansTable.test.tsxweb/packages/studio/src/components/IntakeLists/IntakeSpansTable.tsxweb/packages/studio/src/components/IntakeLists/IntakeTracesTable.test.tsxweb/packages/studio/src/components/IntakeLists/IntakeTracesTable.tsxweb/packages/studio/src/components/dataViews/EvaluationSessionsDataView/index.test.tsxweb/packages/studio/src/components/dataViews/EvaluationSessionsDataView/index.tsxweb/packages/studio/src/components/dataViews/JobsDataView/index.test.tsxweb/packages/studio/src/components/dataViews/JobsDataView/index.tsxweb/packages/studio/src/components/sidePanels/AgentPanels/AgentPanel/index.test.tsxweb/packages/studio/src/components/sidePanels/AgentPanels/AgentPanel/index.tsxweb/packages/studio/src/mocks/intake/telemetry.ts
💤 Files with no reviewable changes (5)
- docs/helm/_snippets/helm-values.css
- packages/nemo_evaluator_sdk/src/nemo_evaluator_sdk/values/common.py
- plugins/nemo-insights/pyproject.toml
- docs/helm/index.mdx
- packages/nemo_evaluator_sdk/src/nemo_evaluator_sdk/enums.py
🚧 Files skipped from review as they are similar to previous changes (1)
- services/automodel/src/nmp/automodel/app/jobs/compiler.py
202785d to
0192a82
Compare
Signed-off-by: Sam Oluwalana <soluwalana@nvidia.com>
Co-authored-by: Albert Cui <albcui@nvidia.com> Signed-off-by: Sam Oluwalana <soluwalana@nvidia.com>
Signed-off-by: Sam Oluwalana <soluwalana@nvidia.com>
0192a82 to
f8ab185
Compare
Summary by CodeRabbit
New Features
Bug Fixes