Repository navigation
[agentfabric] Add Agent Fabric CLI extension - #10370
Conversation
|
Hi Kshitija Murudi (@kmurudi), |
|
agentfabric |
|
it is not a good practice to modify two moudles in one pr, let's split them. |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Add or carry over the Agent Fabric help recording required by the test scenarios.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
This PR replaces the Agent Mesh source with the generated Agent Fabric extension while preserving src/index.json.
Changes:
- Adds Agent Fabric, member, and policy-group CRUD/wait commands.
- Updates packaging, metadata, documentation, tests, and service mapping.
- Removes obsolete Agent Mesh source.
- Critical review blocker (1 vote): Agent Fabric help tests require a missing
test_agentfabric_command_help.yamlrecording at lines 158 and 172.
| File | Summary |
|---|---|
src/service_name.json |
Updates service mapping for Agent Fabric. |
src/agentmesh/README.md |
Removes obsolete documentation. |
src/agentmesh/HISTORY.rst |
Removes obsolete release history. |
src/agentmesh/azext_agentmesh/tests/latest/test_agentmesh.py |
Removes obsolete tests. |
src/agentmesh/azext_agentmesh/tests/latest/recordings/test_agentmesh_command_help.yaml |
Removes the Agent Mesh help recording; an Agent Fabric replacement is required. |
src/agentmesh/azext_agentmesh/aaz/latest/agentmesh/fabric/member/__cmd_group.py |
Removes the obsolete command group. |
src/agentmesh/azext_agentmesh/aaz/latest/agentmesh/__init__.py |
Removes the obsolete generated initializer. |
src/agentfabric/setup.py |
Defines Agent Fabric package metadata. |
src/agentfabric/setup.cfg |
Adds package configuration. |
src/agentfabric/README.md |
Documents Agent Fabric commands and resource hierarchy. |
src/agentfabric/linter_exclusions.yml |
Updates command exclusions. |
src/agentfabric/HISTORY.rst |
Adds Agent Fabric release history. |
src/agentfabric/azext_agentfabric/tests/latest/test_agentfabric.py |
Adds validation tests; help-surface scenarios lack the required recording at lines 158 and 172. |
src/agentfabric/azext_agentfabric/tests/latest/__init__.py |
Initializes the latest test package. |
src/agentfabric/azext_agentfabric/tests/__init__.py |
Initializes the test package. |
src/agentfabric/azext_agentfabric/custom.py |
Adds the custom command module. |
src/agentfabric/azext_agentfabric/commands.py |
Adds the command loader. |
src/agentfabric/azext_agentfabric/azext_metadata.json |
Configures preview status and minimum CLI version. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/_wait.py |
Adds policy-group wait operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/_update.py |
Adds policy-group update operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/_show.py |
Adds policy-group show operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/_list.py |
Adds policy-group list operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/_delete.py |
Adds policy-group delete operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/_create.py |
Adds policy-group create operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/__init__.py |
Registers policy-group commands. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/policy_group/__cmd_group.py |
Registers the policy-group command group. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/_wait.py |
Adds member wait operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/_update.py |
Adds member update operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/_show.py |
Adds member show operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/_list.py |
Adds member list operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/_delete.py |
Adds member delete operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/_create.py |
Adds member create operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/__init__.py |
Registers member commands. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/member/__cmd_group.py |
Registers the member command group. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/_wait.py |
Adds Agent Fabric wait operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/_update.py |
Adds Agent Fabric update operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/_show.py |
Adds Agent Fabric show operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/_list.py |
Adds Agent Fabric list operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/_delete.py |
Adds Agent Fabric delete operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/_create.py |
Adds Agent Fabric create operation. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/__init__.py |
Registers root commands. |
src/agentfabric/azext_agentfabric/aaz/latest/agentfabric/__cmd_group.py |
Registers the root command group. |
src/agentfabric/azext_agentfabric/aaz/latest/__init__.py |
Initializes the latest API package. |
src/agentfabric/azext_agentfabric/aaz/__init__.py |
Initializes the generated AAZ package. |
src/agentfabric/azext_agentfabric/_params.py |
Adds argument loading. |
src/agentfabric/azext_agentfabric/_help.py |
Adds extension help loading. |
src/agentfabric/azext_agentfabric/__init__.py |
Registers the Agent Fabric command loader. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Agreed. This PR is now draft and is being rewritten to add only the new |
2298a04 to
1258833
Compare
1258833 to
ee3f9c3
Compare
ac48673 to
4998b77
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
Record public Central US EUAP Fabric, Member, Policy Group, and egress singleton operations. Preserve explicit skipped scenarios for ClusterConnectionInformationUnavailable and ResourceReadFailed service blockers, with ordered disposable-resource cleanup and signed operation URL scrubbing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Document managed Entra authentication prerequisite in custom attach help, remove the AKS scenario skip, and replay genuine successful enrollment calls. Keep Kubernetes workload operations separate and redact signed AKS polling URL parameters. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Replace the unconditional skip with the testsdk live_only marker so offline playback stays deterministic while live runs expose the outstanding ResourceReadFailed endpoint failure. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the recorded Container Service API explicitly for the AKS prerequisite and cleanup, independent of the core CLI default. Preserve all real recordings and Agent Fabric request matching, and cover the pin with a regression test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
| subscription_id=subscription_id, api_version="2026-06-01" | ||
| ) | ||
|
|
||
| def _exercise_aks_lifecycle(self, cleanup): |
There was a problem hiding this comment.
Kshitija Murudi (@kmurudi) There are a number of 404s found in the test_agentfabric_aks_lifecycle.yaml recording. Please ensure the full life cycle is functional
There was a problem hiding this comment.
Reviewed all 50 interactions in the AKS lifecycle recording. Exactly three 404s remain, and each is an expected absence check:
- Interaction 5:
aks createfirst GETs its new managed-cluster name to verify that it does not exist before PUT. - Interaction 32:
agentfabric aks wait --deletedGETs the association after detach; ResourceNotFound confirms deletion. - Interaction 50:
agentfabric wait --deletedGETs the Fabric after delete; ResourceNotFound confirms deletion.
The positive attach/show/list/Standard-to-Premium update/wait/detach operations in that genuine live trace succeeded, and the recorded lifecycle replays successfully. Converting the expected absence/deletion responses to 200 would invalidate those checks, so the AKS cassette remains unchanged. No new live AKS provisioning/lifecycle run was performed for this read-only recording update.
3b3aa3b6c documents the distinction and adds a fresh successful egress LIST/SHOW recording, removing its old live-only gap. The complete playback/unit suite passed: 22 passed, zero skipped, 3 subtests passed; style and linter passed.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Kshitija Murudi (@kmurudi) Ready for human review. See the X Engineering Agent Report.
Keep member show, list, and wait; resource providers handle member mutations. Replace the member lifecycle scenario and recording with read-only coverage for an existing member. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9395a3e0-0d18-414d-b40d-c8fd7f90ac67
Enable ordinary playback for read-only collection and singleton responses recorded from the live preview service. Document existing-Fabric recording prerequisites and the AKS lifecycle's expected absence/deletion checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
Kshitija Murudi (@kmurudi) It appears that the aaz commands for Please update the aaz PR to reflect these modifications Azure/aaz#1095. Ideally, the aaz models (from aaz repo) and commands (atomic commands in this repo) should be regenerated together. |
|
JaysonTaiMicrosoft Azure/aaz#1095 has been updated to match the current extension-generated Member surface. Member create/update/delete command models were removed from both modeled API versions; |
|
[Release] Update index.json for extension [ agentfabric-1.0.0b1 ] : https://dev.azure.com/msazure/One/_build/results?buildId=187024877&view=results |

