chore(copilot): Switch copilot from NAT to Fabric - #1128
Conversation
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com>
|
|
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:
📝 WalkthroughWalkthroughThe NeMo Studio Copilot moves from NAT workflows to a Fabric-hosted DeepAgents agent. It adds packaged skills, an stdio MCP server, workspace-aware SDK tools, mutation approval, a Fabric image, runtime environment forwarding, and focused tests. ChangesFabric NeMo Studio Copilot
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 14
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py (1)
109-111: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick winWrap
json.loadsso a malformed payload does not escape as a traceback.
select_*,job_progress,studio_link, andask_user_questiondo not catch exceptions. A non-JSONtextfield here raisesjson.JSONDecodeErrorout of those tools instead of returning an error string.🔧 Proposed fix
- decoded = json.loads(first["text"]) + try: + decoded = json.loads(first["text"]) + except json.JSONDecodeError as exc: + raise RuntimeError(f"Studio callback tool returned invalid JSON: {exc}") from exc if not isinstance(decoded, dict): raise RuntimeError("Studio callback tool returned a non-object result")🤖 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 `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py` around lines 109 - 111, Update the JSON decoding in the callback result handling around decoded and the affected select_*, job_progress, studio_link, and ask_user_question tools so json.loads failures are caught and converted to the tools’ existing error-string result path. Preserve the current non-object validation for successfully decoded payloads, and prevent JSONDecodeError from escaping to callers.
🧹 Nitpick comments (9)
agents/nemo-studio-copilot/Dockerfile.fabric-local (2)
23-27: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winAdd bounded retries and timeouts to the installer download.
curl -fsSLcan hang indefinitely and has no retry policy. A transient GitHub failure also fails the image build immediately. Add bounded connection, total, and retry limits.Suggested change
- curl -fsSL https://raw.githubusercontent.com/NVIDIA/NeMo-Relay/40c5990361afc26ae8b901ff1f49c2b03ddd9ede/install.sh -o /tmp/install-nemo-relay.sh && \ + curl -fsSL --retry 5 --retry-delay 2 --connect-timeout 10 --max-time 60 \ + https://raw.githubusercontent.com/NVIDIA/NeMo-Relay/40c5990361afc26ae8b901ff1f49c2b03ddd9ede/install.sh \ + -o /tmp/install-nemo-relay.sh && \🤖 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 `@agents/nemo-studio-copilot/Dockerfile.fabric-local` around lines 23 - 27, Update the installer download command in the Dockerfile RUN chain to configure bounded connection and total timeouts plus a finite retry policy for transient failures, while preserving the existing URL, checksum verification, installation, cleanup, and version check.
15-18: 🔒 Security & Privacy | 🔵 Trivial | 🏗️ Heavy liftKeep build-only compilers out of the runtime image.
g++andgccremain available to theagentuser. If no runtime package compiles code, use a builder stage or remove these packages in the same layer after installation.🤖 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 `@agents/nemo-studio-copilot/Dockerfile.fabric-local` around lines 15 - 18, Update the Dockerfile build flow so g++ and gcc are unavailable in the final runtime image: either install them only in a builder stage or remove them in the same apt layer after any required build steps. Preserve the runtime installation of ca-certificates and curl and ensure the agent user cannot access the compilers.agents/nemo-studio-copilot/tests/smoke_test.md (3)
63-69: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd the required
Next Stepssection.End the page with cross-links to
docs/agents/index.mdxand the Fabric evaluation follow-up.As per coding guidelines, Markdown pages must include a
Next Stepssection at the end with cross-links.🤖 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 `@agents/nemo-studio-copilot/tests/smoke_test.md` around lines 63 - 69, Add a final “Next Steps” section to the smoke test page, including cross-links to docs/agents/index.mdx and the Fabric evaluation follow-up. Keep the existing evaluation-status content unchanged and ensure this section is the page’s last content.Source: Coding guidelines
22-50: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy liftAdd the Python SDK variant or declare this runbook CLI-only.
This Markdown page provides only CLI workflows. Add Python SDK examples in tab sets for registration, deployment, and invocation, or document an explicit exemption for this internal test artifact.
As per coding guidelines, Markdown pages must provide both Python SDK and CLI examples in tab sets.
🤖 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 `@agents/nemo-studio-copilot/tests/smoke_test.md` around lines 22 - 50, Update the smoke-test runbook to either add Python SDK examples in tabbed sections alongside the existing CLI workflows for registration, packaging/deployment, and invocation, or explicitly declare the document exempt as an internal CLI-only test artifact. Preserve the current CLI commands and ensure the chosen approach is stated clearly in the page.Source: Coding guidelines
1-9: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd prerequisites before the procedure.
List the required
uvandnemoinstallations, Docker, platform availability, credentials, andNMP_BASE_URL. State that the variable must remain exported when commands run independently.As per coding guidelines, documentation pages must list prerequisites at the top.
🤖 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 `@agents/nemo-studio-copilot/tests/smoke_test.md` around lines 1 - 9, Add a prerequisites section at the top of the smoke test documentation before “Static and unit validation.” List the required uv and nemo installations, Docker, platform availability, credentials, and NMP_BASE_URL, explicitly noting that NMP_BASE_URL must remain exported when commands are run independently.Source: Coding guidelines
agents/nemo-studio-copilot-spec/AGENT-SPEC.md (1)
58-61: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRemove unsupported fast-path telemetry requirements.
The Fabric configuration has no fast-path selector or replacement deterministic branch. Remove
fast-path selectionfrom Observability andfast-path hit ratefrom Signals.🤖 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 `@agents/nemo-studio-copilot-spec/AGENT-SPEC.md` around lines 58 - 61, Update the Observability entry to remove the unsupported “fast-path selection” telemetry requirement, and update the Signals section to remove “fast-path hit rate.” Preserve the remaining telemetry and verification requirements unchanged.agents/nemo-studio-copilot/pyproject.toml (1)
13-17: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winDeclare
pydanticexplicitly.
src/nemo_studio_copilot/register.pyimportspydantic.BaseModelat line 14. The dependency set relies on it arriving transitively throughnemo-platformorfastmcp. Add it directly.🔧 Proposed fix
dependencies = [ "nemo-platform", "fastmcp>=3.2.0", "httpx", + "pydantic>=2", ]🤖 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 `@agents/nemo-studio-copilot/pyproject.toml` around lines 13 - 17, Update the dependencies list to explicitly include pydantic, matching the direct import used by register.py’s BaseModel usage; retain the existing dependencies unchanged.agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py (1)
348-356: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winApply the same attribute guard to
service.
_resolve_resourcerejects empty and_-prefixed components at line 54.check_statuscallsgetattr(_get_client(), service)with no guard, so private client attributes are reachable. Reuse the validated resolver.🔧 Proposed fix
try: - svc = getattr(_get_client(), service) + svc = _resolve_resource(_get_client(), service)🤖 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 `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py` around lines 348 - 356, Update check_status to resolve service through the existing validated _resolve_resource helper instead of directly calling getattr(_get_client(), service). Preserve the current sub-resource iteration and status-checking behavior after obtaining the validated service resource.agents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py (1)
80-93: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd coverage for an invalid session id and for SSE parsing.
register._request_mutation_approvalhas two denial branches. This test covers onlystudio_session_id is None. The non-UUID branch atregister.pyline 162 is untested. The changed SSE line filter atregister.pylines 119-122 also has no test.🔧 Proposed tests
def test_mutating_nemo_api_rejects_invalid_studio_session(monkeypatch: pytest.MonkeyPatch) -> None: called = False def create(**_kwargs: object) -> object: nonlocal called called = True return {} monkeypatch.setattr(register, "_client", SimpleNamespace(workspaces=SimpleNamespace(create=create))) response = register.nemo_api("workspaces", "create", '{"name": "demo"}', studio_session_id="not-a-uuid") assert response.startswith("Denied:") assert called is False def test_sse_callback_response_ignores_non_data_lines() -> None: body = 'event: message\ndata: {"jsonrpc":"2.0","result":{"content":[{"text":"{\\"behavior\\":\\"allow\\"}"}]}}\n' response = httpx.Response( 200, headers={"content-type": "text/event-stream"}, text=body, request=httpx.Request("POST", "http://t") ) assert register._parse_studio_callback_response(response) == {"behavior": "allow"}🤖 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 `@agents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py` around lines 80 - 93, Add test coverage for the two untested branches in register._request_mutation_approval and the SSE parsing change: add a nemo_api test that passes an invalid studio_session_id value to verify the non-UUID denial path still blocks the mutating workspaces.create call, and add a _parse_studio_callback_response test that feeds an SSE response containing non-data lines so the parser ignores them and still returns the expected decoded payload. Use the existing register.nemo_api and register._parse_studio_callback_response symbols to keep the new tests aligned with the current behavior.
🤖 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 `@agents/nemo-studio-copilot-spec/AGENT-SPEC.md`:
- Around line 36-37: The request handling around `_get_client()` must propagate
the active request workspace instead of reusing a cached client configured for
another workspace or silently defaulting to “default.” Update the client
acquisition flow to use the request’s workspace for workspace-specific
operations, and require clarification when that workspace is missing; add a
regression test covering requests for different workspaces.
In `@agents/nemo-studio-copilot-spec/skills/benchmark-execution/SKILL.md`:
- Line 11: Correct the README link in the benchmark-execution skill
documentation so its relative path climbs four parent directories to reach
tests/agentic-use/README.md instead of six.
In `@agents/nemo-studio-copilot-spec/skills/evaluator/SKILL.md`:
- Around line 7-9: Update the typical metric-job flow in the evaluator playbook
so workspace creation is conditional: use the active request workspace by
default, and provision a new workspace only when the task explicitly requires
it. Keep the subsequent dataset fileset creation/upload steps targeted at
whichever workspace is selected.
In `@agents/nemo-studio-copilot-spec/skills/files/SKILL.md`:
- Around line 19-22: Update the final verification instructions around the
fileset retrieval and file listing to validate verify.txt’s content, not just
its presence. After confirming the file appears, download it and compare it with
the required content, or validate the service-provided checksum or version;
retain the existing fileset verification steps.
- Line 18: The mutation retry guidance in the failure-handling rule must
distinguish nemo_api errors from confirmed pre-commit validation failures.
Update the instructions covering create, upload_content, and delete so they read
back stable identity or use idempotency keys before retrying, and prohibit
retries when commit state is unknown; preserve the existing stop-and-report
behavior after an unrecoverable retry.
In `@agents/nemo-studio-copilot-spec/skills/workspace/SKILL.md`:
- Around line 7-8: Clarify the undefined “AUT mode” reference in the workspace
skill instructions by defining when it applies and how agents identify it, or
remove the term and express the fallback directly using nemo_api. Update the
instruction mentioning create_workspace and list_workspaces while preserving its
intent.
- Around line 10-13: Update the mutating nemo_api examples for workspaces to
include a valid studio_session_id in the create and delete params, while leaving
the read-only list and retrieve examples unchanged. Ensure the documented call
shapes are accepted by register.nemo_api rather than returning Denied.
In `@agents/nemo-studio-copilot/Dockerfile.fabric-local`:
- Around line 2-8: Update the Dockerfile’s FROM and uv COPY image references to
use immutable digest pins, and ensure the dependency installation explicitly
consumes the available uv.lock or an in-context constraints file. Keep the
constraints file within the build context or pass it into the build, and enforce
the required dependency set including nemo-fabric==0.1.0.
In `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py`:
- Around line 163-166: Update _request_mutation_approval to return
approval["updatedInput"] when the user allows the operation, while preserving
its denial response; then update nemo_api to execute the mutation with that
approved input instead of the original params, including the existing behavior
when no edits are provided.
- Around line 184-198: Update the request flow in the surrounding registration
handler to parse and validate params before calling _request_mutation_approval,
then use normalized_action consistently for _call_sdk_method after the read-only
check. Preserve the existing denial behavior and JSON-object validation.
In `@agents/nemo-studio-copilot/tests/smoke_test.md`:
- Around line 11-16: Add the required `uv run --frozen ty check` command to the
validation block in `smoke_test.md`, alongside the existing pytest and Ruff
commands, so the documented checks include type validation.
- Around line 35-39: Update the deployment lifecycle instructions around the
nemo-studio-copilot deployment command to run deployments wait before invoking
the deployed agent, rather than relying on deployments list for readiness. After
verification, remove the temporary workspace and run undeploy followed by delete
for the agent so repeated smoke-test runs clean up all state.
- Around line 63-69: Restore automated coverage for all three cases in
nemo-studio-copilot-eval-data.json by either implementing a Fabric-compatible
evaluation driver targeting /v1/chat/completions or adding deterministic CI
tests for each input. Ensure the coverage runs in CI and replaces the removed
nemo-studio-copilot-eval.yml workflow.
In `@agents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py`:
- Around line 10-11: Add nemo-agents-plugin to the copilot test dependency
configuration and regenerate the standalone uv.lock so the imports used by
load_agent_config and translate_agent_config resolve during test collection.
---
Outside diff comments:
In `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py`:
- Around line 109-111: Update the JSON decoding in the callback result handling
around decoded and the affected select_*, job_progress, studio_link, and
ask_user_question tools so json.loads failures are caught and converted to the
tools’ existing error-string result path. Preserve the current non-object
validation for successfully decoded payloads, and prevent JSONDecodeError from
escaping to callers.
---
Nitpick comments:
In `@agents/nemo-studio-copilot-spec/AGENT-SPEC.md`:
- Around line 58-61: Update the Observability entry to remove the unsupported
“fast-path selection” telemetry requirement, and update the Signals section to
remove “fast-path hit rate.” Preserve the remaining telemetry and verification
requirements unchanged.
In `@agents/nemo-studio-copilot/Dockerfile.fabric-local`:
- Around line 23-27: Update the installer download command in the Dockerfile RUN
chain to configure bounded connection and total timeouts plus a finite retry
policy for transient failures, while preserving the existing URL, checksum
verification, installation, cleanup, and version check.
- Around line 15-18: Update the Dockerfile build flow so g++ and gcc are
unavailable in the final runtime image: either install them only in a builder
stage or remove them in the same apt layer after any required build steps.
Preserve the runtime installation of ca-certificates and curl and ensure the
agent user cannot access the compilers.
In `@agents/nemo-studio-copilot/pyproject.toml`:
- Around line 13-17: Update the dependencies list to explicitly include
pydantic, matching the direct import used by register.py’s BaseModel usage;
retain the existing dependencies unchanged.
In `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py`:
- Around line 348-356: Update check_status to resolve service through the
existing validated _resolve_resource helper instead of directly calling
getattr(_get_client(), service). Preserve the current sub-resource iteration and
status-checking behavior after obtaining the validated service resource.
In `@agents/nemo-studio-copilot/tests/smoke_test.md`:
- Around line 63-69: Add a final “Next Steps” section to the smoke test page,
including cross-links to docs/agents/index.mdx and the Fabric evaluation
follow-up. Keep the existing evaluation-status content unchanged and ensure this
section is the page’s last content.
- Around line 22-50: Update the smoke-test runbook to either add Python SDK
examples in tabbed sections alongside the existing CLI workflows for
registration, packaging/deployment, and invocation, or explicitly declare the
document exempt as an internal CLI-only test artifact. Preserve the current CLI
commands and ensure the chosen approach is stated clearly in the page.
- Around line 1-9: Add a prerequisites section at the top of the smoke test
documentation before “Static and unit validation.” List the required uv and nemo
installations, Docker, platform availability, credentials, and NMP_BASE_URL,
explicitly noting that NMP_BASE_URL must remain exported when commands are run
independently.
In `@agents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py`:
- Around line 80-93: Add test coverage for the two untested branches in
register._request_mutation_approval and the SSE parsing change: add a nemo_api
test that passes an invalid studio_session_id value to verify the non-UUID
denial path still blocks the mutating workspaces.create call, and add a
_parse_studio_callback_response test that feeds an SSE response containing
non-data lines so the parser ignores them and still returns the expected decoded
payload. Use the existing register.nemo_api and
register._parse_studio_callback_response symbols to keep the new tests aligned
with the current behavior.
🪄 Autofix
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: 13399df6-10e4-4bc3-b4b7-306a72a2bcfd
⛔ Files ignored due to path filters (1)
agents/nemo-studio-copilot/uv.lockis excluded by!**/*.lock
📒 Files selected for processing (24)
agents/nemo-studio-copilot-spec/AGENT-SPEC.mdagents/nemo-studio-copilot-spec/agent.yamlagents/nemo-studio-copilot-spec/skills/auditor/SKILL.mdagents/nemo-studio-copilot-spec/skills/benchmark-execution/SKILL.mdagents/nemo-studio-copilot-spec/skills/entities/SKILL.mdagents/nemo-studio-copilot-spec/skills/evaluator/SKILL.mdagents/nemo-studio-copilot-spec/skills/files/SKILL.mdagents/nemo-studio-copilot-spec/skills/guardrails/SKILL.mdagents/nemo-studio-copilot-spec/skills/inference/SKILL.mdagents/nemo-studio-copilot-spec/skills/secrets/SKILL.mdagents/nemo-studio-copilot-spec/skills/workspace/SKILL.mdagents/nemo-studio-copilot/.dockerignoreagents/nemo-studio-copilot/Dockerfileagents/nemo-studio-copilot/Dockerfile.fabric-localagents/nemo-studio-copilot/agent.yamlagents/nemo-studio-copilot/pyproject.tomlagents/nemo-studio-copilot/src/nemo_studio_copilot/mcp_server.pyagents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot-eval.ymlagents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.remote.ymlagents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.ymlagents/nemo-studio-copilot/src/nemo_studio_copilot/register.pyagents/nemo-studio-copilot/src/nemo_studio_copilot/wrapper.pyagents/nemo-studio-copilot/tests/smoke_test.mdagents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py
💤 Files with no reviewable changes (6)
- agents/nemo-studio-copilot/Dockerfile
- agents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot-eval.yml
- agents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.remote.yml
- agents/nemo-studio-copilot/.dockerignore
- agents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.yml
- agents/nemo-studio-copilot/src/nemo_studio_copilot/wrapper.py
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
agents/nemo-studio-copilot/tests/smoke_test.md (1)
29-39: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick winVerify platform readiness before creating the agent.
Follow
SETUP.mdand run its readiness check after settingNMP_BASE_URL. Do this beforenemo agents createso an unavailable platform does not produce misleading deployment failures.As per coding guidelines, “Before using a running NeMo platform or local
nemoCLI instance, followSETUP.md; for local CLI commands setNMP_BASE_URL=http://localhost:8080and verify readiness before proceeding.”🤖 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 `@agents/nemo-studio-copilot/tests/smoke_test.md` around lines 29 - 39, Update the smoke-test setup flow before nemo agents create: use the SETUP.md-recommended NMP_BASE_URL value, then run the documented platform readiness check and only proceed with agent creation after it succeeds. Keep the existing packaging and deployment commands unchanged.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.
Inline comments:
In `@agents/nemo-studio-copilot/skills/benchmark-execution/SKILL.md`:
- Around line 19-20: Update the final-response verification guidance in the
benchmark execution instructions to require at least one direct verification
call, while explicitly preserving any additional skill-specific verification
requirements, including higher call counts.
In `@agents/nemo-studio-copilot/skills/files/SKILL.md`:
- Around line 22-27: Update the mutation retry guidance in SKILL.md so stable
identity alone never proves commit state. Require a unique run marker or
verification of expected description, content, checksum, and ownership before
retrying or continuing; otherwise treat the state as unknown, do not retry, and
report it.
In `@agents/nemo-studio-copilot/skills/workspace/SKILL.md`:
- Around line 10-13: Update every affected nemo_api example to pass
workspace="<active request workspace>". In
agents/nemo-studio-copilot/skills/workspace/SKILL.md lines 10-13, add it to the
list and retrieve calls; in
agents/nemo-studio-copilot/src/nemo_studio_copilot/skills/files/SKILL.md lines
31-38, add it to every file verification and playbook call.
In `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py`:
- Line 219: Update the approval handling around approved_input and the workspace
assignment so the approved workspace remains immutable: do not replace the
original workspace with approved_input’s value, or explicitly reject any
workspace change before proceeding. Keep subsequent SDK client operations bound
to the originally approved workspace.
---
Outside diff comments:
In `@agents/nemo-studio-copilot/tests/smoke_test.md`:
- Around line 29-39: Update the smoke-test setup flow before nemo agents create:
use the SETUP.md-recommended NMP_BASE_URL value, then run the documented
platform readiness check and only proceed with agent creation after it succeeds.
Keep the existing packaging and deployment commands unchanged.
🪄 Autofix
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: a742a3fb-8c92-4af3-8476-923ba667f119
⛔ Files ignored due to path filters (1)
agents/nemo-studio-copilot/uv.lockis excluded by!**/*.lock
📒 Files selected for processing (26)
agents/nemo-studio-copilot-spec/AGENT-SPEC.mdagents/nemo-studio-copilot-spec/agent.yamlagents/nemo-studio-copilot-spec/skills/benchmark-execution/SKILL.mdagents/nemo-studio-copilot-spec/skills/evaluator/SKILL.mdagents/nemo-studio-copilot-spec/skills/files/SKILL.mdagents/nemo-studio-copilot-spec/skills/workspace/SKILL.mdagents/nemo-studio-copilot/Dockerfile.fabric-localagents/nemo-studio-copilot/agent.yamlagents/nemo-studio-copilot/constraints.fabric-local.txtagents/nemo-studio-copilot/pyproject.tomlagents/nemo-studio-copilot/skills/auditor/SKILL.mdagents/nemo-studio-copilot/skills/benchmark-execution/SKILL.mdagents/nemo-studio-copilot/skills/entities/SKILL.mdagents/nemo-studio-copilot/skills/evaluator/SKILL.mdagents/nemo-studio-copilot/skills/files/SKILL.mdagents/nemo-studio-copilot/skills/guardrails/SKILL.mdagents/nemo-studio-copilot/skills/inference/SKILL.mdagents/nemo-studio-copilot/skills/secrets/SKILL.mdagents/nemo-studio-copilot/skills/workspace/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/register.pyagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/evaluator/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/files/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/workspace/SKILL.mdagents/nemo-studio-copilot/tests/smoke_test.mdagents/nemo-studio-copilot/tests/test_nemo_studio_copilot.pypytest.ini
🚧 Files skipped from review as they are similar to previous changes (8)
- agents/nemo-studio-copilot-spec/skills/evaluator/SKILL.md
- agents/nemo-studio-copilot-spec/skills/workspace/SKILL.md
- agents/nemo-studio-copilot-spec/agent.yaml
- agents/nemo-studio-copilot-spec/skills/benchmark-execution/SKILL.md
- agents/nemo-studio-copilot-spec/skills/files/SKILL.md
- agents/nemo-studio-copilot-spec/AGENT-SPEC.md
- agents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py
- agents/nemo-studio-copilot/Dockerfile.fabric-local
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com> # Conflicts: # agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py # agents/nemo-studio-copilot/src/nemo_studio_copilot/wrapper.py
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com>
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (5)
agents/nemo-studio-copilot/skills/guardrails/SKILL.md (1)
12-14: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd the
workspaceargument to thenemo_apiguidance.
nemo_apirequires a nonblankworkspace. Otherwise it returns a clarification response instead of running the config CRUD or check.🤖 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 `@agents/nemo-studio-copilot/skills/guardrails/SKILL.md` around lines 12 - 14, Update the nemo_api guidance for both guardrail.configs CRUD and the guardrail check action to require and pass a nonblank workspace argument, preserving the existing resource and action usage.agents/nemo-studio-copilot/skills/secrets/SKILL.md (1)
7-9: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd the
workspaceargument to thenemo_apiguidance.The secret lifecycle calls need the active request workspace.
🤖 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 `@agents/nemo-studio-copilot/skills/secrets/SKILL.md` around lines 7 - 9, Add the workspace argument to the nemo_api guidance for the secrets resource, ensuring all create, retrieve, list, update, and delete actions pass the active request workspace along with their JSON params.agents/nemo-studio-copilot/skills/evaluator/SKILL.md (1)
14-16: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win
check_statusalso requiresworkspace.
check_statusreturns a clarification response whenworkspaceis missing. Add the active request workspace to both thenemo_apiandcheck_statusguidance.🤖 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 `@agents/nemo-studio-copilot/skills/evaluator/SKILL.md` around lines 14 - 16, Update the nemo_api and check_status guidance in the evaluator skill to require and include the active request workspace for both metric operations/asynchronous jobs and evaluation-job polling. Preserve the existing tool and operation guidance while explicitly passing workspace in each usage.agents/nemo-studio-copilot/skills/inference/SKILL.md (1)
14-15: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd the
workspaceargument to thenemo_apiguidance.Secret and provider calls fail with a clarification response when
workspaceis absent.🤖 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 `@agents/nemo-studio-copilot/skills/inference/SKILL.md` around lines 14 - 15, Update the nemo_api guidance in SKILL.md to include the required workspace argument for both the secrets API-key operation and the inference.providers CRUD operations, preserving the existing resource names and usage guidance.agents/nemo-studio-copilot/skills/entities/SKILL.md (1)
7-10: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winState the required
workspaceargument.
nemo_apireturns "Clarification required: which workspace should this operation use?" whenworkspaceis missing or blank. This skill instructsnemo_apiusage without that argument. Add the active request workspace to the guidance.♻️ Proposed edit
-- Use `nemo_api` with the `models` or `datasets` resource as appropriate. +- Use `nemo_api` with the `models` or `datasets` resource as appropriate, and pass + `workspace="<active request workspace>"` on every call.🤖 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 `@agents/nemo-studio-copilot/skills/entities/SKILL.md` around lines 7 - 10, Update the nemo_api usage guidance in SKILL.md to require passing the active request workspace through the workspace argument for every operation. Ensure the argument is non-blank and retain the existing resource, entity-type, CRUD, and JSON parameter instructions.
🤖 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 `@agents/nemo-studio-copilot-spec/skills/auditor/SKILL.md`:
- Line 5: Update the top-level title after the YAML front matter in
agents/nemo-studio-copilot-spec/skills/auditor/SKILL.md:5,
agents/nemo-studio-copilot-spec/skills/entities/SKILL.md:5,
agents/nemo-studio-copilot-spec/skills/evaluator/SKILL.md:5,
agents/nemo-studio-copilot-spec/skills/files/SKILL.md:5,
agents/nemo-studio-copilot-spec/skills/guardrails/SKILL.md:5,
agents/nemo-studio-copilot-spec/skills/inference/SKILL.md:5, and
agents/nemo-studio-copilot-spec/skills/workspace/SKILL.md:5 by converting each
plain-text title into a level-one Markdown heading, preserving the existing
title text.
- Line 17: Add final-resource verification to the documented workflows: in
agents/nemo-studio-copilot-spec/skills/auditor/SKILL.md:17, retrieve or list the
final audit resource and compare required fields; in
agents/nemo-studio-copilot-spec/skills/entities/SKILL.md:9-10, verify every
required field of the final model or dataset; in
agents/nemo-studio-copilot-spec/skills/inference/SKILL.md:7-16, verify the final
provider’s host URL and description; and apply the same audit-resource
verification in agents/nemo-studio-copilot/skills/auditor/SKILL.md:17.
In `@agents/nemo-studio-copilot-spec/skills/secrets/SKILL.md`:
- Around line 7-10: Update the secrets skill instructions around the nemo_api
lifecycle to pass secret references instead of raw secret values in JSON params,
accounting for approval_prompt and _serialize trace exposure. Explicitly
prohibit printing or echoing secret values during create, retrieve, list,
update, and delete verification while preserving the required temporary-secret
lifecycle and final verification-secret creation.
In `@agents/nemo-studio-copilot/skills/entities/SKILL.md`:
- Around line 7-10: Update the nemo_api and check_status call instructions to
always include workspace="<active request workspace>". In
agents/nemo-studio-copilot/skills/entities/SKILL.md lines 7-10, add it to models
and datasets calls; in agents/nemo-studio-copilot/skills/evaluator/SKILL.md
lines 14-16, add it to evaluation.metrics, evaluation.metric_jobs, and
check_status; in agents/nemo-studio-copilot/skills/guardrails/SKILL.md lines
12-14, add it to guardrail.configs CRUD and guardrail checks; in
agents/nemo-studio-copilot/skills/inference/SKILL.md lines 14-15, add it to
secrets and inference.providers; and in
agents/nemo-studio-copilot/skills/secrets/SKILL.md lines 7-9, add it to every
secret lifecycle call.
In `@agents/nemo-studio-copilot/skills/files/SKILL.md`:
- Around line 28-31: Update the retry guidance in both
agents/nemo-studio-copilot/skills/files/SKILL.md:28-31 and
agents/nemo-studio-copilot/src/nemo_studio_copilot/skills/files/SKILL.md:28-31
to require server-side idempotency or operation-status tracking before retrying
a timed-out mutation; a negative read-back alone must not permit retry. Preserve
the rule to continue only after confirming the intended state, otherwise stop
and report unknown commit status.
In `@agents/nemo-studio-copilot/src/nemo_studio_copilot/register.py`:
- Around line 195-225: Validate the approved overrides in the mutation-approval
flow before calling string methods or resolving the SDK method. In the block
handling approved_input, explicitly reject non-string resource or action values
with a clear validation error, then continue using resource and action only
after validation; preserve the existing workspace and params validation
behavior.
- Around line 373-392: Update check_status dispatch to use each documented
service’s API: call evaluator and data_designer
get_job_resource(job_name).get_job_status(), call auditor
get_job(job_name).get_job_status(), and call
customization.<backend>.jobs.get_job_resource(job_name).get_status() without a
name argument. Preserve JSON serialization, fallback/error reporting, and
workspace validation while replacing the generic sub-resource probing.
---
Nitpick comments:
In `@agents/nemo-studio-copilot/skills/entities/SKILL.md`:
- Around line 7-10: Update the nemo_api usage guidance in SKILL.md to require
passing the active request workspace through the workspace argument for every
operation. Ensure the argument is non-blank and retain the existing resource,
entity-type, CRUD, and JSON parameter instructions.
In `@agents/nemo-studio-copilot/skills/evaluator/SKILL.md`:
- Around line 14-16: Update the nemo_api and check_status guidance in the
evaluator skill to require and include the active request workspace for both
metric operations/asynchronous jobs and evaluation-job polling. Preserve the
existing tool and operation guidance while explicitly passing workspace in each
usage.
In `@agents/nemo-studio-copilot/skills/guardrails/SKILL.md`:
- Around line 12-14: Update the nemo_api guidance for both guardrail.configs
CRUD and the guardrail check action to require and pass a nonblank workspace
argument, preserving the existing resource and action usage.
In `@agents/nemo-studio-copilot/skills/inference/SKILL.md`:
- Around line 14-15: Update the nemo_api guidance in SKILL.md to include the
required workspace argument for both the secrets API-key operation and the
inference.providers CRUD operations, preserving the existing resource names and
usage guidance.
In `@agents/nemo-studio-copilot/skills/secrets/SKILL.md`:
- Around line 7-9: Add the workspace argument to the nemo_api guidance for the
secrets resource, ensuring all create, retrieve, list, update, and delete
actions pass the active request workspace along with their JSON params.
🪄 Autofix
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: 3f97d7bf-2749-453f-8fe0-3ffeff05e081
⛔ Files ignored due to path filters (2)
agents/nemo-studio-copilot/uv.lockis excluded by!**/*.lockuv.lockis excluded by!**/*.lock
📒 Files selected for processing (39)
agents/nemo-studio-copilot-spec/AGENT-SPEC.mdagents/nemo-studio-copilot-spec/agent.yamlagents/nemo-studio-copilot-spec/skills/auditor/SKILL.mdagents/nemo-studio-copilot-spec/skills/benchmark-execution/SKILL.mdagents/nemo-studio-copilot-spec/skills/entities/SKILL.mdagents/nemo-studio-copilot-spec/skills/evaluator/SKILL.mdagents/nemo-studio-copilot-spec/skills/files/SKILL.mdagents/nemo-studio-copilot-spec/skills/guardrails/SKILL.mdagents/nemo-studio-copilot-spec/skills/inference/SKILL.mdagents/nemo-studio-copilot-spec/skills/secrets/SKILL.mdagents/nemo-studio-copilot-spec/skills/workspace/SKILL.mdagents/nemo-studio-copilot/.dockerignoreagents/nemo-studio-copilot/Dockerfileagents/nemo-studio-copilot/Dockerfile.fabric-localagents/nemo-studio-copilot/agent.yamlagents/nemo-studio-copilot/constraints.fabric-local.txtagents/nemo-studio-copilot/pyproject.tomlagents/nemo-studio-copilot/skills/auditor/SKILL.mdagents/nemo-studio-copilot/skills/benchmark-execution/SKILL.mdagents/nemo-studio-copilot/skills/entities/SKILL.mdagents/nemo-studio-copilot/skills/evaluator/SKILL.mdagents/nemo-studio-copilot/skills/files/SKILL.mdagents/nemo-studio-copilot/skills/guardrails/SKILL.mdagents/nemo-studio-copilot/skills/inference/SKILL.mdagents/nemo-studio-copilot/skills/secrets/SKILL.mdagents/nemo-studio-copilot/skills/workspace/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/mcp_server.pyagents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot-eval.ymlagents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.remote.ymlagents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.ymlagents/nemo-studio-copilot/src/nemo_studio_copilot/register.pyagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/benchmark-execution/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/evaluator/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/files/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/workspace/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/wrapper.pyagents/nemo-studio-copilot/tests/smoke_test.mdagents/nemo-studio-copilot/tests/test_nemo_studio_copilot.pypytest.ini
💤 Files with no reviewable changes (6)
- agents/nemo-studio-copilot/.dockerignore
- agents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot-eval.yml
- agents/nemo-studio-copilot/Dockerfile
- agents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.remote.yml
- agents/nemo-studio-copilot/src/nemo_studio_copilot/nemo-studio-copilot.yml
- agents/nemo-studio-copilot/src/nemo_studio_copilot/wrapper.py
🚧 Files skipped from review as they are similar to previous changes (10)
- agents/nemo-studio-copilot-spec/agent.yaml
- agents/nemo-studio-copilot/src/nemo_studio_copilot/skills/workspace/SKILL.md
- agents/nemo-studio-copilot/constraints.fabric-local.txt
- agents/nemo-studio-copilot/agent.yaml
- agents/nemo-studio-copilot/src/nemo_studio_copilot/mcp_server.py
- agents/nemo-studio-copilot/Dockerfile.fabric-local
- pytest.ini
- agents/nemo-studio-copilot/pyproject.toml
- agents/nemo-studio-copilot-spec/AGENT-SPEC.md
- agents/nemo-studio-copilot/src/nemo_studio_copilot/skills/evaluator/SKILL.md
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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 `@agents/nemo-studio-copilot-spec/skills/secrets/SKILL.md`:
- Around line 7-13: Update the secrets guidance in
agents/nemo-studio-copilot-spec/skills/secrets/SKILL.md:7-13 and
agents/nemo-studio-copilot/skills/secrets/SKILL.md:7-13 to require
studio_session_id in JSON params for nemo_api create, update, and delete
mutations; keep retrieve and list unchanged, and preserve the existing
prohibition on exposing resolved secret values.
🪄 Autofix
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: d996ee78-e2d5-4a22-83e0-665387ce1c68
📒 Files selected for processing (19)
agents/nemo-studio-copilot-spec/skills/auditor/SKILL.mdagents/nemo-studio-copilot-spec/skills/entities/SKILL.mdagents/nemo-studio-copilot-spec/skills/evaluator/SKILL.mdagents/nemo-studio-copilot-spec/skills/files/SKILL.mdagents/nemo-studio-copilot-spec/skills/guardrails/SKILL.mdagents/nemo-studio-copilot-spec/skills/inference/SKILL.mdagents/nemo-studio-copilot-spec/skills/secrets/SKILL.mdagents/nemo-studio-copilot-spec/skills/workspace/SKILL.mdagents/nemo-studio-copilot/skills/auditor/SKILL.mdagents/nemo-studio-copilot/skills/entities/SKILL.mdagents/nemo-studio-copilot/skills/evaluator/SKILL.mdagents/nemo-studio-copilot/skills/files/SKILL.mdagents/nemo-studio-copilot/skills/guardrails/SKILL.mdagents/nemo-studio-copilot/skills/inference/SKILL.mdagents/nemo-studio-copilot/skills/secrets/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/register.pyagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/evaluator/SKILL.mdagents/nemo-studio-copilot/src/nemo_studio_copilot/skills/files/SKILL.mdagents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py
🚧 Files skipped from review as they are similar to previous changes (15)
- agents/nemo-studio-copilot/skills/evaluator/SKILL.md
- agents/nemo-studio-copilot-spec/skills/auditor/SKILL.md
- agents/nemo-studio-copilot/skills/inference/SKILL.md
- agents/nemo-studio-copilot-spec/skills/guardrails/SKILL.md
- agents/nemo-studio-copilot-spec/skills/entities/SKILL.md
- agents/nemo-studio-copilot/skills/auditor/SKILL.md
- agents/nemo-studio-copilot/skills/guardrails/SKILL.md
- agents/nemo-studio-copilot-spec/skills/workspace/SKILL.md
- agents/nemo-studio-copilot-spec/skills/inference/SKILL.md
- agents/nemo-studio-copilot/src/nemo_studio_copilot/skills/evaluator/SKILL.md
- agents/nemo-studio-copilot/skills/entities/SKILL.md
- agents/nemo-studio-copilot-spec/skills/files/SKILL.md
- agents/nemo-studio-copilot-spec/skills/evaluator/SKILL.md
- agents/nemo-studio-copilot/skills/files/SKILL.md
- agents/nemo-studio-copilot/src/nemo_studio_copilot/skills/files/SKILL.md
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@agents/nemo-studio-copilot/tests/test_nemo_studio_copilot.py`:
- Around line 66-69: Update the MCP URL assertion in test_nemo_studio_copilot to
read from translated.mcp.servers["nemo_studio"].url instead of config, ensuring
the test validates the translated MCP configuration while preserving the
existing expected URL.
In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py`:
- Around line 38-41: Update test_selected_harness_uses_default_model to clear
NEMO_BASE_URL, NMP_BASE_URL, and NMP_WORKSPACE before asserting the exact
runtime_env mapping, preventing values forwarded by _platform_runtime_env from
affecting the test.
🪄 Autofix
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: 3c265c58-b68f-469e-8a5c-2f2eb255923c
⛔ Files ignored due to path filters (1)
uv.lockis excluded by!**/*.lock
📒 Files selected for processing (7)
agents/nemo-studio-copilot-spec/agent.yamlagents/nemo-studio-copilot/Dockerfile.fabric-localagents/nemo-studio-copilot/agent.yamlagents/nemo-studio-copilot/constraints.fabric-local.txtagents/nemo-studio-copilot/tests/test_nemo_studio_copilot.pyplugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.pyplugins/nemo-agents/tests/unit/test_fabric_translator.py
🚧 Files skipped from review as they are similar to previous changes (4)
- agents/nemo-studio-copilot/agent.yaml
- agents/nemo-studio-copilot/constraints.fabric-local.txt
- agents/nemo-studio-copilot-spec/agent.yaml
- agents/nemo-studio-copilot/Dockerfile.fabric-local
Signed-off-by: Danielle Ali <44468613+dmariali@users.noreply.github.com>
Summary
Behaviour wise things should be the same, just changing the wrapper from NAT to Fabric.
Changes
Type of Change
Quality Gates
Verification
Signed-off-by:traileruv run pre-commit run -apasses, or any blocked checks are identified belowTargeted validation:
Summary by CodeRabbit
New Features
Improvements
Documentation & Tests