Adds the preview Agent Fabric extension generated from the final public
Microsoft.NetworkSecurity2026-10-07-previewcontract and synchronized with Azure/aaz#1095.Authoritative generation sources
a52c4fc4ac8cd197d38a1072704853f485cafb6c.specification/networksecurity/resource-manager/Microsoft.NetworkSecurity/agentFabric/preview/2026-10-07-preview/agentFabric.json.6de5cd31bbf92e418b5946074bcb3591ca8d30b538521cdf30cd6c24fa35d508.8e5241a029924fc997767adb3cddf999dcde495f.3b3aa3b6c0bf31ca12a7cbb0adb88092b698a205.Customer-facing commands
The extension exposes 23 commands:
az agentfabric: create/show/list/update/delete/wait.az agentfabric member: read-only show/list/wait for existing Agent Fabric Sandbox members.az agentfabric aks: attach/show/list/update/detach/wait over Cluster Association ARM resources.az agentfabric egress-trust-bundle: read-only show/list foregressTrustBundles/default.az agentfabric policy-group: independent peer-resource create/show/list/update/delete/wait.Final contract behavior
-p/--inspection-profile/--content-inspection-profile. The key is write-only and absent from GET/list/wait/LRO output. Root PATCH remains tags/identity only.AgentFabricSandbox; ACI/AKS Member arguments, examples, request serialization, response discriminators, descriptions, and tests are absent from the generated Member folder.memberGuid, service/target endpoint mappings, optional Entra agent identity, and optionalblueprintId.aks updateperforms GET-before-PATCH in the handwritten subclass to supply the immutable linked-authorization target ID. Gateway IP uses-i/--gateway-ip/--workload-cluster-gateway-ip, remains PATCH-only, and is absent from attach/show/list output.clusterResourceIdcontract; this is separate from the sandbox-only Member command group.The extension remains preview
1.0.0b1with minimum CLI2.75.0.src/index.jsonandsrc/agentmeshhave no PR diff; Agent Mesh withdrawal/removal is handled separately by #10369/#10371. No private namespace patches, deployment changes, CODEOWNERS changes, or invented documentation URL are included.This checklist is used to make sure that common guidelines for a pull request are followed.
Related command
az agentfabricGeneral Guidelines
azdev style <YOUR_EXT>locally? (pip install azdevrequired)python scripts/ci/test_index.py -qlocally? (pip install azdevrequired)For new extensions:
About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update
src/index.jsonautomatically.You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify
src/index.json.Validation
python -m pytest src\agentfabric\azext_agentfabric\tests\latest\test_agentfabric.py -q: 15 passed, 5 subtests passed.python -m flake8 src\agentfabric\azext_agentfabric src\agentfabric\setup.py: passed.python scripts\ci\test_index.py -q: OK, 9 tests run, 2 skipped.azdev style agentfabric: passed (pylint and flake8; pylint 10.00/10).azdev linter agentfabric --include-whl-extensions --min-severity medium --ci-exclusions: passed, zero violations.8e5241a029924fc997767adb3cddf999dcde495f.compileallandgit diff --check: passed.agentfabric-1.0.0b1-py3-none-any.whl, 95,040 bytes, SHA-2560cc88294260c032b39f84fef4e64e74c7a70d5e9d1829fb47027c7c2b4f3ac8f.inspect.getargspecremoval and unconfigured azdev/VCR authentication), before Agent Fabric assertions execute.